Beispiel #1
0
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;
}
Beispiel #2
0
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;
}
Beispiel #3
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;
}
Beispiel #4
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);
}