summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/path.cc
Commit message (Collapse)AuthorAgeFilesLines
...
* * path.cc (slash_drive_prefix_p): Remove.Christopher Faylor2001-05-251-38/+4
| | | | | | | | (mount_info::slash_drive_to_win32_path): Ditto. (mount_info::conv_to_win32_path): Remove slash drive prefix check. (mount_info::add_item): Ditto. (mount_info::del_item): Ditto. * shared_info.h (mount_info): Remove slash_drive_to_win32_path declaration.
* * path.cc (path_conv::check): Revert allow_ntsec check so that volume info isChristopher Faylor2001-05-141-2/+2
| | | | always retrieved and isdisk setting is properly set.
* * external.cc (fillout_pinfo): Use correct pids.Christopher Faylor2001-05-111-1/+3
| | | | | * path.cc (mount_info::conv_to_win32_path): Correct test for whether to include a slash.
* * path.cc (mount_info::conv_to_win32_path): Treat UNC paths the same as pathsChristopher Faylor2001-05-091-1/+1
| | | | including `:' or `\'.
* * cygheap.cc (_cfree): Add regparm attribute.Christopher Faylor2001-05-081-3/+26
| | | | | | | | | | | | | | | | (_crealloc): Ditto. * dcrt0.cc (dll_crt0_1): Default to always checking for executable for now. * dtable.cc (dtable::not_open): Move method. * dtable.h (dtable): Here. * exceptions.cc (ctrl_c_handler): Don't expect process group leader to handle a signal if it doesn't exist. * fhandler.h (fhandler_base): Make openflags protected. * localtime.c (tzsetwall): Check for __CYGWIN__ as well as __WIN32__. * path.cc (path_conv::check): Add some comments. Change strcat to assignment. * lib/_cygwin_S_IEXEC.cc (_cygwin_bob__): Eliminate. * fhandler_tty.cc (fhandler_console::dup): Set controlling terminal if necessary. * fhandler_tty.cc (fhandler_tty_slave::dup): Ditto.
* * exceptions.cc (ctrl_c_handler): Always send signal to process if it has noChristopher Faylor2001-05-041-9/+5
| | | | tty.
* * path.cc (mount_info::conv_to_win32_path): More path tweaking.Christopher Faylor2001-05-011-1/+1
|
* * path.cc (mount_info::conv_to_win32_path): Fix debugging output to avoid aChristopher Faylor2001-05-011-2/+2
| | | | SIGSEGV. Avoid double backslashes in middle of filename.
* * path.cc (mkrelpath): New function.Christopher Faylor2001-05-011-96/+73
| | | | | | | | | | (mount_info::conv_to_win32_path): Eliminate now-unneeded relative path name arg and processing. (path_conv::check): Accomodate relative path names again. Accomodate one extra argument in mount_info::conv_to_win32_path. Tack trailing slash on end of relative path as a side effect, like before. * shared_info.h (mount_info::conv_to_win32_path): Reflect new argument ordering.
* * path.cc (path_conv::check): Don't use path_flags when converting to MS-DOSChristopher Faylor2001-04-301-16/+22
| | | | | syntax unless parsing tail of path component. Stop parsing path when we reach the 'root' of the path. Correctly copy tail to path component.
* * path.cc (symlink_info::check): Remove extra arguments, move functionalityChristopher Faylor2001-04-301-46/+41
| | | | | | | | back to path_conv::check. Clear symlink bit from pflags argument before detecting if this is a symlink. (path_conv::check): Convert posix path here instead of symlink_info::check. Only grab volflags when using ntsec. (symlink_info::check_case): Just replace appropriate part of input path.
* Throughout, change 'tty_attached' to 'real_tty_attached', for clarity.Christopher Faylor2001-04-281-198/+206
| | | | | | | | | | | | | | | | | | | | | | | | | | | Throughout, change 'OutputStopped' to 'output_stopped', for consistency. * dtable.cc (stdio_init): Set controlling tty if not set by stdio opens. * exceptions.cc (ctrl_c_handler): Avoid special pgid checking if no tty is associated with the process. (Suggested by Tim Baker <dbaker@direct.ca>) * external.cc (fillout_pinfo): Return actual tty number for ctty. * fhandler_console.cc (get_tty_stuff): Set ctty when shared memory is allocated. Accept flags input from open(). (set_console_ctty): New function. (fhandler_console::open): Pass flags to get_tty_stuff and rely on this function to set the ctty, if appropriate. * fhandler_termios.cc (fhandler_termios::set_ctty): Move to tty_min class. * fhandler_tty.cc (fhandler_tty_slave::open): Use tc field to access set_ctty(). * tty.h (TTY_CONSOLE): Move to include/sys/cygwin.h. (tty_min): Add set_ctty class here. * include/sys/cygwin.h (TTY_CONSOLE): New home here. * path.cc (symlink_info): Make contents an actual buffer. Pass more flags to case_check. (path_conv::check): Reorganize to do parsing based on posix path rather than native path. (symlink_info::check): Expect posix path as input. Translate to native path here. Accept path_conv flags. Stop parsing if not a symlink regardless of whether previous path was a symlink.
* * shortcut.c (check_shortcut): Close input file handle before returning.Christopher Faylor2001-04-221-19/+21
| | | | | | * path.cc (check_sysfile): Ditto. (symlink_info::check): Rely on opened file handle being closed by symlink checking routines. Set ext_tacked_on when .lnk is detected.
* * path.cc (path_conv::check): Always initialize member variables.Christopher Faylor2001-04-201-5/+7
|
* Throughout, change fdtab references to cygheap->fdtab.Christopher Faylor2001-04-181-0/+1
| | | | | | | | | | | | | | | | | | | | | | | * child_info.h (cygheap_exec_info): Eliminate special fdtab stuff. * spawn.cc (spawn_guts): Ditto. * cygheap.cc (cygheap_init): Initialize fdtab, if appropriate. * cygheap.h (CYGHEAPSIZE): Include size of init_cygheap. (_cmalloc_entry): Include fdtab here. * dtable.h (dtable): Declare/define new methods. * dtable.cc (dtable::vfork_child_fixup): New method. (dtable::fixup_after_exec): Remove unneeded extra arguments. * dcrt0.cc (dll_crt0_1): Ditto. * environ.cc (getwinenv): Use case sensitive comparison. (winenv): Make a copy of environment cache to avoid realloc problems when duplicate environment variables exist in the environment. (From Egor Duda) * net.cc (cygwin_socket): Revert Apr 14 change. * include/sys/file.h: Protect against previous X_OK definition. * passwd.cc: Eliminate passwd_sem throughout. * security.cc: Ditto. * cygwin.din: Export New functions. * passwd.cc (read_etc_passwd): Make race safe. (getpwuid_r): New function. (getpwnam_r): New function.
* * path.h (path_conv::add_ext_from_sym): Declare.Christopher Faylor2001-04-171-4/+1
| | | | * path.cc (path_conv::add_ext_from_sym): Convert to pure inline method.
* * path.cc (windows_device_names): Add missing NULL element.Corinna Vinschen2001-04-171-1/+1
|
* * path.cc (windows_device_names): Move dsp to proper location.Christopher Faylor2001-04-171-1/+1
|
* * path.cc (path_conv::check): Set case_clash even if pcheck_caseCorinna Vinschen2001-04-171-7/+15
| | | | | | | | is set to PCHECK_ADJUST when a case clash is given for the last component in path. (symlink_info::case_check): Ditto. * syscalls.cc (_rename): Avoid overwriting an already existing file if a case clash is given even if pcheck_case is set to PCHECK_ADJUST.
* * path.h (cwdstuff): Move class.Christopher Faylor2001-04-171-33/+9
| | | | | | | | | | | | | | * cygheap.h (cwdstuff): To here. (init_cygheap): Add cwd field. * child_info.h (cygheap_exec_info): Eliminate cwd stuff. (child_info_spawn): Ditto. * dcrt0.cc (dll_crt0_1): Remove cygcwd.fixup_after_exec call. Convert cygcwd reference to cygheap->cwd. * path.cc: Ditto, throughout. (cwdstuff::copy): Eliminate. (cwdstuff::fixup_after_exec): Ditto. * spawn.cc (spawn_guts): Eliminate call to cygcwd.copy. * fhandler.h (FH_OSS_DSP): Move into "fast" device category.
* * autoload.cc: Add winmm functions needed by fhandler_dsp.cc.Christopher Faylor2001-04-161-2/+5
| | | | | | | | | * fhandler_dsp.cc: New file. Implements OSS like /dev/dsp. * include/sys/soundcard.h: New file. User land includes for OSS /dev/dsp. * fhandler.h: Add new class fhandler_dev_dsp and a FH_OSS_DSP definition. * dtable.cc (dtable::build_fhandler): Allow creation of the /dev/dsp device. * path.cc (windows_device_names): Add /dev/dsp into list of device names. * Makefile.in (DLL_OFILES): Add fhandler_dsp.o.
* * path.cc (add_ext_from_sym): Redefine to call `add_ext_from_sym_'.Corinna Vinschen2001-04-151-4/+13
| | | | (add_ext_from_sym_): New inline function.
* * path.cc (add_ext_from_sym): New define evaluating `known'suffix'.Corinna Vinschen2001-04-131-18/+9
| | | | (path_conv::check): Use add_ext_from_sym throughout.
* * dir.cc (mkdir): Check for case clash.Corinna Vinschen2001-04-121-40/+149
| | | | | | | | | | | | | | | | | | | | | | | | | | * environ.cc: Add extern declaration for `pcheck_case'. (check_case_init): New function. (struct parse_thing): Add "check_case" option. * errno.cc (_sys_nerrlist): Add text for ECASECLASH. (strerror): Add case branch for ECASECLASH. * fhandler.cc (fhandler_disk_file::open): Check for case clash. * path.cc: Add global variable `pcheck_case'. (struct symlink_info): Add member `case_clash' and method `case_check'. (path_prefix_p_): Call `pathnmatch' instead of `strncasematch'. (pathnmatch): New funtion. (pathmatch): Ditto. (path_conv::check): Add handling for case checking. (symlink): Check for case clash. (symlink_info::check): Add parameter for case checking. Handle case checking. (symlink_info::case_check): New method. (chdir): Don't use unconverted path if pcheck_case==PCHECK_STRICT. * path.h: Add extern declarations for `pathmatch' and `pathnmatch'. (enum case_checking): New enumeration type describing the case checking behaviour of path conversion routines. (class path_conv): Add member `case_clash'. * syscalls.cc (_link): Check for case clash.
* * path.cc (struct symlink_info): Add extn and ext_tacked_on fields.Christopher Faylor2001-04-111-7/+17
| | | | | | (path_conv::check): Only tack on extension if a known one didn't already exist. (suffix_scan::has): Return pointer to known extension. (symlink_info::check): Record location of extension, if any.
* * shared_info.h (mount_info): Remove mnt_ elements.Christopher Faylor2001-04-021-15/+14
| | | | | * thread.h (struct _winsup_t): Add mnt_ elements. * path.cc (fillout_mntent): Use mnt_ elements from reent_winsup ().
* * path.cc (fillout_mntent): Always remove drive root directories from futureChristopher Faylor2001-04-011-14/+31
| | | | | | consideration by "/cygdrive" reporting. (cygdrive_getmnt): Avoid reporting removable drives or drives with no media mounted.
* * thread.h (struct _winsup_t): Remove obsolete elements. Add available_drivesChristopher Faylor2001-04-011-19/+49
| | | | | | | | | | | | element. * path.cc (mount_info::getmntent): Report "/cygdrive" drives when mounted drives are exhausted. (fillout_mntent): New function. (mount_item::getmntent): Use fillout_mntent. (cygdrives_mntent): New function. Returns next available "/cygdrive". (setmntent): Initialize available "/cygdrives". * syscalls.cc: Remove some if 0'ed code. * times.cc (timezone): Use more descriptive variable name.
* * path.cc (chdir): Eat trailing whitespace on input path.Christopher Faylor2001-03-291-0/+8
|
* * path.cc (suffix_scan::next): Avoid searching for foo.lnk twice when input isChristopher Faylor2001-03-171-3/+7
| | | | "foo".
* * dir.cc (readdir): Use strcasematch for consistency.Christopher Faylor2001-03-171-48/+53
| | | | | | | | | | | * path.cc (symlink_info): Eliminate known_suffix. (path_conv::check): Always copy ext_here to end of buffer, if found. (suffix_scan): Eliminate ext_here, add suffixes_start. (suffix_scan::has): Eliminate an argument. Reorganize. Always return pointer to end of input path. (suffix_scan::next): Take a second pass through the suffix list looking for .lnk. (symlink_info::check): Eliminate known_suffix usage.
* * path.cc: Translate scan states from defines to enums.Christopher Faylor2001-03-171-18/+28
| | | | | | | | | | (suffix_scan): Rename state to nextstate for clarity. (lnk_match): Change to allow multiple states to indicate that a .lnk has been matched. (suffix_scan::has): Eliminate a goto. Handle .lnk as a special case, since a .lnk may also need to be tacked on the end of a .lnk. (suffix_scan::next): Don't increment next state. Set it specifically. Recognize new .lnk states.
* * path.cc (lnk_suffixes): Remove.Corinna Vinschen2001-03-141-16/+9
| | | | | | | | | | | | (class suffix_scan): Add `lnk_state' flag. (suffix_scan::lnk_match): Return state of `lnk_state' now. (suffix_scan::has): Changed behaviour if file has `.lnk' suffix. (suffix_scan::next): Set `lnk_state' where appropriate. (symlink_info::check): Fix a wrong `break'. * syscalls.cc (chown_worker): Change debug statement to reflect lchown fix. (lchown): Call chown_worker with `PC_SYM_NOFOLLOW' instead of `PC_SYM_IGNORE'.
* * path.cc (suffix_scan::has): Change order of conditionalsCorinna Vinschen2001-03-061-9/+9
| | | | to allow checking for .lnk suffixes even if in_suffixes is empty.
* * dlopen.c (dlopen): Return NULL when name is NULL (suggested byChristopher Faylor2001-03-051-82/+132
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | chrisiasci@aol.com). * cygwin.din: Add a new, internally used export - _check_for_executable. * dcrt0.cc (dll_crt0_1): Set _check_for_executable for older binaries. Pass user_data to premain functions. * fhandler.cc (fhandler_disk_file::open): Only check for executable if the linked program is intereested in the executable bit. (fhandler_disk_file::check_execable_p): Delete. * fhandler.h (executable_states): New enumeration of various states of executable bit caring. (fhandler_base::set_execable_p): New method. * fhandler_termios.cc (fhandler_termios::line_edit): Flag when a signal has been sent to the tty. Return -1 when this is so. * fhandler_console.cc (fhandler_console::read): Return -1 when signal sending character encountered. * path.cc (path_conv::check): Record when path refers to a disk device. Move executable extension check here. (check_sysfile): Accomodate new EXEC path states. (has_suffix): Remove. (next_suffix): Remove. (class suffix_scan): New clas. (suffix_scan::has): New method. (suffix_scan:next): New method. (symlink_info::check): Use suffix_scan method to control for scanning for suffixes. * path.h (path_conv::exec_state): New method. * perprocess.h: Make "C" friendly. * include/cygwin/version.h: Define CYGWIN_VERSION_CHECK_FOR_S_IEXEC. Bump CYGWIN_VERSION_API_MINOR. * include/sys/cygwin.h: Change premain declarations. * winsup.h: Move __cplusplus test to after builtin defines.
* * 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.