summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
Commit message (Collapse)AuthorAgeFilesLines
...
* * dir.cc (readdir): Fix shortcut==symlink condition.Corinna Vinschen2001-03-021-74/+77
| | | | | | | | | | | | | * environ.cc: Add extern decl for `allow_winsymlinks'. (struct parse_thing): Add entry for `[no]winsymlinks'. * path.cc (symlink): Change to be able to create both, symlink==shortcut and symlink==systemfile, dependent of the setting of `allow_winsymlinks'. * security.cc (cygwin_logon_user): Add debug output. * shortcut.c: Add defines from path.h. (has_exec_chars): Copy from path.h. (check_shortcut): Check for executable file condition if not a shortcut.
* * path.cc (symlink): Add a ".lnk" suffix regardless. Add a comment.Corinna Vinschen2001-02-251-5/+5
|
* * path.cc (symlink): Keep relative paths relative in the DOSCorinna Vinschen2001-02-221-9/+12
| | | | | path inside of a shortcut. If that's impossible or the target path is already absolute save an absolute path.
* * path.cc (symlink): Keep relative paths relative in the DOSCorinna Vinschen2001-02-221-4/+33
| | | | | path inside of a shortcut. If that's impossible for some reason, save an absolute path.
* * cygerrno.h: Revert previous patch.Corinna Vinschen2001-02-221-7/+20
| | | | | | | | | | | | | | | | | | | | | | * errno.cc: Ditto. * dir.cc: Eliminate `dir_suffixes'. (opendir): Remove usage of `dir_suffixes'. (rmdir): Ditto. * fhandler.cc (fhandler_disk_file::open): Remove usage of `inner_suffixes'. * path.cc: Rename `inner_suffixes' to `lnk_suffixes'. (path_conv::check): Remove usage of `inner_suffixes'. (symlink): Ditto. (symlink_info::check): Handle checking for `.lnk' in path_conv exclusively here. (chdir): Remove usage of `dir_suffixes'. * shortcut.c: Eliminate debug_printf lines. (check_shortcut): Don't set error except on failing ReadFile. * spawn.cc: Remove ".lnk" from `std_suffixes'. * syscalls.cc (_unlink): Remove usage of `inner_suffixes'. Remove ".lnk" from `stat_suffixes'. (_rename): Add check for renaming a symlink to keep the ".lnk" suffix after renaming.
* * shortcut.c: New file. Provides a C interface to reading ofCorinna Vinschen2001-02-221-165/+16
| | | | | | | | | | | | | | | | | | | | Windows shortcuts to avoid compiler flag `-fvtable-thunks'. * shortcut.h: Ditto. * Makefile.in: Add shortcut.o to DLL_OFILES. * cygerrno.h: Provide a C interface to `geterrno_from_win_error' for using in shortcut.c. * errno.cc (geterrno_from_win_error): Define as extern "C". * path.cc (struct symlink_info): Remove methods `check_shortcut' and `check_sysfile'. (shortcut_header): Move to shortcut.c. (shortcut_initalized): Ditto. (create_shortcut_header): Ditto. (cmp_shortcut_header): Ditto. (symlink_info::check_shortcut): Ditto. Reorganize as a plain C function. (symlink_info::check_sysfile): Redefine as a global function using the same parameter list as `check_shortcut' for clearness. (symlink_info::check): Change parameter list for calls to `check_shortcut' and `check_sysfile'.
* * fhandler.cc (fhandler_disk_file::open): Use `inner_suffixes' whenCorinna Vinschen2001-02-221-1/+1
| | | | | resolving real_path. * path.cc (symlink): Ditto for win32_topath.
* Add copyright year 2001Corinna Vinschen2001-02-211-1/+1
|
* * Makefile.in: Add `-lshell32 -luuid' to link pass for new-cygwin1.dll.Corinna Vinschen2001-02-211-62/+287
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * autoload.cc: Add LoadDLLinitfunc for ole32.dll. Add LoadDLLfuncEx statements for CoInitialize@4, CoUninitialize@0 and CoCreateInstance@20. * dir.cc (dir_suffixes): New datastructure. (readdir): Check for R/O *.lnk files to hide the suffix. (opendir): Use `dir_suffixes' in path conversion. (rmdir): Ditto. * fhandler.cc (fhandler_disk_file::fstat): Add S_IFLNK flag before calling `get_file_attribute'. Take FILE_ATTRIBUTE_READONLY into account only if the file is no symlink. * path.cc (inner_suffixes): New datastructure. (SYMLINKATTR): Eliminated. (path_conv::check): Use `inner_suffixes' on inner path components. (shortcut_header): New global static variable. (shortcut_initalized): Ditto. (create_shortcut_header): New function. (cmp_shortcut_header): Ditto. (symlink): Create symlinks by creating windows shortcuts. Preserve the old code. (symlink_info::check_shortcut): New method. (symlink_info::check_sysfile): Ditto. (symlink_info::check): Check for shortcuts. Move code reading old system attribute symlinks into symlink_info::check_sysfile(). (chdir): Use `dir_suffixes' in path conversion. * security.cc (get_file_attribute): Check for S_IFLNK flag. Force 0777 permissions then. * spawn.cc (std_suffixes): Add ".lnk" suffix. * syscalls.cc (_unlink): Use `inner_suffixes' in path conversion. Check for shortcut symlinks to eliminate R/O attribute before calling DeleteFile(). (stat_suffixes): Add ".lnk" suffix. (stat_worker): Force 0777 permissions if file is a symlink.
* * cygheap.cc (init_cheap): Move username initialization.Christopher Faylor2001-01-281-5/+26
| | | | | | | | | | | | | (cygheap_init): Here. * shared_info.h (mount_info): Add a sys_mount_table_counter field. (shared_info): Ditto. * path.cc (mount_info::conv_to_win32_path): Check that our mount table is in sync with the system mount table and reinitialize it if not. (mount_info::add_reg_mount): Bump sys_mount_table counters if the system mount table changes. (mount_info::del_reg_mount): Ditto. (mount_info::write_cygdrive_info_to_registry): Ditto. (mount_info::remove_cygdrive_info_from_registry): Ditto.
* Throughout, change 'cygwin_shared.mount' to 'mount_table'.Christopher Faylor2001-01-281-43/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * child_info.h (child_info): Move shared_h, console_h to cygheap. Add mount_h. * cygheap.h (init_cygheap): Add shared_h, console_h. * cygheap.cc (init_cheap): Initialize heap at a fixed location after the shared memory regions. Initialize cygheap->user name here. * dcrt0.cc (dll_crt0_1): Call getpagesize () to initialize constants. Remove cygheap_init since it is done in shared_init now. (_dll_crt0): Initialize mount_h, remove shared_h and console_h initialization. * fhandler_console.cc (console_shared_h): Eliminate. (get_tty_stuff): Use cygheap->console_h rather than console_shared_h. * heap.cc (heap_init): Use page size constant calculated earlier in initialization. * shared.cc: Eliminate cygwin_shared_h. Add cygwin_mount_h. (mount_table_init): New function for initializing a user mount table. (open_shared_file_map): Use constant for shared memory region. Initialize cygheap and mount table here. (open_shared): Improve debugging output. (shared_info::initialize): Eliminate call to mount.init. (shared_terminate): Use cygheap->shared_h. Close cygwin_mount_h. (open_shared_file_map): Eliminate. * shared_info.h (mount_info): Add a version field. (shared_align_past): New macro for calculating location for shared memory regions. * sigproc.cc (init_child_info): Eliminate shared_h, console_h. * spawn.cc (spawn_guts): Pass on cygwin_mount_h iff not a different user. * syscalls.cc (system_info): New global holding system memory defaults. (getpagesize): Use system_info. * uinfo.cc (internal_getlogin): Only fill in user name if nonexistent. * winsup.h: Declare system_info. * passwd.cc (read_etc_passwd): Use cygheap->user.name () rather than retrieving the name again.
* * path.cc (path_conv::check): Detect when path has symlinks.Christopher Faylor2001-01-271-5/+20
| | | | | (symlink_info::check): Remove debugging stuff. (chdir): Use posix'ized win32 path if cd'ed to a path using symlinks.
* * path.h: Add a new constant.Christopher Faylor2001-01-221-34/+5
| | | | * syscalls.cc (_read): Oscillate errno check.
* * include/cygwin/version.h: Bump API to reflect setlogmask.Christopher Faylor2001-01-221-5/+34
|
* * environ.cc (struct parse_thing): Add entry for new CYGWIN optionCorinna Vinschen2000-12-191-1/+6
| | | | | | | | | | | `smbntsec'. * path.cc (path_conv::check): Check path for being a remote path. If so and `allow_smbntsec' is set to FALSE, set has_acls to FALSE. * security.cc: Add global definition for `allow_smbntsec'. * security.h: Add extern declaration for `allow_smbntsec'. * fhandler.cc (fhandler_disk_file::open): Eliminate extern declaration of `allow_ntsec'. * syscalls.cc: Ditto.
* * path.cc (normalize_posix_path): Calculate path name length overruns moreChristopher Faylor2000-12-151-8/+10
| | | | | | dynamically. (normalize_win32_path): Ditto. * Makefile.in: Avoid scanning the directory twice for *.d files.
* * path.cc (normalize_win32_path): Check for explicit use of two slashes at theChristopher Faylor2000-12-091-4/+4
| | | | | | beginning of a path. These should be treated specially regardless of whether they are UNC paths or old-style //a paths. Avoid adding cwd to a path if the path already begins with '/'.
* * path.cc (normalize_win32_path): Reorganize logic to accomodate chroot.Christopher Faylor2000-12-091-26/+27
| | | | | | Always check for MAX_PATH overrun. Avoid adding one too many backslashes when src path begins with a slash. From Corinna Vinschen. * winsup.h: Force demangling for dll_crt0 for newer compilers.
* * path.cc (normalize_win32_path): Handle UNC paths better.Christopher Faylor2000-12-031-3/+11
| | | | (slash_unc_prefix_p): Allow backslash UNC paths.
* * Makefile.in: Use CXX to build the DLL.Christopher Faylor2000-12-031-3/+5
| | | | | | | | * configure.in: Find correct c++ compiler. * configure: Regenerate. * path.cc (normalize_posix_path): Put correct drive at beginning of \foo style paths. (chdir): Don't send non-posix path to cygcwd.set.
* * fhandler.cc (fhandler_disk_file::open): Check for buggy CreateFileCorinna Vinschen2000-11-281-1/+7
| | | | | | | | | condition. * path.cc (path_conv::check): Get file system type in call to GetVolumeInformation to check for file systems with buggy CreateFile. * path.h (enum path_types): Add PATH_HASBUGGYOPEN. (class path_conv): Add methods `has_buggy_open' and `set_has_buggy_open'.
* * path.cc (mount_info::read_cygdrive_info_from_registry): Read system cygdriveChristopher Faylor2000-11-241-14/+14
| | | | | prefix with KEY_READ. (mount_info::get_cygdrive_info): Ditto.
* * path.cc (normalize_posix_path): Special care for root directoryCorinna Vinschen2000-11-171-1/+5
| | | | in case of files beginning with a dot.
* * cygheap.cc (cygheap_root::cygheap_root): New function.Corinna Vinschen2000-11-151-16/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (cygheap_root::~cygheap_root): Ditto. (cygheap_root::operator=): Ditto. (cygheap_user::~cygheap_user): Ditto. (cygheap_user::set_name): Ditto. (cygheap_user::set_logsrv): Ditto. (cygheap_user::set_domain): Ditto. (cygheap_user::set_sid): Ditto. * cygheap.h (cygheap_root): New class. (cygheap_user): Ditto. (init_cygheap): Change type of `root' member to cygheap_root. Add `user' member. * dir.cc (opendir): Use new `cygheap_root' class. * dcrt0.cc (dll_crt0_1): Use new `cygheap_user' class. * fork.cc (fork_parent): Ditto. * grp.cc (getgroups): Ditto. * passwd.cc (search_for): Ditto. * path.cc: Use new `cygheap_root' class throughout. * pinfo.h (_pinfo): Remove `use_psid'. Move `username', `psid', `logsrv', `domain', `orig_{uid,gid}' and `real_{uid,gid}' to cygheap_user class. * security.cc: Use new `cygheap_user' class throughout. * shared.cc (sec_user): Ditto. * sigproc.cc (proc_subproc): Remove copy statements for user related information moved to `cygheap_user' class. * spawn.cc (spawn_guts): Invalidate current chroot settings when creating Windows environment. Use new `cygheap_user' class. * syscalls.cc: Use new `cygheap_user' class throughout. * uinfo.cc: Ditto. * uinfo.cc (internal_getlogin): Change parameters to reflect the move of user information to cygheap.
* * cygheap.h (init_cygheap): New struct holding values that live in the CygwinChristopher Faylor2000-11-141-15/+15
| | | | | | | | | | | | | | | | | | | | | heap. * child_info.h (child_info): Change pointer type of cygheap to init_cygheap. * cygheap.cc (init_cheap): Point cygheap_max after contents of cygheap. Move some stuff into cygheap.h. * dir.cc (opendir): Change to use root and rootlen in cygheap rather than in myself. (mkdir): Change to use umask in cygheap rather than in myself. * path.cc: Ditto, throughout. * syscalls.cc (_open): Ditto. Change to use umask in cygheap rather than in myself. (chroot): Change to allocate root dir on the cygwin heap. (umask): Change to use umask in cygheap rather than in myself. (cygwin_bind): Ditto. * sigproc.cc (proc_subproc): Don't copy umask or root stuff as this happens automatically now. * pinfo.h (_pinfo): Migrate stuff out of here and into init_cheap. * dcrt0.cc (dll_crt0_1): Call cygheap_init later in startup for first cygwin process.
* * path.cc (get_device_number): Allow /dev/ttySn to designate a com port.Christopher Faylor2000-11-131-0/+4
|
* * environ.cc (_addenv): malloc space for setenv if cygwin1.dll is used inChristopher Faylor2000-11-081-1/+16
| | | | | | | | | | | | | | | | | | conjunction with older binaries. (environ_init): Ditto. * external.cc (get_cygdrive_info): New function. * external.cc (get_cygdrive_prefixes): Change to use get_cygdrive_info but toss the user and system flags. * external.cc (cygwin_internal): Add new CW_GET_CYGDRIVE_INFO case. * path.cc (mount_info::get_cygdrive_prefixes): Remove method. * path.cc (mount_info::get_cygdrive_info): New method. Actually, get_cygdrive_info is really an enhanced version of get_cygdrive_prefixes renamed to get_cygdrive_info that also gets the user and system flags. * shared_info.h (get_cygdrive_prefixes): Remove method. * shared_info.h (get_cygdrive_info): New method. * include/cygwin/version.h: Bump minor API version due to adding CW_GET_CYGDRIVE_INFO to cygwin_internal. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_GET_CYGDRIVE_INFO.
* * path.cc (mount_info::read_cygdrive_info_from_registry): UseChristopher Faylor2000-11-061-11/+14
| | | | | | | | | | | CYGWIN_INFO_CYGDRIVE_PREFIX, CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX, and CYGWIN_INFO_CYGDRIVE_FLAGS. * path.cc (mount_info::write_cygdrive_info_to_registry): Use CYGWIN_INFO_CYGDRIVE_PREFIX and CYGWIN_INFO_CYGDRIVE_FLAGS. * path.cc (mount_info::remove_cygdrive_info_from_registry): Ditto. * path.cc (mount_info::get_cygdrive_prefixes): Use CYGWIN_INFO_CYGDRIVE_PREFIX. * include/cygwin/version.h: Add CYGWIN_INFO_CYGDRIVE_FLAGS, CYGWIN_INFO_CYGDRIVE_PREFIX, and CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX.
* * exceptions.cc (interruptible): Remove obsolete tests.Christopher Faylor2000-11-021-1/+5
| | | | | | (sigreturn): Construct pseudo-frame-pointer so that signal handler can figure out where to put return address when signals are coming in quickly. * path.cc (cwdstuff::get): Allow length 0 buffer length when buffer when NULL.
* * path.h (has_exec_chars): Standard function for checking for executable magicChristopher Faylor2000-10-311-4/+5
| | | | | | numbers. * path.cc (symlink_info::check): Use the above function. * fhandler.cc (fhandler_disk_file::open): Ditto.
* * path.cc (_readlink): Return ENOENT when file does not exist.Christopher Faylor2000-10-311-0/+6
|
* * fork.cc (fork): Set sigframe here, since it can pause for a considerableChristopher Faylor2000-10-231-0/+19
| | | | | | | amount of time. * environ.cc (_addenv): Add debugging. * fhandler.cc: Eliminate unneeded include. * smallprint.c: Ditto.
* * Makefile.in: add miscfuncs.ccDJ Delorie2000-10-191-99/+7
| | | | | | | | | | * miscfuncs.cc: new, miscellaneous functions * winsup.h: define table-driven tolower/toupper * environ.cc: use them * fhandler_console.cc: ditto * fhandler_termios: ditto * path.cc: ditto (strncasematch, strcasematch, strcasestr): move to miscfuncs.cc
* * dcrt0.cc (dll_crt0_1): init cygcwd before forkee branchDJ Delorie2000-10-191-1/+24
| | | | | | | | | | * environ.cc (conv_start_chars): Cache a table of "first characters" for environment variables needing conversion. (getwinenv): Use it. (environ_init): Create it, also check first chars for TERM and CYGWIN. * path.cc: Use lookup table for case insensitive comparisons.
* * fhandler_clipboard.cc: new fileDJ Delorie2000-10-171-0/+3
| | | | | | | | | | | * Makefile.in: include fhandler_clipboard.o in DLL_OFILES list. * fhandler.h: add FH_CLIPBOARD to the devices enum. (fhandler_dev_clipboard): new * path.cc (windows_device_names): add "\\dev\\clipboard" (get_device_number): check for "clipboard" * dcrt0.cc: declare a few more functions from winuser.h * dtable.cc (dtable::build_fhandler): check for FH_CLIPBOARD in switch().
* * Makefile.in: Remove some obsolete stuff.Christopher Faylor2000-10-161-14/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * dcrt0.cc (dll_crt0_1): Call signal_fixup_after_exec where appropriate. Set myself->uid from parent version. Just use ThreadItem Init method. Close or store hexec_proc as appropriate. (_dll_crt0): Store user_data->forkee here so that proper tests can be made subsequently. (do_exit): Remove hExeced stuff. * environ.cc (environ_init): Accept environ count as well as environ pointer. * environ.h: Reflect above change. * pinfo.cc (pinfo_init): Ditto. Accept environ count. (fixup_in_spawned_child): Remove. * spawn.cc (spawn_guts): Move signal code to dll_crt0_1. Don't suspend execing process since it is no longer necessary. Store envc. * exceptions.cc (signal_fixup_after_exec): New function. (call_handler): Remove hExeced test. * child_info.h (cygheap_exec_info): Store envc as well as envp. (child_info_spawn): Store hexec_proc so that it can be closed in child. * path.cc (normalize_posix_path): Avoid intermediate use of temporary cwd buf. (normalize_win32_path): Ditto. (cwdstuff::get_initial): Always set lock. * sigproc.h: Remove hExeced. * strace.cc (strace::vsprntf): Modify to accomodate for lack of hExeced. * thread.cc (MTinterface::Init): Merge Init1 and ClearReent into this method. (MTinterface::Init1): Eliminate. (MTinterface::ClearReent): Eliminate. * thread.h: Reflect above changes. * include/sys/strace.h (strace): Make microseconds() public. Make various functions 'regparm', throughout. * pinfo.h (_pinfo): Inline simple signal manipulation functions. Requires inclusion of thread.h which was removed from .cc files, where appropriate. throughout. * pinfo.cc: Eliminate signal manipulation functions. (_pinfo::exit): Calculate total rusage for exiting process here. * cygheap.cc (size2bucket): Eliminate. (init_buckets): Ditto. (_cmalloc): Calculate size and bits in a loop rather than going through a function call. (_crealloc): Use stored array index to calculate allocated size. * spawn.cc (spawn_guts): Use _pinfo exit method to exit, calculating cpu usage.
* * exceptions.cc (set_console_handler): Don't allocateChristopher Faylor2000-10-151-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | console_handler_thread_waiter. It is obsolete. (ctrl_c_handler): Don't use console_handler_thread_waiter. * path.cc (hash_path_name): Fix handling of relative names. Make case insensitive. * path.h (suffix_info): Use initializers. * pinfo.h (_pinfo): Avoid initializers for null case. * resource.cc (fill_rusage): Zero rest of rusage structure. * security.cc (set_process_privileges): Don't reopen parent process. Just use hMainProc. * signal.cc (signal): Track when a signal handler has been used. (sigaction): Ditto. * sigproc.cc (pchildren): Use default initializer. (zombies): Ditto. (sigproc_terminate): Avoid closing handles that will be closed on exit anyway. (wait_sig): Send signal to "parent" on EXECing, not FORKing. (wait_subproc): Send SIGCHLD here rather than in proc_wait to avoid potential muto conflicts. * sigproc.h (sigthread): Don't initialize to zero. It's the default. * spawn.cc (spawn_guts): Fill in resources from exec parent prior to termination. * sync.h (muto): Don't initialize to zero. * syscalls.cc (close_all_files): Use one lock around entire loop and call fhandler close/release stuff directly. (_read): Don't use ready_for_read if there are not signal handlers active. * dcrt0.cc (dll_crt0_1): Fix display of "title". (do_exit): Use pinfo exit method to exit. (__api_fatal): Ditto. * exceptions.cc (signal_exit): Ditto. * fork.cc (fork_child): Remove debugging stuff. Use pinfo_fixup_after fork in place of exec_fixup_after_fork. * pinfo.cc (pinfo_fixup_after_fork): New method. (pinfo_fixup_in_spawned_child): Ditto. (_pinfo::exit): New method. (_pinfo::init): Remove recursion. Detect pathological case where pinfo structure already exists for new pid. * pinfo.h (_pinfo): Reorganize slightly. Add new method and new function declarations. * sigproc.cc (proc_exists): Previous simplification was a little to simple. Try harder to detect if a process exists. (proc_terminate): Use PID_EXITED setting to determine if process is still around. (WFSO): Remove debugging statement. (WFMO): Ditto. * spawn.cc (exec_fixup_after_fork): Eliminate. (spawn_guts): Always set old_title to NULL. Is it really needed? Move hexec_proc to pinfo.cc. Call pinfo_fixup_in_spawned_child to eliminate handle link after a spawn. * include/sys/cygwin.h: Remove PID_NOT_IN_USE. Add PID_EXITED.
* * child_info: Bump child_info "version".Christopher Faylor2000-10-121-0/+3
| | | | | | | | | | | | | | | | | | | | | | (child_info): Move some fields from child_info_spawn to here. * cygheap.cc: Make cygheap pointers NOCOPY. * dcrt0.cc (dll_crt0_1): Copy cygwin heap here regardless of whether we've been forked or execed. * dtable.cc (dtable::fixup_after_fork): Just release close-on-exec fds. * exceptions.cc (stackdump): Respond to C warning. * fork.cc: Reorganize to minimize stack copying. (fork_child): New function. (fork_parent): Ditto. (sync_with_child): Don't suspend the forkee. (sync_with_parent): Ditto. Make into a function. * heap.cc (heap_init): Add some debugging output. * path.cc (path_conv::check): Add an assertion. (has_suffix): Ditto. * security.cc (get_pw_sid): Defend against NULL. * sigproc.cc (proc_subproc): Fix debugging output. (wait_sig): Ditto. * strace.cc: Make statics NO_COPY throughout. (strace::vsprntf): Defend against NULL.
* * path.cc (cwdstuff::get): Set EINVAL when length is zero.Christopher Faylor2000-10-101-3/+12
|
* * path.cc (mount_info::cygdrive_posix_path): Handle e:foo constructionChristopher Faylor2000-10-091-1/+6
| | | | correctly.
* * dtable.cc (set_std_handle): Use std_consts array to control SetStdHandleChristopher Faylor2000-10-091-2/+2
| | | | | | | | | | | | | | | | | | | | | | | settings. (dtable::fixup_after_fork): Ditto. * exceptions.cc (set_sig_errno): Remove some debugging output. * path.cc (path_conv::check): Don't OR need_directory with flags sent to symlink_info::check. (symlink_info::check): Use PATH_ALL_EXEC to determine when a file is executable. * path.h (path_types): Add PATH_ALL_EXEC. (isexec): Use PATH_ALL_EXEC so that cygexec types will be considered executable. * pinfo.h (_pinfo): Add a process handle that is kept open throughout the life of a cygwin pid. * sigproc.cc (proc_exists): Remove hopefully obsolete stuff. (proc_subproc): Set up process handle that is kept open throughout the life of a cygwin pid. Reorganize PROC_WAIT stuff to use common code. (proc_terminate): Close pid lifetime process handle. (checkstate): Cleanup. (stopped_or_terminated): Move zombie cleanup. (remove_zombie): To here. * spawn.cc (spawn_guts): Reorganize reparenting code for 1247th time.
* * fhandler.h (fhandler_dev_mem): Add methods mmap, munmap and msync.Corinna Vinschen2000-10-071-1/+9
| | | | | | | | | | | | | | | Add `unit' member. * fhandler_mem.cc (fhandler_dev_mem): Initialize `unit' as well. (init): Care for differences between /dev/mem, /dev/kmem (not implemented yet) and /dev/port. (open): Change debug message to reflect the device. (mmap): New function. (munmap): Ditto. (msync): Ditto. (fstat): Use unit when setting st_dev in stat structure. * mmap.cc (mmap): Handle MAP_ANONYMOUS flag. Change error handling slightly. * path.cc (get_device_number): Handle /dev/port.
* * net.cc (set_socket_inheritance): Rename from duplicate_socket. Use NTChristopher Faylor2000-10-061-30/+18
| | | | | | | | | | | | specific call when appropriate. (__set_winsock_errno): Rename from set_winsock_errno. Accept function and line as arguments. * path.cc (path_conv::check): Continue the neverending battle to make cygwin properly understand that path specs ending in a slash require that the path refer to a directory. Windows does not do this by default. (symlink_info::check): Remove ENOTDIR test. Move it to path_conv::check. * path.h: Remove obsolete constant. * winsup.h (set_winsock_errno): New macro.
* * cygheap.cc (cygheap_init): Born again function.Christopher Faylor2000-10-021-33/+9
| | | | | | | | | | (_cmalloc): Reorganize to accomodate muto locking. (_cfree): Use muto lock to avoid multi-thread problems. * cygheap.h (incygheap): Just use cygheap_max to find upper cygwin heap bounds. * dcrt0.cc (dll_crt0_1): Reinstitute cygheap_init call. * path.cc (getcwd): Just return cwdstuff::get result, allowing correct handling of negative length. (cwdstuff::get): Malloc a buffer if one is not available.
* * Makefile.in: Add fhandler_mem.o to the dependencies.Corinna Vinschen2000-10-011-0/+3
| | | | | | | | * dtable.cc (dtable::build_fhandler): Add case for FH_MEM. * fhandler.h: Add FH_MEM device type. Add class fhandler_dev_mem. * fhandler_mem.cc: New file. Implementation of class fhandler_dev_mem. * path.cc: Add /dev/mem to windows_device_names. (get_device_number): Add FH_MEM type.
* * path.cc (symlink_info::check): Set executable bit for a file if the first twoChristopher Faylor2000-09-301-2/+3
| | | | characters are 'MZ' to mirror spawn_guts check.
* * path.h: Create new input path flag PATH_NEEDDIR.Christopher Faylor2000-09-191-3/+21
| | | | | | | * path.cc (path::check): Detect trailing slash before converting to windows path. Tell symlink_info::check to check for directory if one is found. (symlink_info::check): Set errno when path is not a directory if pflags & PATH_NEEDDIR.
* * path.cc (mount_info::read_mounts): Don't delete mount entries of which mountChristopher Faylor2000-09-181-77/+46
| | | | | | | | | | points have the cygdrive prefix. * (mount_info::add_reg_mount): Properly catch errors on registry operations. * (mount_info::write_cygdrive_info_to_registry): Ditto. * (mount_info::del_reg_mount): Cosmetic changes to be consistent with other methods. * (mount_info::add_item): Check arguments more precisely. Increment nmounts only when registry operations succeed.
* * path.cc (normalize_posix_path): Fix more slashdot madness.Christopher Faylor2000-09-121-6/+6
|
* * path.cc (normalize_posix_path): Correctly deal with a "." parameter.Christopher Faylor2000-09-111-5/+8
|