void rewinddir(DIR *dptr) { HANDLE hfind; WIN32_FIND_DATA fdata; char *tmp = dptr->orig_dir_name; if (!dptr) return; if (dptr->flags & IS_NET) { hfind = open_enum(tmp,&fdata); close_enum(dptr); dptr->dd_fd = hfind; } else { hfind = FindFirstFile(tmp,&fdata); assert(hfind != INVALID_HANDLE_VALUE); FindClose(dptr->dd_fd); dptr->dd_fd = hfind; } dptr->dd_size = fdata.nFileSizeLow; (dptr->dd_buf)->d_ino = inode++; (dptr->dd_buf)->d_off = 0; (dptr->dd_buf)->d_reclen = 0; memcpy((dptr->dd_buf)->d_name,fdata.cFileName,MAX_PATH); return; }
int closedir(DIR *dptr) { if (!dptr) return 0; if (dptr->dd_stat & IS_NET) { close_enum(dptr); } else FindClose((HANDLE)dptr->dd_handle); /* dd_dir is part of DIR */ xfree(dptr); return 0; }
int closedir(DIR *dptr){ if (!dptr) return 0; if (dptr->flags & IS_NET) { close_enum(dptr); } else FindClose(dptr->dd_fd); heap_free(dptr->dd_buf); heap_free(dptr); return 0; }
void rewinddir(DIR *dptr) { HANDLE hfind; WIN32_FIND_DATA fdata; char *tmp = dptr->dd_name; if (!dptr) return; if (dptr->dd_stat & IS_NET) { hfind = open_enum(tmp, &fdata); close_enum(dptr); dptr->dd_handle = (intptr_t)hfind; } else { hfind = FindFirstFile(tmp, &fdata); /* rewinddir cannot fail, if it fails ... ? */ if (hfind != INVALID_HANDLE_VALUE) { /* close the OLD handle */ FindClose((HANDLE)(dptr->dd_handle)); dptr->dd_handle = (intptr_t)hfind; } } memcpy((dptr->dd_dir).d_name, fdata.cFileName, MAX_PATH); }