本文整理汇总了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;未经允许,请勿转载。 |
请发表评论