summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/fhandler_netdrive.cc
Commit message (Collapse)AuthorAgeFilesLines
* * dir.cc (readdir_worker): Drop dir parameter from call toCorinna Vinschen2007-07-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | readdir_get_ino. * fhandler.h (fhandler_disk_file::readdir_helper): Switch file name parameter to PUNICODE_STRING. * fhandler_disk_file.cc: Drop including ntdef.h. (class __DIR_mounts): Store mount points in UNICODE. Additionally store cygdrive prefix in unicode here. Change methods accordingly. (__DIR_mounts::eval_ino): Call new stat_worker instead of lstat64. (__DIR_mounts::~__DIR_mounts): New destructor to free UNICODE buffers. (path_conv::ndisk_links): Rewrite using native NT functions. (fhandler_base::fstat_by_handle): Use NAME_MAX instead of CYG_MAX_PATH. Always set pfvi->VolumeSerialNumber to non-0. Remove last resort code. (fhandler_base::fstat_by_name): Rewrite using native NT functions. (fhandler_base::fstat_fs): Always call fstat_by_name if fstat_by_handle fails. (fhandler_base::fstat_helper): Rely on dwVolumeSerialNumber. (fhandler_disk_file::facl): Call fstat_by_name if fstat_by_handle fails. (DIR_BUF_SIZE): Define using NAME_MAX instead of CYG_MAX_PATH. (__DIR_cache): Remove __name. (d_dirname): Remove. (fhandler_disk_file::opendir): Drop pathname length check. Remove outdated comment. Use get_name method instead of accessing pc.normalized_path directly. (readdir_get_ino): Drop unused dir parameter. Accomodate throughout. Allocate fname dynamically. Call new stat_worker instead of lstat64. Call NtOpenFile instead of CreateFile. Call NtClose instead of CloseHandle. (fhandler_disk_file::readdir_helper): Use native NT functions. Check for volume mount points and use correct inode number. (fhandler_disk_file::readdir): Simplify slightly. Use get_name instead of pc.normalized_path. (fhandler_disk_file::rewinddir): Use RtlInitUnicodeString. (fhandler_cygdrive::fstat): Ignore floppy drives. Set st_nlink correctly. (fhandler_cygdrive::readdir): Ignore floppy drives. * fhandler_netdrive.cc (fhandler_netdrive::readdir): Accommodate change to readdir_get_ino. * fhandler_proc.cc (PROC_DIR_COUNT): Define. (fhandler_proc::fstat): Evaluate correct link count for /proc. * ntdll.h (struct _FILE_DIRECTORY_INFORMATION): Define. (NtFsControlFile): Declare. (RtlAppendUnicodeToString): Declare. (RtlAppendUnicodeStringToString): Declare. (RtlCompareUnicodeString): Declare. (RtlCopyUnicodeString): Declare. (RtlCreateUnicodeStringFromAsciiz): Declare. (RtlEqualUnicodeString): Declare. (RtlFreeUnicodeString): Declare. (RtlInitEmptyUnicodeString): Declare. (RtlSecondsSince1970ToTime): Declare. (RtlInitEmptyUnicodeString): Define as inline function. (RtlInitCountedUnicodeString): Define as inline function. * path.cc (path_conv::check): New method with PUNICODE_STRING as path, preliminary implementation. (mount_info::get_mounts_here): Change to create UNICODE_STRINGs. Also copy cygpath prefix into UNICODE_STRING. (is_floppy): Drop 9x consideration. * path.h: Drop including ntdef.h. (path_conv::check): Add declaration. (path_conv::path_conv): Add constructor for UNICODE_STRING paths. * shared_info.h (mount_info::get_mounts_here): Change declaration. * syscalls.cc: Drop forward declaration of stat_worker. (stat_worke): Take path_conv as parameter. Drop nofollow flag. (stat64): Create matching path_conv and call stat_worker with it. (lstat64): Ditto. * winsup.h: Include ntdef.h. (stat_worker): Declare. (readdir_get_ino): Change declaration.
* * fhandler_disk_file.cc (path_conv::hasgood_inode): Make inline.Corinna Vinschen2006-04-141-1/+8
| | | | | | | | | | | Drop remote fs handling entirely since unreliable inode numbers are now recognized differently. (path_conv::is_samba): Make inline. (fhandler_disk_file::opendir): Reformat comment. (fhandler_base::fstat_helper): Special case remote file systems returning (unreliable) 32 bit inode numbers. (fhandler_base::readdir): Ditto. * fhandler_netdrive.cc (fhandler_netdrive::readdir): Ditto.
* * dir.cc (readdir_worker): Use slash as path separator when evaluatingCorinna Vinschen2006-02-281-1/+4
| | | | | | namehash for paths below /proc. * fhandler_netdrive.cc (fhandler_netdrive::readdir): Use expensive inode number evaluation on share names.
* * fhandler_netdrive.cc (fhandler_netdrive::fstat): Create unambiguousCorinna Vinschen2006-02-271-0/+3
| | | | | inode number. (fhandler_netdrive::readdir): Ditto.
* Change process_lock to lock_process throughout. Change all calls to newChristopher Faylor2005-10-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | cygthread to handle extra argument, throughout. * cygthread.h (cygthread::callproc): Declare new method. (cygthread::cygthread): Add optional length argument to allow copying arguments to executing thread. * cygthread.cc (cygthread::callproc): Define new method. (cygthread::stub): Use callfunc to invoke thread func to allow potentially allocating stack memory which will be returned. (cygthread::simplestub): Ditto. (cygthread::cygthread): Accept arglen argument. Reset ev here prior to activating thread. Wait for ev after activating thread if we're copying contents to the thread. Wait until the end before setting h, to allow thread synchronization. (cygthread::release): Don't reset ev here. Rely on that happening the next time the thread is activated. * pinfo.h (commune_process): Rename declaration from _pinfo::commune_process. * pinfo.cc (commune_process): Ditto for definition. Modify slightly to allow running as a separate cygthread. * sigproc.cc (child_info::sync): Always wait for both subproc_ready and any hProcess if we have a cygwin parent. (talktome): Change argument to be a pointer to siginfo_t. Contiguously allocate whole siginfo_t structure + any needed extra for eventual passing to commune_process thread. (wait_sig): Accommodate change in talktome argument. * pipe.cc (fhandler_pipe::fixup_after_exec): Remove debugging.
* * cygerrno.h (geterrno_from_win_error): Change declaration to default to usingChristopher Faylor2005-08-201-14/+17
| | | | | | | | | | | | | | | | | | | | | | | | | GetLastError and EACCESS. * cygwin.din: Export readdir_r. * include/cygwin/version.h: Bump API version number to 138. * syscalls.cc (readdir_worker): New function, renamed from old readdir() function. (readdir): Use readdir_worker. (readdir_r): New function. * fhandler.h (fhandler_base::readdir): Accommodate second argument indicating dirent buffer. (fhandler_disk_file::readdir): Ditto. (fhandler_cygdrive::readdir): Ditto. (fhandler_proc::readdir): Ditto. (fhandler_netdrive::readdir): Ditto. (fhandler_registry::readdir): Ditto. (fhandler_process::readdir): Ditto. * fhandler.cc (fhandler_base::readdir): Ditto. * fhandler_disk_file.cc (fhandler_disk_file::readdir): Ditto. * fhandler_cygdrive.cc (fhandler_cygdrive::readdir): Ditto. * fhandler_proc.cc (fhandler_proc::readdir): Ditto. * fhandler_netdrive.cc (fhandler_netdrive::readdir): Ditto. * fhandler_registry.cc (fhandler_registry::readdir): Ditto. * fhandler_process.cc (fhandler_process::readdir): Ditto.
* white spaceChristopher Faylor2005-08-121-6/+6
|
* Eliminate (void) cast on standalone function calls throughout.Christopher Faylor2005-07-061-1/+1
|
* * cygthread.cc (cygthread::detach): Make error message a little more detailed.Christopher Faylor2005-06-071-1/+1
| | | | | | | | | * fhandler.cc (fhandler_base::raw_read): Ditto for debug message. * dcrt0.cc (do_exit): Add some more synchronization tests. * fhandler_fifo.cc (fhandler_fifo::dup): Don't duplicate a nonexistent handle. Use derived return value rather than always retuning 0. * fhandler_netdrive.cc (fhandler_netdrive::exists): Wnet -> WNet. * winsup.h (exit_states): Add a couple of new exit states.
* * fhandler_netdrive.cc (fhandler_netdrive::telldir): Remove since it'sCorinna Vinschen2005-05-181-6/+0
| | | | | equivalent to fhandler_virtual::telldir now anyway. * fhandler.h (class fhandler_netdrive): Remove telldir.
* * fhandler_netdrive.cc (fhandler_netdrive::telldir): Implement.Corinna Vinschen2005-05-181-5/+9
| | | | | | (fhandler_netdrive::seekdir): Implement. (fhandler_netdrive::closedir): Call rewinddir to have only one point of calling WNetCloseEnum.
* * fhandler.h (class fhandler_netdrive): Add method rewinddir.Corinna Vinschen2005-05-171-36/+102
| | | | | | | | | | | | * fhandler_netdrive.cc (struct netdriveinf): New structure to store thread arguments. (thread_netdrive): Thread handling all potentially blocking WNet... calls. (create_thread_and_wait): Start and wait for above thread. (fhandler_netdrive::exists): Change to call create_thread_and_wait instead of calling WNet... function. (fhandler_netdrive::readdir): Ditto. Fix error handling. (fhandler_netdrive::rewinddir): New method.
* * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): CheckCorinna Vinschen2005-05-141-1/+1
| | | | | | return code from GetFileSize and set file size to 0 if necessary. * fhandler_netdrive.cc (fhandler_netdrive::fstat): Set permissions to read/execute for all.
* * fhandler.h (fhandler_netdrive::readdir): Remove useless comment.Corinna Vinschen2005-05-131-1/+0
|
* * autoload.cc (WNetGetResourceParentA): Import.Corinna Vinschen2005-05-131-4/+102
| | | | | | | | | | | | | | | (WNetOpenEnumA): Import. (WNetEnumResourceA): Import. (WNetCloseEnum): Import. * fhandler.h (fhandler_netdrive::telldir): Add declaration. (fhandler_netdrive::seekdir): Ditto. (fhandler_netdrive::closedir): Ditto. * fhandler_netdrive.cc: Drop explicit including windows.h. Include winnetwk.h instead of shlwapi.h. Include dirent.h. (fhandler_netdrive::readdir): Implement. (fhandler_netdrive::telldir): New method. (fhandler_netdrive::seekdir): New method. (fhandler_netdrive::closedir): Ditto.
* * fhandler_netdrive.cc (fhandler_netdrive::exists): Assert that "//" exists.Christopher Faylor2005-05-131-1/+4
|
* * cygtls.cc (_cygtls::remove): Eliminate compiler warning.Christopher Faylor2005-05-131-0/+20
| | | | | | | | | | | | | | | * dir.cc (mkdir): Check path for writability. (rmdir): Ditto. Remove check for special directories. * path.cc (path_conv::check): Set PATH_RO for virtual devices. Set error if read-only and asked for writability. * path.h (pathconv_arg): Add PC_WRITABLE. (path_types): Add PATH_RO. (path_conv::isro): Add (currently unused) check for read-only filesystem. Return "ENOSHARE" when we know a share doesn't exist. * include/sys/mount.h: Add MOUNT_RO flag. * autoload.cc (WNetGetResourceInformationA): Import. * fhandler_netdrive.cc (fhandler_netdrive::exists): Detect actual existence of remote system rather than always assuming that it exists.
* 2005-05-09 Pierre Humblet <pierre.humblet@ieee.org>Pierre Humblet2005-05-091-1/+75
| | | | | | | | | | | | | * fhandler.h (class fhandler_netdrive): New class. * fhandler_netdrive.cc (fhandler_netdrive::fhandler_netdrive): New constructor. (fhandler_netdrive::exists): New method. (fhandler_netdrive::fstat): Ditto. (fhandler_netdrive::readdir): Ditto. (fhandler_netdrive::open): Ditto. * dtable.cc (build_fh_pc): Handle case FH_NETDRIVE. * path.cc (isvirtual_dev): Add FH_NETDRIVE. (mount_info::conv_to_win32_path): Detect netdrive device and bypass mount search for network paths.
* * Makefile.in (DLL_O_FILES): Add fhandler_netdrive.o.Christopher Faylor2005-05-061-0/+10
* fhandler_netdrive.cc: Placeholder file for future development. * devices.h (FH_NETDRIVE): Define new virtual device type. (netdrive_dev): Define. * devices.in (dev_netdrive_storage): Define. * devices.cc: Regenerate.