• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ seekdir函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中seekdir函数的典型用法代码示例。如果您正苦于以下问题:C++ seekdir函数的具体用法?C++ seekdir怎么用?C++ seekdir使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了seekdir函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: os2_delete

static int os2_delete(DIR *d)
{
	off_t offsets[READDIR_SIZE];
	int i, j;
	struct dirent *de;
	char names[READDIR_SIZE][30];

	/* scan, remembering offsets */
	for (i=0, de=readdir(d); 
	     de && i < READDIR_SIZE; 
	     de=readdir(d), i++) {
		offsets[i] = telldir(d);
		strcpy(names[i], de->d_name);
	}

	if (i == 0) {
		return 0;
	}

	/* delete the first few */
	for (j=0; j<MIN(i, DELETE_SIZE); j++) {
		char fname[40];
		sprintf(fname, TESTDIR "/%s", names[j]);
		unlink(fname) == 0 || FAILED("unlink");
	}

	/* seek to just after the deletion */
	seekdir(d, offsets[j-1]);

	/* return number deleted */
	return j;
}
开发者ID:AllardJ,项目名称:Tomato,代码行数:32,代码来源:os2_delete.c


示例2: seekdir_test

void seekdir_test(void)
{
	DIR * dirp;
	long save3 = 0;
	long cur;
	int i = 0;
	struct dirent *dp;

	dirp = opendir ("/");
	save3 = telldir(dirp);
	for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp))
	{
		rt_kprintf("direntry: %s\n", dp->d_name);

		/* 保存第三个目录项的目录指针 */
		if (i++ == 3)
		{
			save3 = telldir(dirp);
		}
	}

	/* 回到刚才保存的第三个目录项的目录指针 */
	seekdir (dirp, save3);
	rt_kprintf("seek dientry to: %d\n", save3);
	for (dp = readdir(dirp); dp != RT_NULL; dp = readdir(dirp))
	{
		rt_kprintf("direntry: %s\n", dp->d_name);
	}

	/* 关闭目录 */
	closedir (dirp);
} 
开发者ID:634351070,项目名称:rt-thread,代码行数:32,代码来源:seekdir.c


示例3: SeekTest

void SeekTest (void)
{
	int num_children = 10;
	dir_s dir = NilDir;
	DIR *d;
	struct dirent *entry;
	int i;

	dir.name = RndName();
	mkdir(dir.name, 0777);
	AddChildren(&dir, num_children);

	d = opendir(dir.name);
	while ((entry = readdir(d)) != NULL) {
		SaveTell(d, entry, &dir);
	}
	for (i = 0; i < 27; i++) {
		int k = urand(num_children);
		file_s *file = &dir.file[k];
		seekdir(d, file->tell);
		entry = readdir(d);
		if (strcmp(entry->d_name, file->name) != 0) {
			PrError("Seekdir failed. Looking for %s found %s",
				entry->d_name, file->name);
		}
	}
	closedir(d);
	DeleteChildren(&dir);
	rmdir(dir.name);
	free(dir.name);
}
开发者ID:taysom,项目名称:tau,代码行数:31,代码来源:dir.c


示例4: pifs_readdir

static int pifs_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
                       off_t offset, struct fuse_file_info *info)
{
  DIR *dir = (DIR *) info->fh;
  if (offset) {
    seekdir(dir, offset);
  }

  int ret;
  do {
    errno = 0;
    struct dirent *de = readdir(dir);
    if (!de) { 
      if (errno) {
        return -errno;
      } else {
        break;
      }
    }

    ret = filler(buf, de->d_name, NULL, de->d_off);
  } while (ret == 0);

  return 0;
}
开发者ID:47d5b,项目名称:pifs,代码行数:25,代码来源:πfs.c


示例5: GetConsecutiveFileCount

int GetConsecutiveFileCount(const char * dir, const char *nameTag, int maxS){
    DIR *dirp;
    struct dirent *dent;

    dirp = opendir(dir);
    if (!dirp)
        return 0;

    int res = 0;

    for(int i=0;i<maxS;i++){
        char cName[256];
        sprintf(cName,nameTag,i);

        bool bFound = false;
        seekdir(dirp,0);
        while ((dent = readdir(dirp)) != NULL)
        {
            if(strcmp(cName,dent->d_name)==0){
                bFound = true;
                break;
            }
        }
        if(bFound){
            res = i+1;
        }else{
            break;
        }
    }

    closedir(dirp);
    return res;
}
开发者ID:epfl-lasa,项目名称:kuka_interface_packages,代码行数:33,代码来源:Various.cpp


示例6: fs_readdir

/*
 * Read the directory entries and return the information about
 * each entry
 */
int
fs_readdir(fs_fhandle_t *ts_fh, char *path, long *dpos,
    char *nm, int *el, fs_fhandle_t *efh, struct stat64 *est)
{
	struct dirent *dp;
	char  file_path[PATH_MAX + 1];
	DIR *dirp;
	int rv;

	if ((dirp = opendir(ts_fh->fh_fpath)) == NULL)
		return (errno);

	seekdir(dirp, *dpos);
	if ((dp = readdir(dirp)) == NULL) {
		rv = 0;  /* skip this dir */
		*el = 0;
	} else {
		(void) snprintf(file_path, PATH_MAX, "%s/", path);
		(void) strlcat(file_path, dp->d_name, PATH_MAX + 1);

		rv = fs_getstat(file_path, efh, est);
		if (rv == 0) {
			*dpos = telldir(dirp);
			(void) strlcpy(nm, dp->d_name, NAME_MAX + 1);
			*el = strlen(dp->d_name);
		} else {
			*el = 0;
		}
	}
	(void) closedir(dirp);
	return (rv);
}
开发者ID:outbackdingo,项目名称:uBSD,代码行数:36,代码来源:tlm_traverse.c


示例7: loop

void
loop(DIR *dp, int i)
{
	struct dirent *f;
	char file[PATH_MAX];
	long pos, remember = -1;

	rewinddir(dp);
	snprintf(file, sizeof file, "%d", i);
	for (;;) {
		pos = telldir(dp);
		f = readdir(dp);
		if (f == NULL)
			break;
		if (strcmp(file, f->d_name) == 0)
			remember = pos;
	}
	if (remember == -1)
		errx(1, "remember");
	seekdir(dp, remember);
	if (telldir(dp) != remember)
		errx(1, "tell after seek");
	if (telldir(dp) != remember)
		errx(1, "tell after tell");
	f = readdir(dp);
	if (f == NULL)
		err(1, "seek to %s %ld", file, remember);

	if (strcmp(f->d_name, file) != 0)
		err(1, "name mismatch: %s != %s\n", f->d_name, file);
}
开发者ID:bingos,项目名称:bitrig,代码行数:31,代码来源:telldir.c


示例8: xmp_readdir

static int xmp_readdir(const char *path, void *buf, fuse_fill_dir_t filler,
		       off_t offset, struct fuse_file_info *fi)
{
	struct xmp_dirp *d = get_dirp(fi);

	(void) path;
	if (offset != d->offset) {
		seekdir(d->dp, offset);
		d->entry = NULL;
		d->offset = offset;
	}
	while (1) {
		struct stat st;
		off_t nextoff;

		if (!d->entry) {
			d->entry = readdir(d->dp);
			if (!d->entry)
				break;
		}

		memset(&st, 0, sizeof(st));
		st.st_ino = d->entry->d_ino;
		st.st_mode = d->entry->d_type << 12;
		nextoff = telldir(d->dp);
		if (filler(buf, d->entry->d_name, &st, nextoff))
			break;

		d->entry = NULL;
		d->offset = nextoff;
	}

	return 0;
}
开发者ID:andrinux,项目名称:PCFS,代码行数:34,代码来源:Fuse_6_FileHdl.c


示例9: BuscaArchivosDirectorio

int BuscaArchivosDirectorio(int id,char szPath[],char szFile[])
{
	struct dirent *dirent=NULL;
	off_t i;
	DIR *dir =Conexion[id].directorio;

	if (dir==NULL) 
	{
		//printf("Opendir\n\r");
		dir = opendir(szPath);
	}
	if (!dir)
	{
		printf("Directorio invalido\n\r");
		dir=NULL;
		Conexion[id].directorio=dir;
		return -1;
	}
	else
	{
		//printf("read dir\n\r");
		dirent=readdir(dir);
		if (!dirent) 
		{
			//printf("close dir\n\r");
			closedir(dir);
			dir=NULL;
			Conexion[id].directorio=dir;
			return -1;
		}	
		//Si son archivos especiales...
		//printf("%s\n\r",dirent->d_name);
		if ((memcmp(dirent->d_name,".",1)==0) ||
		   (memcmp(dirent->d_name,"..",2)==0))
		{
			seekdir(dir,telldir(dir));
			Conexion[id].directorio=dir;
			return -1;
		}

		seekdir(dir,telldir(dir));
		Conexion[id].directorio=dir;
		sprintf(szFile,"%s/%s",szPath,dirent->d_name);
		printf("File %s\n\r",szFile);
		return 1;
	}
}
开发者ID:CM0R31R4,项目名称:motor_desarrollo,代码行数:47,代码来源:IsysFunciones.c


示例10: SeekDir

static int SeekDir (lua_State * L)
{
	DIR * dir = D(L);

	if (dir != 0 && lua_isnumber(L, 2)) seekdir(dir, LI(L, 2));

	return 0;
}
开发者ID:ggcrunchy,项目名称:almost-a-game,代码行数:8,代码来源:Bind_Dirent.cpp


示例11: get_dirent_seekdir

/*******************************************************************
 Seek a dir.
********************************************************************/
BOOL get_dirent_seekdir(PDENT_HND hnd, int pos)
{
	struct dirent_state *dirp;
	dirp = (struct dirent_state*)get_policy_state_info(hnd);
	if (dirp == NULL || dirp->dir == NULL) return(False);
	seekdir(dirp->dir, pos);
	return True;
}
开发者ID:pombredanne,项目名称:cliffs,代码行数:11,代码来源:srv_dirent_state.c


示例12: readdir_seek

/*--------------------------------------------------------------------
 * seek FLOAT
 */
static void readdir_seek(t_readdir *x, t_floatarg pos)
{
  if (!x->x_dir) {
    pd_error(x, "readdir: seek %g: no directory opened!", pos);
    return;
  }
  seekdir(x->x_dir, (off_t)pos);
}
开发者ID:reduzent,项目名称:pd-moocow,代码行数:11,代码来源:readdir.c


示例13: TEST

TEST(dirent, seekdir_telldir) {
  DIR* d = opendir("/proc/self");
  ASSERT_TRUE(d != NULL);
  std::vector<long> offset_list;
  std::vector<std::string> name_list;
  dirent* e = NULL;

  offset_list.push_back(telldir(d));
  ASSERT_EQ(0L, offset_list.back());

  while ((e = readdir(d)) != NULL) {
    name_list.push_back(e->d_name);
    offset_list.push_back(telldir(d));
    // Make sure telldir() point to the next entry.
    ASSERT_EQ(e->d_off, offset_list.back());
  }

  long end_offset = telldir(d);
  // telldir() should not pass the end of the file.
  ASSERT_EQ(offset_list.back(), end_offset);
  offset_list.pop_back();

  for (size_t i = 0; i < offset_list.size(); ++i) {
    seekdir(d, offset_list[i]);
    ASSERT_EQ(offset_list[i], telldir(d));
    e = readdir(d);
    ASSERT_TRUE(e != NULL);
    ASSERT_STREQ(name_list[i].c_str(), e->d_name);
  }
  for (int i = static_cast<int>(offset_list.size()) - 1; i >= 0; --i) {
    seekdir(d, offset_list[i]);
    ASSERT_EQ(offset_list[i], telldir(d));
    e = readdir(d);
    ASSERT_TRUE(e != NULL);
    ASSERT_STREQ(name_list[i].c_str(), e->d_name);
  }

  // Seek to the end, read NULL.
  seekdir(d, end_offset);
  ASSERT_EQ(end_offset, telldir(d));
  errno = 0;
  ASSERT_EQ(NULL, readdir(d));
  ASSERT_EQ(0, errno);

  ASSERT_EQ(0, closedir(d));
}
开发者ID:Decatf,项目名称:platform_bionic,代码行数:46,代码来源:dirent_test.cpp


示例14: dir_node_rewind

void
dir_node_rewind ( dir_node* node ) {
  if ( !empty_dir_node(node) ) {
    DIR* dirp = node->dir_ptr;
    assert(dirp);
    assert(node->loc != 0);
    seekdir(dirp, node->loc);
  }
}
开发者ID:bartuer,项目名称:bew,代码行数:9,代码来源:dir_node.c


示例15: Mono_Posix_Syscall_seekdir

G_BEGIN_DECLS

gint32
Mono_Posix_Syscall_seekdir (void *dir, mph_off_t offset)
{
	mph_return_if_off_t_overflow (offset);

	seekdir ((DIR*) dir, (off_t) offset);

	return 0;
}
开发者ID:AveProjVstm,项目名称:MonoVstm,代码行数:11,代码来源:dirent.c


示例16: run_dir_tests

int
run_dir_tests (char *testpath)
{
        int             ret = -1;
        DIR             *dh = NULL;
        struct dirent   *dire = NULL;

        assert (testpath);

        fprintf (stdout, "Testing mkdir");
        ret = mkdir (testpath, 0);
        check_err (ret, "mkdir", 2);

        fprintf (stdout, "Testing rmdir");
        ret = rmdir (testpath);
        check_err (ret, "rmdir", 2);

        fprintf (stdout, "Testing opendir");
        ret = 0;
        dh = opendir (testpath);
        if (!dh)
                ret = -1;
        check_err (ret, "opendir", 2);

        fprintf (stdout, "Testing readdir");
        ret = 0;
        dire = readdir (dh);
        if (!dire)
                ret = -1;
        check_err (ret, "readdir", 1);

        fprintf (stdout, "Testing readdir_r");
        ret = readdir_r (dh, dire, &dire);
        check_err (ret, "readdir_r", 1);

        fprintf (stdout, "Testing rewinddir");
        rewinddir (dh);
        check_err (-1, "rewinddir", 1);

        fprintf (stdout, "Testing seekdir");
        seekdir (dh, 0);
        check_err (-1, "seekdir", 2);

        fprintf (stdout, "Testing telldir");
        ret = telldir (dh);
        check_err (ret, "telldir", 2);

        fprintf (stdout, "Testing closedir");
        ret = closedir (dh);
        check_err (ret, "closedir", 2);
        return 0;
}
开发者ID:Anna-Miya-Dan,项目名称:glusterfs,代码行数:52,代码来源:ld-preload-test.c


示例17: main

int main(int argc, char **argv) {
  struct stat s;

  char first[256], second[256];
  DIR *d = opendir(".");
  struct dirent *de = readdir(d);
  assert(de);
  strcpy(first, de->d_name);
  off_t pos = telldir(d);
  printf("pos: %d\n", telldir(d));
  de = readdir(d);
  assert(de);
  strcpy(second, de->d_name);

  // Go back to second and check
  seekdir(d, pos);
  de = readdir(d);
  assert(de);
  assert(strcmp(de->d_name, second) == 0);

  // Go to end, then back to 2nd
  while (de)
    de = readdir(d);
  assert(!errno);
  seekdir(d, pos);
  assert(telldir(d) == pos);
  de = readdir(d);
  assert(de);
  assert(strcmp(de->d_name, second) == 0);

  // Go to beginning and check
  rewinddir(d);
  de = readdir(d);
  assert(de);
  assert(strcmp(de->d_name, first) == 0);  
  closedir(d);

  return 0;
}
开发者ID:0bliv10n,项目名称:s2e,代码行数:39,代码来源:DirSeek.c


示例18: traverse

void traverse(char const *dir)
{
    char name[PATH_MAX];
    DIR *d;
    struct dirent *dd;
    off_t o;
    struct stat s;
    char *delim = "/";
    /* если в качестве каталога передан корневой каталог,
    * разделитель не нужен */
    if (!strcmp(dir, "/")) delim = "";
    /* открываем каталог */
    if (!(d = opendir(dir))) {
        /* не смогли открыть */
        perror(dir);
        return;
    }
    /* считываем, пока dd не равен NULL, то есть
    * пока есть записи в каталоге */
    while ((dd = readdir(d))) {
        /* пропускаем . и .. */
        if (!strcmp(dd->d_name, ".") || !strcmp(dd->d_name, ".."))
            continue;
        /* формируем полный путь */
        snprintf(name, PATH_MAX, "%s%s%s", dir, delim, dd->d_name);
        /* получаем информацию о файле
        * используем lstat, чтобы не зациклиться на символических
        * связях */
        if (lstat(name, &s) < 0) continue;
        /* проверяем, что это каталог */
        if (S_ISDIR(s.st_mode)) {
            /* запоминаем текущее положение в каталоге */
            o = telldir(d);
            /* экономим файловые дескрипторы */
            closedir(d);
            /* вызываем себя рекурсивно */
            traverse(name);
            /* восстанавливаем старое положение */
            if (!(d = opendir(dir))) {
                perror(dir);
                return;
            }
            seekdir(d, o);
        } else {
            /* печатаем путь */
            printf("%s\n", name);
        }
    }
    closedir(d);
}
开发者ID:Cergoo,项目名称:junk,代码行数:50,代码来源:traverse_read_fs.c


示例19: dir_seek

/*
 *  call-seq:
 *     dir.seek( integer ) => dir
 *
 *  Seeks to a particular location in <em>dir</em>. <i>integer</i>
 *  must be a value returned by <code>Dir#tell</code>.
 *
 *     d = Dir.new("testdir")   #=> #<Dir:0x401b3c40>
 *     d.read                   #=> "."
 *     i = d.tell               #=> 12
 *     d.read                   #=> ".."
 *     d.seek(i)                #=> #<Dir:0x401b3c40>
 *     d.read                   #=> ".."
 */
static VALUE
dir_seek(VALUE dir, VALUE pos)
{
    struct dir_data *dirp;
    off_t p = NUM2OFFT(pos);

    GetDIR(dir, dirp);
#ifdef HAVE_SEEKDIR
    seekdir(dirp->dir, p);
    return dir;
#else
    rb_notimplement();
#endif
}
开发者ID:tflynn,项目名称:ruby19-norubygems,代码行数:28,代码来源:dir.c


示例20: seekdir

char *read_dir(void *stream, unsigned long long *pos,
	       unsigned long long *ino_out, int *len_out)
{
	DIR *dir = stream;
	struct dirent *ent;

	seekdir(dir, *pos);
	ent = readdir(dir);
	if(ent == NULL) return(NULL);
	*len_out = strlen(ent->d_name);
	*ino_out = ent->d_ino;
	*pos = telldir(dir);
	return(ent->d_name);
}
开发者ID:WiseMan787,项目名称:ralink_sdk,代码行数:14,代码来源:hostfs_user.c



注:本文中的seekdir函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ seen函数代码示例发布时间:2022-05-30
下一篇:
C++ seekToSampleAndProcess函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap