diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 0f7564f9f..0eb8813da 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5333 +1,12 @@ -2001-12-30 Christopher Faylor - - * include/getopt.h: Fix define. - -2001-12-30 Christopher Faylor - Ralf Habacker - - * speclib: New file. - * Makefile.in: Create library versions of automode.o, textmode.o, and - binmode.o for easier use on command line. Create libpthread.a, libm.a, - and libc.a with subsets of exports found in libcygwin.a. - -2001-12-30 Ralf Habacker - - * cygmagic: Eliminate unneeded use of 'tr' and 'bc'. - -2001-12-30 Corinna Vinschen - - * security.cc (open_local_policy): Use POLICY_EXECUTE instead of - enumerating user rights. - -2001-12-29 Corinna Vinschen - - * security.cc (open_local_policy): Initialize lsa handle to NULL. - Request only needed access rights in call to LsaOpenPolicy(). - (create_token): Check for NULL lsa pointer. - -2001-12-28 Corinna Vinschen - - * cygwin.din: Add symbols for endutent(), getutent(), getutid(), - getutline(), setutent() and utmpname(). - * syscalls.cc (setutent): New function. - (endutent): Ditto. - (utmpname): Ditto. - (getutent): Ditto. - (getutid): Ditto. - (getutline): Ditto. - * include/cygwin/version.h: Bump API minor version. - -2001-12-26 Christopher Faylor - - * cygmagic: Add define name to warning. - * dcrt0.cc (_dll_crt0): Check for changes in child_info size. - (multiple_cygwin_problem): Avoid "proc" errors when testing. Just - assume new cygwin proc. - * shared_info.h (mount_info): Add 'cb' element for sanity checks. - (shared_info): Ditto. - * child_info.h (child_info): Add fhandler_union_size element for sanity - checking. - * shared.cc (open_shared): Detect shared region size mismatch between - parent and child. - (shared_info::initialize): Detect shared region size mismatch with - expectation. - (memory_Init): Ditto. - * sigproc.cc (init_child_info): Correctly set cb in passed structure. - * shared.cc (open_shared): - -2001-12-26 Christopher Faylor - - * include/getopt.h: Protect a declaratin. - -2001-12-26 Robert Collins - - * thread.cc (pthread_cond::Signal): Use a separate flag for signal - detection and broadcast semantics. - (__pthread_cond_dowait): Ditto. - * thread.h (pthread_cond): New flag for testing when a waiter has - woken. - -2001-12-26 Christopher Faylor - - * Makefile.in: Quote arguments to shell scripts. - (clean): Remove new *_magic.h autogenerated files. - -2001-12-25 Christopher Faylor - - * Makefile.in: Autogenerate some header files which provide magic - numbers. Force dependencies for files which depend on autogenerated - headers to ensure that they are always built. - * child_info.h (child_info): Add new fields to accommodate new magic - number header stuff. - * dcrt0.cc: Rely on "child_info_magic.h" to ensure that correct - child_info magic numbers are used. - (dll_crt0_1): Temporarily remove _cygwin_testing_magic test. - (_dll_crt0): Do more testing on magic numbers from fork_info structure. - Call "multiple_cygwin_problem" where appropriate. - (multiple_cygwin_problem): Rename from multiple_cygwin_die. Issue a - warning or die, as appropriate based on cygwin version/magic number - mismatch. - * pinfo.cc (pinfo::exit): Don't attempt to dereference `this' if it - doesn't exist. This can happen when a fatal error occurs early in - process initialization. - * shared.cc: Rely on "shared_info_magic.h" to accommodate that new - magic number header stuff. - (shared_info::initialize): Use new magic number stuff, for shared - region. - (memory_init): Ditto, for mount table. - * shared_info.h: Accomodate new magic number stuff for shared region - and mount table. - * sigproc.cc: Rely on "child_info_magic.h" to accommodate new magic - number header stuff. - (init_child_info): Initialize new fields in child_info) to accomodate - magic numbers. - * winsup.h: Rename multiple_cygwin_die to multiple_cygwin_problem. - * include/cygwin/version.h: Define macros for manipulating version - magic. - * cygmagic: New shell script for generating magic numbers. - -2001-12-20 Christopher Faylor - - * include/cygwin/version.h: Bump API minor version for below changes. - -2001-12-19 Christopher Faylor - - * Makefile.in (VPATH): Add regex directory. - (NM): new variable. - (OBSOLETE_FUNCTIONS): Ditto. - (NEW_FUNCTIONS): Ditto. - (install-headers): Install regex.h. - (install-man): New target. - (install): Use new target. - (DLL_OFILES): Add v8_reg* stuff. - (new-cygwin1.dll): Eliminate stamp-cygwin-lib creation. - (libcygwin.a): Remove obsolete functions from import lib. Add new functions. - * configure.in: Detect 'nm' tool. - * configure: Regenerate. - * cygwin.din: Export posix_reg* functions. Eliminate export of v8 reg* functions. - This is now handled in object files themselves. - * regex/*: New files. - * regexp/v8_*.c: New files, renamed from non v8_ equivalents. - -2001-12-17 Corinna Vinschen - - * include/getopt.h: Don't define getopt_long() and friends when - included through unistd.h. - -2001-12-17 Christopher Faylor - - * dtable.cc (dtable::init_std_file_from_handle): Avoid initializing - using an invalid handle. - -2001-12-16 David Billinghurst - - * include/limits.h: Define LLONG_MIN, LLONG_MAX, ULLONG_MAX. - -2001-12-11 Christopher Faylor - - * include/getopt.h: Add HAVE_DECL_GETOPT to save pain elsewhere. - -2001-12-10 Christopher Faylor - - * fhandler.h (fhandler_serial::ev): New class member. - * fhandler_serial.cc (fhandler_serial::raw_read): Use class member for - event status. - * select.cc (peek_serial): Ditto. - -2001-12-07 Christopher Faylor - - * path.cc (path_conv::check): Use full path name for determining - attributes when /cygdrive/x/foo. - -2001-12-06 Christopher Faylor - - * path.cc (path_conv::check): Reset FH_CYGDRIVE if iterating through - path. - -2001-12-06 Christopher Faylor - - * path.cc (path_conv::check): Don't complain if /dev/x/foo when x - doesn't exist. - (mount_info::conv_to_win32_path): Keep translating when a /cygdrive is - found. Don't attempt to translate to a device name when devn == - FH_CYGDRIVE. - (cygwin_conv_to_win32_path): Set buffer to empty on error. - (cygwin_conv_to_full_win32_path): Ditto. - - * window.cc: Include unistd.h to verify definitions. - -2001-12-05 Christopher Faylor - - * dir.cc (opendir): Detect error return from build_fhandler_from_name. - -2001-12-04 David Rothenberger - - * net.cc (cygwin_getsockopt): Dereference optlen pointer when passing - to __check_null_invalid_struct_errno. - -2001-12-03 Christopher Faylor - - * net.cc (cygwin_getsockopt): Allow NULL optval. - (cygwin_setsockopt): Ditto. - (cygwin_recvfrom): Allow NULL from. - - * path.cc (mount_info::read_cygdrive_info_from_registry): Don't write - cygdrive to registry if it doesn't exist. - -2001-12-03 Christopher Faylor - - * path.cc (mount_info::conv_to_win32_path): Avoid returning error if - cygdrive == '/'. - (mount_info::cygdrive_win32_path): Return 0 if invalid cygdrive path. - -2001-11-30 Christopher Faylor - - * debug.cc (makethread): Eliminate unneeded function call. - * miscfuncs.cc (tls_ix): Predefine. - * perthread.h (set_reent): Eliminate. - (get_reent): Ditto. - * winbase.h (my_tlsalloc): Use global stack base pointer. Set newly - allocated location to NULL. - (my_tlssetvalue): Use global stack base pointer. - (my_tlsgetvalue): Ditto. - -2001-11-27 Christopher Faylor - - * winsup.h: Reorganize to avoid use of experimental stuff. - * shortcut.cc: Move winsup.h first in include order. - -2001-11-27 Christopher Faylor - - * cygwin.din (ualarm): New export. - * dcrt0.cc (_dll_crt0): Add experimental tls storage declaration. - (dll_crt0): Ditto. - * debug.cc (thread_stub): Ditto. - * thread.cc: Minor cleanup. - (__pthread_create): Add experimental tls storage declaration. - * miscfuncs.cc: Define tls index. - * winsup.h: Declare experimental tls storage. - - * window.cc (alarm): Use old timer return from setitimer. - (ualarm): New function. From Alexandr V. Shutko. - -2001-11-26 Christopher Faylor - - * Makefile.in (libcygwin.a): Use ar commands to build libcygwin.a since - adding an archive doesn't work the way we want it to. - -2001-11-24 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_cygdrive::readdir): Avoid reporting - inaccessible drives. - -2001-11-24 Corinna Vinschen - - * net.cc (cygwin_hstrerror): Allow s == NULL. - (cygwin_rcmd): Add parameter checking. - (cygwin_rexec): Ditto. - -2001-11-24 Corinna Vinschen - - * net.cc (cygwin_inet_ntoa): Add parameter checking. - (cygwin_inet_network): Return INADDR_NONE instead of 0 in case of - EFAULT. - (cygwin_hstrerror): Add parameter checking. - (cygwin_rresvport): Ditto. - (socketpair): Ditto. - * winsup.h (check_null_str): Add extern declaration. - -2001-11-24 Christopher Faylor - - * path.cc (path_conv::check): Tighten FH_CYGDRIVE check to avoid - matching trailing component, like other devices. - -2001-11-24 Christopher Faylor - - * autoload.cc (IsDebuggerPresent): Make conditional load since it is - not available everywhere. - - * path.cc (mount_info::conv_to_win32_path): Only consider /cygdrive to - be FH_CYGDRIVE, not /cygdrive/x. - -2001-11-24 Christopher Faylor - - * net.cc (inet_makeaddr): Revert previous change. - -2001-11-23 Christopher Faylor - - * path.cc (chdir): Allow 'cd /cygdrive'. - -2001-11-23 Christopher Faylor - - * dtable.cc (dtable::vfork_parent_restore): Add debugging statement. - - * exceptions.cc (try_to_debug): Spin only as long as we don't have a - debugger attached. - - * fhandler.h (fhandler_base::set_nohandle): New method. - (fhandler_base::get_nohandle): New method. - * fhandler.cc (fhandler_base::dup): Avoid duplicating handle if there - is no handle. - * fhandler_disk_file.cc (fhandler_disk_file::opendir): Set nohandle - flag on dummy fd. - -2001-11-23 Christopher Faylor - - * Makefile.in: Make intermediate library for eventual inclusion in - libcygwin.a - - * fhandler.h (fhandler_pipe::fhandler_pipe): Remove default argument - setting since it is no longer used. - - * miscfuncs.cc (check_null_str): New function. - (check_null_str_errno): Ditto. - * net.cc: Add defensive buffer checking throughout. - (cygwin_sendto): Protect against invalid fd. - (cygwin_recvfrom): Ditto. - (cygwin_getpeername): Ditto. - (cygwin_recv): Ditto. - (cygwin_send): Ditto. - * winsup.h: Declare a new function. - -2001-11-23 Corinna Vinschen - - * select.cc (set_bits): Fix conditional for setting fd in exceptfds. - * dtable.cc (dtable::build_fhandler): Create fhandler_pipe using - correct device type. - * path.cc (get_devn): Set correct pipe device type from device name. - -2001-11-22 Christopher Faylor - - * path.cc (conv_path_list): Fix wild indexing into path due to - conflicting methods for setting src pointer. - - * dir.cc (opendir): Only pass path_conv argument to opendir, since name - is already part of the fhandler. - * dtable.cc (dtable::build_fhandler): Accomodate new FH_CYGDRIVE type. - * fhandler.cc (fhandler_base::opendir): Nuke name argument. - * fhandler.h: Add FH_CYGDRIVE to "device" enum. - (fhandler_base::opendir): Nuke name argument. - (fhandler_disk_file::opendir): Ditto. - (fhandler_disk_file::fhandler_disk_file): Declare new method which - passes devtype through. - (fhandler_cygdrive): Add elements for tracking drives. - (fhandler_cygdrive::set_drives): Declare new method. - (fhandler_cygdrive::iscygdrive_root): Declare new method. - (fhandler_cygdrive::opendir): Declare new method. - (fhandler_cygdrive::readdir): Declare new method. - (fhandler_cygdrive::telldir): Declare new method. - (fhandler_cygdrive::seekdir): Declare new method. - (fhandler_cygdrive::rewinddir): Declare new method. - (fhandler_cygdrive::closedir): Declare new method. - (fhandler_cygdrive::fstat): Declare new method. - * fhandler_disk_file.cc (fhandler_disk_file::fhandler_disk_file): - Define new method which passes devtype through. - (fhandler_disk_file::open): Tweak debug output. - (fhandler_disk_file::opendir): Nuke first argument. Use info from - path_conv and class rather than calling fstat. - (fhandler_cygdrive::set_drives): New method. - (fhandler_cygdrive::iscygdrive_root): New method. - (fhandler_cygdrive::opendir): New method. - (fhandler_cygdrive::readdir): New method. - (fhandler_cygdrive::telldir): New method. - (fhandler_cygdrive::seekdir): New method. - (fhandler_cygdrive::rewinddir): New method. - (fhandler_cygdrive::closedir): New method. - (fhandler_cygdrive::fstat): New method. - * path.cc (iscygdrive_device): Assume cygdriveness is already verified. - (path_conv::check): Treat FH_CYGDRIVE "method" as a special case, - setting file attributes as needed. - (mount_info::conv_to_win32_path): Allow stand-alone /cygdrive, meaning - "the directory which contains all of the drives on the system". - (fillout_mntent): Use cyg_tolower for conversions. - (mount_info::cygdrive_win32_path): Replace unused argument with unit - number. - * shared_info.h (mount_info::cygdrive_win32_path): Reflect argument - change. - -2001-11-21 Christopher Faylor - - * Makefile.in (DLL_OFILES): Add fhandler_disk_file.o. - * cygheap.h (cygheap_fdnew::operator =): New operator. - * dir.cc: Add invalid struct checking throughout. Use methods for all - directory manipulation throughout. - * fhandler.cc: Move fhandler_disk_file stuff to own file. - (fhandler_base::opendir): New method. - (fhandler_base::readdir): New method. - (fhandler_base::telldir): New method. - (fhandler_base::seekdir): New method. - (fhandler_base::rewinddir): New method. - (fhandler_base::closedir): New method. - * fhandler_disk_file.cc: New file. - * fhandler.h (fhandler_base): Declare new virtual methods. - (fhandler_disk_file): Ditto. - (fhandler_cygdrive): New class. - - * path.cc (conv_path_list): Use strccpy to break apart path. - -2001-11-17 Nick Duffek - - * path.cc (conv_path_list): Copy source paths before modifying them. - -2001-11-17 Corinna Vinschen - - * fhandler_raw.cc (fhandler_dev_raw::clear): Don't reset unit. - * fhandler_tape.cc (fhandler_dev_tape::fhandler_dev_tape): Add debug - output. - -2001-11-15 Egor Duda - - * include/pthread.h (PTHREAD_COND_INITIALIZER): Define. - * thread.cc (__pthread_cond_destroy): Add support for - PTHREAD_COND_INITIALIZER. - (__pthread_cond_init): Ditto. - (__pthread_cond_broadcast): Ditto. - (__pthread_cond_signal): Ditto. - (__pthread_cond_dowait): Ditto. - (__pthread_mutex_init): Handle PTHREAD_MUTEX_INITIALIZER correctly, - don't return error when it's passed as parameter. - * winsup.h (check_null_invalid_struct): Call correct function. - -2001-11-14 Christopher Faylor - - * exceptions.cc: Add stdlib.h include for alloca declaration. - * poll.cc: Ditto. - * termios.cc: Ditto. - -2001-11-14 Christopher Faylor - - * syscalls.cc (_write): Only allow zero length when fd is valid. - -2001-11-14 Corinna Vinschen - - * fhandler.cc (fhandler_disk_file::fstat): Add setting access time - and creation time to last modification time for files on filesystems - not supporting multiple timestamps. - (fhandler_disk_file::fstat_helper): Set access time and creation - time in incoming Windows structure instead of in stat buf to avoid - incorrectly overwriting Epoch timestamp. - -2001-11-14 Corinna Vinschen - - * winsup.h: Remove alloca definition since it's now defined through - inclusion of stdlib.h. - * lib/cygwin_crt0.c: Ditto. - -2001-11-13 Christopher Faylor - - * syscalls.cc (_write): Allow zero length as per SUSv2. - -2001-11-13 Corinna Vinschen - - * dir.cc (mkdir): Add HIDDEN file attribute if file has leading dot - and HIDDEN_DOT_FILES is defined. - * fhandler.cc (fhandler_base::open): Ditto. - * path.cc (symlink): Ditto. - * syscalls.cc (_rename): Ditto and remove HIDDEN file attribute if - new filename does not begin with a dot. - -2001-11-12 Christopher Faylor - - * fhandler_console.cc (fhandler_console::read): Revert 2001-10-23 - change to only honor keydown events. - -2001-11-11 Christopher Faylor - - * include/cygwin/version.h: Bump version to 1.3.6. - -2001-11-10 Christopher Faylor - - * dtable.cc (dtable::build_fhandler): Don't increment console fd count - if new operation fails. Increment fork_fixup field here. - (dtable::dup2): Don't increment fork_fixup field here. - * net.cc (fdsock): Ditto. - -2001-11-08 Corinna Vinschen - - * select.cc: Set errno using set_sig_errno() throughout. - * signal.cc (signal): Always set SA_RESTART flag. - * syscalls.cc (_read): Revert previous patch. - -2001-11-08 Corinna Vinschen - - * select.cc (fhandler_tty_slave::ready_for_read): Return 0 on EBADF. - * syscalls.cc (_read): If ready_for_read() failed, save errno from - being overwritten by signal handler call. - -2001-11-07 Corinna Vinschen - - * lib/getopt.c (getopt_internal): Reset optind to 1 only if optreset - is not set. - -2001-11-06 Christopher Faylor - - * select.cc (fhandler_tty_slave::ready_for_read): Correct inverted - not_open test. - -2001-11-05 Christopher Faylor - - * include/cygwin/version.h: Bump version to 1.3.5. - -2001-11-05 Corinna Vinschen - - * mmap.cc (mmap_record::find_empty): Add input parameter check. - -2001-11-04 Christopher Faylor - - * dtable.cc (dtable::build_fhandler): Fix debug_printf to avoid SEGV - due to incorrect parameter placement. - -2001-11-04 Christopher Faylor - - * fhandler.h (fhandler_pipe::broken_pipe): Renamed from saweof. - (fhandler_pipe::set_eof): Reflect above change. - * pipe.cc (fhandler_pipe::fhandler_pipe): Ditto. - (fhandler_pipe::read): Ditto. - (fhandler_pipe::hiteof): Ditto. - -2001-11-04 Christopher Faylor - - * pipe.cc (fhandler_pipe::read): Narrow eof return to just the "broken - pipe" test. - -2001-11-04 Christopher Faylor - - * select.cc: Add more comments throughout. Use bool 'true' where - appropriate throughout. - (fhandler_socket::select_read): Remove duplicate setting for *_ready - which inadvertently overrode previous, correct setting. - (fhandler_socket::select_write): Ditto. - -2001-11-03 Christopher Faylor - - * select.cc (verify_console): New function. - (verify_windows): Ditto. - (fhandler_console::select_read): Really do need to verify that there is - something to read. - (fhandler_console::select_windows): Ditto. - -2001-11-03 Christopher Faylor - - * fhandler.h (fhandler_base::ready_for_read): Remove unused argument. - (fhandler_tty_slave::ready_for_read): Ditto. - (select_record): Remove poll, initialize peek. - * select.cc: Remove all poll functions, throughout. Change second - argument of peek_* functions to 'bool' throughout. Specifically - initialize *_ready variables throughout. - (select_stuff::poll): Subsume previous poll functionality. - (peek_pipe): Don't grab guard mutex when in select loop. - select()/read() is racy by design so there is no need to worry about a - race in select(). - (fhandler_base::ready_for_read): Remove unused argument. - (fhandler_tty_slave::ready_for_read): Ditto. - * syscalls.cc (_read): Eliminate third argument in ready_for_read call. - -2001-11-03 Corinna Vinschen - - * security.cc (get_supplementary_group_sidlist): New function. - (get_group_sidlist): Call get_supplementary_group_sidlist() to - retrieve list of supplementary groups SIDs from /etc/group and - add them to the user's group list. - -2001-11-03 Christopher Faylor - - * fhandler.cc (fhandler_base::read): Return just read ahead characters - if slow device. - * fhandler.h (fhandler_base::set_eof): New virtual method. - (fhandler_pipe::set_eof): New method. - * pipe.cc (fhandler_pipe::fhandler_pipe): Clear saweof flag. - (fhandler_pipe::read): Return immediately if hit eof. - (fhandler_pipe::hit_eof): Return true if saweof flag is set. - * select.cc (peek_pipe): Don't call PeekNamedPipe if we couldn't grab - the guard mutex. - -2001-11-02 Egor Duda - - * dll_init.h (class dll_list): Reorder functions to avoid compiler - "can't inline" warnings. - * security.h (class cygsid): Ditto. - * sigproc.cc (get_proc_lock): Ditto. - * sigproc.h (class sigframe): Ditto. - * sync.h (class muto): Ditto. - -2001-11-02 Christopher Faylor - - * fhandler.h (fhandler_base::get_guard): Actually MAKE virtual as - previously indicated. - * pipe.cc (make_pipe): Remove extraneous set_errno. - * syscalls.cc (_open): Ditto. - * select.cc (peek_pipe): Need to check that there is still something to - read from the pipe after acquiring the mutex since another - process/thread could have eaten the input before we got to acquiring - the lock. (Thanks to Nick Duffek for this inspiration.) - -2001-11-01 Christopher Faylor - - * fhandler.h: Change Windows 'BOOL's to c++ 'bool's for all variables. - * select.cc (fhandler_base::ready_for_read): Set read_ready to zero - prior to testing it or it will be uninitialized. - - * Makefile.in (CFLAGS): Move setting to Makefile.common. - -2001-11-01 Christopher Faylor - - * cygheap.h (cygheap_fdmanip::isopen): Set appropriate errno if fd not - open. - * select.cc (fhandler_base::ready_for_read): Release an open guard - mutex when exiting with an error condition. - * syscalls.cc (_read): Check frequently for closed fd as a kludge until - something better is invented. - -2001-11-01 Christopher Faylor - - * dtable.cc (dtable::build_fhandler): Issue internal error on unknown - device. - * fhandler.cc (fhandler_base::close): Show both name and handle in - debugging output. - - * fhandler.h (fhandler_base::get_guard): New virtual method. - (fhandler_pipe::get_guard): New method. - (fhandler_socket::ready_for_read): Delete declaration. - (fhandler_pipe::ready_for_read): Ditto. - (fhandler_serial::ready_for_read): Ditto. - (fhandler_console::ready_for_read): Ditto. - (fhandler_tty_common::ready_for_read): Ditto. - (fhandler_windows::ready_for_read): Ditto. - (struct select_record::peek): Declare new method. - * select.cc (MAKEready): Delete. - (peek_pipe): Use get_guard method to retrieve potential guard mutex - handle. - (fhandler_base::ready_for_read): Rewrite as generic ready-for-read - handler. Should only be called for "slow" devices. - (fhandler_socket::ready_for_read): Delete definition. - (fhandler_pipe::ready_for_read): Ditto. - (fhandler_serial::ready_for_read): Ditto. - (fhandler_console::ready_for_read): Ditto. - (fhandler_tty_common::ready_for_read): Ditto. - (fhandler_windows::ready_for_read): Ditto. - (fhandler_pipe::select_read): Fill in new peek record in select_record - structure. - (fhandler_console::select_read): Ditto. - (fhandler_tty_common::select_read): Ditto. - (fhandler_serial::select_read): Ditto. - (fhandler_socket::select_read): Ditto. - (fhandler_socket::select_read): Ditto. - (fhandler_tty_slave::ready_for_read): Check for tty not open. Set - errnos appropriately. - * syscalls.cc (_read): Allow ready_for_read to set errno. - - * pinfo.cc (pinfo::init): Return spawn/NO_WAIT process as valid if it - is initializing. - * sigproc.cc (getsem): Adjust wait for process to initialize downward - to avoid huge waits. - -2001-10-31 Christopher Faylor - - * environ.cc: Set reset_com to false to mimic linux behavior more - closely. - -2001-10-31 Corinna Vinschen - - * dtable.cc (dtable::vfork_child_dup): Revert impersonation - before duplicating fhandler. - -2001-10-30 Christopher Faylor - - * exceptions.cc (signal_exit): Weight the odds against the main thread - running when signal thread is exiting. - -2001-10-30 Christopher Faylor - - * sigproc.cc (sigproc_terminate): Don't signal main thread when exiting. - * sigproc.h (sigframe): Decorate some methods with `inline'. - (new_muto): Coerce pointer to new to void *. - -2001-10-30 Christopher Faylor - - * fhandler.cc (fhandler_base::fork_fixup): Pass old handle to - setclexec_pid. - -2001-10-30 Christopher Faylor - - * cygheap.h (cygheap_fdmanip::cygheap_fdmanip): Clear fh. - (cygheap_fdmanip::isopen): New method. - * syscalls.cc (_read): Avoid accessing closed fd. - - * path.h (fe_types): New enum. - (path_conv::set_path): New method. - (find_exec): Change null_if_not_found argument to something more - generic. - * spawn.cc (find_exec): Default to returning the POSIX path rather than - the windows path, unless instructed otherwise. - (spawn_guts): Force call to find_exec to use native paths. - * dlfcn.cc (check_path_access): Accommodate new find_exec arguments. - * environ.h (win_env::get_posix): New method. - -2001-10-30 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::close): Add error handling. - -2001-10-30 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::dup): Revert previous change. - -2001-10-30 Christopher Faylor - - * dtable.cc (dtable::dup2): Add some debugging. Use methods from - passed in class rather than cygheap->fdtab. - * fhandler_socket.cc (fhandler_socket::fixup_before_fork_exec): Add - more debugging output. - (fhandler_socket::dup): Allocate new space for prot_info_ptr for - duplicated entry. - (fhandler_socket::close): Loop closesocket() as long as WSAEWOULDBLOCK - is returned. - * syscalls.cc (stat_worker): Always delete fh if it has been created. - -2001-10-29 Corinna Vinschen - - * security.cc (is_group_member): Call NetLocalGroupGetMembers() for - local machine only. - (get_user_local_groups): Ditto for NetLocalGroupEnum(). - -2001-10-29 Christopher Faylor - - * fhandler.cc (fhandler_base::set_name): Set namehash here to catch - name changes. - (fhandler_base::open): Remove namehash setting. - (fhandler_base::fstat): Subtract 1 from arbitrary time setting to avoid - strange ls -l granularity problem. - -2001-10-29 Christopher Faylor - - * select.cc (MAKEready): Remove extraneous select_read. - -2001-10-29 Corinna Vinschen - - * uinfo.cc (internal_getlogin): Set environment variable $HOME - from either /etc/passwd or $HOMEDRIVE/$HOMEPATH if necessary. - -2001-10-29 Christopher Faylor - - * fhandler.h (fhandler_serial::fhandler_serial): Change to only accept - unit argument. - * fhandler_serial.cc (fhandler_serial::fhandler_serial): Ditto. - (fhandler_serial::open): Avoid else when previous clause is a return(). - * path.cc (get_devn): Alias /dev/ttyS0 -> /dev/com1, etc. - (get_device_number): Reallow standalone "com1" as a valid name for - /dev/com1. - -2001-10-26 Christopher Faylor - - * select.cc (MAKEready): Check for read_ready in loop since select_read - could set it. - (peek_socket): Check ready/write/except specifically since they could - have been set even prior to peek_socket call. - -2001-10-24 Christopher Faylor - - * shared_info.h (MOUNT_VERSION): Change to a smaller, still arbitrary - number. - * shared.cc (open_shared): Accept a number to denote the shared memory - region. - (memory_init): Use shared memory version as part of the object name of - the shared region. Ditto for the mount table. - * path.cc (CYGWIN_REGNAME): New define used in place of - CYGWIN_INFO_CYGWIN_REGISTRY_NAME throughout. - * external.cc (cygwin_internal): Implement CW_[GS]ET_CYGWIN_REGISTRY_NAME. - * cygheap.h (init_cygheap::cygwin_regname): New element. - -2001-10-23 Christopher Faylor - - Ensure that all fhandler_*::read definitions are __stdcall throughout. - * fhandler.cc (fhandler_base::set_inheritance): Be more defensive in - debugging code. - * fhandler.h: Adjust regparms throughout to reflect passing 'this' - parameter. - * fhandler_console.cc (fhandler_console::read): Remove unneeded test. - Only honor "key down" events. - * miscfuncs.cc (strcasestr): Reorganize for efficient code use. - (check_null_empty_str_errno): Ditto. - (__check_null_invalid_struct_errno): Ditto. - (__check_invalid_read_ptr_errno): Ditto. - * syscalls.cc (_read): Return 0 when length == 0, as per Single UNIX - Specification. - -2001-10-22 Christopher Faylor - - * debug.cc (set_errno): Return value of errno that was set, just like - the macro. - (setclexec_pid): Replace old handle with new handle. - * debug.h: Reflect change in arguments for setclexec_pid. - * fhandler.cc (fhandler_base::set_inheritance): Ditto. - (fhandler_base::fork_fixup): Ditto. - * cygerrno.h: Reflect return value change for set_errno. - -2001-10-22 Christopher Faylor - - Remove 'cb' parameter and modify fhandler_* constructors throughout. - * dtable.cc (dtable::build_fhandler): Remove debugging output which - uses 'cb'. - * exec.cc (execvp): New function. - (execvpe): Ditto. - * fhandler.cc (fhandler_base::fhandler_base): Use constructor - initialization. - * fhandler.h (fhandler_tty_common::fhandler_tty_common): Ditto. - * fhandler_clipboard.cc (fhandler_dev_clipboard::fhandler_dev_clipboard): - Ditto. - * fhandler_console.cc (fhandler_console::fhandler_console): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Ditto. - * fhandler_serial.cc (fhandler_serial::fhandler_serial): Ditto. - * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Ditto. - (fhandler_tty_slave::fhandler_tty_slave): Ditto. - (fhandler_pty_master::fhandler_pty_master): Ditto. - * fhandler_windows.cc (fhandler_windows::fhandler_windows): Ditto. - -2001-10-22 Corinna Vinschen - - Patch suggested by Ian Ray : - * syscalls.cc (seteuid): Unset environment variables HOMEDRIVE and - HOMEPATH before calling internal_getlogin(). - * uinfo.cc (internal_getlogin): Use default HOMEPATH and HOMEDRIVE - from environment if both are present, else query NetUserGetInfo(). - -2001-10-22 Corinna Vinschen - - * net.cc (get_2k_ifconf): Change multiple IP address naming scheme - to Linux style. - -Sun Oct 21 19:04:37 2001 Alexander Gottwald - - * net.cc (get_2k_ifconf): Added support for multiple IP addresses on - one interface. - -2001-10-22 Corinna Vinschen - - * miscfuncs.cc (__check_invalid_read_ptr_errno): Return error, if any. - -2001-10-21 Christopher Faylor - - * resource.cc (fill_rusage): Perform paranoid zero structure passed to - GetProcessMemoryInfo. - -2001-10-22 Robert Collins - - * autoload.cc: Autoload GetProcessMemoryInfo. - * resource.cc (fill_rusage): Calculate ru_maxrss and ru_majflt entries. - (Bug report on this from Guido Serassio in the squid project). - This requires including psapi.h. - -2001-10-20 Christopher Faylor - - * dll_init.cc (dll_list::alloc): Increase retry count to 1000. - -2001-10-20 Christopher Faylor - - * miscfuncs.cc (__check_invalid_read_ptr_errno): New function. - * syscalls.c (_write): Validate that write buffer is accessible for - reading, not writing. - * winsup.h: Declare new function, increase regparmization of check_* - functions. - -2001-10-19 Corinna Vinschen - - * path.cc (getcwd): Allow len == 0 when buf == NULL. - -2001-10-18 Christopher Faylor - - * syscalls.cc (_read): Validate input pointer. - (_write): Ditto. - (system): Ditto. - -2001-10-16 Frederic Devernay - - * poll.cc (poll): Call cygwin_select() if any fd is valid. - -2001-10-16 Corinna Vinschen - - * fhandler_raw.cc (fhandler_dev_raw::open): Eliminate compatibility - code since no Win32 device names are used anymore. - * fhandler_tape.cc (fhandler_dev_tape::tape_set_blocksize): Allow - 0 as blocksize to indicate variable blocksize. - * path.cc (win32_device_name): Generate NT internal device names - using upper/lower case names for readability. - Generate \DosDevices\: device name for mount table - compatibility devices. - -2001-10-16 Corinna Vinschen - - * fhandler_tape.cc (fhandler_dev_tape::tape_status): Report - EOTWarningZoneSize in get->mt_eotwarningzonesize. - * include/cygwin/mtio.h: Define DEFTAPE. - (struct mtget): Add member `mt_eotwarningzonesize'. Add a comment. - * include/cygwin/version.h: Bump API minor version to 47. - -2001-10-16 Christopher Faylor - - * fhandler.cc (fhandler_base::fork_fixup): Guard against compiler - warning. - -2001-10-16 Corinna Vinschen - - * autoload.cc: Add load statement for `NtOpenFile'. - * fhandler.h (fhandler_dev_raw::get_unit): New method. - (fhandler_dev_tape::norewind): Eliminate. - (fhandler_dev_tape::is_rewind_device): New method. - * fhandler_raw.cc (fhandler_dev_raw::open): Open new - fixed device name devices using NT internal method. - Keep calling fhandler_base::open() for old mount table - device mapping compatibility devices. - (fhandler_dev_raw::fstat): Eliminate. Settings are done - by fhandler_base::fstat() already. - * fhandler_tape.cc: Remove `norewind' usage throughout. - * ntdll.h: Define FILE_SYNCHRONOUS_IO_NONALERT. - Define struct _IO_STATUS_BLOCK. - Declare NtOpenFile(). - * path.cc (get_raw_device_number): Add new approach for - using fixed device names. - (win32_device_name): Ditto. - (get_device_number): Ditto. Require POSIX path to begin - with "/dev/". - (mount_info::conv_to_win32_path): Call win32_device_name() - instead of get_device_number() after evaluating mount points - to allow changing the win32 destination path again. - * security.cc (str2buf2uni): Remove `static' to be able to - call function from fhandler_dev_raw::open(). - * wincap.cc: Set flag has_raw_devices appropriately. - * wincap.h: Add flag has_raw_devices. - -2001-10-16 Christopher Faylor - - * cygheap.h (cygheap_fdget::cygheap_fdget): Remove debugging operation - from set_errno. - -2001-10-16 Christopher Faylor - - * mmap.cc (mmap): Assign 'fh' from cygheap_fdget. Use 'fh' everywhere. - -2001-10-15 Christopher Faylor - - * cygerrno.h (set_errno): Define more informative version of this - function for debugging. - (__set_errno): Declare when DEBUGGING. - * cygheap.h (cygheap_fdget::cygheap_fdget): Add a flag to control when - errno is set. - * debug.cc (__set_errno): New function. - * fcntl.cc (_fcntl): Fix so that correct fd is used for second argument - to dup2. - * syscalls.cc (_cygwin_istext_for_stdio): Don't set errno here when - using cygheap_fdget. - -2001-10-15 Christopher Faylor - - * fhandler.cc (fhandler_base::fork_fixup): Don't protect handle. - - * dlfcn.cc: Fix to confirm to coding standards. - - Reorganize includes throughout to accommodate new cygheap.h usage. - * cygheap.h (cygheap_fdmanip): New class: simplifies locking and - retrieval of fds from cygheap->fdtab. - (cygheap_fdget): Ditto. - (cygheap_fdnew): Ditto. - * fcntl.cc (_fcntl): Use new method to lock fdtab and retrieve info. - * ioctl.cc (ioctl): Ditto. - * mmap.cc (mmap): Ditto. - * net.cc: Ditto, throughout. - * passwd.cc (getpass): Ditto. - * path.cc (fchdir): Ditto. - * pipe.cc (make_pipe): Ditto. - * sec_acl.cc (facl): Ditto. - * syscalls.cc: Ditto, throughout. - * termios.cc: Ditto, throughout. - -2001-10-15 Corinna Vinschen - - * uname.cc (uname): Use `wProcessorLevel' unless OS sets it wrong. - Use `dwProcessorType' then instead. - * wincap.cc: Set flag has_valid_processorlevel appropriately. - * wincap.h: Add flag has_valid_processorlevel. - -2001-10-14 Christopher Faylor - - * dtable.cc (dtable::build_fhandler_from_name): Use PC_FULL to - determine path name. - * path.cc (fchdir): Remove rel -> abs path conversion. - -Sun Oct 14 08:10:12 2001 Gary R. Van Sickle - - * fork.cc (fork_parent): Correct the "unable to allocate - forker_finished event" error message. It named the wrong event before. - -2001-10-13 Christopher Faylor - - * autoload.cc (load_wsock32): Declare dummy function to force loading - of winsock. - * fhandler.cc (fhandler_base::set_inheritance): Make debugging output - more verbose. - * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Force loading - of winsock32 if winsock2 not available. - * net.cc (set_socket_inheritance): Use DuplicateHandle in all cases to - set inheritance correctly. - (fdsock): Use winsock2_active macro to determine when to set socket - inheritance. Remove fdtab resource locking since this function should - already be protected. - (cygwin_accept): Simplify logic. Ensure that fdtab unlock is not - called inappropriately. - (cygwin_rcmd): Use fdtab locking. - (cygwin_rresvport): Ditto. - (cygwin_rexec): Ditto. - * select.cc (peek_socket): Set errno appropriately if winsock select - fails. - -2001-10-13 Kazuhiro Fujieda - - * winsup.h: Declare check_pty_fds. - * syscalls.cc (check_pty_fds): Rename from check_ttys_fds. Also check - pty master. - (setsid): Use check_pty_fds. - * dtable.cc (dtable::dec_console_fds): Add check on pty fds. - -2001-10-13 Ralf Habacker - - * fhandler_dsp.cc (fhandler_dsp::ioctl): Return 0 for successful - SNDCTL_DSP_GETBLKSIZE operation. - -2001-10-13 Christopher Faylor - - Remove obsolete 'name' arg from fhandler_* constructors throughout. - * winsup.h (winsock_active): New macro. - (winsock2_active): Ditto. - * autoload.cc (wsock_init): Use new macros to decide if winsock or - winsock2 is loaded. - (nonexist_wsock32): Dummy function to force winsock load. - (nonexist_ws2_32): Dummy function to force winsock2 load. - * fhandler.h (fhandler_socket::fstat): Declare new method. Currently - unused. - * fhandler_socket.cc (fhandler_socket::fixup_before_fork_exec): Check - that winsock2 is active before trying WSADuplicateSocketA. - (fhandler_socket::fixup_after_fork): Add extra check for - winsock2_active. Otherwise use iffy procedures for Windows 95. - (fhandler_socket::fixup_after_exec): Add debugging. - (fhandler_socket::dup): Add debugging. - (fhandler_socket::fstat): New method. - (fhandler_socket::set_close_on_exec): Attempt to perform iffy stuff on - Windows 95. - - * errno.cc (_sys_nerr): Work around compiler strangeness. - - * pinfo.cc (winpids::add): Add extra element at end of allocated array - for setting to NULL. - (winpids::enumNT): Ditto. - (winpids::init): Don't modify pidlist if it hasn't been allocated - (possibly due to malloc problem). - -2001-10-12 Christopher Faylor - - * autoload.cc (wsock_init): Reorganize slightly to accommodate a new - compiler. - -2001-10-11 Egor Duda - - * net.cc (cygwin_sendto): Use correct socket address when sending - data to AF_UNIX socket. - -Wed Oct 10 16:10:41 2001 Alexander Gottwald - - * net.cc (get_95_ifconf): Using other registry values pointing to - correct networkdevice identification for Windows95. - -Tue Oct 9 22:22:45 2001 Christopher Faylor - - Throughout, rename PROC_FORK1 to PROC_FORK. - * child_info.h: Rename PROC_* to _PROC_*. Define PROC_* with - additional testing magic. Eliminate old PROC_FORK and rename - PROC_FORK1 to PROC_FORK. - * dcrt0.cc (_cygwin_testing_magic): New variable. Added to magic - number in proc_info. - (alloc_stack): Eliminate old PROC_FORK test. - (dll_crt0_1): Ditto. Use _PROC_* enums for test. Subtract - _cygwin_testing_magic from child_proc_info->type so that normal cygwin - programs invoked by test suite programs do not consider themselves to - be in a cygwin environment. - (_dll_crt0): Ditto. Move environment checks to initial_env function to - conserve on stack space. - (initial_env): New function. Checks for testing and debugging - environment variables. - * init.cc (cygwin_hmodule): Move declaration. - * winsup.h: Declare variables used for cygwin testing. - -Tue Oct 9 19:17:53 2001 Christopher Faylor - - * uinfo.cc (internal_getlogin): Reorganize slightly to minimize work in - default condition. - -Tue Oct 9 18:53:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_disk_file::open): Add missing case clash check. - -Mon Oct 8 01:47:27 2001 Christopher Faylor - - * dtable.cc (dtable::build_fhandler): Allocate correct amount for given - fhandler class. - * fhandler.h (fhandler_union): Properly define rather than relying on - fhandler_console being "big enough". - -Mon Oct 8 00:25:18 2001 Christopher Faylor - - * external.cc (fillout_pinfo): Reset counter whenever we initialize the - pid list. - -Sun Oct 7 17:16:05 2001 Christopher Faylor - - * path.cc (normalize_posix_path): Don't eat a '.' after a '\\' since it - has special meaning on NT. - - * syscalls.cc (access): Use stat_worker. - -Fri Oct 5 21:01:14 2001 Christopher Faylor - - * fhandler.cc (fhandler_base::fork_fixup): Protect dup'ed handle and - record it as non-inheritable for debugging purposes in case there is a - subsequent fork or exec. - * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Allow - fork_fixup to call ProtectHandle. - -Fri Oct 5 14:22:47 2001 Christopher Faylor - - * path.cc (get_raw_device_number): Correct length arguments for - wdeveqn. - -Fri Oct 5 11:05:32 2001 Christopher Faylor - - * path.cc (getcwd): Allow NULL first argument. - -Fri Oct 5 00:31:35 2001 Christopher Faylor - - * heap.h (inheap): Check for NULL. - -Thu Oct 4 23:17:49 2001 Christopher Faylor - - Add second path_conv * argument to fstat()s throughout. - * fhandler.h: Change read and fstat to regparm/stdcall throughout. - (fhandler_base::fstat): Just declare. Don't define. - (fhandler_disk_file::fstat_helper): Declare. - * fhandler.cc (fhandler_base::fstat): Move here from fhandler.h, adapt - from former stat_dev(). - (fhandler_disk_file::fstat): Move most of the disk-file-specific logic - from stat_worker to here. Use fstat_helper to derive final fstat - output. - (fhandler_disk_file::fstat_helper): New method, renamed from former - fstat method. - (num_entries): Moved here from syscalls.cc. - * fhandler_mem.cc (fhandler_dev_mem::fstat): Use base class to - initialize most stuff. Invert has_physical_mem_access test for - establishing permissions. - * fhandler_raw.cc (fhandler_dev_raw::fstat): Eliminate unneed test and - memory clearing. Use base class to initialize most stuff. - * syscalls.cc (stat_dev): Eliminate. - (stat_worker): Simply call fstat method to generate fstat output. Move - all device specific code to appropriate fstats. - - * dir.cc (opendir): Pass correct arg to stat_worker to allow following - symlinks. - -Thu Oct 4 21:37:57 2001 Christopher Faylor - - * spawn.cc (perhaps_suffix): Return NULL on non-existence of file as - well as "directoryness". Previous code modified on 2001/09/30 actually - had an arguable bug which was unmasked by the change on that day. - -Thu Oct 4 20:52:42 2001 Christopher Faylor - - * path.cc (path_conv::check): Return ENOTDIR when leading device and - trailing component. - -Thu Oct 4 18:49:23 2001 Christopher Faylor - - * syscalls.cc (stat_worker): Make global. Accept path_conv parameter - for passing information back to caller. - * winsup.h: Declare stat_worker. - * dir.cc (opendir): Use stat_worker rather than stat and pass path_conv - parameter to stat_worker for later inspection. - -2001-10-04 Karellen (karellen@boreworms.com) - - * syslog.cc (syslog): Teach syslog about syslog priorities other than - LOG_ERR, LOG_WARNING and LOG_INFO - -Thu Oct 4 15:50:03 2001 Christopher Faylor - - * path.cc (path_conv::check): Don't perform file system or rootdir - checks on devices. - -Wed Oct 3 19:40:36 2001 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Don't close hexec_proc if it is NULL. - - * fork.cc (vfork): Add debugging statements. - - * path.cc (get_device_number): Make static. Rewrite to inspect both unix - and windows paths. - (get_raw_device_number): Just check for parts of raw device that we - care about. - (get_devn): New function, pulled from get_device_number. - (win32_device_name): Accommodate arg changes to get_device_number. - (mount_info::get_device_number): Call get_device_number on translated - Windows path. - - * spawn.cc (spawn_guts): Don't treat P_VFORK differently from P_NOWAIT. - Add handle to child's shared region to child so that it will be - preserved if the parent goes away. - * fhandler.h: Throughout, simplify to one open method for all fhandler - classes, requiring a path_conv first element. - * fhandler.cc (fhandler_base::open): Remove obsolete method. - Generalize to require path_conv * as first argument. - (fhandler_disk_file::open): Remove obsolete method. - (fhandler_disk_file::open): Use path_conv pointer rather than - reference. - * fhandler_clipboard.cc (fhandler_dev_clipboard::dup): Use new open - method. - (fhandler_dev_clipboard::open): Accommodate new argument for open - methods. - * fhandler_console.cc (fhandler_console::open): Ditto. - (fhandler_console::dup): Use new open method. - (fhandler_console::fixup_after_fork): Ditto. - (fhandler_console::fixup_after_exec): Ditto. - * fhandler_dsp.cc (fhandler_dev_dsp::open): Accommodate new argument for - open methods. - * fhandler_floppy.cc (fhandler_dev_floppy::open): Ditto. - * fhandler_mem.cc (fhandler_dev_mem::open): Ditto. - * fhandler_random (fhandler_dev_random::open): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::open): Ditto. - * fhandler_serial.cc (fhandler_serial::open): Ditto. - * fhandler_tape.cc (fhandler_dev_tape::open): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. - (fhandler_pty_master::open): Ditto. - * fhandler_windows.cc (fhandler_windows::open): Ditto. - * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. - * fhandler_socket.cc (fhandler_socket::set_connect_secret): Accommodate - new argument for open methods. - * syscalls.cc (_open): Ditto. - (stat_worker): Ditto. - -Tue Oct 2 23:49:18 2001 Christopher Faylor - - * cygheap.cc (cfree): Remove malloc debugging probe. - * dlmalloc.c (errprint): Remove abort() call which causes interesting - error message printing to abort prematurely. - * environ.cc: Sprinkle MALLOC_CHECKs liberally throughout. - (_addenv): Allocate two empty elements at end of environ to - (apparently) work around problems with some buggy applications. - (winenv): Avoid calling alloca if no forced environment variable is - present. - - * exceptions.cc (open_stackdumpfile): Don't print "Dumping stack trace - to..." when running in a cygwin environment (i.e., the parent is a - cygwin process). - - * dtable.cc (dtable::init_std_file_from_handle): Move device type - detection code from build_fhandler here since it is only used by this - function. - (dtable::build_fhandler_from_name): New method. Renamed from - dtable::build_fhandler. - (dtable::build_fhandler): Use build_fhandler_from_name. - (cygwin_attach_handle_to_fd): Ditto. - * syscalls.cc (_open): Ditto. - (stat_worker): Ditto. - * dtable.h (dtable::build_fhandler_from_name): Rename declaration from - dtable::build_fhandler. - -Mon Oct 1 16:52:23 2001 Christopher Faylor - - * dtable.h (dtable::build_fhandler): Make path_conv parameter - non-optional. - (dtable::init_std_file_from_handle): Eliminate name parameter. - * dtable.cc (stdio_init): Don't pass bogus name to - init_std_file_from_handle. The function will figure out the name - itself. - (dtable::init_std_file_from_handle): Eliminate name parameter. Assume - that we're always called with an appropriate fd. Pass name as NULL if - we can't simply figure it out from context. - (cygwin_attach_handle_to_fd): Pass path_conv argument to - build_fhandler. - (dtable::build_fhandler): Make path_conv argument mandatory. Eliminate - specific call to get_device_number. With unknown device names, set - name from handle context for parsing by path_conv. - (dtable::build_fhandler): Pass path_conv argument to build_fhandler. - * path.h (path_conv::set_isdisk): Set disk device type. - (path_conv::is_device): Don't consider FH_DISK a "device". - * syscalls.cc (_open): Pass path_conv argument by reference. - (stat_worker): Ditto. - (_rename): Use path_conv operators. Add bounds to DeleteFile/MoveFile - for loop. - -Mon Oct 1 14:25:00 2001 Charles Wilson - - * cygwin.din: export strtoll and strtoull - -Sun Sep 30 22:51:41 2001 Christopher Faylor - - Add "path.h" include throughout, where needed. Use new path_conv - methods and operators to simplify testing for directory and attributes, - throughout. - * path.h (path_conv::exists): New method. - (path_conv::has_attribute): Ditto. - (path_conv::isdir): Ditto. - (path_conv::DWORD &): New operator. - (path_conv::int &): Ditto. - * dir.cc (rmdir): Eliminate a goto. - * dtable.cc (dtable::build_fhandler): Accept opt and suffix info for - path_conv.check. Return fh == NULL on path_conv error. Pass unit to - set_name as appropriate. - (dtable::reset_unix_path_name): New method. - * dtable.h (dtable): Declare new method. Reflect arg changes to - build_fhandler. - * fhandler.cc (fhandler_disk_dummy_name): Eliminate. - (fhandler_base::set_name): Expect paths to be NULL. Build - unix_path_name from win32_path_name when it is a device. - (fhandler_base::reset_unix_path_name): New method. - (fhandler_base::raw_read): Report EISDIR when ERROR_INVALID_FUNCTION - or ERROR_INVALID_PARAMETER and reading a directory. - (fhandler_disk_file::fstat): Don't call stat_dev since we should now - never be calling fhandler_disk_file methods with devices. - (fhandler_base::fhandler_base): Clear {unix,win32}_path_name. - (fhandler_base::~fhandler_base): Always free {unix,win32}_path_name. - (fhandler_disk_file::fhandler_disk_file): Remove set_no_free_names - kludge. - (fhandler_disk_file::open): Ditto. - * fhandler.h (fhandler_base::no_free_names): Eliminate. - (fhandler_base::set_no_free_names): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Don't set - unix_path_name here. - * path.cc (fchdir): Lock fd table throughout. Use new - dtable::reset_unix_path_name method to reset path. - * syscalls.cc (stat_worker): Reorganize to always call fstat method. - Pass path_conv method to fhandler_*::open. - (chroot): Elminate a goto. - -Sun Sep 30 17:37:43 2001 Christopher Faylor - - * environ.cc (winenv): Allocate exact amount of space needed for forced - windows environment variable rather than just using MAX_PATH. - -Sun Sep 30 17:10:18 2001 Christopher Faylor - - * Makefile.in: Depend on stamp to ensure rebuilding. Remove stamp file - when we've just built the DLL. - -Mon Oct 1 00:34:00 2001 Robert Collins - - * thread.cc (pthread_cond_dowait): Hopefully eliminate a race on multiple thread - wakeups. - -Sat Sep 29 18:26:00 2001 Robert Collins - - * pthread.cc (pthread_cond_timedwait): Deleted - exported from thread.cc. - (pthread_cond_wait): Deleted - exported from thread.cc. - * thread.cc (pthread_cond::BroadCast): Update to use the new syntax for - verifyable_object_isvalid (). - (pthread_cond::Signal): Ditto. Also attempt to fix the lost signal race - with pthread_cond::TimedWait(). - (check_valid_pointer): Change definiton to void const *. - (verifyable_object_isvalid): Add new parameter to allow identification of - static initializers, and return a enum rather than magic numbers. - (__pthread_create): Ditto. - (__pthread_cleanup): Ditto. - (__pthread_attr_init): Ditto. - (__pthread_attr_getinheritsched): Ditto. - (__pthread_attr_getschedparam): Ditto. - (__pthread_attr_getschedpolicy): Ditto. - (__pthread_attr_getscope): Ditto. - (__pthread_attr_setdetachstate): Ditto. - (__pthread_attr_getdetachstate): Ditto. - (__pthread_attr_setinheritsched): Ditto. - (__pthread_attr_setschedparam): Ditto. - (__pthread_attr_setschedpolicy): Ditto. - (__pthread_attr_setscope): Ditto. - (__pthread_attr_setstacksize): Ditto. - (__pthread_attr_getstacksize): Ditto. - (__pthread_attr_destroy): Ditto. - (__pthread_join): Ditto. - (__pthread_detach): Ditto. - (__pthread_suspend): Ditto. - (__pthread_continue): Ditto. - (__pthread_getschedparam): Ditto. - (__pthread_getsequence_np): Ditto. - (__pthread_key_create): Ditto. - (__pthread_key_delete): Ditto. - (__pthread_setschedparam): Ditto. - (__pthread_setspecific): Ditto. - (__pthread_getspecific): Ditto. - (__pthread_cond_destroy): Ditto. - (__pthread_cond_init): Ditto. - (__pthread_cond_broadcast): Ditto. - (__pthread_cond_signal): Ditto. - (__pthread_condattr_init): Ditto. - (__pthread_condattr_getpshared): Ditto. - (__pthread_condattr_setpshared): Ditto. - (__pthread_condattr_destroy): Ditto. - (__pthread_kill): Ditto. - (__pthread_mutex_init): Ditto. - (__pthread_mutex_getprioceiling): Ditto. - (__pthread_mutex_lock): Ditto. - (__pthread_mutex_trylock): Ditto. - (__pthread_mutex_unlock): Ditto. - (__pthread_mutex_destroy): Ditto. - (__pthread_mutex_setprioceiling): Ditto. - (__pthread_mutexattr_getprotocol): Ditto. - (__pthread_mutexattr_getpshared): Ditto. - (__pthread_mutexattr_gettype): Ditto. - (__pthread_mutexattr_init): Ditto. - (__pthread_mutexattr_destroy): Ditto. - (__pthread_mutexattr_setprotocol): Ditto. - (__pthread_mutexattr_setprioceiling): Ditto. - (__pthread_mutexattr_getprioceiling): Ditto. - (__pthread_mutexattr_setpshared): Ditto. - (__pthread_mutexattr_settype): Ditto. - (__sem_init): Ditto. - (__sem_destroy): Ditto. - (__sem_wait): Ditto. - (__sem_trywait): Ditto. - (__sem_post): Ditto. - (__pthread_cond_dowait): New function, contains core logic from - __pthread_cond_wait and __pthread_cond_timedwait. Decrement (*cond)->waiting - before reentering the cond access mutex to allow detection of lost signals. - (__pthread_cond_timedwait): Rename to pthread_cond_timedwait, and call - __pthread_cond_dowait after calculating the wait length. - (__pthread_cond_wait): Rename to pthread_cond_wait, and call - __pthread_cond_dowait. - * thread.h: New enum for use with verifyable_object_isvalid. - Remove the extern exporting of __pthread_cond_timedwait and __pthread_cond_wait. - -Fri Sep 28 21:18:50 2001 Christopher Faylor - - * pipe.cc (fhandler_pipe::fixup_after_fork): New method. - * fhandler.h (fhandler_pipe::fixup_after_fork): Declare new method. - -Fri Sep 28 03:23:04 2001 Christopher Faylor - - * passwd.cc (read_etc_passwd): Bother with unlocking when not - in cygwin initialization. - * grp.cc (read_etc_group): Ditto. - -Fri Sep 28 02:57:03 2001 Christopher Faylor - - * passwd.cc (read_etc_passwd): Don't bother with locking when - in cygwin initialization since there is only one thread. - * grp.cc (read_etc_group): Ditto. - -Fri Sep 28 01:50:09 2001 Christopher Faylor - - * pipe.cc (fhandler_pipe::hit_eof): Return correct value when there is - no EOF event available. - -Sat Sep 28 00:34:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Move setting the access after evaluating fd. - Remove useless comment. Explain copy-on-write problem of 9x - more detailed. Don't set access to FILE_MAP_COPY on 9x only - when anonymous mapping is requested. - (fhandler_disk_file::mmap): Remove useless device check. - Add debug output. - -Fri Sep 27 07:35:00 2001 Robert Collins - - * Makefile.in: Only stamp winver_stamp on success. - -Wed Sep 26 16:02:35 2001 Christopher Faylor - - * select.cc (peek_pipe): REALLY only grab mutex when we actually got - something from the pipe. - -Tue Sep 25 21:25:00 2001 Robert Collins - - * thread.cc (pthread_cond::BroadCast): Use address with verifyable_object_isvalid(). - (pthread_cond::Signal): Ditto. - (__pthread_create): Ditto. - (__pthread_cleanup): Ditto. - (__pthread_attr_init): Ditto. - (__pthread_attr_getinheritsched): Ditto. - (__pthread_attr_getschedparam): Ditto. - (__pthread_attr_getschedpolicy): Ditto. - (__pthread_attr_getscope): Ditto. - (__pthread_attr_setdetachstate): Ditto. - (__pthread_attr_getdetachstate): Ditto. - (__pthread_attr_setinheritsched): Ditto. - (__pthread_attr_setschedparam): Ditto. - (__pthread_attr_setschedpolicy): Ditto. - (__pthread_attr_setscope): Ditto. - (__pthread_attr_setstacksize): Ditto. - (__pthread_attr_getstacksize): Ditto. - (__pthread_attr_destroy): Ditto. - (__pthread_join): Ditto. - (__pthread_detach): Ditto. - (__pthread_suspend): Ditto. - (__pthread_continue): Ditto. - (__pthread_getschedparam): Ditto. - (__pthread_getsequence_np): Ditto. - (__pthread_key_create): Ditto. - (__pthread_key_delete): Ditto. - (__pthread_setschedparam): Ditto. - (__pthread_setspecific): Ditto. - (__pthread_getspecific): Ditto. - (__pthread_cond_destroy): Ditto. - (__pthread_cond_init): Ditto. - (__pthread_cond_broadcast): Ditto. - (__pthread_cond_signal): Ditto. - (__pthread_cond_timedwait): Ditto. - (__pthread_cond_wait): Ditto. - (__pthread_condattr_init): Ditto. - (__pthread_condattr_getpshared): Ditto. - (__pthread_condattr_setpshared): Ditto. - (__pthread_condattr_destroy): Ditto. - (__pthread_kill): Ditto. - (__pthread_mutex_init): Ditto. - (__pthread_mutex_getprioceiling): Ditto. - (__pthread_mutex_lock): Ditto. - (__pthread_mutex_trylock): Ditto. - (__pthread_mutex_unlock): Ditto. - (__pthread_mutex_destroy): Ditto. - (__pthread_mutex_setprioceiling): Ditto. - (__pthread_mutexattr_getprotocol): Ditto. - (__pthread_mutexattr_getpshared): Ditto. - (__pthread_mutexattr_gettype): Ditto. - (__pthread_mutexattr_init): Ditto. - (__pthread_mutexattr_destroy): Ditto. - (__pthread_mutexattr_setprotocol): Ditto. - (__pthread_mutexattr_setprioceiling): Ditto. - (__pthread_mutexattr_getprioceiling): Ditto. - (__pthread_mutexattr_setpshared): Ditto. - (__pthread_mutexattr_settype): Ditto. - (__sem_init): Ditto. - (__sem_destroy): Ditto. - (__sem_wait): Ditto. - (__sem_trywait): Ditto. - (__sem_post): Ditto. - (verifyable_object_isvalid): Recieve a pointer to a pointer for verification. - (__pthread_mutexattr_getprotocol): Fix typo in magic number. - (__pthread_mutexattr_getpshared): Ditto. - (__pthread_mutexattr_gettype): Ditto. - * thread.h (verifyable_object_isvalid): Change prototype to recieve a pointer to a - pointer for verification. - * include/pthread.h: Fix typo for __cleanup_routine_type typedef. (Contrib from Net). - -Tue Sep 25 02:09:42 2001 Christopher Faylor - - * select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly - call peek_pipe. - -Mon Sep 24 18:46:39 2001 Christopher Faylor - - * select.cc (peek_pipe): Only grab mutex when we actually got something - from the pipe. - -Mon Sep 24 17:41:03 2001 Christopher Faylor - - * fhandler.h (fhandler_pipe::hit_eof): New method. - (writepipe_exists): New class element. - (orig_pid): Ditto. - (id): Ditto. - (is_slow): Eliminate. - * pipe.cc (fhandler_pipe::set_close_on_exec): Set inheritance on - writepipe_exists, if it exists. - (fhandler_pipe::hit_eof): New method, modelled after tty. - (fhandler_pipe::dup): Duplicate writepipe_exists, if it exists. - (make_pipe): Set up a dummy event for pipes on windows 9x. The - nonexistence of this event means that the write side of the - pipe has closed. - (_dup): Move to syscalls.cc - (_dup2): Ditto. - - * dtable.cc (dtable::build_fhandler): Fill out set_names here, if - appropriate. - * syscalls.cc (_open): Call set_names in build_fhandler. - -Sun Sep 23 16:55:00 2001 Corinna Vinschen - - * syscalls.cc (_open): Set name in fhandler object after successful - creation. - (stat_dev): Set device type to block device in FH_FLOPPY case. - -Sun Sep 23 11:15:00 2001 Corinna Vinschen - - * dtable.cc (dtable::build_fhandler): Initialize unit when using - optional path_conv argument. - -Sat Sep 22 17:33:45 2001 Christopher Faylor - Corinna Vinschen - - * dtable.cc (dtable::build_fhandler): Accept an optional path_conv - argument. If available, use this to calculate path name and device - number. - * dtable.h (dtable): Reflect above change. - * fhandler.h (fhandler_base): Declare virtual method which accepts - path_conv rather than path string as first argument. - * fhandler.cc (fhandler_base::open): Define above new method. - * syscalls.cc (_open): Set aside a path_conv variable for use in - build_fhandler and subsequent call to open. - -Sat Sep 22 12:44:57 2001 Christopher Faylor - - * exceptions.cc (setup_handler): Always relinquish lock after we've - interrupted. - * fhandler.cc: Move pipe methods to pipe.cc. - * fhandler.h (fhandler_pipe): Add new methods. - * fork.cc (sync_with_parent): Make error messages more informative. - * pipe.cc (fhandler_pipe::fhandler_pipe): Move here from fhandler.cc. - (fhandler_pipe::lseek): Ditto. - (fhandler_pipe::set_close_on_exec): New method. - (fhandler_pipe::read): Ditto. - (fhandler_pipe::close): Ditto. - (fhandler_pipe::dup): Ditto. - (make_pipe): Create the guard mutex on the read side of the pipe. - * select.cc (peek_pipe): Use guard_mutex to discover if we have the - right to read on this pipe. - (fhandler_pipe::readh_for_read): Pass the read pipe guard mutex to - peek_pipe. - * syscalls.cc (_read): Always detect signal catchers, for now. - - * debug.cc (makethread): Eliminate hack to make thread inheritable. - * sigproc.cc (subproc_init): Don't use hack to make thread inheritable. - -Thu Sep 20 16:48:44 2001 Christopher Faylor - - * fhandler.cc (fhandler_base::set_inheritance): Just use - DUPLICATE_CLOSE_SOURCE to change inheritance. Eliminate all other - logic dealing with closed handles. - * fhandler.h (fhandler_base::set_inheritance): Reflect above change. - * fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Ditto. - -Thu Sep 20 13:34:00 2001 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::fixup_after_exec): Close - socket only when not using Winsock2. - -Thu Sep 20 13:20:00 2001 Corinna Vinschen - - * fhandler.h (fhandler_socket::fixup_after_exec): Remove inline - implementation. - (fhandler_dev_raw::fixup_after_exec): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::fixup_after_fork): Don't - duplicate buffer on fork to avoid memory leak. - (fhandler_dev_raw::fixup_after_exec): New implementation equal to - former fixup_after_fork() implementation. - * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Do - nothing when not using Winsock2. - (fhandler_socket::fixup_after_exec): New implementation. - (fhandler_socket::set_close_on_exec): Never call set_inheritance(). - -Thu Sep 20 9:55:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_base::set_inheritance): If available, - use SetHandleInformation() to set inheritance. - * wincap.cc: Set flag has_set_handle_information_on_console_handles - appropriately. - * wincap.h: Add flag has_set_handle_information_on_console_handles. - -Wed Sep 19 12:24:09 2001 Christopher Faylor - - * lib/getopt.c (__progname): Don't declare if not compiling for cygwin. - -Wed Sep 19 18:07:00 2001 Corinna Vinschen - - * lib/getopt.c (getopt_long): Avoid compiler warning. - -Wed Sep 19 11:52:42 2001 Christopher Faylor - - * lib/getopt.c: Use __progname==__argv[0] when not compiling for cygwin. - - * scandir.cc (scandir): Use correct default when compar == NULL. - -Wed Sep 19 17:49:00 2001 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::fhandler_socket): Revert - memory allocation to use cmalloc again. - -Tue Sep 18 21:04:26 2001 Christopher Faylor - - * cygwin.din (__argv): Export. - (__argc): Ditto. - (__progname): Ditto. - * include/getopt.h (getopt_long): constify arguments. - * lib/getopt.c: Import new file from NetBSD. - -Tue Sep 18 18:21:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Don't reuse anonymous memory in MAP_FIXED case. - -Mon Sep 17 17:29:25 2001 Christopher Faylor - - * include/io.h: Add access declaration. - -Mon Sep 17 14:04:27 2001 Christopher Faylor - - * syscalls.cc (rmdir): Set cwd to some other location if attempting to - rmdir current working directory. - -Sun Sep 16 23:04:31 2001 Christopher Faylor - - * dtable.h (not_open): Assure inline. - * fhandler.h (operator []): Make const. - -Sun Sep 16 23:02:57 2001 Robert Collins - - * sync.cc (muto::~muto): Fix typo which stopped muto event handle from - ever being closed. - -2001-09-16 Egor Duda - - * path.cc (symlink): Check arguments for validity. - (getcwd): Ditto. - * syscalls.cc (ftruncate): Ditto. - * times.cc (times): Ditto. - * uname.cc (uname): Ditto. - -Sat Sep 15 22:54:49 2001 Christopher Faylor - - * net.cc (dup_servent_ptr): Detect old Windows 95 misaligned structure - and realign appropriately. - -Sat Sep 15 00:28:40 2001 Christopher Faylor - - * Makefile.in: Generate libcygwin.a during the link pass rather than as - a separate dlltool step. - * dcrt0.cc (_dll_crt0): pppid_handle could be NULL. Don't close it if - so. - -Fri Sep 14 20:48:18 2001 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Create vfork main storage here so that it can - be queried in waitsig later. - * sigproc.cc (wait_sig): Don't deliver a signal if in a vfork. - * sigproc.h (sigframe::init): New method. - (sigframe): Use init. - * perthread.h: Declare main_vfork. - * fork.cc (vfork): Deliver all signals on parent return from vfork. - -Fri Sep 14 10:21:00 2001 Corinna Vinschen - - * dcrt0.cc (_dll_crt0()): Don't call wincap.init() here. - -Fri Sep 14 00:37:54 2001 Christopher Faylor - - * fork.cc (vfork): Avoid recursive vforks. - -Fri Sep 14 00:18:52 2001 Christopher Faylor - - * fhandler.h (fhandler_pipe::is_slow): Return true only if pipes are - reliable (i.e., not Win9x). - * wincap.cc: Make statics NO_COPY to avoid fork overhead. - -Thu Sep 13 23:01:00 2001 Christopher Faylor - - * grp.cc (read_etc_group): Just reuse group_buf storage for subsequent - reread of /etc/group. - * passwd.cc (read_etc_passwd): Just reuse passwd_buf storage for - subsequent reread of /etc/passwd. - -Thu Sep 13 20:46:05 2001 Christopher Faylor - - * cygheap.cc (dup_now): New function. - (cygheap_setup_for_child): Accept new argument controlling whether to - delay copying of cygheap to shared memory region. - (cygheap_setup_for_child_cleanup): Accept new arguments controlling - whether to copy cygheap at this point. - * cygheap.h: Reflect above changes. - * fork.cc (fork_parent): Break copying of cygheap into two parts when - fork_fixup is required so that the child can see the parent's changes. - (vfork): Do stack cleanup prior to forcing a fork error. - * spawn.cc (spawn_guts): Ditto. - -Thu Sep 13 17:14:59 2001 Christopher Faylor - - * cygheap.cc (ccalloc): Pass correct length to creturn so that - cygheap_max is correctly calculated. - -Wed Sep 12 21:06:38 2001 Christopher Faylor - - * sync.cc (muto::acquire): Fix while/if typo. - -Wed Sep 12 23:06:00 2001 Corinna Vinschen - - * wincap.cc (wincapc::init): Simplify W2K/XP case. - -Wed Sep 12 23:02:00 2001 Corinna Vinschen - - * wincap.cc (wincapc::init): Set os name to "NT" on XP, too. - -Wed Sep 12 19:00:00 2001 Corinna Vinschen - - * Makefile.in: Build wincap.o. - * wincap.cc: New file. - * wincap.h: Ditto. - * autoload.cc: Add dynamic load statement for `CreateHardLinkA'. - * dcrt0.cc (os_being_run): Eliminated. - (osname): Ditto. - (iswinnt): Ditto. - (set_os_type): Ditto. - (dll_crt0_1): Call wincap.init() instead of set_os_type(). - (_dll_crt0): Ditto. - * environ.cc (set_chunksize): New function. - (parse_thing): `forkchunk' setting now invokes function `set_chunksize'. - * fork.cc (chunksize): Eliminated. Moved to be member of wincap. - * host_dependent.h: Removed. - * syscalls.cc (_link): Try using `CreateHardLinkA' first, if available. - * cygheap.cc, dcrt0.cc, delqueue.cc, dir.cc, - environ.cc, fhandler.cc, fhandler.h, fhandler_console.cc, - fhandler_mem.cc, fork.cc, mmap.cc, net.cc, pinfo.cc, pinfo.h, - security.cc, syscalls.cc, sysconf.cc, syslog.cc, thread.cc, - times.cc, tty.cc, uinfo.cc, uname.cc, winsup.h: Use new wincap - capability check throughout. - * winsup.h: Include wincap.h. Eliminate extern declarations of - `os_being_run' and `iswinnt'. Eliminate `os_type" definition. - * include/cygwin/version.h: Bump version to 1.3.4. - -Wed Sep 12 01:03:36 2001 Christopher Faylor - - * exceptions.cc (call_signal_handler_now): Add additional guard against - inappropriately calling signal handler. - * syscalls.cc (_read): Reset errno if not exiting due to signal. - -Wed Sep 12 13:03:00 2001 Robert Collins - - * autoload.cc (LoadDLLfuncEx): Auto load TryEnterCriticalSection - it's - an NT only call. - * thread.cc (pthread_cond::TimedWait): Use critical sections for NT. - (pthread_cond::fixup_after_fork): Don't detect bad apps. - (pthread_mutex::pthread_mutex): Use critical sections for NT. - (pthread_mutex::~pthread_mutex): Ditto. - (pthread_mutex::Lock): Ditto. - (pthread_mutex::TryLock): Ditto. - (pthread_mutex::UnLock): Ditto. - (pthread_mutex::fixup_after_fork): Ditto. Also do not detect bad apps. - (__pthread_mutex_trylock): Move WIN32 specific test into the class - method. - (__pthread_mutex_destroy): Prevent dereferencing passed pointer without - valid address. - * thread.h (pthread_mutex): Use critical sections for NT. - -Tue Sep 11 21:55:37 2001 Christopher Faylor - - * sigproc.h (sigframe::unregister): Return true/false whether this - frame is capable of responding to signals. - * exceptions.cc (sigframe::call_signal_handler): Don't call signal - handler if it is not armed for this thread. - -Tue Sep 11 11:23:10 2001 Christopher Faylor - - * cygwin.din: Remove cygwin_getshared. - * shared.cc: Ditto. - * include/cygwin/version.h: Bump API minor number. - -Tue Sep 11 11:14:11 2001 Dmitry Timoshkov - - * dtable.cc (dtable::build_fhandler): Fix incorrect test for socket. - -Tue Sep 11 21:22:00 2001 Robert Collins - - * thread.cc (pthread_cond::~pthread_cond): Fix incorrect use of - InterlockExchangePointer. - (pthread_mutex::~pthread_mutex): Ditto. - (semaphore::~semaphore): Ditto. - -Tue Sep 11 18:15:00 2001 Robert Collins - - * dcrt0.cc (cygwin_finished_initializing): Copy _mtinterf on fork. - * fork.cc (fork_child): Fixup thread-related structures after fork. - * thread.cc (MTinterface::Init): Initialise the new mutex, condition - and semaphore lists. - (MTinterface::fixup_after_fork): Iterate through each list and fixup - the objects. - (pthread_cond::pthread_cond): Add this to the condition list. - (pthread_cond::~pthread_cond): Remove this from the condition list. - (pthread_cond::fixup_after_fork): Recreate as best we can the pre-fork - state. - (pthread_mutex::pthread_mutex): Add this to the mutex list. - (pthread_mutex::~pthread_mutex): Remove this from the mutex list. - (pthread_mutex::fixup_after_fork): Recreate as best we can the pre-fork - state. - (semaphore::semaphore): Store the initial value, and add this to the - semaphore list. - (semaphore::~semaphore): Remove this from the semaphore list. - (semaphore::Post): Increment the current semaphore value. - (semaphore::TryWait): Decrement the current semaphore value. - (semaphore::Wait): Ditto. - (semaphore::fixup_after_fork): Recreate the pre-fork state as best we - can. - * thread.h (pthread_mutex): New members to allow fixup_after_fork. - (pthread_cond): Ditto. - (semaphore): Ditto. - (MTinterface): New list heads for tracking conds and semaphores. - -Sun Sep 9 22:11:27 2001 Christopher Faylor - - * dtable.cc (dtable::fixup_after_fork): Use SetStdHandle appropriately - on inherited fds. - -Sun Sep 9 20:09:11 2001 Christopher Faylor - - * sigproc.cc (NZOMBIES): Reduce substantially to minimize memory use. - -Mon Sep 10 08:28:00 2001 Robert Collins - - * thread.h (MT_Interface): Remove pshared mutex array. Add a - threadsafe list for mutex tracking (for fixup after fork). - * thread.cc (MTInterface::Init): Remove pshared mutex array. - (pthread_mutex::pthread_mutex): Remove pshared mutex functionality. - Fail with EINVAL on attempts to use pshared functionality. - (__pthread_mutex_getpshared): Remove. - (__pthread_cond_timedwait): Remove pshared mutex functionality. - (__pthread_cond_wait): Ditto. - (__pthread_mutex_init): Ditto. - (__pthread_mutex_getprioceiling): Ditto. - (__pthread_mutex_lock): Ditto. - (__pthread_mutex_trylock): Ditto. - (__pthread_mutex_unlock): Ditto. - (__pthread_mutex_destroy): Ditto. - (__pthread_mutex_setprioceiling): Ditto. - (__pthread_mutexattr_setpshared): Ditto. - -Sun Sep 9 23:09:00 2001 Corinna Vinschen - - * pwdgrp.h (pwdgrp_check::set_last_modified): Call GetFileTime() - instead of GetFileInformationByHandle(). - -Sun Sep 9 15:59:53 2001 Christopher Faylor - - * heap.h (inheap): Rewrite macro to accommodate removal of brk macros - below. - -Sun Sep 9 15:02:44 2001 Christopher Faylor - - * cygheap.cc (cygheap_fixup_in_child): Clear cygheap->base so that heap - is not forced to start at the same place in execed process. - * heap.cc: Remove brk* macros for clarity throughout. - * heap.h: Ditto. - * shared.cc (shared_info::initialize): Move heap_chunk test into - heap_chunk_size(). - (heap_chunk_size): Check for chunk size here. Don't go to registry if - heap_chunk_in_mb is already set. - - * smallprint.c (console_printf): Add Windows 95 concessions. - -Sun Sep 9 13:01:06 2001 Christopher Faylor - - * child_info.h (PROC_MAGIC): Bump magic number. - -Sun Sep 9 18:36:00 2001 Corinna Vinschen - Christopher Faylor - - * cygheap.cc (init_cygheap::etc_changed): New method to signal - a change in /etc. - * cygheap.h (struct init_cygheap): Add member `etc_changed_h' - and method `etc_changed'. - * grp.cc (enum grp_state): Eliminate. - (class grp_check): Ditto. - (group_state): Define as `class pwdgrp_check'. - (parse_grp): Remeber path and modification time of /etc/group file. - * passwd.cc (enum_pwd_state): Eliminate. - (class pwd_check): Ditto. - (passwd_state): Define as `class pwdgrp_check'. - (read_etc_passwd): Remember path and modification time of /etc/passwd - file. - * pwdgrp.h: New file. - (enum pwdgrp_state): Substitutes `pwd_state' and `grp_state'. - (class pwdgrp_check): Substitutes `pwd_check' and `grp_check'. - -Sun Sep 9 14:31:00 2001 Corinna Vinschen - - * include/cygwin/version.h: Bump API minor version to 45 according - to adding the gamm*_r functions. - -Sat Sep 8 23:32:18 2001 Christopher Faylor - - * fork.cc (fork_parent): Stop malloc activity while fork is in control - of the heap. - * sigproc.cc (NZOMBIES): Rename from ZOMBIEMAX for clarity. - (zombies): Revert to original behavior. Allocating zombie array - resulted in performance hit. - * winsup.h: Declare malloc lock routines. - -Fri Sep 7 21:35:35 2001 Christopher Faylor - - * cygwin.din: Add gamm*_r function exports. - -Fri Sep 7 17:11:11 2001 Christopher Faylor - - * cygheap.h (init_cygheap): Move heap pointers here. - * include/sys/cygwin.h (perprocess): Remove heap pointers. - * dcrt0.cc (__cygwin_user_data): Reflect obsolete perprocess stuff. - (_dll_crt0): Don't initialize heap pointers. - (cygwin_dll_init): Ditto. - (release_upto): Use heap pointers from cygheap. - * heap.h: Ditto. - * fork.cc (fork_parent): Ditto. Don't set heap pointers in ch. - (fork_child): Remove obsolete sigproc_fixup_after_fork. - * shared.cc (memory_init): Reorganize so that cygheap initialization is - called prior to regular heap since regular heap uses cygheap now. - * sigproc.cc (proc_subproc): Eliminate zombies allocation. - (sigproc_init): Move zombies alloation here. Don't free up array on - fork, just reuse it. - (sigproc_fixup_after_fork): Eliminate. - * sigproc.h: Ditto. - * include/cygwin/version.h: Reflect change to perprocess structure. - -Fri Sep 7 10:53:34 2001 Jason Tishler - - * poll.cc (poll): Change implementation to only call select() when no - invalid file descriptors are specified. - -Fri Sep 7 10:27:00 2001 Corinna Vinschen - - * include/limits.h: Define PIPE_BUF. - * syscalls.cc (fpathconf): Use PIPE_BUF instead of numerical constant. - (pathconf): Ditto. - -Thu Sep 6 20:04:05 2001 Christopher Faylor - - * fhandler_socket.cc (fhandler_socket::fhandler_socket): Ensure that - prot_info_ptr is zeroed for later use. - -Thu Sep 6 14:03:49 2001 Christopher Faylor - - * cygheap.cc (cygheap_fixup_in_child): Don't consider a NULL bucket as - a candidate for deletion. It is actually the end of a linked list - chain. - - * exceptions.cc (open_stackdumpfile): Default to "unknown" program name - if myself->progname hasn't been filled out yet. - -Thu Sep 6 01:16:44 2001 Christopher Faylor - - Move appropriate variables to NO_COPY segment, throughout. - -Thu Sep 6 00:40:35 2001 Christopher Faylor - - Remove initialization of static or global values to zero, throughout. - This just needlessly grows the size of the DLL. - * tty.cc (tty::alive): Make inuse handle non-inheriting on open, just - for thread safety. - -Wed Sep 5 23:36:03 2001 Christopher Faylor - - * cygheap.h (init_cygheap): Move bucket array here from cygheap.cc. - * cygheap.cc: Throughout use bucket array from cygheap. - - * sigproc.cc (proc_subproc): Dynamically allocate zombie buffer to save - DLL space. - (sigproc_fixup_after_fork): Free zombie array after a fork. - * sigproc.h (sigproc_fixup_after_fork): Declare. - -2001-09-06 Egor Duda - - * dir.cc (mkdir): Expand buffer for security descriptor to 4K to avoid - stack corruption. - * fhandler.cc (fhandler_base::open): Ditto. - * path.cc (symlink): Ditto. - -Wed Sep 5 21:35:00 2001 Corinna Vinschen - - * winver.rc: Change copyright to include 2001. - -Wed Sep 5 12:12:00 2001 Corinna Vinschen - - * fhandler_floppy.cc (fhandler_floppy::lseek): Remove iswinnt check. - -Wed Sep 5 11:34:00 2001 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::close): Change 2MSL value - according to MSDN. - -Wed Sep 5 10:14:00 2001 Corinna Vinschen - - * net.cc (cygwin_connect): Add WSAEALREADY and WSAEINVAL handling - for non-blocking sockets. - -Tue Sep 4 22:42:13 2001 Christopher Faylor - - * exceptions.cc (ctrl_c_handler): Only send SIGINT when we have a - controlling terminal and we are the head of the process group. - -Tue Sep 4 16:48:14 2001 Christopher Faylor - - * thread.cc (InterlockedExchangePointer): Don't define if it already - exists. - -Tue Sep 4 22:14:00 2001 Corinna Vinschen - - * uname.cc (uname): Eliminate os specific retrieving of x86 - processor type. - -2001-09-04 Kazuhiro Fujieda - - * fhandler_console.cc (fhandler_console::char_command): Save the cursor - position relative to the top of the window. - * fhandler_cc (fhandler_console::write): Ditto. - -Mon Sep 3 21:06:00 2001 Corinna Vinschen - - * dir.cc (opendir): Write version information to __d_dirent->d_version. - -Mon Sep 3 18:34:00 2001 Corinna Vinschen - - * cygwin.din: Add `dirfd'. - * dir.cc (dirfd): New function. - (opendir): Open a directory file descriptor and save it in - __d_dirent->d_fd. - (closedir): Close directory file descriptor. - * include/cygwin/version.h: Bump API minor version to 44. - -Sun Sep 2 22:09:31 2001 Christopher Faylor - - * child_info.h: Modify magic number. - * dcrt0.cc (_cygwin_testing): Define. - (_dll_crt0): Set _cygwin_testing if CYGWIN_TESTING environment variable - exists. Don't issue "conflicting versions" error if _cygwin_testing is - true. - * shared.cc (shared_name): Use _cygwin_testing global rather than - testing the environment. - * syscalls.cc (_write): Remove debugging info. - -Sat Sep 1 01:37:13 2001 Christopher Faylor - - * tty.cc (tty::create_inuse): Eliminate unneeded argument. - * tty.h: Reflect above change. - * fhandler_tty.cc: Reflect argument reduction in tty::create_inuse, - throughout. Always make inuse inheritable. - -Sat Sep 1 01:10:07 2001 Christopher Faylor - - * debug.cc (mark_closed): Rename from debug_mark_closed and make - static. - (setclexec_pid): New function for marking saved handle as - close-on-exec. - (delete_handle): New function. - (debug_fixup_after_fork): New function. - * debug.h: Declare new functions, remove obsolete ones. - * fork.cc (debug_fixup_after_fork): Call to cleanup close-on-exec - handles. - - * fhandler.cc (fhandler_disk_file::close): Minor reorg. - (fhandler_base::set_inheritance): Set flag appropriately for debugging - when close-on-exec so forked process can delete closed handles. - * tty.h (open_output_mutex): Eliminate unneeded argument. - (open_input_mutex): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::open): reflect open_*_mutex - argument changes. - * fhandler.h (fhandler_socket): Make saw_shutdown_* functions type - bool. - * tty.cc (tty::get_event): Eliminate unneeded argument. - (tty::common_init): Reflect change to get_event. Events should always - be inherited. - -Fri Aug 31 21:39:00 2001 Corinna Vinschen - - * security.cc (create_token): Change initialization of `exp' to comply - with new LARGE_INTEGER definition in winnt.h. - -Fri Aug 31 13:58:51 2001 Christopher Faylor - - * cygwin.sc: Revert to previous NO_COPY behavior. - * winsup.h: Ditto. - * sigproc.cc: Ditto. - * autoload.cc: Ditto. - -Fri Aug 31 00:56:26 2001 Christopher Faylor - - * cygwin.sc: New file -- linker script for building cygwin DLL. - * Makefile.in: Use linker script to control location of cygheap. - * cygheap.cc (buckets): Make static. - (init_cheap): Remove special iswinnt handling. Allocate cygheap at a - fixed location. Display more info when allocation fails. - (cygheap_fixup_in_child): Try harder to move cygheap to correct - location. Display more info when allocation fails. - * fhandler.h (fhandler_socket): Add macros for tracking socket shutdown - state. - * net.cc (cygwin_shutdown): Set appropriate shutdown value for future - use. - * select.cc (select_stuff::cleanup): New method. - (cygwin_select): Call cleanup explicitly to avoid a race. - (select_stuff:~select_stuff): Call cleanup chain via cleanup method. - (fhandler_socket::select_read): Set *_ready when shutdown has been - called on the socket. - (fhandler_socket::select_write): Ditto. - (fhandler_socket::select_except): Ditto. - - * winsup.h: Move NO_COPY to "COMMON" section. - * autoload.cc (wsock_started): Avoid initializing NO_COPY value. - * sigproc.cc: Remove initialization from NO_COPY variables. - (sigproc_init): Initialize sig_loop_wait here, rather than via - initialization. - (subproc_init): Initialize proc_loop_wait here, rather than via - initialization. - -Thu Aug 30 10:19:00 2001 Christopher Faylor - - * select.cc (select_read): Add setting read_ready flag. - (select_write): Add setting write_ready flag. - -Wed Aug 29 00:40:42 2001 Christopher Faylor - - * path.cc (path_conv::check): Avoid splitting off leading '/' in path - component when building a symlink. - -Wed Aug 29 0:45:00 2001 Corinna Vinschen - - * resource.cc (getrlimit): Return actual values on RLIMIT_STACK. - -Tue Aug 28 16:37:17 2001 Christopher Faylor - - * dir.cc (rmdir): Report ENOENT when file doesn't exist rather than - ENOTDIR. - -Mon Aug 27 11:58:19 2001 Christopher Faylor - - * select.cc (cygwin_select): Ensure that arguments are zeroed on - timeout. - (select_stuff::wait): Ditto. - -2001-08-24 Kazuhiro Fujieda - - * syscalls.cc (check_tty_fds): New function. Check whether there is a - fd referring to pty slave. - (setsid): Don't detach console if the process has a pty slave. - -Fri Aug 24 8:54:00 2001 Corinna Vinschen - - * net.cc (free_addr_list): Add define for symmetry. - (free_hostent_ptr): Use free_addr_list to free h_addr_list element. - -Thu Aug 23 16:00:09 2001 Jason Tishler - - * net.cc (dup_addr_list): New static function. - (dup_hostent_ptr): Use dup_addr_list instead of dup_char_list in order - to handle embedded null characters. - -Wed Aug 22 22:23:14 2001 Christopher Faylor - - * dtable.cc (dtable::dup2): Allow extension of fd table by dup2. - * syscalls.cc: Minor code cleanup. - (fpathconf): Check for bad fd before doing anything else. - * termios.cc (tcsetattr): Don't convert to new termios if bad fd. - (tcgetattr): Minor debugging tweak. - -Wed Aug 22 23:41:00 2001 Corinna Vinschen - - * net.cc (cygwin_inet_ntoa): Rearrange previous patch to use - thread local buffer space when compiled thread safe. - (cygwin_getprotobyname): Ditto. - (cygwin_getprotobynumber): Ditto. - (cygwin_getservbyname): Ditto. - (cygwin_getservbyport): Ditto. - (cygwin_gethostbyname): Ditto. - (cygwin_gethostbyaddr): Ditto. Move near to cygwin_gethostbyname. - * thread.h (struct _winsup_t): Add pointers for above used buffer space. - * passwd.cc (getpwduid): Remove initializing passwd. - (setpwent): Ditto. - (endpwent): Ditto. - (setpassent): Ditto. - -Wed Aug 22 13:41:09 2001 Christopher Faylor - - * smallprint.c (console_printf): New function. - * dcrt0.cc (dll_crt0_1): Use console_printf for debugging output. - * debug.cc (debug_mark_closed): New function. - (close_handle): Use debug_mark_closed. - * debug.h: Declare new functions. - * dtable.cc (dtable::build_fhandler): Remove unneeded extern. - * spawn.cc: Cosmetic changes. - * winsup.h: Define NO_COPY for C files, too. Declare a global. - -Wed Aug 22 17:31:00 2001 Corinna Vinschen - - * net.cc (free_char_list): New static function. - (dup_char_list): Ditto. - (free_protoent_ptr): Ditto. - (dup_protoent_ptr): Ditto. - (free_servent_ptr): Ditto. - (dup_servent_ptr): Ditto. - (free_hostent_ptr): Ditto. - (dup_hostent_ptr): Ditto. - (cygwin_inet_ntoa): Use local static buffer to allow propagating of - the result to child processes. - (cygwin_getprotobyname): Ditto. - (cygwin_getprotobynumber): Ditto. - (cygwin_getservbyname): Ditto. - (cygwin_getservbyport): Ditto. - (cygwin_gethostbyname): Ditto. - (cygwin_gethostbyaddr): Ditto. - -Mon Aug 20 11:56:19 2001 Christopher Faylor - - * cygheap.cc (init_cheap): Allocate cygheap in shared memory for Windows NT. - -Thu Aug 16 09:38:59 2001 Jason Tishler - - * fhandler_socket.cc (fhandler_socket::create_secret_event): Relax - security of secret_event so AF_UNIX socket clients can connect to - servers even if running under a different user account. - (fhandler_socket::check_peer_secret_event): Ditto. - -Thu Aug 16 16:26:00 2001 Corinna Vinschen - - * resource.cc (getrlimit): Return getdtablesize () as current limit - on RLIMIT_NOFILE. - * syscalls.cc (getdtablesize): Return OPEN_MAX if current dtable size - is less than OPEN_MAX, the current dtable size otherwise. - * sysconf.cc (sysconf): Return getdtablesize () on _SC_OPEN_MAX. - -Thu Aug 16 16:17:00 2001 Corinna Vinschen - - * resource.cc (getrlimit): Return OPEN_MAX as current limit - on RLIMIT_NOFILE. - * syscalls.cc (getdtablesize): Return OPEN_MAX. - * sysconf.cc (sysconf): Return OPEN_MAX on _SC_OPEN_MAX. - * include/limits.h (OPEN_MAX): Define as 256. - -Wed Aug 15 12:43:00 2001 Corinna Vinschen - - * times.cc (utimes): Revert previous change. Just open the - file using FILE_WRITE_ATTRIBUTES instead of GENERIC_WRITE - on NT/W2K. - -Wed Aug 15 12:18:00 2001 Corinna Vinschen - - * security.cc (set_nt_attribute): Return always -1 in case of - a failure. - * times.cc (utimes): On NTFS with ntsec ON, change the file's - security descriptor temporarily to acquire write access if - opening the file failed. - -Wed Aug 15 9:42:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_base::is_nonblocking): New method. - (fhandler_base::set_nonblocking): Ditto. - * fhandler.h (fhandler_base): Declare new methods `is_nonblocking' and - `set_nonblocking'. - * fhandler_socket.cc (fhandler_socket::ioctl): Use `set_nonblocking'. - * fhandler_tty.cc (fhandler_pty_master::process_slave_output): - Use `is_nonblocking'. - (fhandler_tty_slave::read): Ditto. - (fhandler_tty_slave::ioctl): Use `set_nonblocking'. - (fhandler_pty_master::ioctl): Ditto. - * net.cc (cygwin_sendto): Fallback to winsock 1 functionality - in case of nonblocking IO. - (cygwin_recvfrom): Ditto. - (cygwin_recv): Ditto. - (cygwin_send): Ditto. - * syscalls.cc (_read): Use `is_nonblocking'. - -Tue Aug 14 11:05:26 2001 Christopher Faylor - - * include/cygwin/version.h: Bump API version. - -2001-08-14 Egor Duda - - * spawn.cc (spawn_guts): Enable appropriate privilege before - loading user's registry hive. - -Mon Aug 13 22:34:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_base::fcntl): Use new O_NONBLOCK_MASK define. - * fhandler.h: Move definitions of O_NOSYMLINK, O_DIROPEN and - OLD_O_NDELAY from winsup.h to here. Add O_NONBLOCK_MASK define. - * fhandler_socket.cc (fhandler_socket::close): Add hack to allow - a graceful shutdown even if shutdown() hasn't been called by the - application. Add debug output. - (fhandler_socket::ioctl): Set fhandler's NONBLOCK flag according - to FIONBIO setting. - (fhandler_socket::fcntl): Use new O_NONBLOCK_MASK define. Actually - set `request' before using it. - * fhandler_tty.cc: Use new O_NONBLOCK_MASK define throughout. - (fhandler_tty_slave::ioctl): Set fhandler's NONBLOCK flag according - to FIONBIO setting. - (fhandler_pty_master::ioctl): Ditto. - * net.cc (wsock_event::prepare): Compare WSACreateEvent return code - with `WSA_INVALID_EVENT' according to MSDN. - * syscalls.cc (_read): Use new O_NONBLOCK_MASK define. - -Wed Aug 8 15:24:59 2001 Christopher Faylor - - * include/wchar.h: Define __need_wint_t. - -Wed Aug 8 11:46:00 2001 Corinna Vinschen - - * security.cc (alloc_sd): Revert to setting inheritance attribute for - permissions given to directories. Never set inheritance on NULL ACE. - -Tue Aug 7 18:11:00 2001 Corinna Vinschen - - * security.cc (alloc_sd): Don't set FILE_DELETE_CHILD for group - if S_ISVTX attribute is given. - * dir.cc (mkdir): Allow immediate setting of S_ISUID, S_ISGID and - S_ISVTX attribute. - * syscalls.cc (_open): Ditto. - -Tue Aug 7 16:24:00 2001 Corinna Vinschen - - * dir.cc (mkdir): Set security attributes correctly for - CreateDirectoryA () call if ntsec is on. Don't call - set_file_attributes () then. - * fhandler.cc (fhandler_base::open): Ditto for CreateFileA () call. - * path.cc (symlink): Ditto. - * security.cc (set_security_attribute): New function. - * security.h: Add declaration for `allow_ntea' and - `set_security_attribute'. - -Tue Aug 7 10:54:00 2001 Corinna Vinschen - - * grp.cc (class grp_check): New class. Make `group_state' - a member of class grp_check. - (read_etc_group): Free former allocated memory on reread. - * passwd.cc (class pwd_check): New class Make `passwd_state' - a member of class pwd_check. - (read_etc_passwd): Free former allocated memory on reread. - -Tue Aug 7 01:13:58 2001 Christopher Faylor - - * fhandler_console.cc (get_tty_stuff): Don't initialize shared memory - console area if it is already initialized. - - * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Augment debugging - info. - -Mon Aug 6 19:58:43 2001 Christopher Faylor - - * cygheap.cc (cygheap_root::set): Avoid treating '/' specially. - - * fhandler.cc (fhandler_base::fcntl): Only set specific O_NDELAY style - flag passed in from application. - * fhandler_socket.cc (fhandler_socket::fcntl): Ditto. - * fhandler.h: Set constant for future use. - * winsup.h: Define OLD_O_NDELAY only for old programs. - * include/cygwin/version.h: Define - CYGWIN_VERSION_CHECK_FOR_OLD_O_NONBLOCK. - -Sat Aug 4 16:52:03 2001 Christopher Faylor - - Throughout, change check for running under Windows NT to 'iswinnt'. - * dcrt0.cc (set_os_type): Set 'iswinnt' appropriately. - * cygheap.cc (init_cheap): Revert to using VirtualAlloc for allocating - cygheap. - (cygheap_setup_for_child_cleanup): New function. Standard function to - call after calling CreateProcess to cleanup cygheap info passed to - child. - (cygheap_fixup_in_child): Copy cygheap from shared memory into - allocated space under Windows 9x or if can't relocate shared space - under NT. - * cygheap.h: Declare new function. - * spawn.cc (spawn_guts): Use cygheap_fixup_in_child. - * fork.cc (fork_parent): Ditto. - * winsup.h: Declare iswinnt. - -2001-08-04 Egor Duda - - * dtable.cc (dtable::release): Avoid messing with console when - closing socket. - -Fri Aug 3 14:02:00 2001 Corinna Vinschen - - * net.cc (cygwin_accept): Allow NULL peer and len parameters. - * include/cygwin/socket.h: Define socklen_t as int. - -Fri Aug 3 13:04:00 2001 Corinna Vinschen - - * path.cc (fchdir): Set the fhandler's path to absolute value to ensure - changing to the correct directory even if the fhandler originally - points to a relative path. - -Thu Aug 2 17:59:00 2001 Corinna Vinschen - - * security.cc (set_file_attribute): Clean up. Don't call - `set_nt_attribute' when ntsec isn't set. - -Sat Jul 28 22:30:55 2001 Christopher Faylor - - * dcrt0.cc (alloc_stack_hard_way): Make half-hearted attempt to deal - with growing stack under Windows 95. - -Fri Jul 27 12:36:07 2001 Christopher Faylor - - * Makefile.in: Add install-lib and install-headers. - -Fri Jul 27 12:28:12 2001 Christopher Faylor - - * cygwin.din: Export sys_errlist, sys_nerr. - * include/cygwin/version.h: Bump minor version number. - -Fri 27 Jul 2001 10:29:00 Corinna Vinschen - - * security.cc (get_user_primary_group): Fix compiler warning. - (alloc_sd): Add DELETE permission for user when S_IWUSR is given. - -Thu Jul 26 16:43:39 2001 Pieter de Visser - - * thread.cc (__pthread_equal): Invert return value so that true is - returned when threads are equal. - -Thu Jul 26 15:50:38 2001 Charles Wilson - Christopher Faylor - - * cygwin.din: Export __signgam. - * include/cygwin/version.h: Bump minor version number. - -Thu Jul 26 15:19:50 2001 Christopher Faylor - - Throughout, reorganize header file inclusion to put security.h prior to - fhandler.h. - * fhandler.h (fhandler_base::get_inheritance): New method. - * fhandler_socket.cc (fhandler_socket::create_secret_event): Use proper - close-on-exec inheritance when creating. - (fhandler_socket::check_peer_secret_event): Create handle as - non-inheritable. - -2001-07-25 Kazuhiro Fujieda - - * syscalls.cc (setsid): Detach process from its console if the current - controlling tty is the console and already closed. - * dtable.h (class dtable): Add members to count descriptors referring - to the console. - * dtable.cc (dtable::dec_console_fds): New function to detach process - from its console. - (dtable::release): Decrement the counter of console descriptors. - (dtable::build_fhandler): Increment it. - * exception.cc (ctrl_c_handler): Send SIGTERM to myself when catch - CTRL_SHUTDOWN_EVENT. - -Tue 24 Jul 2001 02:28:00 PM Trevor Forbes - - * thread.cc (verifyable_object_isvalid): Don't validate - PTHREAD_MUTEX_INITIALIZER pointer as it will cause an exception - in IsBadWritePtr() when running GDB. - -Wed 25 Jul 2001 23:46:00 Corinna Vinschen - - * localtime.c: Changed whole file to become C++ clean. Rename to - localtime.cc. - * localtime.cc (tzload): Preserve errno. - -Fri 20 Jul 2001 11:15:50 PM EDT Christopher Faylor - - * cygheap.cc (cygheap_fixup_in_child): Attempt Win95 workaround. - * dtable.cc (dtable::dup_worker): Add debugging output. - (dtable::vfork_child_dup): Correctly set close_on_exec. - * fhandler.cc (fhandler_base::fork_fixup): Don't mess with handle if - there is no need to get it from the parent. - * fhandler_tty.cc (fhandler_tty_common::close): Add debugging output. - -Fri 20 Jul 2001 09:15:00 Mark Bradshaw - - * dir.cc (readdir): Protect FindNextFileA against INVALID_HANDLE_VALUE. - -Wed 18 Jul 2001 01:00:47 PM EDT Christopher Faylor - - * cygheap.cc (_cmalloc): Use correct constants for size calculation. - * dcrt0.cc (dll_crt0_1): Move uid initialization earlier. - * fork.cc (fork_parent): Move cygheap_setup_in_child to just prior to - CreateProcess so that all contents of cygheap are copied. - * spawn.cc (spawn_guts): Ditto. - -Wed 18 Jul 2001 12:54:17 Corinna Vinschen - - * security.cc (get_user_groups): Call Net function with NULL server - name under specific error conditions. - (is_group_member): Ditto. - (get_user_local_groups): Ditto. - (get_user_primary_group): Ditto. - -Wed 18 Jul 2001 11:56:00 Corinna Vinschen - - * syscalls.cc (_unlink): Explicitly check for non-existant file. - -Tue 17 Jul 2001 10:19:00 Corinna Vinschen - - * delqueue.h: Remove obsolete file. - -Mon 16 Jul 2001 10:47:17 PM EDT Christopher Faylor - - * child_info.h: Bump magic number. - (class child_info): Add an element. - * cygheap.cc (init_cheap): Allocate cygwin heap in shared memory area. - (cygheap_fixup_in_child): Map cygwin heap, passed from parent via - shared memory into correct address. - (cygheap_setup_for_child): New function. - * cygheap.h: Declare new functions. - * dcrt0.cc (dll_crt0_1): Accommodate new cygheap_fixup_in_child - arguments. Avoid protecting subproc_ready unless it is spawn/nowait. - * fork.cc (fork_parent): Use new cygheap_setup_for_child function to - setup cygwin heap info. Close passed cygheap shared memory handle. - * spawn.cc (spawn_guts): Ditto. Also, reorganize to avoid - synchronization between parent and child in non-P_OVERLAY case. - * sigproc.cc (wait_sig): Only signal subproc_ready when execing. - -Mon 16 Jul 2001 15:21:00 Corinna Vinschen - - * grp.cc: Add missing Copyright date 2001. - -Mon 16 Jul 2001 00:11:00 Corinna Vinschen - - Change well_known_admin_sid to well_known_admins_sid throughout. - * sec_acl.cc (setacl): Never set DELETE permission. Set - FILE_DELETE_CHILD only on readable and executable directories. - * sec_helper.cc: Add constructor for `well_known_null_sid'. - * security.cc (get_nt_attribute): Set S_ISVTX for directories if - FILE_WRITE_DATA and FILE_EXECUTE but not FILE_DELETE_CHILD is set. - Add evaluation of S_ISVTX, S_ISGID and S_ISUID from NULL ACE. - (alloc_sd): Never set DELETE permission. Set FILE_DELETE_CHILD - only on readable and executable directories. - Add creation of NULL ACE for S_ISVTX, S_ISGID and S_ISUID permissions. - * security.h: Add extern declaration for `well_known_null_sid'. - -Fri 13 Jul 2001 08:08:49 PM EDT Christopher Faylor - - * syscalls.cc (stat_worker): Simplify previous change. - -Fri Jul 13 13:13:09 2001 Christopher Faylor - - * syscalls.cc (_unlink): Correct (?) logic which determines when - to report an access violation and when to queue file for eventual - deletion. - (stat_worker): Check for invalid buf argument. - -Tue Jul 10 23:01:00 2001 Corinna Vinschen - - * mmap.cc (fhandler_disk_file::mmap): Try to open file mappings - by a unified name when running under 9x/ME. If that failes, create - the file mapping using the unified name. - -Mon Jul 9 10:43:00 2001 Corinna Vinschen - - * uinfo.cc (internal_getlogin): Add pointer check. - -Mon Jul 9 10:05:00 2001 Corinna Vinschen - - * security.cc (alloc_sd): Don't set inheritance attribute for - permissions given to directories. - -Thu Jun 28 22:19:08 2001 Christopher Faylor - - * fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Return 0 for success. - -Wed Jun 27 22:19:07 2001 Christopher Faylor - - * path.cc (path_conv::check): Add signal protection here since - retrieving info about remote shares can take some time. - -Wed Jun 27 23:30:00 2001 Robert Collins - Christopher Faylor - - Change check_null_empty_path* to check_null_empty_str* throughout. - * path.h (check_null_empty_str_errno): Convert to a function prototype. - * path.cc (check_null_empty_str): Move to miscfuncs.cc. - * miscfuncs.cc (check_null_empty_str_errno): New function. - (__check_null_invalid_struct): Ditto. - (__check_null_invalid_struct_errno): Ditto. - (check_null_empty_str): Change from VirtualQuery to IsBadWritePtr. - * thread.cc (check_valid_pointer): Ditto. - * resource.cc (getrlimit): Use check_null_invalid_struct macro for - checking validity of pointer. - (setrlimit): Ditto. - -Tue Jun 26 16:59:16 2001 Christopher Faylor - - * fhandler.cc (fhandler_disk_file::fstat): Don't rely on exactly 3 - characters being read for executable test since we could be checking - for less than that. - * syscalls.cc (stat_worker): Try opening the file the "correct" way - first so that #! processing can potentially happen. If that fails, - then use "query open" method. - - * spawn.cc (spawn_guts): Delay processing of signal until after we've - notified parent about reparenting. - -Tue Jun 26 10:47:24 2001 Christopher Faylor - - * mmap.cc: Clean up *ResourceLock calls throughout. - -Tue Jun 26 22:10:00 2001 Robert Collins rbtcollins@hotmail.com - - * thread.cc (pthread_cond::TimedWait): Check for WAIT_TIMEOUT as well - as WAIT_ABANDONED. - (__pthread_cond_timedwait): Calculate a relative wait from the abstime - parameter. - -Sun Jun 24 17:38:19 2001 Christopher Faylor - - * exceptions.cc (interrupt_setup): Move actions from setup_handler to - here. - (setup_handler): Move actions after a successful interrupt to - interrupt_setup. - * fork.cc (vfork): Augment debugging output. - * sigproc.cc (proc_subproc): Ditto. - * spawn.cc (spawn_guts): Ditto. Correctly fill out progname when spawn - NO_WAIT. Call signal handler when a signal arrives. - * sigproc.h: Declare a function. - -Fri Jun 22 16:50:00 2001 Corinna Vinschen - - * fhandler.h class fhandler_socket): Declare new method - `set_close_on_exec'. - * fhandler_socket.cc (fhandler_socket::set_close_on_exec): - New method. - -Fri Jun 22 16:12:00 2001 Corinna Vinschen - - * fhandler_tape.cc (fhandler_dev_tape::tape_erase): Set size - parameter to value expected by GetTapeParameters(). - -Thu Jun 21 22:01:39 2001 Marius Gedminas - - * fhandler_console.cc (fhandler_console::read): Detect AltGr more - robustly on WinNT. - -2001-06-22 Robert Collins - - * thread.cc (__pthread_cond_timedwait): Lock the waiting mutex before - the condition protect mutex to avoid deadlocking. (Found by Greg Smith). - (__pthread_cond_wait): Ditto. - -2001-06-30 Egor Duda - - * fhandler.cc (fhandler_base::open): Work around windows bug when - CreateFile() with dwDesiredAccess == 0 called on remote share returns - valid handle even if file doesn't exist. - -2001-06-20 Egor Duda - - * fhandler_socket.cc (fhandler_socket::signal_secret_event): New - function. - * fhandler.h: Declare it. - * fhandler_socket.cc (fhandler_socket::create_secret_event): Don't - signal secret event immediately. - (fhandler_socket::check_peer_secret_event): Do it after peer event - was opened. - * net.cc (cygwin_connect): Or if socket is non-blocking. - (cygwin_accept): Ditto. - -Mon Jun 18 17:09:25 2001 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave::init): Revert 2001-06-16 change. - - * fork.cc (fork_copy): Print more debugging info. - (fork_parent): Change order of arguments to accomdate buggy gcc. - (fork): Ditto. - -Sun Jun 17 18:54:46 2001 Christopher Faylor - - * syscalls.cc (_unlink): Reorganize to try harder to delete file with - DeleteFile and to recover more gracefully if FILE_FLAG_DELETE_ON_CLOSE - doesn't work properly. - -Sat Jun 16 13:06:49 2001 Christopher Faylor - - * exceptions.cc (sig_handle_tty_stop): Reset PID_STOPPED if not - actually stopping. - * fhandler_console.cc (fhandler_console::fixup_after_fork): Don't set - controlling terminal if just inheriting a handle. - (fhandler_console::fixup_after_exec): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::init): Ditto. - * signal.cc (kill_worker): Set appropriate errno if proc_exists - determines that process does not really exist. - -Fri Jun 15 14:34:19 2001 Christopher Faylor - - * path.cc (path_conv::check): Deal more robustly with foo/ behavior. - -Fri Jun 15 11:15:00 2001 Corinna Vinschen - - * fhandler_tape.cc (fhandler_dev_tape::tape_status): Set size - parameter to value expected by GetTapeParameters(). - -Thu Jun 14 20:19:46 2001 Christopher Faylor - - * fhandler.cc (fhandler_disk_file::fstat): Properly set executable bits - for directory when !ntsec && !ntea. Also move common code prior to - call to get_attributes. - -Fri June 15 09:25:00 Robert Collins - - * thread.cc (pthread_cond::Signal): Release the condition access - variable correctly. - -2001-06-14 Egor Duda - - * fhandler.cc (fhandler_base::open): Set win32 access flags to 0, when - requested. - * fhandler.h: New status flag FH_QUERYOPEN. - (fhandler::get_query_open): New function. - (fhandler::set_query_open): Ditto. - * syscalls.cc (stat_worker): Request query-only open mode. - -2001-06-12 Egor Duda - - * environ.cc (set_file_api_mode): New function. Move setting - of file APIs mode (OEM/ANSI) here. - (codepage_init): From here. - * winsup.h (set_file_api_mode): Declare it. - * fork.cc (fork_child): Set file APIs mode in forkee. - -Mon Jun 11 14:19:49 2001 Christopher Faylor - - * pinfo.cc: Use autoloaded ToolHelp functions throughout for Win9x. - * autoload.cc: Autoload ToolHelp functions. - - * sigproc.cc (proc_subproc): Incorporate SIGCHLD == SIG_IGN special - handling of zombie processes. Ensure that zombie processes which are - at the end of the zombie array are properly cleaned up. - -Mon Jun 11 11:18:56 2001 Christopher Faylor - - * path.cc (chdir): Fix call to path_conv constructor so that it REALLY - doesn't check for the null/non-empty path. - -Sun Jun 10 23:34:09 2001 Christopher Faylor - - * path.cc (path_conv::update_fs_info): Don't consider remote drives to - be NTFS. Set root_dir before invoking GetDriveType (from Kazuhiro - Fujieda ). Eliminate extra checks for rootdir. - -Sun Jun 10 20:19:47 2001 Christopher Faylor - - * path.cc (chdir): Pre-check path for validity before eating trailing - space. Then, ensure that path_conv doesn't check the path for validity - again. - -Sun Jun 10 12:56:00 2001 Christopher Faylor - - * exceptions.cc (sigdelayed): Ensure that signal is cleared as - the last operation or suffer races. - * sigproc.cc (proc_subproc): Deal with zombie array overflow. - -Sun Jun 10 11:56:00 2001 Corinna Vinschen - - * cygwin.din: Add fchdir symbols. - * path.cc (chdir): Guard against invalid parameter. - (fchdir): New function. - * include/cygwin/version.h: Bump API minor version to 40. - * uinfo.cc (internal_getlogin): Remove unused variable. - -Sat Jun 9 23:20:00 2001 Corinna Vinschen - - * syscalls.cc (seteuid): Set environment variables USERNAME and - USERDOMAIN before impersonation to workaround a LookupAccountSid() - misbehaviour. - * uinfo.cc (internal_getlogin): Revert most of the previous change. - Don't set environment variables USERNAME and USERDOMAIN. That's - the job of seteuid() now. Try to get logon server from Lsa - only if logon server isn't already known. - -Thu Jun 7 15:54:32 2001 Robert Collins - - * thread.cc (pthread_cond::Broadcast): Don't print error messages on - invalid mutexs - user programs are allowed to call - pthread_cond_broadcast like that. - (__pthread_cond_timedwait): Initialise themutex properly. - (__pthread_cond_wait): Initialise themutex properly. - -Tue Jun 5 19:56:00 2001 Corinna Vinschen - - * fhandler_console.cc (fhandler_console::dup): Allocate space for - savebuf on Cygwin heap. - (fhandler_console::char_command): Ditto. Use correct values for size. - -2001-06-05 Egor Duda - - * security.h (NTWriteEA): Change prototype. - * ntea.cc (NTReadEA): Don't check for global ntea setting, now - it's caller responsibility. - (NTWriteEA): Ditto. - * security.cc (get_file_attribute): Read attribute from EA only - if 'ntea' is enabled. - (set_file_attribute): Ditto. - * path.h: (class path_conv): Add members to store file system - information. - (path_conv::get_drive_type): New function. - * syscalls.cc (stat_worker): Use it. - * path.cc (path_conv::update_fs_info): New functions. - (path_conv::check): Get file system information from device where - file resides. On NTFS, try to read symlink contents from EA. - (get_symlink_ea): New function. - (set_symlink_ea): Ditto. - (symlink): Store symlink in extended attribute, if possible. - -Tue Jun 5 11:18:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_disk_file::fstat): Always reset file position - to original value after checking for executable magic. - -Mon Jun 4 16:21:00 2001 Corinna Vinschen - - * cygheap.h (cygheap_user::cygheap_user): Initialize token to - INVALID_HANDLE_VALUE. - * uinfo.cc (uinfo_init): Close token handle if needed. - -Sun Jun 3 20:52:13 2001 Christopher Faylor - - * path.cc (normalize_posix_path): Revert .. check removed by previous - changes. - * cygheap.h: Temporarily declare path_prefix_p here. - -Mon Jun 4 0:14:00 2001 Corinna Vinschen - - * net.cc (wsock_event): Add destructor. - -Sun Jun 3 09:49:55 2001 Robert Collins - - * dlfcn.cc (dlclose): Do not call FreeLibrary if the symbol to close - was obtained by dlopen(NULL,...). - -Sat Jun 2 23:11:52 2001 Christopher Faylor - - * syscalls.cc (sleep): Try to be a little more accomodating of signal - arrival. Ensure that the signal handler is called. - -Sat Jun 2 14:07:28 2001 Christopher Faylor - - * cygheap.cc (cygheap_root::cygheap_root): Remove constructor. - (cygheap_root::~cygheap_root): Remove destructor. - (cygheap_root::operator =): Remove. - (cygheap_root::set): New method. - * cygheap.h (cygheap_root): Reflect above changes. Store root info in - mount-like structure. - (cygheap_root:posix_ok): New method. - (cygheap_root::ischroot_native): Ditto. - (cygheap_root::unchroot): Ditto. - (cygheap_root::exists): Ditto. - (cygheap_root::posix_length): Ditto. - (cygheap_root::posix_path): Ditto. - (cygheap_root::native_length): Ditto. - (cygheap_root::native_path): Ditto. - * dir.cc (opendir): Remove special chroot test. - * path.cc (path_prefix_p): Remove front end. - (normalize_posix_path): Reorganize chroot tests to accommodate new - convention of allowing paths using posix chroot prefix. - (path_conv::check): Pass a "already ran normalize" option to - conv_to_win32_path. Return if there is an error from this function. - (mount_info::conv_to_win32_path): Add extra argument. Don't call - normalize_posix_path if caller has already done so. Substitute chroot - setting, if any, for root translation. Add chroot checking to final - output step. - * shared_info (mount_info): Accommodate additional argument to - conv_to_win32_path. - * syscalls.cc (chroot): Store both normalized posix path and native - path in chroot. - -Fri Jun 1 10:57:19 2001 Christopher Faylor - - * path.cc (chdir): Really make sure that isspace gets only an unsigned - char. - -Fri Jun 1 13:45:00 2001 Corinna Vinschen - - * syscalls.cc (_rename): Handle the case that `foo' is renamed to - `bar' while `bar.lnk' is an existing shortcut-symlink. - -Thu May 31 15:57:57 2001 Christopher Faylor - - * fhandler.cc (fhandler_disk_file::fstat): Avoid clearing S_IFMT bits - since we've already pre-cleared everything anyway. - -Wed May 30 23:51:32 2001 Earnie Boyd - - * path.cc (chdir): Always send unsigned chars to isspace since newlib's - isspace doesn't deal well with "negative" chars. - -Wed May 30 23:51:32 2001 Christopher Faylor - - * fhandler.cc (fhandler_disk_file::open): Propagate remote status of - file garnered from path_conv. Move #! checking to fstat. - (fhandler_disk_file::fstat): Reorganize st_mode setting to eliminate - duplication. Move check for #! here from fhandler::open. - - * fhandler.h (fhandler_base::isremote): New method. - (fhandler_base::set_isremote): Ditto. - (fhandler_base::set_execable_p): Also record "don't care if executable - state". - (fhandler_base::dont_care_if_execable): New method. - * path.cc (path_conv::check): Clear new flags. Appropriately set - vol_flags, drive_type, and is_remote_drive. - * path.h: Add new flags and methods for manipulating them. - * syscalls.cc (_unlink): Use isremote() to determine if a path is - remote rather than calling GetDriveType. - (stat_worker): Ditto. - * security.cc (get_file_attribute): Or attribute with result of - NTReadEA to be consistent with get_nt_attribute. - -Tue May 29 19:02:00 2001 Corinna Vinschen - - * sec_helper.cc (cygsid::getfrompw): Change parameter to `const'. - (cygsid::getfromgr): Ditto. - * security.cc: Use `sys_mbstowcs' and `sys_wcstombs' throughout. - (extract_nt_dom_user): Try to get user and domain from SID in - pw->pw_gecos first. - * security.h (class cygsid): Change parameter of getfrompw() and - getfromgr() to `const'. - * uinfo.cc (internal_getlogin): Change order for evaluating user - information in winNT case. Drop usage of NetWkstaUserGetInfo(). - -Mon May 28 21:34:00 2001 Corinna Vinschen - - * shortcut.c (check_shortcut): Treat only Cygwin shortcuts as symlinks. - -Fri May 25 11:07:07 2001 Christopher Faylor - - * path.cc (symlink_info::check): Correctly set 'ext_tacked_on'. Use - this to determine if user specified 'foo.lnk' explicitly. Reorganize - slightly to get rid of one goto. - -Fri May 25 10:15:00 2001 Corinna Vinschen - - * path.cc (symlink_info::check): Add a check to return correctly - if incoming `*.lnk' file is not a symlink. - -Thu May 24 15:46:50 2001 Christopher Faylor - - * path.cc (slash_drive_prefix_p): Remove. - (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. - -Thu May 24 01:17:33 2001 Christopher Faylor - - * exceptions.cc (handle_exceptions): Bump repeat count for debugging - kick out. - - * fhandler.h (fhandler_dev_dsp): Add a fixup_after_exec. - * fhandler_dsp.cc (class Audio): Add TOT_BLOCK_SIZE to enum. - (operator new): New. - (bigwavebuffer): Declare using TOT_BLOCK_SIZE to avoid buffer overruns. - (Audio::Audio): Optimize slightly. - (fhandler_dev_dsp::open): Allocate s_audio using static buffer. - (fhandler_dev_dsp::fixup_after_exec): New function. Ditto. - -Wed May 23 17:45:00 2001 Corinna Vinschen - - * syscalls.cc (seteuid): Restrict overriding external provided - user tokens to ntsec. Don't test external tokens for primary - group to evaluate if it should be overridden. Restrict creating - internal tokens to ntsec. - -Wed May 23 10:11:00 2001 Corinna Vinschen - - * syscalls.cc (chown_worker): Don't check for ENOSYS. - -Tue May 22 12:20:07 2001 Christopher Faylor - - * signal.cc (sleep): Protect with sigframe. - -Tue May 22 17:58:00 2001 Corinna Vinschen - - * security.cc (get_file_attribute): Don't set errno. - -Mon May 21 15:08:00 2001 Christopher Faylor - - * configure.in: Allow --enable-newvfork to turn NEWVFORK on and off. - * configure: Regenerate. - -Mon May 21 11:46:01 2001 Christopher Faylor - - * include/cygwin/version.h: Bump minor version number. - -Sun May 20 13:26:25 2001 Christopher Faylor - - * fhandler_dsp.cc: Reformat to GNU standards. - (s_audio): Change to a pointer throughout. - (fhandler_dev_dsp::open): Initialize s_audio, if required. - -Sat May 19 23:40:00 2001 Corinna Vinschen - - * autoload.cc: Add load statements for `LookupAccountNameW', - `LsaClose', `LsaEnumerateAccountRights', `LsaFreeMemory', - `LsaOpenPolicy', `LsaQueryInformationPolicy', `NetLocalGroupEnum', - `NetLocalGroupGetMembers', `NetServerEnum', `NetUserGetGroups' and - `NtCreateToken'. - * ntdll.h: Add declaration for `NtCreateToken'. - * sec_helper.cc: Add `well_known_local_sid', `well_known_dialup_sid', - `well_known_network_sid', `well_known_batch_sid', - `well_known_interactive_sid', `well_known_service_sid' and - `well_known_authenticated_users_sid'. - (cygsid::string): Define as const method. - (cygsid::get_sid): Set psid to NO_SID on error. - (cygsid::getfromstr): Ditto. - (cygsid::getfrompw): Simplify. - (cygsid::getfromgr): Check for gr == NULL. - (legal_sid_type): Move to security.h. - (set_process_privilege): Return -1 on error, otherwise 0 or 1 related - to previous privilege setting. - * security.cc (extract_nt_dom_user): Remove `static'. - (lsa2wchar): New function. - (open_local_policy): Ditto. - (close_local_policy): Ditto. - (get_lsa_srv_inf): Ditto. - (get_logon_server): Ditto. - (get_logon_server_and_user_domain): Ditto. - (get_user_groups): Ditto. - (is_group_member): Ditto. - (get_user_local_groups): Ditto. - (sid_in_token_groups): Ditto. - (get_user_primary_group): Ditto. - (get_group_sidlist): Ditto. - (get_system_priv_list): Ditto. - (get_priv_list): Ditto. - (get_dacl): Ditto. - (create_token): Ditto. - (subauth): Return immediately if SE_TCB_NAME can't be assigned. - Change all return statements in case of error to jumps to `out' - label. Add `out' label to support cleanup. - * security.h: Add extern declarations for `well_known_local_sid', - `well_known_dialup_sid', `well_known_network_sid', - `well_known_batch_sid', `well_known_interactive_sid', - `well_known_service_sid' and `well_known_authenticated_users_sid'. - Add extern declarations for functions `create_token', - `extract_nt_dom_user' and `get_logon_server_and_user_domain'. - (class cygsid): Add method `assign'. Change operator= to call new - `assign' method. Add `debug_print' method. - (class cygsidlist): New class. - (legal_sid_type): Moved from sec_helper.cc to here. - * spawn.cc (spawn_guts) Revert reversion of previous patch. - Call `RevertToSelf' and `ImpersonateLoggedOnUser' instead of `seteuid' - again. - * syscalls.cc (seteuid): Rearranged. Call `create_token' now when - needed. Call `subauth' if `create_token' fails. Try setting token - owner and primary group only if token was not explicitely created - by `create_token'. - * uinfo.cc (internal_getlogin): Try harder to generate correct user - information. Especially don't trust return value of `GetUserName'. - -Sat May 19 21:16:07 2001 Christopher Faylor - - * fork.cc (fork_parent): Move atforkprepare call here. - (fork): From here. - -Sat May 19 18:35:00 2001 Corinna Vinschen - - * autoload.cc: Add missing load statement for `CancelIo'. - -Sat May 19 01:22:43 2001 Christopher Faylor - - * grp.cc (read_etc_group): Don't copy mutex on fork. - * pwd.cc (read_etc_passwd): Ditto. - * autoload.cc (LoadDLLfuncEx): Use LoadDLLprime to initialize DLL - specific area. - -Fri May 18 10:31:00 2001 Corinna Vinschen - - * net.cc (wsock_event::wait): Explicitely cancel IO when a signal - arrived to avoid data loss. Fallback to blocking IO when canceling - fails. - -Thu May 17 15:29:00 2001 Corinna Vinschen - - * security.cc (cygwin_set_impersonation_token): Never destroy - previous token object. - (subauth): Create token source with well defined identifier. - -Wed May 16 23:27:00 2001 Corinna Vinschen - - * uinfo.cc (uinfo_init): Just set user token to INVALID_HANDLE_VALUE. - Token value is already invalid at that point. - -Wed May 16 21:34:00 2001 Fred Yankowski - - * net.cc (errmap): Add missing mapping from WSAEINTR to EINTR. - -Wed May 16 09:20:00 2001 Corinna Vinschen - - * sec_helper.cc (legal_sid_type): Fix conditional. Change to - inline function. - -Wed May 16 01:01:48 2001 Christopher Faylor - - * autoload.h: Eliminate. - * autoload.cc: Pull in autoload.h. Eliminate many macros. Rewrite to - avoid necessity of initialization routines. Just use a standard one. - (wsock_init): New function. Moved from net.cc. - * net.cc (wsock_init): Move to autoload.cc. - (wsadata): Make global. - * dtable.cc (dtable::build_fhandler): Use more reliable method for - checking if net stuff has been loaded. - -Tue May 15 19:52:00 2001 Corinna Vinschen - - * fork.cc (fork): Eliminate superfluous call to getuid(). - * security.h: New define `NO_SID'. Remove declarations of functions - moved to methods into class cygsid. - (class cygsid): Declare new methods `getfromstr', `get_sid', - `getfrompw', `getfromgr', `get_rid', `get_uid', `get_gid', `string' - and new constructors and operators =, == and !=. - Declare new global cygsids `well_known_XXX_sid' substituting the - corresponding `get_XXX_sid' functions. Remove declarations of - these functions. - * sec_helper.cc (well_known_admin_sid): New global variable. - (well_known_system_sid): Ditto - (well_known_creator_owner_sid): Ditto - (well_known_world_sid): Ditto - (cygsid::string): New method, substituting `convert_sid_to_string_sid'. - (cygsid::get_sid): New method, substituting `get_sid'. - (cygsid::getfromstr): New method, substituting - `convert_string_sid_to_sid'. - (cygsid::getfrompw): New method, substituting `get_pw_sid'. - (cygsid::getfromgr): New method, substituting `get_gr_sid'. - (cygsid::get_id): New method, substituting `get_id_from_sid'. - (get_admin_sid): Eliminated. - (get_system_sid): Ditto. - (get_creator_owner_sid): Ditto. - (get_world_sid): Ditto. - * grp.cc: Use new cygsid methods and well known sids throughout. - * registry.cc: Ditto. - * sec_acl.cc: Ditto. - * security.cc: Ditto. - * shared.cc: Ditto. - * syscalls.cc (seteuid): Ditto. Eliminate redundant conditional. - * uinfo.cc (internal_getlogin): Ditto. - * spawn.cc (spawn_guts) Revert previous patch. - -Tue May 15 10:20:00 2001 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::ioctl): Convert s_addr - field to host byte order before comparing with INADDR_LOOPBACK. - -Tue May 15 9:03:00 2001 Corinna Vinschen - - * autoload.cc: Add autoload statements for ws2_32 functions - `WSACloseEvent', `WSACreateEvent', `WSAGetOverlappedResult', - `WSARecv', `WSARecvFrom', `WSASend', `WSASendTo' and `WSASetEvent', - `WSAWaitForMultipleEvents'. - * net.cc: Define wsock_evt. - (wsock_event): New class. - (cygwin_sendto): Use overlapped socket io if available. - (cygwin_recvfrom): Ditto. - (cygwin_recv): Ditto. - (cygwin_send): Ditto. - * security.cc (subauth): Set Win32 error to 0 to safely ask for the - error code of dynamically loaded function `LsaRegisterLogonProcess'. - -Mon May 14 15:37:29 2001 Christopher Faylor - - * errno.cc (_sys_errlist): Add missing commas. - -Mon May 14 16:13:00 2001 Corinna Vinschen - - * security.cc (subauth): Check if Secur32.dll could be loaded. - -Sun May 13 22:49:04 2001 Christopher Faylor - - * path.cc (path_conv::check): Revert allow_ntsec check so that volume - info is always retrieved and isdisk setting is properly set. - -Sun May 13 14:02:36 2001 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_common::dup): Preserve O_NOCTTY when - duping a filehandle. - -Sat May 12 18:19:00 2001 Corinna Vinschen - - * dir.cc (rmdir): Rearrange slightly to allow removing directories - even when R/O attribute is set. - -Fri May 11 16:53:38 2001 Christopher Faylor - - * external.cc (fillout_pinfo): Use correct pids. - * path.cc (mount_info::conv_to_win32_path): Correct test for whether to - include a slash. - -Fri May 11 01:04:17 2001 Christopher Faylor - - * exceptions.cc (handle_exceptions): Don't print message when executing - from a cygwin program. - -2001-05-10 Egor Duda - Christopher Faylor - - * environ.cc (winenv): Always add SYSTEMDRIVE and SYSYEMROOT to - win32-style environment if they don't already exist. - -2001-05-10 Kazuhiro Fujieda - - * path.cc (mount_info::conv_to_win32_path): Treat UNC paths the same as - paths including `:' or `\'. - -Wed May 9 14:46:32 2001 Christopher Faylor - - * fhandler.h (fhandler_termios::echo_erase): Declare new method. - * fhandler_termios.cc (fhandler_termios::echo_erase): New method for - echoing erase characters. - (fhandler_termios::line_edit): Check the echo flag before echoing - control characters (from Kazuhiro Fujieda ). - -Wed May 9 10:43:30 2001 Christopher Faylor - - * include/pthread.h: Remove C++ comment. - -Tue May 8 11:09:59 2001 Christopher Faylor - - * cygheap.cc (_cfree): Add regparm attribute. - (_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. - -Mon May 7 21:33:17 2001 Christopher Faylor - - * include/sys/file.h: Revert special X_OK usage. Just make it a - constant. - -Sun May 6 17:05:00 2001 Robert Collins - - * thread.h (pthread_cond): New element cond_access to allow atomic - broadcasts. - * thread.cc (pthread_cond::pthread_cond): Initialise cond_access. - (pthread_cond::~pthread_cond): Destroy cond_access. - (pthread_cond::Broadcast): Use cond_access. - (pthread_cond::Signal): Use cond_access. - (pthread_cond_wait): Use cond_access. - (pthread_cond_timedwait): Use cond_access. - -Sun May 6 11:55:40 2001 Christopher Faylor - - * string.h (cygwin_strchr): Make 'static inline' so that things will - still work when optimized. - -Sat May 5 01:04:11 2001 Christopher Faylor - - * exceptions.cc (handle_exceptions): Vastly increase test for exception - loop guard variable. - -Fri May 4 22:23:33 2001 Christopher Faylor - - * exceptions.cc (stack_info): Add some controls. - (stack_info::init): Add extra arguments to control method of - initialization.. If we have a known good frame, set things up so that - this frame is not skipped the first time through. Record whether - caller cares about arguments or not. - (stack_info::walk): Don't store arguments if they're unwanted. - (stackdump): Add isexception parameter for use when called by exception - handler. - (cygwin_stackdump): Accommodate extra argument to stackdump. - (handle_exceptions): Ditto. - (sig_handle): Ditto. - (interrupt_on_return): Accommodate extra arguments to stack walk - initialization. - -Fri May 4 21:05:20 2001 Christopher Faylor - - * localtime.c: Revert exclusion of windows.h. - -Fri May 4 17:03:16 2001 Christopher Faylor - - * string.h: Fix last-minute typo. - -Fri May 4 16:49:34 2001 Christopher Faylor - - * pinfo.h: Correctly set __SIGOFFSET. - - * path.cc (hash_path_name): Avoid calling library functions for simple - copying of characters. - - * shortcut.c: Use WIN32_LEAN_AND_MEAN. - * smallprint.c: Ditto. - - * environ.cc (getwinenv): Minor clarity fix. - - * localtime.c: No need to include windows.h - - * string.h: New file. - -Fri May 4 16:37:30 2001 Christopher Faylor - - * exceptions.cc (ctrl_c_handler): Always send signal to process if it - has no tty. - -2001-05-04 Egor Duda - - * fhandler_socket.cc (set_connect_secret): Use /dev/urandom to - generate secret cookie. - -Thu May 3 16:37:55 2001 Christopher Faylor - - * include/pthread.h (pthread_cleanup_push): Eliminate space preceding - arguments. - (pthread_cleanup_pop): Ditto. - -Thu May 3 18:16:00 2001 Corinna Vinschen - - * net.cc (wsock_init): Rename `was_in_progress' to `wsock_started' - for clearness. - -Thu May 3 10:44:16 2001 Christopher Faylor - - * exceptions.cc (handle_exceptions): Break out of "loop" if the - debugger doesn't seem to be attaching to our process. - -Wed May 2 20:18:00 2001 Corinna Vinschen - - * autoload.cc: Use new definition of LoadDLLinitfunc throughout. - Redefine wrapper for wsock32.dll and ws2_32.dll. - (std_dll_init): New function. - * autoload.h: Rename LoadDLLinitfunc to LoadDLLinitfuncdef. - Add new defines LoadDLLinitfunc and LoadDLLstdfunc. - * net.cc (wsock_init): Add guard variable handling. Take care - to call WSAStartup only once. Load WSAStartup without using - autoload wrapper to eliminate recursion. Eliminate FIONBIO - and srandom stuff. - -Tue May 1 01:26:15 2001 Christopher Faylor - - * path.cc (mount_info::conv_to_win32_path): More path tweaking. - -Tue May 1 00:34:46 2001 Christopher Faylor - - * path.cc (mount_info::conv_to_win32_path): Fix debugging output to - avoid a SIGSEGV. Avoid double backslashes in middle of filename. - -Mon Apr 30 21:51:14 2001 Christopher Faylor - - * path.cc (mkrelpath): New function. - (mount_info::conv_to_win32_path): Eliminate now-unneeded relative path - name arg and processing. - (path_conv::check): Accommodate relative path names again. Accommodate - 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. - -Mon Apr 30 22:09:00 2001 Corinna Vinschen - - * autoload.cc: Add LoadDLLinitfunc for secur32.dll. - Add LoadDLLfuncEx statements for AllocateLocallyUniqueId@4, - DuplicateTokenEx@24, LsaNtStatusToWinError@4, - LsaDeregisterLogonProcess@4, LsaFreeReturnBuffer@4, - LsaLogonUser@56, LsaLookupAuthenticationPackage@12, - LsaRegisterLogonProcess@12, - * environ.cc: Add extern declaration for `subauth_id'. - (subauth_id_init): New function for setting `subauth_id'. - (struct parse_thing): Add entry for `subauth_id'. - * fork.cc (fork_parent): Call `RevertToSelf' and - `ImpersonateLoggedOnUser' instead of `seteuid'. - * security.cc: Define global variable `subauth_id'. - (extract_nt_dom_user): New function. - (cygwin_logon_user): Call `extract_nt_dom_user' now. - (str2lsa): New static function. - (str2buf2lsa): Ditto. - (str2buf2uni): Ditto. - (subauth): Ditto. - * security.h: Add prototype for `subauth'. - * spawn.cc (spawn_guts): Use cygheap->user.token only if impersonated. - Use `cygsid' type. Remove impersonation before allowing access to - workstation/desktop to everyone. Call `RevertToSelf' and - `ImpersonateLoggedOnUser' instead of `seteuid'. - * syscalls.cc (seteuid): Rearranged to allow using subauthentication - to retrieve user tokens when needed. - -Mon Apr 30 20:26:00 2001 Corinna Vinschen - - * uinfo.cc (internal_getlogin): Formatting change. - -Mon Apr 30 19:58:00 2001 Corinna Vinschen - - * grp.cc: Eliminate MAX_DOMAIN_NAME define. - (read_etc_group): Substitute MAX_DOMAIN_NAME by - INTERNET_MAX_HOST_NAME_LENGTH. - * passwd.cc (parse_pwd): Don't force pw_name to be lower case. - * sec_helper.cc: Substitute MAX_USER_NAME by UNLEN, - MAX_COMPUTERNAME_LENGTH by INTERNET_MAX_HOST_NAME_LENGTH throughout. - (lookup_name): Slight cleanup. - * security.cc (alloc_sd): Substitute MAX_USER_NAME by UNLEN. - * security.h: Define DEFAULT_UID as DOMAIN_USER_RID_ADMIN and - DEFAULT_GID as DOMAIN_ALIAS_RID_ADMINS. - * shared.cc (memory_init): Substitute MAX_USER_NAME by UNLEN. - * thread.h: Ditto. - * uinfo.cc (internal_getlogin): Substitute MAX_USER_NAME by UNLEN. - Substitute MAX_COMPUTERNAME_LENGTH and MAX_HOST_NAME by - INTERNET_MAX_HOST_NAME_LENGTH. - * winsup.h: Include lmcons.h. Eliminate MAX_USER_NAME and - MAX_HOST_NAME. Move DEFAULT_UID and DEFAULT_GID to security.h. - -Mon Apr 30 12:35:40 2001 Christopher Faylor - - * path.cc (path_conv::check): Don't use path_flags when converting to - MS-DOS syntax unless parsing tail of path component. Stop parsing path - when we reach the 'root' of the path. Correctly copy tail to path - component. - -Sun Apr 29 22:28:06 2001 Christopher Faylor - - * exceptions.cc (INIT_EXCEPTION_HANDLER): Eliminate. - (init_exceptions): Just use init_exception_handler. - (open_stackdumpfile): New function. - (stack_info::first_time): Eliminate. - (stack_info::init): Set up fields to avoid "first_time" consideration. - (stack_info::walk): Remove "first_time" consideration. - (stackdump): Change arguments to accept initial frame pointer and open - stack file flag. - (stack): Eliminate. - (cygwin_stackdump): Use stackdump() rather than stack(). - (try_to_debug): Remove all synchronization logic. Just keep looping in - exception handler until debugger notices us. Return 1 if successfully - started debugger. - (handle_exceptions): Just return if we know that we're debugging. - Reorganize to avoid creating a stackdump file if we are starting a - debugger. Return from exception handler if debugger started - successfully. - (sig_handle): Create a stackdump only if debugger wasn't started. - * winsup.h (try_to_debug): Add an argument. - -Sun Apr 29 21:41:25 2001 Christopher Faylor - - * path.cc (symlink_info::check): Remove extra arguments, move - functionality 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. - -Sat Apr 28 19:36:13 2001 Christopher Faylor - - Throughout, change 'tty_attached' to 'real_tty_attached', for clarity. - 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 ) - * 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. - -2001-04-27 Kazuhiro Fujieda - - * thread.cc (thread_init_wrapper): Use _REENT_INIT to initialize the - reent structure of newlib. - -Fri Apr 27 14:02:24 2001 Christopher Faylor - - * sigproc.h (sig_send): Add exception parameter to sig_send. - * sigproc.cc (sig_send): Ditto. Use it when setting frame info. - * exceptions.cc (handle_exceptions): Use exception flag when calling - sig_send. - -2001-04-27 Egor Duda - - * tty.cc (tty::make_pipes): Set to_slave pipe mode to nonblocking. - * fhandler_tty.cc (fhandler_pty_master::accept_input): If pipe buffer - is full, give slave a chance to read data. - -2001-04-26 Kazuhiro Fujieda - - * security.cc (alloc_sd): Add unrelated ACCESS_ALLOWED_ACE behind - the `everyone' ACE. - -Wed Apr 25 15:07:37 2001 Christopher Faylor - - * sigproc.h [sigthread]: Add exception field. - [sigframe::~sigframe]: Clear exception field. - [sigframe::set]: Set exception field from caller. - * sigproc.cc (sig_send): Set exception field when frame pointer is - passed in. - * exceptions.cc (interrupt_on_return): Always treat exception as - interruptible. - -2001-04-25 Egor Duda - - * cygwin.din: Export asctime_r, ctime_r, gmtime_r, localtime_r - * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 39 - -Wed Apr 25 10:57:36 2001 Christopher Faylor - - * include/cygwin/version.h: Bump minor version number. - * childinfo.h: Bump child structure magic number. - -2001-04-25 Kazuhiro Fujieda - - * uinfo.cc (internal_getlogin): Return pointer to struct passwd. - (uinfo_init): Accommodate the above change. - * syscalls.cc (seteuid): Ditto. - -Tue Apr 25 11:08:00 2001 Corinna Vinschen - - * autoload.cc: Add LoadDLLfunc statements for SetTokenInformation@16. - * cygheap.cc: Include security.h. - * grp.cc (internal_getgrent): New function. - (getgroups): Rearranged using `internal_getgrent' and the new - `cygsid' class. - * passwd.cc (internal_getpwent): New function. - * sec_acl.cc: Use new `cygsid' class throughout. - (acl_access): Use `internal_getgrent' instead of `getgrent'. - * sec_helper.cc: Use new `cygsid' class throughout. - (get_id_from_sid): Use `internal_getgrent' instead of `getgrent'. - Use `internal_getpwent' instead of `getpwent'. - * security.cc: Use new `cygsid' class throughout. - * security.h: Move `MAX_SID_LEN' from winsup.h to here. - Add extern declarations for `internal_getgrent' and `internal_getpwent'. - (class cygsid): New class. - * shared.cc (sec_user): Use new `cygsid' class. - * syscalls.cc (seteuid): Try to set owner to user and primary group to - current group in impersonation token before performing impersonation. - (setegid): Try to set primary group in process token to the new group - if ntsec is on. - * uinfo.cc (internal_getlogin): Use new `cygsid' class. - Try to set owner to user and primary group to current group in process - token if the process has been started from a non cygwin process. - (uinfo_init): Set primary group only if the process has been started - from a non cygwin process. - * winsup.h: Move define for `MAX_SID_LEN' to security.h. - -Mon Apr 16 23:20:00 2001 Andy Younger - - * fhandler_dsp.cc: Improved handling of 8 bit playback modes. - Put in mock support for SNDCTL_DSP_SETFRAGMENT. - -Tue Apr 24 23:51:00 2001 Corinna Vinschen - - * passwd.cc (getpwnam_r): Add pw_passwd handling as well. - (getpwuid_r): Ditto. - -Tue Apr 24 23:43:00 2001 Corinna Vinschen - - * passwd.cc (getpwnam_r): Use correct offsets into buffer. - Copy pw_gecos field as well. - (getpwuid_r): Ditto. - -2001-04-24 Egor Duda - - * dlmalloc.c: New file. Port of Doug Lea's malloc - * dlmalloc.h: Ditto. - * Makefile.in: Add support for MALLOC_DEBUG - * config.h.in: Ditto. - * winsup.h: Ditto. - * configure.in: Add --enable-malloc-debugging option. - * configure: Regenerate. - * debug.h: Include declarations for debugging malloc. - * tty.cc (grantpt): Fix definition. - (unlockpt): Ditto. - -Mon Apr 23 22:00:29 2001 Christopher Faylor - - Remove trailing underscore from fhandler_base and friends, throughout. - * fhandler.h (fhandler_base::set_open_status): New method. Stores - original open status. - (fhandler_base::get_open_status): New method. Retrieves original open - status. - (fhandler_base::reset_to_open_binmode): New method. - * fhandler.cc (fhandler_base::open): Save open status. - (fhandler_base::init): Ditto. - * fhandler_clipboard.cc (fhandler_clipboard::open): Ditto. - * fhandler_console.cc (fhandler_console::open): Ditto. - * fhandler_dsp.cc (fhandler_dsp::open): Ditto. - * fhandler_dev_mem.cc (fhandler_dev_mem::open): Ditto. - * fhandler_dev_random.cc (fhandler_dev_random::open): Ditto. - * fhandler_serial.cc (fhandler_serial::open): Ditto. - * fhandler_tty_slave.cc (fhandler_tty_slave::open): Ditto. - * fhandler_tty_master.cc (fhandler_tty_master::open): Ditto. - * fhandler_dev_zero.cc (fhandler_dev_zero::open): Ditto. - * syscalls.cc (setmode): Rework so that 0 mode value causes reversion - to open state. - - * fhandler_tty_slave.cc (fhandler_tty_slave::read): Use correct - multiplier when converting from deciseconds to milliseconds. - -Mon Apr 23 13:28:35 2001 Christopher Faylor - - * fhandler.h (fhandler_base::clear_r_binary): New method. - (fhandler_base::clear_w_binary): New method. - * syscalls.cc (setmode): Accept 0 as mode value. Resets text/binary - behavior for fd to default. - -Mon Apr 23 12:46:07 2001 Christopher Faylor - - * net.cc [errmap]: Add '0' condition. - (find_winsock_errno): Don't translate no error to EPERM. - -Sun Apr 22 20:48:24 2001 Christopher Faylor - - * include/cygwin/version.h: Bump Cygwin version and API version. - -Mon Apr 23 9:27:00 2001 Robert Collins - - * thread.cc (MTinterface::Init): Always initialise per process variables. - -Sun Apr 22 19:18:18 2001 Christopher Faylor - - * features.h: Reinstate as wrapper for sys/features.h. - -Mon Apr 23 0:10:00 2001 Corinna Vinschen - - * security.cc (alloc_sd): Reformat comment. - * shared.cc: Drop function declarations already in security.h. - -Sun Apr 22 12:17:57 2001 Christopher Faylor - - * shortcut.c (check_shortcut): Close input file handle before - returning. - * 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. - -Sat Apr 21 19:26:05 2001 Christopher Faylor - - * thread.cc (MTinterface::Init): Remove accidentally checked in code. - -Sun Apr 22 00:22:00 2001 Robert Collins - - * passwd.cc (getpwuid): Check for thread cancellation. - (getpwuid_r): Ditto. - (getpwname): Ditto. - (getpwnam_r): Ditto. - * thread.h (pthread_mutex): New constructors for pshared operation. - (MTinterface): Associative array for pshared mutex's. - * thread.cc (MTinterface::Init): Initailize pshared mutex array. - (pthread_cond::BroadCast): Implementation notes. - (pthread_cond::TimedWait): Remove use of SignalObjectAndWait on non-NT systems. - (pthread_mutex::pthread_mutex(unsigned short)): New function. - (pthread_mutex::pthread_mutex (pthread_mutex_t *, pthread_mutexattr *)):New function. - (pthread_mutex::pthread_mutex(pthread_mutexattr *)): Fail on pshared mutex's. - (__pthread_mutex_getpshared): New function. - (__pthread_join): Check for thread cancellation. - (__pthread_cond_timedwait): Support pshared mutex's. - (__pthread_cond_wait): Ditto. - (__pthread_condattr_setpshared): Error on PROCESS_SHARED requests. - (__pthread_mutex_init): Support pshared mutex's. - (__pthread_mutex_getprioceiling): Ditto. - (__pthread_mutex_lock): Ditto. - (__pthread_mutex_trylock): Ditto. - (__pthread_mutex_unlock): Ditto. - (__pthread_mutex_destroy): Ditto. - (__pthread_mutex_setprioceiling): Ditto. - (__pthread_mutexattr_setpshared): Support PTHREAD_PROCESS_PSHARED requests. - -Fri Apr 20 19:38:29 2001 Christopher Faylor - - * cygwin.din: Add *scanf and *scan_r functions. - -Fri Apr 20 22:25:00 2001 Corinna Vinschen - - * security.cc (set_process_privileges): Swap out. - * sec_helper.cc (set_process_privilege): Rename from - `set_process_privileges'. Takes the privilege to enable or disable - as parameter now. - * security.h: Add prototype for `set_process_privileges'. - -2001-04-19 Egor Duda - - * path.cc (path_conv::check): Always initialize member variables. - -Fri Apr 20 12:27:49 2001 Christopher Faylor - - * include/sys/file.h: More cleanup for X_OK. - -Fri Apr 20 11:48:45 2001 Christopher Faylor - - * include/sys/file.h: Move X_OK protection earlier. - - * dtable.cc (dtable::vfork_child_fixup): Avoid closing already closed - handles. - -Fri Apr 20 16:29:00 2001 Corinna Vinschen - - * grp.cc (getgroups): Change so that SIDs get compared instead - of strings to SIDs. - -Fri Apr 20 14:50:00 2001 Corinna Vinschen - - * Makefile.in: Add object files `sec_helper.cc' and `sec_acl.cc'. - * security.cc: Swap out several functions. - * sec_acl.cc: New file. Move Sun compatibel ACL functions from - `security.cc' to here. - * sec_helper.cc: New file. Move security helper functions from - `security.cc' to here. - * security.h: Changed to accommodate the above changes. - -Fri Apr 20 14:12:00 2001 Corinna Vinschen - - * grp.cc: Replace `group_in_memory_p' by `group_state'. - Eliminate group_sem throughout. - (enum grp_state): New enumeration type. - (read_etc_group): Make race safe. - * security.cc: Eliminate group_sem throughout. - -Thu Apr 19 9:40:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Drop usage of the same memory area if the same - region of the same file is mapped twice. - -Wed Apr 18 16:53:54 2001 Christopher Faylor - - Throughout, change fdtab references to cygheap->fdtab. - * 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. - -Tue Apr 17 12:18:28 2001 Christopher Faylor - - * passwd.cc: Eliminate passwd_sem throughout. - * security.cc: Ditto. - -Tue Apr 17 12:18:28 2001 Robert Collins - - * cygwin.din: Export New functions. - * passwd.cc (read_etc_passwd): Make race safe. - (getpwuid_r): New function. - (getpwnam_r): New function. - -2001-04-18 Egor Duda - - * grp.cc (getgroups): Avoid crash if passwd field if /etc/group is - empty. - -Tue Apr 17 19:05:44 2001 Christopher Faylor - - * path.h (path_conv::add_ext_from_sym): Declare. - * path.cc (path_conv::add_ext_from_sym): Convert to pure inline method. - -Tue Apr 17 18:50:00 2001 Corinna Vinschen - - * path.cc (windows_device_names): Add missing NULL element. - -Tue Apr 17 12:14:54 2001 Christopher Faylor - - * path.cc (windows_device_names): Move dsp to proper location. - -Tue Apr 17 13:44:00 2001 Corinna Vinschen - - * path.cc (path_conv::check): Set case_clash even if pcheck_case - 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. - -Tue Apr 17 2:07:07 2001 Christopher Faylor - - * config.h.in: Turn off VFORK again. - -Mon Apr 16 23:45:24 2001 Christopher Faylor - - * path.h (cwdstuff): Move class. - * 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. - -Mon Apr 16 19:19:00 2001 Corinna Vinschen - - * mmap.cc: Move fh_paging_file from some functions to be - a global static variable. - (class mmap_record): Add `devtype_' member to remember - the device type of the file. Add declaration for methods - `get_device', `alloc_fh' and `free_fh'. - (mmap_record::mmap_record): Initialize `devtype_' correctly. - (mmap_record::alloc_fh): New method. - (mmap_record::free_fh): Ditto. - (munmap): Use new mmap_record::alloc_fh and mmap_record::free_fh - methods to create a correct fhandler. - (msync): Ditto. - (fixup_mmaps_after_fork): Ditto. - -Mon Apr 16 16:01:00 2001 Corinna Vinschen - - * grp.cc (getgroups): If `allow_ntsec' is set, use the process token - information to evaluate the groups list. - -Mon Apr 16 00:08:02 2001 Christopher Faylor - - * features.h: Remove this file as it is now being supplied by newlib. - -Sun Apr 15 23:23:29 2001 Christopher Faylor - - * autoload.cc: Add winmm functions needed by fhandler_dsp.cc. - -Sun Apr 15 22:53:52 2001 Andy Younger - - * 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. - -Sun Apr 15 16:36:27 2001 Christopher Faylor - - * uname.c (uname): Default n in in86 to 6 if Windows returns > 6. - -Sun Apr 15 15:56:00 2001 Corinna Vinschen - - * path.cc (add_ext_from_sym): Redefine to call `add_ext_from_sym_'. - (add_ext_from_sym_): New inline function. - -Sat Apr 14 19:23:52 2001 Christopher Faylor - - * config.h.in: Turn on VFORK by default. - -Sat Apr 14 18:04:35 2001 Christopher Faylor - - * net.cc (cygwin_socket): Set SO_LINGER to small value so closed UNIX - domain sockets will not stay around. - -Sat Apr 14 18:01:43 2001 Pierre A. Humblet - - * select.cc (socket_cleanup): Set SO_LINGER to small value so closed - dummy sockets do not stay around. Use correct value for second argument - to shutdown. - -Sat Apr 14 17:04:00 2001 Robert Collins - - * thread.h (MTinterface): Add threadcount. - * thread.cc (MTinterface::Init): Set threadcount to 1. - (__pthread_create): Increment threadcount. - (__pthread_exit): Decrement threadcount and call exit() from the last thread. - -Fri Apr 13 11:34:24 2001 Robert Collins - - * fork.cc (fork_child): Call the __pthread_atforkchild function. - (fork_parent): Call the __pthread_atforkparent function. - * cygwin.din: Export pthread_atfork. - * thread.h (callback): New class. - (MTinterface): Use it. - * thread.cc (__pthread_atforkprepare): New function. - (__pthread_atforkparent): New function. - (__pthread_atforkchild): New function. - (__pthread_atfork): New function. - * pthread.cc (pthread_atfork): New function. - -Fri Apr 13 9:52:00 2001 Corinna Vinschen - - * path.cc (add_ext_from_sym): New define evaluating `known'suffix'. - (path_conv::check): Use add_ext_from_sym throughout. - -Thu Apr 12 23:19:00 2001 Corinna Vinschen - - * dir.cc (mkdir): Check for case clash. - * 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. - -Thu Apr 12 12:49:53 2001 Christopher Faylor - - * syscalls.cc (mkfifo): New function stub. - -2001-04-12 Robert Collins - - * configure.in: Remove PTH_ALLOW. - * cygwin.din: Remove @PTH_ALLOW@ prefixes to pthread functions. Add - new pthread exports. - * pthread.cc: New wrapper functions for the above new exports. - * sched.cc (valid_sched_parameters): New function. - (sched_setparam): Use it. - (sched_set_thread_priority): New function. Used by pthread_sched*. - * thread.cc (pthread_key_destructor::InsertAfter): New function. - (pthread_key_destructor::UnlinkNext): New function. - (pthread_key_destructor::Next): New function. - (pthread_key_destructor_list::Insert): New function. - (pthread_key_destructor_list::Remove): New function. - (pthread_key_destructor_list::Pop): New function. - (pthread_key_destructor::pthread_key_destructor): New function. - (pthread_key_destructor_list::IterateNull): New function. - (MTinterface::Init): Initialise new member. - (pthread::pthread): Initialise new members. - (pthread::create): Copy new attributes. Set the new thread priority. - (pthread_attr::pthread_attr): Initialise new members. - (pthread_key::pthread_key): Setup destructor function. - (pthread_key::~pthread_key): Remove destructor function. - (pthread_mutexattr::pthread_mutexattr): New function. - (pthread_mutexattr::~pthread_mutexattr): New function. - (__pthread_once): New function. - (__pthread_cleanup): New function. - (__pthread_cancel): New function. - (__pthread_setcancelstate): New function. - (__pthread_setcanceltype): New function. - (__pthread_testcancel): New function. - (__pthread_attr_getinheritsched): New function. - (__pthread_attr_getschedparam): New function. - (__pthread_attr_getschedpolicy): New function. - (__pthread_attr_getscope): New function. - (__pthread_attr_setinheritsched): New function. - (__pthread_attr_setschedparam): New function. - (__pthread_attr_setschedpolicy): New function. - (__pthread_attr_setscope): New function. - (__pthread_exit): Call any key destructors on thread exit. - (__pthread_join): Use the embedded attr values. - (__pthread_detach): Use the embedded attr values. - (__pthread_getconcurrency): New function. - (__pthread_getschedparam): New function. - (__pthread_key_create): Pass the destructor on object creation. - (__pthread_key_delete): Correct incorrect prototype. - (__pthread_setconcurrency): New function. - (__pthread_setschedparam): New function. - (__pthread_cond_timedwait): Support static mutex initialisers. - (__pthread_cond_wait): Ditto. - (__pthread_mutex_getprioceiling): New function. - (__pthread_mutex_lock): Support static mutex initialisers. - (__pthread_mutex_trylock): Ditto. - (__pthread_mutex_unlock): Ditto. - (__pthread_mutex_destroy): Ditto. - (__pthread_mutex_setprioceiling): New function. - (__pthread_mutexattr_getprotocol): New function. - (__pthread_mutexattr_getpshared): New function. - (__pthread_mutexattr_gettype): New function. - (__pthread_mutexattr_init): New function. - (__pthread_mutexattr_destroy): New function. - (__pthread_mutexattr_setprotocol): New function. - (__pthread_mutexattr_setprioceiling): New function. - (__pthread_mutexattr_getprioceiling): New function. - (__pthread_mutexattr_setpshared): New function. - (__pthread_mutexattr_settype): New function. Remove stubs for non - MT_SAFE compilation. - * thread.h: Remove duplicate #defines. Add prototypes for new - functions in thread.cc. - (pthread_key_destructor): New class. - (pthread_key_destructor_list): New class. - (pthread_attr): Add new members. - (pthread): Remove members that are duplicated in the pthread_attr - class. - (pthread_mutex_attr): Add new members. - (pthread_once): New class. - * include/pthread.h: Add prototypes for new functions exported from - cygwin1.dll. Remove typedefs. - * include/sched.h: Add prototypes for new functions in sched.cc. - * include/cygwin/types.h: Add typedefs from pthread.h - -Tue Apr 10 22:02:53 2001 Christopher Faylor - - * path.cc (struct symlink_info): Add extn and ext_tacked_on fields. - (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. - -2001-04-09 Egor Duda - - * fhandler.h (class fhandler_socket): Add members and methods to - support secure connections on AF_UNIX sockets. - * fhandler_socket.cc (fhandler_socket::set_connect_secret): New method. - (fhandler_socket::get_connect_secret): Ditto. - (fhandler_socket::create_secret_event): Ditto. - (fhandler_socket::close_secret_event): Ditto. - (fhandler_socket::check_peer_secret_event): Ditto. - (fhandler_socket::fixup_after_fork): Duplicate secret event to child. - (fhandler_socket::dup): Copy address family. - (fhandler_socket::close): Close secret event. - * net.cc (get_inet_addr): Read secret cookie. - (cygwin_connect): Check if peer knows secret cookie value. - (cygwin_accept): Ditto. Copy address family to newly created socket. - (cygwin_bind): Generate and write secret cookie. - (wsock_init): Initialize random number generator. - -Sun Apr 8 20:40:58 2001 Christopher Faylor - - * Makefile.in: Put -lgcc last in list of libraries, since stdc++ - library needs it. - * cygwin.din: Remove obsolete "__empty" export. - * exceptions.cc (call_signal_handler_now): Force inclusion of function - even when -finline-functions is specified. - * sigproc.h: Remove obsolete call_signal_handler declaration. - -Sun Apr 8 20:36:55 2001 Benjamin Riefenstahl - - * fhandler_console.cc (cp_get_internal): New function. - (cp_convert): New function. - (con_to_str): New function. - (str_to_con): New function. - (fhandler_console::read): Replace OemToCharBuff with con_to_str. - (fhandler_console::write_normal): Replace CharToOemBuff with str_to_con. - -Thu Apr 5 22:41:00 2001 Corinna Vinschen - - * syscalls.cc (stat_worker): Fix conditional which still allowed - successful stat'ing of non-existant files. - -Wed Apr 4 10:37:44 2001 Christopher Faylor - - * child_info.h: Bump magic number for fork/exec/spawn. - -Tue Apr 3 20:06:00 2001 Corinna Vinschen - - * errno.cc (errmap): Map ERROR_FILE_INVALID to ENXIO. - -Mon Apr 2 22:48:58 2001 Christopher Faylor - - * cygrun.c (main): Fix compiler warning. - * gmon.c (_mcleanup): Ditto. - * profil.c (profile_off): Ditto. - - * net.cc (find_winsock_errno): New function. - (__set_winsock_errno): Use find_winsock_errno. - (cygwin_setsockopt): Detect SO_ERROR for debugging. - (cygwin_getsockopt): Ditto. Translate error when getsockopt returns - SO_ERROR. - * winsup.h: regparmize __set_winsock_errno. - * include/sys/strace.h: Document that strace functions can't use - regparm. - -2001-04-02 Kazuhiro Fujieda - - * fhandler.cc (fhandler_disk_file::open): Avoid checking a magic - number of a directory. - -Mon Apr 2 00:24:08 2001 Christopher Faylor - - * shared_info.h (mount_info): Remove mnt_ elements. - * thread.h (struct _winsup_t): Add mnt_ elements. - * path.cc (fillout_mntent): Use mnt_ elements from reent_winsup (). - -Sun Apr 1 20:10:34 2001 Christopher Faylor - - * exceptions.cc (sigframe::call_signal_handler): Return value of - call_signal_handler_now. - * sigproc.h (sigframe): Use constructor. - * syscalls.cc (_read): Correct errno test prior to calling signal - handler. - -Sun Apr 1 00:38:06 2001 Christopher Faylor - - * exceptions.cc (sigframe::call_signal_handler): Move outside of "C" - block or some compilers will complain. - -Sun Apr 1 00:24:14 2001 Christopher Faylor - - * exceptions.cc (call_signal_handler_now): Rename from - call_signal_handler to avoid C++ confusion. - -Sun Apr 1 00:08:15 2001 Christopher Faylor - - * path.cc (fillout_mntent): Always remove drive root directories from - future consideration by "/cygdrive" reporting. - (cygdrive_getmnt): Avoid reporting removable drives or drives with no - media mounted. - -Sat Mar 31 21:56:19 2001 Christopher Faylor - - * thread.h (struct _winsup_t): Remove obsolete elements. Add - available_drives 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. - -Sat Mar 31 18:59:52 2001 Christopher Faylor - - * sigproc.h (class sigframe): Implement 'unregister()' method. - (sigframe::~sigframe): Use unregister method. - (sigframe::call_signal_handler): Declare new method. - * exceptions.cc (sigframe::call_signal_handler): New method. - Unregisters current sigframe before calling signal handler. - (setup_handler): Clear waiting threads prior to arming signal_arrived. - * syscalls.cc (_read): Change goto to loop. Recalculate sigframe - inside of loop so that constructor is called when appropriate. - * wait.cc (wait4): Ditto. - - * signal.cc: Change "sig" to "signal" in debugging messages throughout. - * sigproc.cc: Ditto. - -Sat Mar 31 17:12:08 2001 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::raw_write): Close protected - handles with ForceCloseHandle or suffer spurious warnings. - -Sat Mar 31 16:23:32 2001 Christopher Faylor - - * fhandler.cc (fhandler_base::read): Remove special handling of CTRL-Z. - -Sat Mar 31 11:09:00 2001 Corinna Vinschen - - * fhandler.h (class fhandler_console): Add members `insert_mode'. - * fhandler_console.cc (fhandler_console::dup): Duplicate `insert_mode'. - (fhandler_console::fhandler_console): Initialize `insert_mode'. - (fhandler_console::char_command): Add terminal capabilities - "enter insert mode" = \E[4h and "exit insert mode" = \E[4l. - Care for insert mode on terminal capability "repeat char" = \E[x;yb. - (fhandler_console::write_normal): Care for insert mode before writing - to the console. - (array keytable): Add keymapping for modified cursor and control - block keys (xterm like). - -Fri Mar 30 13:02:00 2001 Corinna Vinschen - - * fhandler.h (class fhandler_console): Add members `savebufsiz' and - `savebuf' to allow save/restore of screen. - * fhandler_console.cc (fhandler_console::dup): Duplicate `savebufsiz' - and `savebuf'. - (fhandler_console::fhandler_console): Initialize `savebufsiz' and - `savebuf'. - (fhandler_console::char_command): Add terminal capabilities - "save screen content" = \E[?47h and "restore screen content" = \E[?47l. - -Wed Mar 28 19:28:50 2001 Christopher Faylor - - * path.cc (chdir): Eat trailing whitespace on input path. - -Tue Mar 27 22:38:42 2001 Christopher Faylor - - * lib/_cygwin_S_IEXEC.c: Remove "const" from globals or they never seem - to be defined. Wrap definitions in extern "C". Include winsup.h to - assure proper definitions. - - * dcrt0.cc (dll_crt0_1): Call stdio_init after premain run so that - binmode.o, etc., will control default stdio settings. - * dtable.cc (dtable::init_std_file_from_handle): Allow __fmode to force - binmode/textmode settings. Default pipes to binmode. - -Tue Mar 27 11:31:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Fix conditional for previous patch. - -Mon Mar 26 18:48:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Outflank copy-on-write problem on 9x by - setting access mode to FILE_MAP_READ when read access is requested. - -Sun Mar 25 20:12:21 2001 Christopher Faylor - - * dlfcn.cc (check_access): Eliminate. - (check_path_access): Use passed in path_conv buf. - (get_full_path_of_dll): Use passed in name buf to avoid a static. Rip - out most of the path checking since LoadLibrary will do all of this - automatically. - (dlopen): Set errno when appropriate (may not be compliant?). - * environ.cc (posify): Don't pass in "native" path if it seems to - actually be posix. - -Thursday Mar 22 2001 Robert Collins - - * fhandler.h (fhandler_dev_clipboard): Extend to support writing. - * fhandler_clipboard.cc (fhandler_dev_clipboard::fhandler_dev_clipboard): - Initialize new fields. Open clipboard here. - (fhandler_dev_clipboard::dup): New method. - (fhandler_dev_clipboard::open): Accommodate new fields. Register - clipboard here, if appropriate. - (set_clipboard): New function. Moves buffer to clipboard. - (fhandler_dev_clipboard::write): Truly implement clipboard writing. - (fhandler_dev_clipboard::read): Reimplement to allow successive reads. - (fhandler_dev_clipboard::lseek): Truly implement seeks in clipboard. - (fhandler_dev_clipboard::close): Clear out new fields. Support - sequential reads and sequential writes. Support for binary data via a - native clipboard format. - -2001-03-22 Egor Duda - - * fhandler_console.cc (fhandler_console::set_default_attr): Update - console color attributes on tty reset. - -Wed Mar 21 22:12:36 2001 Christopher Faylor - - * autoload.cc (kernel32_init): New function for kernel32 autoload - initialization. - (SignalObjectAndWait): Add conditional load of this function when it is - available. - -2001-03-21 Robert Collins - - * sched.cc: New file. Implement sched*. - * include/sched.h: New file. User land includes for sched*. - * Makefile.in: Add sched.o - * cygwin.din: Add exports for sched*. - -Tue Mar 20 14:48:46 2001 Christopher Faylor - - * dtable.cc: Guard against new winsock.h/winsock2.h warnings when - mixing winsock*.h and sys/types.h. - * fhandler_socket.cc: Ditto. - * net.cc: Ditto. - * select.cc: Ditto. - * exceptions.cc: Remove unneeded define. - -Mon Mar 19 17:43:29 2001 Christopher Faylor - - * exceptions.cc (interruptible): Update debugging output. - (setup_handler): Ensure that wait_sig loop wakes up when we punt on - sending a signal. - * poll.cc (poll): Add signal guard here. - -2001-03-19 Egor Duda - - * tty.h (tty::create_inuse): Add new parameter to allow non- - inheritable 'inuse' events. - * tty.cc (tty::create_inuse): Use new parameter. - * fhandler_tty.cc (fhandler_tty_master::init): Ditto. - * fhandler_tty.cc (fhandler_pty_master::open): Ditto. - * fhandler_tty.cc (fhandler_tty_master::init): Create master_alive - event. - * tty.cc (tty_list::terminate): Close master_alive event. - * fhandler_tty.cc (fhandler_tty_common::close): Send EOF to slaves - when master side is closed. - -Mon Mar 19 14:32:00 2001 Corinna Vinschen - - * mmap.cc (map::get_list_by_fd): Avoid calling `get_namehash' when - file descriptor is -1. - -Sat Mar 17 18:30:00 2001 Corinna Vinschen - - * syscalls.cc (check_posix_perm): New static function. - (fpathconf): Add _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY - support. - (pathconf): Ditto. - * include/cygwin/version.h: Bump API minor number to 37. - -2001-03-18 Egor Duda - - * fhandler.h (fhandler_tty_slave): Declare new methods. - * select.cc (fhandler_tty_slave::select_read): New method. - * select.cc (fhandler_tty_slave::ready_for_read): Ditto. - * select.cc (verify_tty_slave): New function. - * fhandler_termios.cc (fhandler_termios::line_edit): Empty input - buffer on signal. - * fhandler_tty.cc (fhandler_tty_slave::read): Check for input data - after reading from pipe. Reset event if input pipe is empty. - * tty.h (class tty): Allow creating events with manual reset. - * tty.cc (tty::get_event): Use manual_reset flag. - * tty.cc (tty::common_init): Create input_available_event with - manual reset. - -Sat Mar 17 21:48:03 2001 Christopher Faylor - - * external.cc (fillout_pinfo): Match windows pid, as well as cygwin pid - when passed in pid. Don't prematurely break when searching for a pid. - - * thread.h (_winsup_t): Eliminate unneeded field. - -Sat Mar 17 20:46:00 2001 Corinna Vinschen - - * net.cc (get_95_ifconf): Use strcasematch instead of strcasecmp. - * syscalls.cc (_unlink): Ditto. - (_rename): Ditto. - -Sat Mar 17 12:43:15 2001 Christopher Faylor - - * path.cc (suffix_scan::next): Avoid searching for foo.lnk twice when - input is "foo". - -Sat Mar 17 18:10:00 2001 Corinna Vinschen - - * net.cc (cygwin_socket): Set protocol to 0 when address family is - AF_UNIX to avoid WSAEPROTONOSUPPORT error. - -Sat Mar 17 09:51:32 2001 Mathew Brozowski - - * net.cc (cygwin_socket): Pass protocol parameter to socket call. - -Sat Mar 17 02:05:38 2001 Christopher Faylor - - * dir.cc (readdir): Use strcasematch for consistency. - * 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. - -Sat Mar 17 00:10:52 2001 Christopher Faylor - - * syscalls.cc (stat_dev): Give devices full read/write by default. - -Saturday Mar 17 3:45 2001 Robert Collins - - * thread.cc (MTinterface::CreateCond): Check for null attr pointer. - -Fri Mar 16 21:13:23 2001 Christopher Faylor - - * fhandler_termios.cc (fhandler_termios::line_edit): Don't accept input - when a signal is sent or we'll end up in an EOF/signal race. - -Fri Mar 16 20:25:40 2001 Christopher Faylor - - * path.cc: Translate scan states from defines to enums. - (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. - -Saturday Mar 17 01:19 2001 Robert Collins rbtcollins@hotmail.com - - * cygwin.din: Export the new functions. - * pthread.cc (pthread_cond_*): Add wrapper functions that call - __pthread_cond* functions. - * thread.cc (__pthread_cond_*): Implement the pthread_cond* functions. - * thread.h: Add new class entries and prototypes for __pthread_cond* - functions. - * include/pthread.h: user land header prototypes for pthread_cond* - functions and related defines. - -Wed Mar 14 16:30:00 2001 Corinna Vinschen - - * environ.cc (parse_options): Use strtok_r instead of strtok. - * security.cc (convert_string_sid_to_sid): Ditto. - (aclfromtext): Ditto. Fix buffer usage. - -Wed Mar 14 10:11:00 2001 Corinna Vinschen - - * path.cc (lnk_suffixes): Remove. - (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'. - -Tue Mar 13 13:52:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_disk_file::fstat): Add correct modes to - symlinks when stat'ing on FAT or FAT32 file systems. - -2001-03-12 Egor Duda - - * fhandler.h (fhandler_termios::fixup_after_exec): New function. - * fhandler_termios.cc (fhandler_termios::fixup_after_fork): New - function. Fixup output handle. - * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Output - handle is now fixed up in fhandler_termios::fixup_after_fork(). - -2001-03-12 Egor Duda - - * fhandler.h (fhandler_termios::fhandler_termios): Enable fixup - after fork. - * fhandler_console.cc (fhandler_console::fhandler_console): Fixup - after fork is now enabled in the base class constructor. - -Mon Mar 12 11:19:41 2001 Christopher Faylor - - * mkvers.sh: Include config.h so that DEBUGGING is correctly defined. - -Mon Mar 12 09:47:55 2001 Christopher Faylor - - * spawn.cc (spawn_guts): Don't set EXIT_REPARENTING if parent process - is not a cygwin process (suggested by Jason Gouger - ). - -Sun Mar 11 16:00:58 2001 Christopher Faylor - - * child_info.h: Bump magic number for fork/exec/spawn. - -Sat Mar 10 20:54:47 2001 Christopher Faylor - - * autoload.cc (noload): Use proper method for multiline strings or - newer gcc's complain. - * exceptions.cc (unused_sig_wrapper): Ditto. - * fhandler.h (fhandler_base): Make get_io_handle and friends return - self. - * fhandler_tty.cc (fhandler_pty_common::close_on_exec): Accommodate - DEBUGGING flag to avoid spurious warnings when inheritance is set. - -Sat Mar 10 16:52:12 2001 Christopher Faylor - - * shortcut.c (PATH_ALL_EXEC): Add parentheses to avoid a compiler - warning. - - * exceptions.cc (setup_handler): Clarify debugging message. - * sigproc.cc (proc_subproc): Remove PROC_CHILDSTOPPED test. It is - handled by normal PROC_CLEARWAIT case. - (wait_sig): Eliminate "dispatched" tracking. Remove __SIGCHILDSTOPPED - test. Decrement counter again before jumping out of - InterlockedDecrement loop so that subsequent InterlockedIncrement will - keep the counter at the correctly decremented value and also detect - when there are pending signals. - * sigproc.h: Remove __SIGCHILDSTOPPED element. - (procstuff): Remove PROC_CHILDSTOPPED element. - -Sat Mar 10 15:22:44 2001 Christopher Faylor - - * syscalls.cc (_rename): Set errno to ENOENT when an old path doesn't - exist (from Kazuhiro Fujieda ). Also set EACCES - when directory is not writable. - -Wed Mar 7 15:49:47 2001 Christopher Faylor - - * syscalls.cc (_read): Change definition to return ssize_t to be - consistent with read. - (_write): Change definition to return ssize_t to be consistent with - write. - -Wed Mar 7 01:08:21 2001 Christopher Faylor - - * sigproc.h (sigthread): Declare new methods. Create new winapi_lock - field. - (sigframe:;set): Call get_winapi_lock after frame is set so that signal - handler thread knows not to call SuspendThread. - (sigframe::~sigframe): Release winapi_lock. - * exceptions.cc (sigthread::get_winapi_lock): New method. - (sigthread::release_winapi_lock): New method. - (setup_handler): Use get_winapi_lock to ensure that signalled thread is - not blocked in a Windows API. - - * path.h (path_types): Avoid broken GCC warning. - -Tue Mar 6 14:02:00 2001 Corinna Vinschen - - * path.cc (suffix_scan::has): Change order of conditionals - to allow checking for .lnk suffixes even if in_suffixes is empty. - -Tue Mar 6 13:02:00 2001 Corinna Vinschen - - * autoload.c (cygwin_premain0): Add missing parameter. - * binmode.c (cygwin_premain0): Ditto. - * textmode.c (cygwin_premain0): Ditto. - -Tue Mar 6 12:04:00 2001 Jason Tiller - - * auto_load.cc: Add "GetKeyboardLayout" entry in the list of - Win32 User32.DLL exports to provide. - * fhandler.h (class fhandler_console): Add meta_mask private - member to remember which keystroke modifiers should generate - META. - * fhandler_console.cc (fhandler_console::read): Modify code that - tests a keystroke for a META-escaped key to use the 'meta_mask' - variable. - (fhandler_console::fhandler_console): Add definition for - variable "meta_mask" used to determine if a keystroke should be - preceded by META in the client console stream. Set meta_mask - based on whether or not user's keyboard language is English - - non-English keyboards pass AltGr (right ) unmolested, - whereas English keyboards now interpret left- and right- - as META. - -Mon Mar 5 20:15:00 2001 Corinna Vinschen - - * include/a.out.h: Add copyright hint. - * include/fcntl.h: Ditto. - * include/lastlog.h: Ditto. - * include/memory.h: Ditto. - * include/mntent.h: Ditto. - * include/paths.h: Ditto. - * include/poll.h: Ditto. - * include/syslog.h: Ditto. - * include/termio.h: Ditto. - * include/tzfile.h: Ditto. - * include/arpa/inet.h: Ditto. - * include/asm/byteorder.h: Ditto. - * include/asm/socket.h: Ditto. - * include/asm/types.h: Ditto. - * include/cygwin/if.h: Ditto. - * include/cygwin/mtio.h: Ditto. - * include/cygwin/rdevio.h: Ditto. - * include/cygwin/socket.h: Ditto. - * include/net/if.h: Ditto. - * include/netinet/in.h: Ditto. - * include/netinet/in_systm.h: Ditto. - * include/netinet/ip.h: Ditto. - * include/netinet/ip_icmp.h: Ditto. - * include/netinet/tcp.h: Ditto. - * include/sys/cdefs.h: Ditto. - * include/sys/cygwin.h: Ditto. - * include/sys/ioctl.h: Ditto. - * include/sys/mman.h: Ditto. - * include/sys/mount.h: Ditto. - * include/sys/mtio.h: Ditto. - * include/sys/procfs.h: Ditto. - * include/sys/resource.h: Ditto. - * include/sys/smallprint.h: Ditto. - * include/sys/socket.h: Ditto. - * include/sys/strace.h: Ditto. - * include/sys/syslog.h: Ditto. - * include/sys/sysmacros.h: Ditto. - * include/sys/termio.h: Ditto. - * include/sys/termios.h: Ditto. - * include/sys/uio.h: Ditto. - * include/sys/un.h: Ditto. - * include/sys/utsname.h: Ditto. - * include/sys/vfs.h: Ditto. - * include/sys/wait.h: Ditto. - * regexp/regerror.c: Ditto. - * regexp/regexp.h: Ditto. - * regexp/regmagic.h: Ditto. - -Mon Mar 5 01:25:03 2001 Christopher Faylor - - * dlopen.c (dlopen): Return NULL when name is NULL (suggested by - 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 interested 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): Accommodate 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. - -2001-03-04 Egor Duda - - * fhandler.h (class fhandler_tty_common): New mutex and event to - syncronize input on master tty with slave tty. - * fhandler_tty.cc (fhandler_pty_master::accept_input): Use them to - syncronize with slave. - * fhandler_tty.cc (fhandler_tty_slave::read): Use input mutex and - event to syncronize with master. Do not limit amount of data read - from master to vmin value. Interrupt on signal and return already - read data, if any. - * fhandler_tty.cc (fhandler_tty_slave::open): Handle input mutex and - event. - * fhandler_tty.cc (fhandler_tty_common::close): Ditto. - * fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Ditto. - * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Ditto. - * fhandler_tty.cc (fhandler_tty_common::dup): Ditto. - * tty.h (tty::open_input_mutex): New function. - * tty.cc (tty::common_init): Create input mutex and event. - -Fri Mar 2 13:32:00 2001 Corinna Vinschen - - * dir.cc (readdir): Fix creating path in symlink check. - -Fri Mar 2 12:33:00 2001 Corinna Vinschen - - * dir.cc (readdir): Fix shortcut==symlink condition. - * 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. - -Thu Mar 1 21:06:07 2001 Christopher Faylor - - * exceptions.cc (sig_handle_tty_stop): Ignore attempts to suspend a - process if started by non-cygwin parent. - -Thu Mar 1 20:48:11 2001 Christopher Faylor - - * select.cc (peek_console): Don't report read_ready on mouse events - unless we are looking for mouse events. - * fhandler.h (fhandler_console::mouse_aware): New method. - -Wed Feb 28 15:10:00 2001 Corinna Vinschen - - * uinfo.cc: Eliminate `#include '. - -2001-02-28 Egor Duda - - * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Determine - drive geometry or partition size to allow seeking from the end of - raw floppy device. Don't allow positioning past the end of media or - to offsets bigger then max off_t. - -2001-02-27 Egor Duda - - * fhandler.h (class fhandler_console): Make all variables that - describe "state" of console to be members of fhandler_console. - default_color is now the color which is set when console recieves - reset command. - * fhandler_console.cc (fhandler_console::fhandler_console): Turn - mouse handling and raw keyboard mode off by default. Initialize - state information. - * fhandler.cc (fhandler_console::set_raw_win32_keyboard_mode): New - function. - * fhandler_console.cc (fhandler_console::set_default_attr): New - function. Reset console attributes to default values. - * fhandler_console.cc (fhandler_console::open): Reset attributes. - * fhandler_console.cc (fhandler_console::get_win32_attr): New function. - Calculate win32-style console attribute based on terminal attributes. - * fhandler_console.cc (fhandler_console::set_cursor_maybe): Use - member variable. - * fhandler_console.cc (fhandler_console::read): If in raw-win32 - keyboard mode, encode win32 keyboard events in \033{x;y;z;t;u;wK - sequences. - * fhandler_console.cc (fhandler_console::dup): Copy all state - information to the dup()ed handle. - * fhandler_console.cc (fhandler_console::scroll_screen): Use current - fill-in attribute. - * fhandler_console.cc (fhandler_console::clear_screen): Ditto. - * fhandler_console.cc (fhandler_console::char_command): Check if we - saw '?' symbol by member variable. Set terminal attributes on \033[Xm - commands. \033[24m - turn off underline mode, \033[27m - turn off - reverse mode, \033[39m - restore default foreground color. - \033[49m - restore default background color. \033[2000h - turn on raw - keyboard mode, \033[2000l - turn off raw keyboard mode. - * fhandler_console.cc (fhandler_console::write): Set attribues to - default values on reset command. - -2001-02-26 Mike Simons - - * times.cc (settimeofday): Replace function stub with working code. - -Mon Feb 26 10:42:00 2001 Corinna Vinschen - - * strace.cc (strace::vprntf): Move prntf functionality to this function - adding an va_list interface to strace. - (strace::printf): Calls strace::vprntf now. - (strace_printf): New function providing an extern "C" interface to - trace output. - * include/sys/strace.h: Make plain C clean. - (class strace): Add `vprntf' method. - -Mon Feb 26 0:10:00 2001 Corinna Vinschen - - * shortcut.c: Remove #include . - -Sun Feb 25 10:32:00 2001 Corinna Vinschen - - * path.cc (symlink): Add a ".lnk" suffix regardless. Add a comment. - -Sun Feb 25 10:18:00 2001 Corinna Vinschen - - * shortcut.c (check_shortcut): Change symlink condition. - -Fri Feb 23 10:42:00 2001 Corinna Vinschen - - * mmap.cc (fhandler_disk_file::mmap): Use `addr' correctly. - * fhandler_mem.cc (fhandler_dev_mem::mmap): Ditto. - -Thu Feb 22 17:09:00 2001 Corinna Vinschen - - * path.cc (symlink): Keep relative paths relative in the DOS - path inside of a shortcut. If that's impossible or the target - path is already absolute save an absolute path. - -Thu Feb 22 15:33:00 2001 Corinna Vinschen - - * cygerrno.h: Revert previous patch. - * 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. - -Thu Feb 22 13:38:00 2001 Corinna Vinschen - - * shortcut.c: New file. Provides a C interface to reading of - 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'. - -Thu Feb 22 12:04:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_disk_file::open): Use `inner_suffixes' when - resolving real_path. - * path.cc (symlink): Ditto for win32_topath. - -Wed Feb 21 22:41:00 2001 Corinna Vinschen - - * Makefile.in: Add `-lshell32 -luuid' to link pass for new-cygwin1.dll. - * 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. - -2001-02-21 Egor Duda - - * sigproc.cc (getsem): Make semaphore always non-inheritable. - -Mon Feb 19 22:25:53 2001 Christopher Faylor - - * dcrt0.cc (locale_init): Remove. - -2001-02-15 Kazuhiro Fujieda - - * cygwin.din: Export rand48 functions. - * thread.cc (MTinterface::Init): Remove the initialization of - `reent_data'. - * dcrt0.cc: Add the initalizer to the declaration of `reent_data'. - * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 35. - -2001-02-16 Egor Duda - - * signal.cc (signal): Prohibit setting handlers for SIGKILL and - SIGSTOP - * signal.cc (sigaction): Ditto - * syscalls.cc (_lseek): Return EINVAL on invalid input - -Wed Feb 14 14:54:40 2001 Christophe Iasci - - * dlfcn.cc (dlopen): Do not call LoadLibrary with a NULL pointer, when - the library is not found - -2001-02-14 Egor Duda - - * fhandler_console.cc (fhandler_console::char_command): Ignore unknown - rendition codes in \033[xx;yym control sequences - -Fri Feb 9 23:19:01 2001 Christopher Faylor - - * fork.cc (fork_parent): Return EAGAIN when can't record pid. - * pinfo.h (pinfo::remember): Return value of call to proc_subproc. - * sigproc.cc (proc_subproc): Return error if can't record pid. - -Fri Feb 9 12:17:27 2001 Christopher Faylor - - * syscalls.cc (mknod): Add valid parameters. - -Thu Feb 8 22:09:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Check for reusing a mapping only on MAP_SHARED - and on MAP_PRIVATE|MAP_ANON in the special case of offset 0. - -Thu Feb 8 21:57:00 2001 Corinna Vinschen - - * mmap.cc (class list): Add member `hash'. - (list::list): Initialize `hash'. - (list::get_list_by_fd): Use filepath hash value to get the correct - mapping list if it's not an anonymous mapping. - (map::add_list): Initialize `hash' with filepath hash value. - (mmap): Check for reusing a mapping only on MAP_SHARED. - -Wed Feb 7 18:47:36 2001 Christopher Faylor - - * signal.cc (killpg): Correct first argument. - -Wed Feb 7 22:22:00 2001 Corinna Vinschen - - * autoload.cc: Add LoadDLLinitfunc for iphlpapi.dll. - Add LoadDLLfuncEx statements for GetIfTable@12 and GetIpAddrTable@12. - * fhandler_socket.cc (fhandler_socket::ioctl): Move variable - definitions to the beginning of the function to allow better debugging. - Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC and SIOCGIFMTU. - * net.cc: Include iphlpapi.h. - (get_2k_ifconf): Rewritten. Uses IP Helper API now. - (get_nt_ifconf): Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC - and SIOCGIFMTU. - (get_95_ifconf): Ditto. Renamed from `get_9x_ifconf'. - (get_ifconf): Name loopback `lo' instead of `lo0' as in Linux. - Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC and SIOCGIFMTU. - Call `get_95_ifconf' only on Windows 95, `get_nt_ifconf' only - on Windows NT < Service Pack 3, `get_2k_ifconf otherwise. - * include/asm/socket.h: Add defines for SIOCGIFHWADDR, SIOCGIFMETRIC - and SIOCGIFMTU. - * include/cygwin/if.h: Add `ifr_hwaddr', `ifr_metric' and `ifr_mtu'. - (struct ifreq): Add `ifru_hwaddr'. - -Tue Feb 6 15:04:00 2001 Corinna Vinschen - - * syscalls.cc (stat_worker): Add a check for the special case when - a process creates a file using mode 000 using ntsec. - -Mon Feb 5 17:00:00 2001 Corinna Vinschen - - * fhandler.cc (fhandler_base::open): Always add GENERIC_READ access - when opening raw disk devices. - * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Implement bytewise - access. - * fhandler_raw.cc (fhandler_dev_raw::open): Always open raw disk device - binary. - (fhandler_dev_raw::raw_write): Don't drop read buffer content when - writing after read. - -Mon Feb 5 13:30:00 2001 Corinna Vinschen - - * mmap.cc (mmap_record::fixup_map): New method to duplicate - the memory protection in a just forked child. - (mmap): Realign gran_len to page boundary only on anonymous - mapping before saving in the mmap_record. - (munmap): Cleanup code. - (msync): Ditto. - (fixup_mmaps_after_fork): Ditto. Call mmap_record::fixup_map now. - -Thu Feb 1 23:08:29 2001 Christopher Faylor - - * cygheap.cc (creturn): Correctly calculate cygheap_max. - -Wed Jan 31 10:04:58 2001 Christopher Faylor - - * shared.cc (shared_info::initialize): Reduce size of heap. - -Wed Jan 31 13:22:00 2001 Corinna Vinschen - - * include/sys/resource.h: Fix typo. - -Wed Jan 31 13:20:00 2001 Corinna Vinschen - - * include/sys/resource.h: Add RLIMIT_NLIMITS and RLIM_NLIMITS. - -Tue Jan 30 18:15:23 2001 Christopher Faylor - - * include/cygwin/version.h: Bump version to 1.3.0. - -Tue Jan 30 8:55:00 2001 Corinna Vinschen - - * pinfo.cc (pinfo::init): Use INVALID_HANDLE_VALUE instead of - explicit cast (HANDLE) 0xffffffff. - * shared.cc (open_shared): Ditto. - -Mon Jan 29 17:15:22 2001 Bill Hegardt - - * fhandler_serial.cc (raw_write): Use local copy of OVERLAPPED - structure instead of shared structure to fix a race condition between - read/write. - -Mon Jan 29 14:30:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Remove obsolete check for MAP_SHARED|MAP_ANON as - being invalid. - -Mon Jan 29 10:23:00 2001 Corinna Vinschen - - * mmap.cc (mmap_record::find_empty): Fix loop condition. - -Sun Jan 28 19:40:40 2001 Christopher Faylor - - * syscalls.cc (_link): Make sure that newpath does not exist. Set - errno if it does. - -Sun Jan 28 19:29:08 2001 Christopher Faylor - - * cygheap.cc (init_cheap): Don't specify a load address for the heap. - It doesn't work on #!*& Windows 9x. - (cygheap_init): Move GetUserName to memory_init. - * dcrt0.cc (dll_crt0_1): Call new memory_init functin, eliminate call - to heap_init. - * heap.cc (heap_init): Improve error output. - * heap.h: Correct some declarations. - * shared.cc (mount_table_init): Remove. - (memory_init): Renamed from shared_init. Reorganize to accommodate - strange Windows 9x problems with cygheap/heap interaction. - * shared_info.h: Rename shared_init to memory_init. - -Sun Jan 28 01:25:33 2001 Christopher Faylor - - * include/cygwin/version.h: Bump API version. - -Sun Jan 28 01:18:22 2001 Christopher Faylor - - * cygheap.cc (init_cheap): Move username initialization. - (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. - -Sun Jan 28 00:28:30 2001 Christopher Faylor - - Throughout, change 'cygwin_shared.mount' to 'mount_table'. - * 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. - -Sat Jan 27 10:18:02 2001 Christopher Faylor - - * path.cc (path_conv::check): Detect when path has symlinks. - (symlink_info::check): Remove debugging stuff. - (chdir): Use posix'ized win32 path if cd'ed to a path using symlinks. - -Fri Jan 26 21:20:28 2001 Christopher Faylor - - * exceptions.cc (sigreturn): Call any pending signals prior to - resetting the signal mask so that stacked signals behave correctly. - (sigdelayed): Avoid a race where a signal could end up calling an - incorrect signal handler if two signals come in close together. - -Tue Jan 23 21:56:00 2001 Corinna Vinschen - - * mmap.cc (fhandler_disk_file::mmap): Call CreateFileMapping with - len != 0 only when performing an anonymous mapping. - -Mon Jan 22 15:35:28 2001 Christopher Faylor - - * path.h: Add a new constant. - * syscalls.cc (_read): Oscillate errno check. - -Mon Jan 22 15:27:12 2001 Christopher Faylor - - * include/cygwin/version.h: Bump API to reflect setlogmask. - -Sun Jan 21 22:40:25 2001 Jason Tishler - - * cygwin.din: Add export for setlogmask(). - * syslog.cc (setlogmask): New function. - -Thu Jan 18 10:27:00 2001 Corinna Vinschen - - * resource.cc (setrlimit): Support RLIMIT_NOFILE. - -Wed Jan 17 23:23:12 2001 Christopher Faylor - - * syscalls.cc (setdtablesize): Call with amount to increment not total - amount. Return success or failure error code. - -Wed Jan 17 09:47:13 2001 Christopher Faylor - - * autoload.cc (LoadDLLinitfunc): Remove debugging statement. - - * exceptions.cc (sig_handle_tty_stop): Move setting of PID_STOPPED to - earlier in interrupt. - (interrupt_setup): i.e., here. - (sig_handle): Don't queue multiple SIGSTOPS. - * fhandler.h (bg_check_types): Enumerate return value of bg_check for - clarity. - * signal.cc (kill_pgrp): Minor cleanup. - * fhandler_termios.cc (fhandler_termios::bg_check): Use enumerated type - for function return. Don't raise signal if a signal is already queued. - * fhandler_console.cc (fhandler_console::read): Use enumerated return - type for bg_check. - * select.cc: Ditto, throughout. - * read.cc: Ditto, throughout. - * termios.cc: Ditto, throughout. - (_read): YA interrupt detect simplification. - * wait.cc (wait4): Ditto. - -Wed Jan 17 10:56:00 2001 Corinna Vinschen - - * cygheap.cc (cygheap_user::~cygheap_user): Temporarily - disable free'ing memory. - -Tue Jan 16 18:01:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Initialize fh to avoid compiler warnings. - -Mon Jan 15 21:07:00 2001 Christopher Faylor - - * wait.cc (wait4): Rename variable for consistency. Allow restartable - signal behavior. - -Mon Jan 15 23:15:00 2001 Corinna Vinschen - - * mmap.cc (mmap): Add more parameter checking. Change error output - in case of EINVAL. Treat mmapping /dev/zero like MAP_ANONYMOUS. - -Mon Jan 15 20:34:00 2001 Corinna Vinschen - - * mmap.cc: include . Define some bit operations for - the new page map. - (mmap_record): Change type of base_address_ to caddr_t. - Add map_map_ member. Add several methods to manipulate map_map_. - (mmap_record::alloc_map): New method. - (mmap_record::free_map): Ditto. - (mmap_record::find_empty): Ditto. - (mmap_record::map_map): Ditto. - (mmap_record::unmap_map): Ditto. - (list::add_record): Change return type to `mmap_record *'. - Allocate page map. - (list::match): New method. - (mmap): Partly rewritten to take care for the new page map. Add some - parameter checking. - (munmap): Ditto. - -Mon Jan 15 13:50:00 2001 Corinna Vinschen - - * heap.cc (heap_init): Fix extern declaration of getpagesize. - * syscalls.cc (getpagesize): Fix another typo. - -Mon Jan 15 12:48:00 2001 Corinna Vinschen - - * syscalls.cc (getpagesize): Save pagesize in global variable to - avoid calling GetSystemInfo too often. - * heap.cc (getpagesize): Eliminate. - (heap_init): Use getpagesize function from syscalls.cc. - -Mon Jan 15 11:56:00 2001 Corinna Vinschen - - * sysconf.cc (sysconf): return `getpagesize ()' on _SC_PAGESIZE - request to avoid implementing the same twice. - -Sun Jan 14 14:07:50 2001 Christopher Faylor - - * syscalls.cc (_read): Use more lightweight method for determining if - read has been interrupted by a signal. - -Fri Jan 12 00:35:15 2001 Christopher Faylor - - * debug.h: Add regparm attributes to some functions. - - * signal.cc (sigaction): Don't treat SIGCONT specially. - - * exceptions.cc (interrupt_setup): Save sa_flags of interrupted signal - for later use. - (sig_handler): Default any stopping signal to SIGSTOP. - (call_signal_handler): New function. - (sigdelayed0): New function. - * sigproc.cc (sigproc_init): Initialize SIGSTOP sigaction for special - behavior. - * sigproc.h: Define call_signal_handler. - * syscalls.cc (_read): Allow restartable signal behavior. - -Thu Jan 11 13:17:00 2001 Corinna Vinschen - - * fhandler.h (fhandler_base): New method `fixup_mmap_after_fork'. - (fhandler_disk_file: Ditto. - (fhandler_dev_mem): Ditto. - * fhandler_mem.cc (fhandler_dev_mem::open): Set OBJ_INHERIT attribute - for device\physicalmemory handle. - (fhandler_dev_mem::mmap): Ditto. - * fhandler_mem.cc (fhandler_dev_mem::fixup_mmap_after_fork): New - method. - * mmap.cc (mmap_record): Add private `fdesc_' member. Change - constructor accordingly. - (get_fd): New method. - (mmap): Use new mmap_record constructor. - (fhandler_base::fixup_mmap_after_fork): New method. - (fhandler_disk_file::fixup_mmap_after_fork): Ditto. - (fixup_mmaps_after_fork): Call `fixup_mmap_after_fork' of appropriate - fhandler class. - -Wed Jan 10 22:08:30 2001 Kazuhiro Fujieda - - * sigproc.cc (wait_sig): Allow SIGCONT when stopped. - -Tue Jan 9 16:55:00 2001 Corinna Vinschen - - Patch suggested by René Møller Fonseca - * include/sys/socket.h: Change prototype to have 2nd parameter `const'. - * net.cc (cygwin_bind): Change 2nd parameter to `const'. - -Sun Jan 7 22:59:37 2001 Christopher Faylor - - * pinfo.cc (codepage_init): Move function. - * environ.cc (codepage_init): To here. - * exceptoins.cc (SIG_NONMASKABLE): Remove SIGCONT from consideration - since it is supposed to be maskable. - * signal.cc (sigaction): Ditto. - * sigproc.cc (wait_sig): Ditto. - * winsup.h: Eliminate global declaration of codepage_init. - -Thu Jan 5 9:33:00 2001 Corinna Vinschen - - * resource.cc (getrlimit): Set errno on EFAULT instead of returning - it. - (setrlimit): Ditto. - -Thu Jan 5 3:38:00 2001 David Sainty - - * resource.cc (setrlimit): Prevent failing with an error when the - operation would not have changed anything. - -Thu Jan 4 10:29:54 2001 Earnie Boyd - - * thread.cc: Need LONG_MAX definition. - -Wed Jan 3 13:47:23 2001 Christopher Faylor - - * thread.cc (MTinterface::CreateSemaphore): Correctly set semaphore - max. - -Wed Jan 3 09:44:51 2001 Christopher Faylor - - * fhandler_console.cc (fhandler_console::read): Restore missing test - for code page before doing OemToCharBuff. - -Wed Jan 3 09:20:20 2001 Jason Tishler - - * include/cygwin/version.h: Fix typo in CYGWIN_VERSION_DLL_COMBINED - macro. +2002-01-01 Corinna Vinschen + + * fhandler.h (fhandler_socket::sun_path): New private member. + (fhandler_socket::set_sun_path): New method. + (fhandler_socket::get_sun_path): Ditto. + * fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize + sun_path to NULL. + (fhandler_socket::~fhandler_socket): Free sun_path if needed. + (fhandler_socket::set_sun_path): New method. + * net.cc (cygwin_bind): Set sun_path to path of local socket file. + (cygwin_getsockname): Add code to return correct sockaddr for unix + domain sockets. diff --git a/winsup/cygwin/ChangeLog-2001 b/winsup/cygwin/ChangeLog-2001 new file mode 100644 index 000000000..0f7564f9f --- /dev/null +++ b/winsup/cygwin/ChangeLog-2001 @@ -0,0 +1,5333 @@ +2001-12-30 Christopher Faylor + + * include/getopt.h: Fix define. + +2001-12-30 Christopher Faylor + Ralf Habacker + + * speclib: New file. + * Makefile.in: Create library versions of automode.o, textmode.o, and + binmode.o for easier use on command line. Create libpthread.a, libm.a, + and libc.a with subsets of exports found in libcygwin.a. + +2001-12-30 Ralf Habacker + + * cygmagic: Eliminate unneeded use of 'tr' and 'bc'. + +2001-12-30 Corinna Vinschen + + * security.cc (open_local_policy): Use POLICY_EXECUTE instead of + enumerating user rights. + +2001-12-29 Corinna Vinschen + + * security.cc (open_local_policy): Initialize lsa handle to NULL. + Request only needed access rights in call to LsaOpenPolicy(). + (create_token): Check for NULL lsa pointer. + +2001-12-28 Corinna Vinschen + + * cygwin.din: Add symbols for endutent(), getutent(), getutid(), + getutline(), setutent() and utmpname(). + * syscalls.cc (setutent): New function. + (endutent): Ditto. + (utmpname): Ditto. + (getutent): Ditto. + (getutid): Ditto. + (getutline): Ditto. + * include/cygwin/version.h: Bump API minor version. + +2001-12-26 Christopher Faylor + + * cygmagic: Add define name to warning. + * dcrt0.cc (_dll_crt0): Check for changes in child_info size. + (multiple_cygwin_problem): Avoid "proc" errors when testing. Just + assume new cygwin proc. + * shared_info.h (mount_info): Add 'cb' element for sanity checks. + (shared_info): Ditto. + * child_info.h (child_info): Add fhandler_union_size element for sanity + checking. + * shared.cc (open_shared): Detect shared region size mismatch between + parent and child. + (shared_info::initialize): Detect shared region size mismatch with + expectation. + (memory_Init): Ditto. + * sigproc.cc (init_child_info): Correctly set cb in passed structure. + * shared.cc (open_shared): + +2001-12-26 Christopher Faylor + + * include/getopt.h: Protect a declaratin. + +2001-12-26 Robert Collins + + * thread.cc (pthread_cond::Signal): Use a separate flag for signal + detection and broadcast semantics. + (__pthread_cond_dowait): Ditto. + * thread.h (pthread_cond): New flag for testing when a waiter has + woken. + +2001-12-26 Christopher Faylor + + * Makefile.in: Quote arguments to shell scripts. + (clean): Remove new *_magic.h autogenerated files. + +2001-12-25 Christopher Faylor + + * Makefile.in: Autogenerate some header files which provide magic + numbers. Force dependencies for files which depend on autogenerated + headers to ensure that they are always built. + * child_info.h (child_info): Add new fields to accommodate new magic + number header stuff. + * dcrt0.cc: Rely on "child_info_magic.h" to ensure that correct + child_info magic numbers are used. + (dll_crt0_1): Temporarily remove _cygwin_testing_magic test. + (_dll_crt0): Do more testing on magic numbers from fork_info structure. + Call "multiple_cygwin_problem" where appropriate. + (multiple_cygwin_problem): Rename from multiple_cygwin_die. Issue a + warning or die, as appropriate based on cygwin version/magic number + mismatch. + * pinfo.cc (pinfo::exit): Don't attempt to dereference `this' if it + doesn't exist. This can happen when a fatal error occurs early in + process initialization. + * shared.cc: Rely on "shared_info_magic.h" to accommodate that new + magic number header stuff. + (shared_info::initialize): Use new magic number stuff, for shared + region. + (memory_init): Ditto, for mount table. + * shared_info.h: Accomodate new magic number stuff for shared region + and mount table. + * sigproc.cc: Rely on "child_info_magic.h" to accommodate new magic + number header stuff. + (init_child_info): Initialize new fields in child_info) to accomodate + magic numbers. + * winsup.h: Rename multiple_cygwin_die to multiple_cygwin_problem. + * include/cygwin/version.h: Define macros for manipulating version + magic. + * cygmagic: New shell script for generating magic numbers. + +2001-12-20 Christopher Faylor + + * include/cygwin/version.h: Bump API minor version for below changes. + +2001-12-19 Christopher Faylor + + * Makefile.in (VPATH): Add regex directory. + (NM): new variable. + (OBSOLETE_FUNCTIONS): Ditto. + (NEW_FUNCTIONS): Ditto. + (install-headers): Install regex.h. + (install-man): New target. + (install): Use new target. + (DLL_OFILES): Add v8_reg* stuff. + (new-cygwin1.dll): Eliminate stamp-cygwin-lib creation. + (libcygwin.a): Remove obsolete functions from import lib. Add new functions. + * configure.in: Detect 'nm' tool. + * configure: Regenerate. + * cygwin.din: Export posix_reg* functions. Eliminate export of v8 reg* functions. + This is now handled in object files themselves. + * regex/*: New files. + * regexp/v8_*.c: New files, renamed from non v8_ equivalents. + +2001-12-17 Corinna Vinschen + + * include/getopt.h: Don't define getopt_long() and friends when + included through unistd.h. + +2001-12-17 Christopher Faylor + + * dtable.cc (dtable::init_std_file_from_handle): Avoid initializing + using an invalid handle. + +2001-12-16 David Billinghurst + + * include/limits.h: Define LLONG_MIN, LLONG_MAX, ULLONG_MAX. + +2001-12-11 Christopher Faylor + + * include/getopt.h: Add HAVE_DECL_GETOPT to save pain elsewhere. + +2001-12-10 Christopher Faylor + + * fhandler.h (fhandler_serial::ev): New class member. + * fhandler_serial.cc (fhandler_serial::raw_read): Use class member for + event status. + * select.cc (peek_serial): Ditto. + +2001-12-07 Christopher Faylor + + * path.cc (path_conv::check): Use full path name for determining + attributes when /cygdrive/x/foo. + +2001-12-06 Christopher Faylor + + * path.cc (path_conv::check): Reset FH_CYGDRIVE if iterating through + path. + +2001-12-06 Christopher Faylor + + * path.cc (path_conv::check): Don't complain if /dev/x/foo when x + doesn't exist. + (mount_info::conv_to_win32_path): Keep translating when a /cygdrive is + found. Don't attempt to translate to a device name when devn == + FH_CYGDRIVE. + (cygwin_conv_to_win32_path): Set buffer to empty on error. + (cygwin_conv_to_full_win32_path): Ditto. + + * window.cc: Include unistd.h to verify definitions. + +2001-12-05 Christopher Faylor + + * dir.cc (opendir): Detect error return from build_fhandler_from_name. + +2001-12-04 David Rothenberger + + * net.cc (cygwin_getsockopt): Dereference optlen pointer when passing + to __check_null_invalid_struct_errno. + +2001-12-03 Christopher Faylor + + * net.cc (cygwin_getsockopt): Allow NULL optval. + (cygwin_setsockopt): Ditto. + (cygwin_recvfrom): Allow NULL from. + + * path.cc (mount_info::read_cygdrive_info_from_registry): Don't write + cygdrive to registry if it doesn't exist. + +2001-12-03 Christopher Faylor + + * path.cc (mount_info::conv_to_win32_path): Avoid returning error if + cygdrive == '/'. + (mount_info::cygdrive_win32_path): Return 0 if invalid cygdrive path. + +2001-11-30 Christopher Faylor + + * debug.cc (makethread): Eliminate unneeded function call. + * miscfuncs.cc (tls_ix): Predefine. + * perthread.h (set_reent): Eliminate. + (get_reent): Ditto. + * winbase.h (my_tlsalloc): Use global stack base pointer. Set newly + allocated location to NULL. + (my_tlssetvalue): Use global stack base pointer. + (my_tlsgetvalue): Ditto. + +2001-11-27 Christopher Faylor + + * winsup.h: Reorganize to avoid use of experimental stuff. + * shortcut.cc: Move winsup.h first in include order. + +2001-11-27 Christopher Faylor + + * cygwin.din (ualarm): New export. + * dcrt0.cc (_dll_crt0): Add experimental tls storage declaration. + (dll_crt0): Ditto. + * debug.cc (thread_stub): Ditto. + * thread.cc: Minor cleanup. + (__pthread_create): Add experimental tls storage declaration. + * miscfuncs.cc: Define tls index. + * winsup.h: Declare experimental tls storage. + + * window.cc (alarm): Use old timer return from setitimer. + (ualarm): New function. From Alexandr V. Shutko. + +2001-11-26 Christopher Faylor + + * Makefile.in (libcygwin.a): Use ar commands to build libcygwin.a since + adding an archive doesn't work the way we want it to. + +2001-11-24 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_cygdrive::readdir): Avoid reporting + inaccessible drives. + +2001-11-24 Corinna Vinschen + + * net.cc (cygwin_hstrerror): Allow s == NULL. + (cygwin_rcmd): Add parameter checking. + (cygwin_rexec): Ditto. + +2001-11-24 Corinna Vinschen + + * net.cc (cygwin_inet_ntoa): Add parameter checking. + (cygwin_inet_network): Return INADDR_NONE instead of 0 in case of + EFAULT. + (cygwin_hstrerror): Add parameter checking. + (cygwin_rresvport): Ditto. + (socketpair): Ditto. + * winsup.h (check_null_str): Add extern declaration. + +2001-11-24 Christopher Faylor + + * path.cc (path_conv::check): Tighten FH_CYGDRIVE check to avoid + matching trailing component, like other devices. + +2001-11-24 Christopher Faylor + + * autoload.cc (IsDebuggerPresent): Make conditional load since it is + not available everywhere. + + * path.cc (mount_info::conv_to_win32_path): Only consider /cygdrive to + be FH_CYGDRIVE, not /cygdrive/x. + +2001-11-24 Christopher Faylor + + * net.cc (inet_makeaddr): Revert previous change. + +2001-11-23 Christopher Faylor + + * path.cc (chdir): Allow 'cd /cygdrive'. + +2001-11-23 Christopher Faylor + + * dtable.cc (dtable::vfork_parent_restore): Add debugging statement. + + * exceptions.cc (try_to_debug): Spin only as long as we don't have a + debugger attached. + + * fhandler.h (fhandler_base::set_nohandle): New method. + (fhandler_base::get_nohandle): New method. + * fhandler.cc (fhandler_base::dup): Avoid duplicating handle if there + is no handle. + * fhandler_disk_file.cc (fhandler_disk_file::opendir): Set nohandle + flag on dummy fd. + +2001-11-23 Christopher Faylor + + * Makefile.in: Make intermediate library for eventual inclusion in + libcygwin.a + + * fhandler.h (fhandler_pipe::fhandler_pipe): Remove default argument + setting since it is no longer used. + + * miscfuncs.cc (check_null_str): New function. + (check_null_str_errno): Ditto. + * net.cc: Add defensive buffer checking throughout. + (cygwin_sendto): Protect against invalid fd. + (cygwin_recvfrom): Ditto. + (cygwin_getpeername): Ditto. + (cygwin_recv): Ditto. + (cygwin_send): Ditto. + * winsup.h: Declare a new function. + +2001-11-23 Corinna Vinschen + + * select.cc (set_bits): Fix conditional for setting fd in exceptfds. + * dtable.cc (dtable::build_fhandler): Create fhandler_pipe using + correct device type. + * path.cc (get_devn): Set correct pipe device type from device name. + +2001-11-22 Christopher Faylor + + * path.cc (conv_path_list): Fix wild indexing into path due to + conflicting methods for setting src pointer. + + * dir.cc (opendir): Only pass path_conv argument to opendir, since name + is already part of the fhandler. + * dtable.cc (dtable::build_fhandler): Accomodate new FH_CYGDRIVE type. + * fhandler.cc (fhandler_base::opendir): Nuke name argument. + * fhandler.h: Add FH_CYGDRIVE to "device" enum. + (fhandler_base::opendir): Nuke name argument. + (fhandler_disk_file::opendir): Ditto. + (fhandler_disk_file::fhandler_disk_file): Declare new method which + passes devtype through. + (fhandler_cygdrive): Add elements for tracking drives. + (fhandler_cygdrive::set_drives): Declare new method. + (fhandler_cygdrive::iscygdrive_root): Declare new method. + (fhandler_cygdrive::opendir): Declare new method. + (fhandler_cygdrive::readdir): Declare new method. + (fhandler_cygdrive::telldir): Declare new method. + (fhandler_cygdrive::seekdir): Declare new method. + (fhandler_cygdrive::rewinddir): Declare new method. + (fhandler_cygdrive::closedir): Declare new method. + (fhandler_cygdrive::fstat): Declare new method. + * fhandler_disk_file.cc (fhandler_disk_file::fhandler_disk_file): + Define new method which passes devtype through. + (fhandler_disk_file::open): Tweak debug output. + (fhandler_disk_file::opendir): Nuke first argument. Use info from + path_conv and class rather than calling fstat. + (fhandler_cygdrive::set_drives): New method. + (fhandler_cygdrive::iscygdrive_root): New method. + (fhandler_cygdrive::opendir): New method. + (fhandler_cygdrive::readdir): New method. + (fhandler_cygdrive::telldir): New method. + (fhandler_cygdrive::seekdir): New method. + (fhandler_cygdrive::rewinddir): New method. + (fhandler_cygdrive::closedir): New method. + (fhandler_cygdrive::fstat): New method. + * path.cc (iscygdrive_device): Assume cygdriveness is already verified. + (path_conv::check): Treat FH_CYGDRIVE "method" as a special case, + setting file attributes as needed. + (mount_info::conv_to_win32_path): Allow stand-alone /cygdrive, meaning + "the directory which contains all of the drives on the system". + (fillout_mntent): Use cyg_tolower for conversions. + (mount_info::cygdrive_win32_path): Replace unused argument with unit + number. + * shared_info.h (mount_info::cygdrive_win32_path): Reflect argument + change. + +2001-11-21 Christopher Faylor + + * Makefile.in (DLL_OFILES): Add fhandler_disk_file.o. + * cygheap.h (cygheap_fdnew::operator =): New operator. + * dir.cc: Add invalid struct checking throughout. Use methods for all + directory manipulation throughout. + * fhandler.cc: Move fhandler_disk_file stuff to own file. + (fhandler_base::opendir): New method. + (fhandler_base::readdir): New method. + (fhandler_base::telldir): New method. + (fhandler_base::seekdir): New method. + (fhandler_base::rewinddir): New method. + (fhandler_base::closedir): New method. + * fhandler_disk_file.cc: New file. + * fhandler.h (fhandler_base): Declare new virtual methods. + (fhandler_disk_file): Ditto. + (fhandler_cygdrive): New class. + + * path.cc (conv_path_list): Use strccpy to break apart path. + +2001-11-17 Nick Duffek + + * path.cc (conv_path_list): Copy source paths before modifying them. + +2001-11-17 Corinna Vinschen + + * fhandler_raw.cc (fhandler_dev_raw::clear): Don't reset unit. + * fhandler_tape.cc (fhandler_dev_tape::fhandler_dev_tape): Add debug + output. + +2001-11-15 Egor Duda + + * include/pthread.h (PTHREAD_COND_INITIALIZER): Define. + * thread.cc (__pthread_cond_destroy): Add support for + PTHREAD_COND_INITIALIZER. + (__pthread_cond_init): Ditto. + (__pthread_cond_broadcast): Ditto. + (__pthread_cond_signal): Ditto. + (__pthread_cond_dowait): Ditto. + (__pthread_mutex_init): Handle PTHREAD_MUTEX_INITIALIZER correctly, + don't return error when it's passed as parameter. + * winsup.h (check_null_invalid_struct): Call correct function. + +2001-11-14 Christopher Faylor + + * exceptions.cc: Add stdlib.h include for alloca declaration. + * poll.cc: Ditto. + * termios.cc: Ditto. + +2001-11-14 Christopher Faylor + + * syscalls.cc (_write): Only allow zero length when fd is valid. + +2001-11-14 Corinna Vinschen + + * fhandler.cc (fhandler_disk_file::fstat): Add setting access time + and creation time to last modification time for files on filesystems + not supporting multiple timestamps. + (fhandler_disk_file::fstat_helper): Set access time and creation + time in incoming Windows structure instead of in stat buf to avoid + incorrectly overwriting Epoch timestamp. + +2001-11-14 Corinna Vinschen + + * winsup.h: Remove alloca definition since it's now defined through + inclusion of stdlib.h. + * lib/cygwin_crt0.c: Ditto. + +2001-11-13 Christopher Faylor + + * syscalls.cc (_write): Allow zero length as per SUSv2. + +2001-11-13 Corinna Vinschen + + * dir.cc (mkdir): Add HIDDEN file attribute if file has leading dot + and HIDDEN_DOT_FILES is defined. + * fhandler.cc (fhandler_base::open): Ditto. + * path.cc (symlink): Ditto. + * syscalls.cc (_rename): Ditto and remove HIDDEN file attribute if + new filename does not begin with a dot. + +2001-11-12 Christopher Faylor + + * fhandler_console.cc (fhandler_console::read): Revert 2001-10-23 + change to only honor keydown events. + +2001-11-11 Christopher Faylor + + * include/cygwin/version.h: Bump version to 1.3.6. + +2001-11-10 Christopher Faylor + + * dtable.cc (dtable::build_fhandler): Don't increment console fd count + if new operation fails. Increment fork_fixup field here. + (dtable::dup2): Don't increment fork_fixup field here. + * net.cc (fdsock): Ditto. + +2001-11-08 Corinna Vinschen + + * select.cc: Set errno using set_sig_errno() throughout. + * signal.cc (signal): Always set SA_RESTART flag. + * syscalls.cc (_read): Revert previous patch. + +2001-11-08 Corinna Vinschen + + * select.cc (fhandler_tty_slave::ready_for_read): Return 0 on EBADF. + * syscalls.cc (_read): If ready_for_read() failed, save errno from + being overwritten by signal handler call. + +2001-11-07 Corinna Vinschen + + * lib/getopt.c (getopt_internal): Reset optind to 1 only if optreset + is not set. + +2001-11-06 Christopher Faylor + + * select.cc (fhandler_tty_slave::ready_for_read): Correct inverted + not_open test. + +2001-11-05 Christopher Faylor + + * include/cygwin/version.h: Bump version to 1.3.5. + +2001-11-05 Corinna Vinschen + + * mmap.cc (mmap_record::find_empty): Add input parameter check. + +2001-11-04 Christopher Faylor + + * dtable.cc (dtable::build_fhandler): Fix debug_printf to avoid SEGV + due to incorrect parameter placement. + +2001-11-04 Christopher Faylor + + * fhandler.h (fhandler_pipe::broken_pipe): Renamed from saweof. + (fhandler_pipe::set_eof): Reflect above change. + * pipe.cc (fhandler_pipe::fhandler_pipe): Ditto. + (fhandler_pipe::read): Ditto. + (fhandler_pipe::hiteof): Ditto. + +2001-11-04 Christopher Faylor + + * pipe.cc (fhandler_pipe::read): Narrow eof return to just the "broken + pipe" test. + +2001-11-04 Christopher Faylor + + * select.cc: Add more comments throughout. Use bool 'true' where + appropriate throughout. + (fhandler_socket::select_read): Remove duplicate setting for *_ready + which inadvertently overrode previous, correct setting. + (fhandler_socket::select_write): Ditto. + +2001-11-03 Christopher Faylor + + * select.cc (verify_console): New function. + (verify_windows): Ditto. + (fhandler_console::select_read): Really do need to verify that there is + something to read. + (fhandler_console::select_windows): Ditto. + +2001-11-03 Christopher Faylor + + * fhandler.h (fhandler_base::ready_for_read): Remove unused argument. + (fhandler_tty_slave::ready_for_read): Ditto. + (select_record): Remove poll, initialize peek. + * select.cc: Remove all poll functions, throughout. Change second + argument of peek_* functions to 'bool' throughout. Specifically + initialize *_ready variables throughout. + (select_stuff::poll): Subsume previous poll functionality. + (peek_pipe): Don't grab guard mutex when in select loop. + select()/read() is racy by design so there is no need to worry about a + race in select(). + (fhandler_base::ready_for_read): Remove unused argument. + (fhandler_tty_slave::ready_for_read): Ditto. + * syscalls.cc (_read): Eliminate third argument in ready_for_read call. + +2001-11-03 Corinna Vinschen + + * security.cc (get_supplementary_group_sidlist): New function. + (get_group_sidlist): Call get_supplementary_group_sidlist() to + retrieve list of supplementary groups SIDs from /etc/group and + add them to the user's group list. + +2001-11-03 Christopher Faylor + + * fhandler.cc (fhandler_base::read): Return just read ahead characters + if slow device. + * fhandler.h (fhandler_base::set_eof): New virtual method. + (fhandler_pipe::set_eof): New method. + * pipe.cc (fhandler_pipe::fhandler_pipe): Clear saweof flag. + (fhandler_pipe::read): Return immediately if hit eof. + (fhandler_pipe::hit_eof): Return true if saweof flag is set. + * select.cc (peek_pipe): Don't call PeekNamedPipe if we couldn't grab + the guard mutex. + +2001-11-02 Egor Duda + + * dll_init.h (class dll_list): Reorder functions to avoid compiler + "can't inline" warnings. + * security.h (class cygsid): Ditto. + * sigproc.cc (get_proc_lock): Ditto. + * sigproc.h (class sigframe): Ditto. + * sync.h (class muto): Ditto. + +2001-11-02 Christopher Faylor + + * fhandler.h (fhandler_base::get_guard): Actually MAKE virtual as + previously indicated. + * pipe.cc (make_pipe): Remove extraneous set_errno. + * syscalls.cc (_open): Ditto. + * select.cc (peek_pipe): Need to check that there is still something to + read from the pipe after acquiring the mutex since another + process/thread could have eaten the input before we got to acquiring + the lock. (Thanks to Nick Duffek for this inspiration.) + +2001-11-01 Christopher Faylor + + * fhandler.h: Change Windows 'BOOL's to c++ 'bool's for all variables. + * select.cc (fhandler_base::ready_for_read): Set read_ready to zero + prior to testing it or it will be uninitialized. + + * Makefile.in (CFLAGS): Move setting to Makefile.common. + +2001-11-01 Christopher Faylor + + * cygheap.h (cygheap_fdmanip::isopen): Set appropriate errno if fd not + open. + * select.cc (fhandler_base::ready_for_read): Release an open guard + mutex when exiting with an error condition. + * syscalls.cc (_read): Check frequently for closed fd as a kludge until + something better is invented. + +2001-11-01 Christopher Faylor + + * dtable.cc (dtable::build_fhandler): Issue internal error on unknown + device. + * fhandler.cc (fhandler_base::close): Show both name and handle in + debugging output. + + * fhandler.h (fhandler_base::get_guard): New virtual method. + (fhandler_pipe::get_guard): New method. + (fhandler_socket::ready_for_read): Delete declaration. + (fhandler_pipe::ready_for_read): Ditto. + (fhandler_serial::ready_for_read): Ditto. + (fhandler_console::ready_for_read): Ditto. + (fhandler_tty_common::ready_for_read): Ditto. + (fhandler_windows::ready_for_read): Ditto. + (struct select_record::peek): Declare new method. + * select.cc (MAKEready): Delete. + (peek_pipe): Use get_guard method to retrieve potential guard mutex + handle. + (fhandler_base::ready_for_read): Rewrite as generic ready-for-read + handler. Should only be called for "slow" devices. + (fhandler_socket::ready_for_read): Delete definition. + (fhandler_pipe::ready_for_read): Ditto. + (fhandler_serial::ready_for_read): Ditto. + (fhandler_console::ready_for_read): Ditto. + (fhandler_tty_common::ready_for_read): Ditto. + (fhandler_windows::ready_for_read): Ditto. + (fhandler_pipe::select_read): Fill in new peek record in select_record + structure. + (fhandler_console::select_read): Ditto. + (fhandler_tty_common::select_read): Ditto. + (fhandler_serial::select_read): Ditto. + (fhandler_socket::select_read): Ditto. + (fhandler_socket::select_read): Ditto. + (fhandler_tty_slave::ready_for_read): Check for tty not open. Set + errnos appropriately. + * syscalls.cc (_read): Allow ready_for_read to set errno. + + * pinfo.cc (pinfo::init): Return spawn/NO_WAIT process as valid if it + is initializing. + * sigproc.cc (getsem): Adjust wait for process to initialize downward + to avoid huge waits. + +2001-10-31 Christopher Faylor + + * environ.cc: Set reset_com to false to mimic linux behavior more + closely. + +2001-10-31 Corinna Vinschen + + * dtable.cc (dtable::vfork_child_dup): Revert impersonation + before duplicating fhandler. + +2001-10-30 Christopher Faylor + + * exceptions.cc (signal_exit): Weight the odds against the main thread + running when signal thread is exiting. + +2001-10-30 Christopher Faylor + + * sigproc.cc (sigproc_terminate): Don't signal main thread when exiting. + * sigproc.h (sigframe): Decorate some methods with `inline'. + (new_muto): Coerce pointer to new to void *. + +2001-10-30 Christopher Faylor + + * fhandler.cc (fhandler_base::fork_fixup): Pass old handle to + setclexec_pid. + +2001-10-30 Christopher Faylor + + * cygheap.h (cygheap_fdmanip::cygheap_fdmanip): Clear fh. + (cygheap_fdmanip::isopen): New method. + * syscalls.cc (_read): Avoid accessing closed fd. + + * path.h (fe_types): New enum. + (path_conv::set_path): New method. + (find_exec): Change null_if_not_found argument to something more + generic. + * spawn.cc (find_exec): Default to returning the POSIX path rather than + the windows path, unless instructed otherwise. + (spawn_guts): Force call to find_exec to use native paths. + * dlfcn.cc (check_path_access): Accommodate new find_exec arguments. + * environ.h (win_env::get_posix): New method. + +2001-10-30 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::close): Add error handling. + +2001-10-30 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::dup): Revert previous change. + +2001-10-30 Christopher Faylor + + * dtable.cc (dtable::dup2): Add some debugging. Use methods from + passed in class rather than cygheap->fdtab. + * fhandler_socket.cc (fhandler_socket::fixup_before_fork_exec): Add + more debugging output. + (fhandler_socket::dup): Allocate new space for prot_info_ptr for + duplicated entry. + (fhandler_socket::close): Loop closesocket() as long as WSAEWOULDBLOCK + is returned. + * syscalls.cc (stat_worker): Always delete fh if it has been created. + +2001-10-29 Corinna Vinschen + + * security.cc (is_group_member): Call NetLocalGroupGetMembers() for + local machine only. + (get_user_local_groups): Ditto for NetLocalGroupEnum(). + +2001-10-29 Christopher Faylor + + * fhandler.cc (fhandler_base::set_name): Set namehash here to catch + name changes. + (fhandler_base::open): Remove namehash setting. + (fhandler_base::fstat): Subtract 1 from arbitrary time setting to avoid + strange ls -l granularity problem. + +2001-10-29 Christopher Faylor + + * select.cc (MAKEready): Remove extraneous select_read. + +2001-10-29 Corinna Vinschen + + * uinfo.cc (internal_getlogin): Set environment variable $HOME + from either /etc/passwd or $HOMEDRIVE/$HOMEPATH if necessary. + +2001-10-29 Christopher Faylor + + * fhandler.h (fhandler_serial::fhandler_serial): Change to only accept + unit argument. + * fhandler_serial.cc (fhandler_serial::fhandler_serial): Ditto. + (fhandler_serial::open): Avoid else when previous clause is a return(). + * path.cc (get_devn): Alias /dev/ttyS0 -> /dev/com1, etc. + (get_device_number): Reallow standalone "com1" as a valid name for + /dev/com1. + +2001-10-26 Christopher Faylor + + * select.cc (MAKEready): Check for read_ready in loop since select_read + could set it. + (peek_socket): Check ready/write/except specifically since they could + have been set even prior to peek_socket call. + +2001-10-24 Christopher Faylor + + * shared_info.h (MOUNT_VERSION): Change to a smaller, still arbitrary + number. + * shared.cc (open_shared): Accept a number to denote the shared memory + region. + (memory_init): Use shared memory version as part of the object name of + the shared region. Ditto for the mount table. + * path.cc (CYGWIN_REGNAME): New define used in place of + CYGWIN_INFO_CYGWIN_REGISTRY_NAME throughout. + * external.cc (cygwin_internal): Implement CW_[GS]ET_CYGWIN_REGISTRY_NAME. + * cygheap.h (init_cygheap::cygwin_regname): New element. + +2001-10-23 Christopher Faylor + + Ensure that all fhandler_*::read definitions are __stdcall throughout. + * fhandler.cc (fhandler_base::set_inheritance): Be more defensive in + debugging code. + * fhandler.h: Adjust regparms throughout to reflect passing 'this' + parameter. + * fhandler_console.cc (fhandler_console::read): Remove unneeded test. + Only honor "key down" events. + * miscfuncs.cc (strcasestr): Reorganize for efficient code use. + (check_null_empty_str_errno): Ditto. + (__check_null_invalid_struct_errno): Ditto. + (__check_invalid_read_ptr_errno): Ditto. + * syscalls.cc (_read): Return 0 when length == 0, as per Single UNIX + Specification. + +2001-10-22 Christopher Faylor + + * debug.cc (set_errno): Return value of errno that was set, just like + the macro. + (setclexec_pid): Replace old handle with new handle. + * debug.h: Reflect change in arguments for setclexec_pid. + * fhandler.cc (fhandler_base::set_inheritance): Ditto. + (fhandler_base::fork_fixup): Ditto. + * cygerrno.h: Reflect return value change for set_errno. + +2001-10-22 Christopher Faylor + + Remove 'cb' parameter and modify fhandler_* constructors throughout. + * dtable.cc (dtable::build_fhandler): Remove debugging output which + uses 'cb'. + * exec.cc (execvp): New function. + (execvpe): Ditto. + * fhandler.cc (fhandler_base::fhandler_base): Use constructor + initialization. + * fhandler.h (fhandler_tty_common::fhandler_tty_common): Ditto. + * fhandler_clipboard.cc (fhandler_dev_clipboard::fhandler_dev_clipboard): + Ditto. + * fhandler_console.cc (fhandler_console::fhandler_console): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::fhandler_dev_raw): Ditto. + * fhandler_serial.cc (fhandler_serial::fhandler_serial): Ditto. + * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Ditto. + (fhandler_tty_slave::fhandler_tty_slave): Ditto. + (fhandler_pty_master::fhandler_pty_master): Ditto. + * fhandler_windows.cc (fhandler_windows::fhandler_windows): Ditto. + +2001-10-22 Corinna Vinschen + + Patch suggested by Ian Ray : + * syscalls.cc (seteuid): Unset environment variables HOMEDRIVE and + HOMEPATH before calling internal_getlogin(). + * uinfo.cc (internal_getlogin): Use default HOMEPATH and HOMEDRIVE + from environment if both are present, else query NetUserGetInfo(). + +2001-10-22 Corinna Vinschen + + * net.cc (get_2k_ifconf): Change multiple IP address naming scheme + to Linux style. + +Sun Oct 21 19:04:37 2001 Alexander Gottwald + + * net.cc (get_2k_ifconf): Added support for multiple IP addresses on + one interface. + +2001-10-22 Corinna Vinschen + + * miscfuncs.cc (__check_invalid_read_ptr_errno): Return error, if any. + +2001-10-21 Christopher Faylor + + * resource.cc (fill_rusage): Perform paranoid zero structure passed to + GetProcessMemoryInfo. + +2001-10-22 Robert Collins + + * autoload.cc: Autoload GetProcessMemoryInfo. + * resource.cc (fill_rusage): Calculate ru_maxrss and ru_majflt entries. + (Bug report on this from Guido Serassio in the squid project). + This requires including psapi.h. + +2001-10-20 Christopher Faylor + + * dll_init.cc (dll_list::alloc): Increase retry count to 1000. + +2001-10-20 Christopher Faylor + + * miscfuncs.cc (__check_invalid_read_ptr_errno): New function. + * syscalls.c (_write): Validate that write buffer is accessible for + reading, not writing. + * winsup.h: Declare new function, increase regparmization of check_* + functions. + +2001-10-19 Corinna Vinschen + + * path.cc (getcwd): Allow len == 0 when buf == NULL. + +2001-10-18 Christopher Faylor + + * syscalls.cc (_read): Validate input pointer. + (_write): Ditto. + (system): Ditto. + +2001-10-16 Frederic Devernay + + * poll.cc (poll): Call cygwin_select() if any fd is valid. + +2001-10-16 Corinna Vinschen + + * fhandler_raw.cc (fhandler_dev_raw::open): Eliminate compatibility + code since no Win32 device names are used anymore. + * fhandler_tape.cc (fhandler_dev_tape::tape_set_blocksize): Allow + 0 as blocksize to indicate variable blocksize. + * path.cc (win32_device_name): Generate NT internal device names + using upper/lower case names for readability. + Generate \DosDevices\: device name for mount table + compatibility devices. + +2001-10-16 Corinna Vinschen + + * fhandler_tape.cc (fhandler_dev_tape::tape_status): Report + EOTWarningZoneSize in get->mt_eotwarningzonesize. + * include/cygwin/mtio.h: Define DEFTAPE. + (struct mtget): Add member `mt_eotwarningzonesize'. Add a comment. + * include/cygwin/version.h: Bump API minor version to 47. + +2001-10-16 Christopher Faylor + + * fhandler.cc (fhandler_base::fork_fixup): Guard against compiler + warning. + +2001-10-16 Corinna Vinschen + + * autoload.cc: Add load statement for `NtOpenFile'. + * fhandler.h (fhandler_dev_raw::get_unit): New method. + (fhandler_dev_tape::norewind): Eliminate. + (fhandler_dev_tape::is_rewind_device): New method. + * fhandler_raw.cc (fhandler_dev_raw::open): Open new + fixed device name devices using NT internal method. + Keep calling fhandler_base::open() for old mount table + device mapping compatibility devices. + (fhandler_dev_raw::fstat): Eliminate. Settings are done + by fhandler_base::fstat() already. + * fhandler_tape.cc: Remove `norewind' usage throughout. + * ntdll.h: Define FILE_SYNCHRONOUS_IO_NONALERT. + Define struct _IO_STATUS_BLOCK. + Declare NtOpenFile(). + * path.cc (get_raw_device_number): Add new approach for + using fixed device names. + (win32_device_name): Ditto. + (get_device_number): Ditto. Require POSIX path to begin + with "/dev/". + (mount_info::conv_to_win32_path): Call win32_device_name() + instead of get_device_number() after evaluating mount points + to allow changing the win32 destination path again. + * security.cc (str2buf2uni): Remove `static' to be able to + call function from fhandler_dev_raw::open(). + * wincap.cc: Set flag has_raw_devices appropriately. + * wincap.h: Add flag has_raw_devices. + +2001-10-16 Christopher Faylor + + * cygheap.h (cygheap_fdget::cygheap_fdget): Remove debugging operation + from set_errno. + +2001-10-16 Christopher Faylor + + * mmap.cc (mmap): Assign 'fh' from cygheap_fdget. Use 'fh' everywhere. + +2001-10-15 Christopher Faylor + + * cygerrno.h (set_errno): Define more informative version of this + function for debugging. + (__set_errno): Declare when DEBUGGING. + * cygheap.h (cygheap_fdget::cygheap_fdget): Add a flag to control when + errno is set. + * debug.cc (__set_errno): New function. + * fcntl.cc (_fcntl): Fix so that correct fd is used for second argument + to dup2. + * syscalls.cc (_cygwin_istext_for_stdio): Don't set errno here when + using cygheap_fdget. + +2001-10-15 Christopher Faylor + + * fhandler.cc (fhandler_base::fork_fixup): Don't protect handle. + + * dlfcn.cc: Fix to confirm to coding standards. + + Reorganize includes throughout to accommodate new cygheap.h usage. + * cygheap.h (cygheap_fdmanip): New class: simplifies locking and + retrieval of fds from cygheap->fdtab. + (cygheap_fdget): Ditto. + (cygheap_fdnew): Ditto. + * fcntl.cc (_fcntl): Use new method to lock fdtab and retrieve info. + * ioctl.cc (ioctl): Ditto. + * mmap.cc (mmap): Ditto. + * net.cc: Ditto, throughout. + * passwd.cc (getpass): Ditto. + * path.cc (fchdir): Ditto. + * pipe.cc (make_pipe): Ditto. + * sec_acl.cc (facl): Ditto. + * syscalls.cc: Ditto, throughout. + * termios.cc: Ditto, throughout. + +2001-10-15 Corinna Vinschen + + * uname.cc (uname): Use `wProcessorLevel' unless OS sets it wrong. + Use `dwProcessorType' then instead. + * wincap.cc: Set flag has_valid_processorlevel appropriately. + * wincap.h: Add flag has_valid_processorlevel. + +2001-10-14 Christopher Faylor + + * dtable.cc (dtable::build_fhandler_from_name): Use PC_FULL to + determine path name. + * path.cc (fchdir): Remove rel -> abs path conversion. + +Sun Oct 14 08:10:12 2001 Gary R. Van Sickle + + * fork.cc (fork_parent): Correct the "unable to allocate + forker_finished event" error message. It named the wrong event before. + +2001-10-13 Christopher Faylor + + * autoload.cc (load_wsock32): Declare dummy function to force loading + of winsock. + * fhandler.cc (fhandler_base::set_inheritance): Make debugging output + more verbose. + * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Force loading + of winsock32 if winsock2 not available. + * net.cc (set_socket_inheritance): Use DuplicateHandle in all cases to + set inheritance correctly. + (fdsock): Use winsock2_active macro to determine when to set socket + inheritance. Remove fdtab resource locking since this function should + already be protected. + (cygwin_accept): Simplify logic. Ensure that fdtab unlock is not + called inappropriately. + (cygwin_rcmd): Use fdtab locking. + (cygwin_rresvport): Ditto. + (cygwin_rexec): Ditto. + * select.cc (peek_socket): Set errno appropriately if winsock select + fails. + +2001-10-13 Kazuhiro Fujieda + + * winsup.h: Declare check_pty_fds. + * syscalls.cc (check_pty_fds): Rename from check_ttys_fds. Also check + pty master. + (setsid): Use check_pty_fds. + * dtable.cc (dtable::dec_console_fds): Add check on pty fds. + +2001-10-13 Ralf Habacker + + * fhandler_dsp.cc (fhandler_dsp::ioctl): Return 0 for successful + SNDCTL_DSP_GETBLKSIZE operation. + +2001-10-13 Christopher Faylor + + Remove obsolete 'name' arg from fhandler_* constructors throughout. + * winsup.h (winsock_active): New macro. + (winsock2_active): Ditto. + * autoload.cc (wsock_init): Use new macros to decide if winsock or + winsock2 is loaded. + (nonexist_wsock32): Dummy function to force winsock load. + (nonexist_ws2_32): Dummy function to force winsock2 load. + * fhandler.h (fhandler_socket::fstat): Declare new method. Currently + unused. + * fhandler_socket.cc (fhandler_socket::fixup_before_fork_exec): Check + that winsock2 is active before trying WSADuplicateSocketA. + (fhandler_socket::fixup_after_fork): Add extra check for + winsock2_active. Otherwise use iffy procedures for Windows 95. + (fhandler_socket::fixup_after_exec): Add debugging. + (fhandler_socket::dup): Add debugging. + (fhandler_socket::fstat): New method. + (fhandler_socket::set_close_on_exec): Attempt to perform iffy stuff on + Windows 95. + + * errno.cc (_sys_nerr): Work around compiler strangeness. + + * pinfo.cc (winpids::add): Add extra element at end of allocated array + for setting to NULL. + (winpids::enumNT): Ditto. + (winpids::init): Don't modify pidlist if it hasn't been allocated + (possibly due to malloc problem). + +2001-10-12 Christopher Faylor + + * autoload.cc (wsock_init): Reorganize slightly to accommodate a new + compiler. + +2001-10-11 Egor Duda + + * net.cc (cygwin_sendto): Use correct socket address when sending + data to AF_UNIX socket. + +Wed Oct 10 16:10:41 2001 Alexander Gottwald + + * net.cc (get_95_ifconf): Using other registry values pointing to + correct networkdevice identification for Windows95. + +Tue Oct 9 22:22:45 2001 Christopher Faylor + + Throughout, rename PROC_FORK1 to PROC_FORK. + * child_info.h: Rename PROC_* to _PROC_*. Define PROC_* with + additional testing magic. Eliminate old PROC_FORK and rename + PROC_FORK1 to PROC_FORK. + * dcrt0.cc (_cygwin_testing_magic): New variable. Added to magic + number in proc_info. + (alloc_stack): Eliminate old PROC_FORK test. + (dll_crt0_1): Ditto. Use _PROC_* enums for test. Subtract + _cygwin_testing_magic from child_proc_info->type so that normal cygwin + programs invoked by test suite programs do not consider themselves to + be in a cygwin environment. + (_dll_crt0): Ditto. Move environment checks to initial_env function to + conserve on stack space. + (initial_env): New function. Checks for testing and debugging + environment variables. + * init.cc (cygwin_hmodule): Move declaration. + * winsup.h: Declare variables used for cygwin testing. + +Tue Oct 9 19:17:53 2001 Christopher Faylor + + * uinfo.cc (internal_getlogin): Reorganize slightly to minimize work in + default condition. + +Tue Oct 9 18:53:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_disk_file::open): Add missing case clash check. + +Mon Oct 8 01:47:27 2001 Christopher Faylor + + * dtable.cc (dtable::build_fhandler): Allocate correct amount for given + fhandler class. + * fhandler.h (fhandler_union): Properly define rather than relying on + fhandler_console being "big enough". + +Mon Oct 8 00:25:18 2001 Christopher Faylor + + * external.cc (fillout_pinfo): Reset counter whenever we initialize the + pid list. + +Sun Oct 7 17:16:05 2001 Christopher Faylor + + * path.cc (normalize_posix_path): Don't eat a '.' after a '\\' since it + has special meaning on NT. + + * syscalls.cc (access): Use stat_worker. + +Fri Oct 5 21:01:14 2001 Christopher Faylor + + * fhandler.cc (fhandler_base::fork_fixup): Protect dup'ed handle and + record it as non-inheritable for debugging purposes in case there is a + subsequent fork or exec. + * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Allow + fork_fixup to call ProtectHandle. + +Fri Oct 5 14:22:47 2001 Christopher Faylor + + * path.cc (get_raw_device_number): Correct length arguments for + wdeveqn. + +Fri Oct 5 11:05:32 2001 Christopher Faylor + + * path.cc (getcwd): Allow NULL first argument. + +Fri Oct 5 00:31:35 2001 Christopher Faylor + + * heap.h (inheap): Check for NULL. + +Thu Oct 4 23:17:49 2001 Christopher Faylor + + Add second path_conv * argument to fstat()s throughout. + * fhandler.h: Change read and fstat to regparm/stdcall throughout. + (fhandler_base::fstat): Just declare. Don't define. + (fhandler_disk_file::fstat_helper): Declare. + * fhandler.cc (fhandler_base::fstat): Move here from fhandler.h, adapt + from former stat_dev(). + (fhandler_disk_file::fstat): Move most of the disk-file-specific logic + from stat_worker to here. Use fstat_helper to derive final fstat + output. + (fhandler_disk_file::fstat_helper): New method, renamed from former + fstat method. + (num_entries): Moved here from syscalls.cc. + * fhandler_mem.cc (fhandler_dev_mem::fstat): Use base class to + initialize most stuff. Invert has_physical_mem_access test for + establishing permissions. + * fhandler_raw.cc (fhandler_dev_raw::fstat): Eliminate unneed test and + memory clearing. Use base class to initialize most stuff. + * syscalls.cc (stat_dev): Eliminate. + (stat_worker): Simply call fstat method to generate fstat output. Move + all device specific code to appropriate fstats. + + * dir.cc (opendir): Pass correct arg to stat_worker to allow following + symlinks. + +Thu Oct 4 21:37:57 2001 Christopher Faylor + + * spawn.cc (perhaps_suffix): Return NULL on non-existence of file as + well as "directoryness". Previous code modified on 2001/09/30 actually + had an arguable bug which was unmasked by the change on that day. + +Thu Oct 4 20:52:42 2001 Christopher Faylor + + * path.cc (path_conv::check): Return ENOTDIR when leading device and + trailing component. + +Thu Oct 4 18:49:23 2001 Christopher Faylor + + * syscalls.cc (stat_worker): Make global. Accept path_conv parameter + for passing information back to caller. + * winsup.h: Declare stat_worker. + * dir.cc (opendir): Use stat_worker rather than stat and pass path_conv + parameter to stat_worker for later inspection. + +2001-10-04 Karellen (karellen@boreworms.com) + + * syslog.cc (syslog): Teach syslog about syslog priorities other than + LOG_ERR, LOG_WARNING and LOG_INFO + +Thu Oct 4 15:50:03 2001 Christopher Faylor + + * path.cc (path_conv::check): Don't perform file system or rootdir + checks on devices. + +Wed Oct 3 19:40:36 2001 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Don't close hexec_proc if it is NULL. + + * fork.cc (vfork): Add debugging statements. + + * path.cc (get_device_number): Make static. Rewrite to inspect both unix + and windows paths. + (get_raw_device_number): Just check for parts of raw device that we + care about. + (get_devn): New function, pulled from get_device_number. + (win32_device_name): Accommodate arg changes to get_device_number. + (mount_info::get_device_number): Call get_device_number on translated + Windows path. + + * spawn.cc (spawn_guts): Don't treat P_VFORK differently from P_NOWAIT. + Add handle to child's shared region to child so that it will be + preserved if the parent goes away. + * fhandler.h: Throughout, simplify to one open method for all fhandler + classes, requiring a path_conv first element. + * fhandler.cc (fhandler_base::open): Remove obsolete method. + Generalize to require path_conv * as first argument. + (fhandler_disk_file::open): Remove obsolete method. + (fhandler_disk_file::open): Use path_conv pointer rather than + reference. + * fhandler_clipboard.cc (fhandler_dev_clipboard::dup): Use new open + method. + (fhandler_dev_clipboard::open): Accommodate new argument for open + methods. + * fhandler_console.cc (fhandler_console::open): Ditto. + (fhandler_console::dup): Use new open method. + (fhandler_console::fixup_after_fork): Ditto. + (fhandler_console::fixup_after_exec): Ditto. + * fhandler_dsp.cc (fhandler_dev_dsp::open): Accommodate new argument for + open methods. + * fhandler_floppy.cc (fhandler_dev_floppy::open): Ditto. + * fhandler_mem.cc (fhandler_dev_mem::open): Ditto. + * fhandler_random (fhandler_dev_random::open): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::open): Ditto. + * fhandler_serial.cc (fhandler_serial::open): Ditto. + * fhandler_tape.cc (fhandler_dev_tape::open): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. + (fhandler_pty_master::open): Ditto. + * fhandler_windows.cc (fhandler_windows::open): Ditto. + * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. + * fhandler_socket.cc (fhandler_socket::set_connect_secret): Accommodate + new argument for open methods. + * syscalls.cc (_open): Ditto. + (stat_worker): Ditto. + +Tue Oct 2 23:49:18 2001 Christopher Faylor + + * cygheap.cc (cfree): Remove malloc debugging probe. + * dlmalloc.c (errprint): Remove abort() call which causes interesting + error message printing to abort prematurely. + * environ.cc: Sprinkle MALLOC_CHECKs liberally throughout. + (_addenv): Allocate two empty elements at end of environ to + (apparently) work around problems with some buggy applications. + (winenv): Avoid calling alloca if no forced environment variable is + present. + + * exceptions.cc (open_stackdumpfile): Don't print "Dumping stack trace + to..." when running in a cygwin environment (i.e., the parent is a + cygwin process). + + * dtable.cc (dtable::init_std_file_from_handle): Move device type + detection code from build_fhandler here since it is only used by this + function. + (dtable::build_fhandler_from_name): New method. Renamed from + dtable::build_fhandler. + (dtable::build_fhandler): Use build_fhandler_from_name. + (cygwin_attach_handle_to_fd): Ditto. + * syscalls.cc (_open): Ditto. + (stat_worker): Ditto. + * dtable.h (dtable::build_fhandler_from_name): Rename declaration from + dtable::build_fhandler. + +Mon Oct 1 16:52:23 2001 Christopher Faylor + + * dtable.h (dtable::build_fhandler): Make path_conv parameter + non-optional. + (dtable::init_std_file_from_handle): Eliminate name parameter. + * dtable.cc (stdio_init): Don't pass bogus name to + init_std_file_from_handle. The function will figure out the name + itself. + (dtable::init_std_file_from_handle): Eliminate name parameter. Assume + that we're always called with an appropriate fd. Pass name as NULL if + we can't simply figure it out from context. + (cygwin_attach_handle_to_fd): Pass path_conv argument to + build_fhandler. + (dtable::build_fhandler): Make path_conv argument mandatory. Eliminate + specific call to get_device_number. With unknown device names, set + name from handle context for parsing by path_conv. + (dtable::build_fhandler): Pass path_conv argument to build_fhandler. + * path.h (path_conv::set_isdisk): Set disk device type. + (path_conv::is_device): Don't consider FH_DISK a "device". + * syscalls.cc (_open): Pass path_conv argument by reference. + (stat_worker): Ditto. + (_rename): Use path_conv operators. Add bounds to DeleteFile/MoveFile + for loop. + +Mon Oct 1 14:25:00 2001 Charles Wilson + + * cygwin.din: export strtoll and strtoull + +Sun Sep 30 22:51:41 2001 Christopher Faylor + + Add "path.h" include throughout, where needed. Use new path_conv + methods and operators to simplify testing for directory and attributes, + throughout. + * path.h (path_conv::exists): New method. + (path_conv::has_attribute): Ditto. + (path_conv::isdir): Ditto. + (path_conv::DWORD &): New operator. + (path_conv::int &): Ditto. + * dir.cc (rmdir): Eliminate a goto. + * dtable.cc (dtable::build_fhandler): Accept opt and suffix info for + path_conv.check. Return fh == NULL on path_conv error. Pass unit to + set_name as appropriate. + (dtable::reset_unix_path_name): New method. + * dtable.h (dtable): Declare new method. Reflect arg changes to + build_fhandler. + * fhandler.cc (fhandler_disk_dummy_name): Eliminate. + (fhandler_base::set_name): Expect paths to be NULL. Build + unix_path_name from win32_path_name when it is a device. + (fhandler_base::reset_unix_path_name): New method. + (fhandler_base::raw_read): Report EISDIR when ERROR_INVALID_FUNCTION + or ERROR_INVALID_PARAMETER and reading a directory. + (fhandler_disk_file::fstat): Don't call stat_dev since we should now + never be calling fhandler_disk_file methods with devices. + (fhandler_base::fhandler_base): Clear {unix,win32}_path_name. + (fhandler_base::~fhandler_base): Always free {unix,win32}_path_name. + (fhandler_disk_file::fhandler_disk_file): Remove set_no_free_names + kludge. + (fhandler_disk_file::open): Ditto. + * fhandler.h (fhandler_base::no_free_names): Eliminate. + (fhandler_base::set_no_free_names): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Don't set + unix_path_name here. + * path.cc (fchdir): Lock fd table throughout. Use new + dtable::reset_unix_path_name method to reset path. + * syscalls.cc (stat_worker): Reorganize to always call fstat method. + Pass path_conv method to fhandler_*::open. + (chroot): Elminate a goto. + +Sun Sep 30 17:37:43 2001 Christopher Faylor + + * environ.cc (winenv): Allocate exact amount of space needed for forced + windows environment variable rather than just using MAX_PATH. + +Sun Sep 30 17:10:18 2001 Christopher Faylor + + * Makefile.in: Depend on stamp to ensure rebuilding. Remove stamp file + when we've just built the DLL. + +Mon Oct 1 00:34:00 2001 Robert Collins + + * thread.cc (pthread_cond_dowait): Hopefully eliminate a race on multiple thread + wakeups. + +Sat Sep 29 18:26:00 2001 Robert Collins + + * pthread.cc (pthread_cond_timedwait): Deleted - exported from thread.cc. + (pthread_cond_wait): Deleted - exported from thread.cc. + * thread.cc (pthread_cond::BroadCast): Update to use the new syntax for + verifyable_object_isvalid (). + (pthread_cond::Signal): Ditto. Also attempt to fix the lost signal race + with pthread_cond::TimedWait(). + (check_valid_pointer): Change definiton to void const *. + (verifyable_object_isvalid): Add new parameter to allow identification of + static initializers, and return a enum rather than magic numbers. + (__pthread_create): Ditto. + (__pthread_cleanup): Ditto. + (__pthread_attr_init): Ditto. + (__pthread_attr_getinheritsched): Ditto. + (__pthread_attr_getschedparam): Ditto. + (__pthread_attr_getschedpolicy): Ditto. + (__pthread_attr_getscope): Ditto. + (__pthread_attr_setdetachstate): Ditto. + (__pthread_attr_getdetachstate): Ditto. + (__pthread_attr_setinheritsched): Ditto. + (__pthread_attr_setschedparam): Ditto. + (__pthread_attr_setschedpolicy): Ditto. + (__pthread_attr_setscope): Ditto. + (__pthread_attr_setstacksize): Ditto. + (__pthread_attr_getstacksize): Ditto. + (__pthread_attr_destroy): Ditto. + (__pthread_join): Ditto. + (__pthread_detach): Ditto. + (__pthread_suspend): Ditto. + (__pthread_continue): Ditto. + (__pthread_getschedparam): Ditto. + (__pthread_getsequence_np): Ditto. + (__pthread_key_create): Ditto. + (__pthread_key_delete): Ditto. + (__pthread_setschedparam): Ditto. + (__pthread_setspecific): Ditto. + (__pthread_getspecific): Ditto. + (__pthread_cond_destroy): Ditto. + (__pthread_cond_init): Ditto. + (__pthread_cond_broadcast): Ditto. + (__pthread_cond_signal): Ditto. + (__pthread_condattr_init): Ditto. + (__pthread_condattr_getpshared): Ditto. + (__pthread_condattr_setpshared): Ditto. + (__pthread_condattr_destroy): Ditto. + (__pthread_kill): Ditto. + (__pthread_mutex_init): Ditto. + (__pthread_mutex_getprioceiling): Ditto. + (__pthread_mutex_lock): Ditto. + (__pthread_mutex_trylock): Ditto. + (__pthread_mutex_unlock): Ditto. + (__pthread_mutex_destroy): Ditto. + (__pthread_mutex_setprioceiling): Ditto. + (__pthread_mutexattr_getprotocol): Ditto. + (__pthread_mutexattr_getpshared): Ditto. + (__pthread_mutexattr_gettype): Ditto. + (__pthread_mutexattr_init): Ditto. + (__pthread_mutexattr_destroy): Ditto. + (__pthread_mutexattr_setprotocol): Ditto. + (__pthread_mutexattr_setprioceiling): Ditto. + (__pthread_mutexattr_getprioceiling): Ditto. + (__pthread_mutexattr_setpshared): Ditto. + (__pthread_mutexattr_settype): Ditto. + (__sem_init): Ditto. + (__sem_destroy): Ditto. + (__sem_wait): Ditto. + (__sem_trywait): Ditto. + (__sem_post): Ditto. + (__pthread_cond_dowait): New function, contains core logic from + __pthread_cond_wait and __pthread_cond_timedwait. Decrement (*cond)->waiting + before reentering the cond access mutex to allow detection of lost signals. + (__pthread_cond_timedwait): Rename to pthread_cond_timedwait, and call + __pthread_cond_dowait after calculating the wait length. + (__pthread_cond_wait): Rename to pthread_cond_wait, and call + __pthread_cond_dowait. + * thread.h: New enum for use with verifyable_object_isvalid. + Remove the extern exporting of __pthread_cond_timedwait and __pthread_cond_wait. + +Fri Sep 28 21:18:50 2001 Christopher Faylor + + * pipe.cc (fhandler_pipe::fixup_after_fork): New method. + * fhandler.h (fhandler_pipe::fixup_after_fork): Declare new method. + +Fri Sep 28 03:23:04 2001 Christopher Faylor + + * passwd.cc (read_etc_passwd): Bother with unlocking when not + in cygwin initialization. + * grp.cc (read_etc_group): Ditto. + +Fri Sep 28 02:57:03 2001 Christopher Faylor + + * passwd.cc (read_etc_passwd): Don't bother with locking when + in cygwin initialization since there is only one thread. + * grp.cc (read_etc_group): Ditto. + +Fri Sep 28 01:50:09 2001 Christopher Faylor + + * pipe.cc (fhandler_pipe::hit_eof): Return correct value when there is + no EOF event available. + +Sat Sep 28 00:34:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Move setting the access after evaluating fd. + Remove useless comment. Explain copy-on-write problem of 9x + more detailed. Don't set access to FILE_MAP_COPY on 9x only + when anonymous mapping is requested. + (fhandler_disk_file::mmap): Remove useless device check. + Add debug output. + +Fri Sep 27 07:35:00 2001 Robert Collins + + * Makefile.in: Only stamp winver_stamp on success. + +Wed Sep 26 16:02:35 2001 Christopher Faylor + + * select.cc (peek_pipe): REALLY only grab mutex when we actually got + something from the pipe. + +Tue Sep 25 21:25:00 2001 Robert Collins + + * thread.cc (pthread_cond::BroadCast): Use address with verifyable_object_isvalid(). + (pthread_cond::Signal): Ditto. + (__pthread_create): Ditto. + (__pthread_cleanup): Ditto. + (__pthread_attr_init): Ditto. + (__pthread_attr_getinheritsched): Ditto. + (__pthread_attr_getschedparam): Ditto. + (__pthread_attr_getschedpolicy): Ditto. + (__pthread_attr_getscope): Ditto. + (__pthread_attr_setdetachstate): Ditto. + (__pthread_attr_getdetachstate): Ditto. + (__pthread_attr_setinheritsched): Ditto. + (__pthread_attr_setschedparam): Ditto. + (__pthread_attr_setschedpolicy): Ditto. + (__pthread_attr_setscope): Ditto. + (__pthread_attr_setstacksize): Ditto. + (__pthread_attr_getstacksize): Ditto. + (__pthread_attr_destroy): Ditto. + (__pthread_join): Ditto. + (__pthread_detach): Ditto. + (__pthread_suspend): Ditto. + (__pthread_continue): Ditto. + (__pthread_getschedparam): Ditto. + (__pthread_getsequence_np): Ditto. + (__pthread_key_create): Ditto. + (__pthread_key_delete): Ditto. + (__pthread_setschedparam): Ditto. + (__pthread_setspecific): Ditto. + (__pthread_getspecific): Ditto. + (__pthread_cond_destroy): Ditto. + (__pthread_cond_init): Ditto. + (__pthread_cond_broadcast): Ditto. + (__pthread_cond_signal): Ditto. + (__pthread_cond_timedwait): Ditto. + (__pthread_cond_wait): Ditto. + (__pthread_condattr_init): Ditto. + (__pthread_condattr_getpshared): Ditto. + (__pthread_condattr_setpshared): Ditto. + (__pthread_condattr_destroy): Ditto. + (__pthread_kill): Ditto. + (__pthread_mutex_init): Ditto. + (__pthread_mutex_getprioceiling): Ditto. + (__pthread_mutex_lock): Ditto. + (__pthread_mutex_trylock): Ditto. + (__pthread_mutex_unlock): Ditto. + (__pthread_mutex_destroy): Ditto. + (__pthread_mutex_setprioceiling): Ditto. + (__pthread_mutexattr_getprotocol): Ditto. + (__pthread_mutexattr_getpshared): Ditto. + (__pthread_mutexattr_gettype): Ditto. + (__pthread_mutexattr_init): Ditto. + (__pthread_mutexattr_destroy): Ditto. + (__pthread_mutexattr_setprotocol): Ditto. + (__pthread_mutexattr_setprioceiling): Ditto. + (__pthread_mutexattr_getprioceiling): Ditto. + (__pthread_mutexattr_setpshared): Ditto. + (__pthread_mutexattr_settype): Ditto. + (__sem_init): Ditto. + (__sem_destroy): Ditto. + (__sem_wait): Ditto. + (__sem_trywait): Ditto. + (__sem_post): Ditto. + (verifyable_object_isvalid): Recieve a pointer to a pointer for verification. + (__pthread_mutexattr_getprotocol): Fix typo in magic number. + (__pthread_mutexattr_getpshared): Ditto. + (__pthread_mutexattr_gettype): Ditto. + * thread.h (verifyable_object_isvalid): Change prototype to recieve a pointer to a + pointer for verification. + * include/pthread.h: Fix typo for __cleanup_routine_type typedef. (Contrib from Net). + +Tue Sep 25 02:09:42 2001 Christopher Faylor + + * select.cc (fhandler_tty_common::ready_for_read): Rewrite to correctly + call peek_pipe. + +Mon Sep 24 18:46:39 2001 Christopher Faylor + + * select.cc (peek_pipe): Only grab mutex when we actually got something + from the pipe. + +Mon Sep 24 17:41:03 2001 Christopher Faylor + + * fhandler.h (fhandler_pipe::hit_eof): New method. + (writepipe_exists): New class element. + (orig_pid): Ditto. + (id): Ditto. + (is_slow): Eliminate. + * pipe.cc (fhandler_pipe::set_close_on_exec): Set inheritance on + writepipe_exists, if it exists. + (fhandler_pipe::hit_eof): New method, modelled after tty. + (fhandler_pipe::dup): Duplicate writepipe_exists, if it exists. + (make_pipe): Set up a dummy event for pipes on windows 9x. The + nonexistence of this event means that the write side of the + pipe has closed. + (_dup): Move to syscalls.cc + (_dup2): Ditto. + + * dtable.cc (dtable::build_fhandler): Fill out set_names here, if + appropriate. + * syscalls.cc (_open): Call set_names in build_fhandler. + +Sun Sep 23 16:55:00 2001 Corinna Vinschen + + * syscalls.cc (_open): Set name in fhandler object after successful + creation. + (stat_dev): Set device type to block device in FH_FLOPPY case. + +Sun Sep 23 11:15:00 2001 Corinna Vinschen + + * dtable.cc (dtable::build_fhandler): Initialize unit when using + optional path_conv argument. + +Sat Sep 22 17:33:45 2001 Christopher Faylor + Corinna Vinschen + + * dtable.cc (dtable::build_fhandler): Accept an optional path_conv + argument. If available, use this to calculate path name and device + number. + * dtable.h (dtable): Reflect above change. + * fhandler.h (fhandler_base): Declare virtual method which accepts + path_conv rather than path string as first argument. + * fhandler.cc (fhandler_base::open): Define above new method. + * syscalls.cc (_open): Set aside a path_conv variable for use in + build_fhandler and subsequent call to open. + +Sat Sep 22 12:44:57 2001 Christopher Faylor + + * exceptions.cc (setup_handler): Always relinquish lock after we've + interrupted. + * fhandler.cc: Move pipe methods to pipe.cc. + * fhandler.h (fhandler_pipe): Add new methods. + * fork.cc (sync_with_parent): Make error messages more informative. + * pipe.cc (fhandler_pipe::fhandler_pipe): Move here from fhandler.cc. + (fhandler_pipe::lseek): Ditto. + (fhandler_pipe::set_close_on_exec): New method. + (fhandler_pipe::read): Ditto. + (fhandler_pipe::close): Ditto. + (fhandler_pipe::dup): Ditto. + (make_pipe): Create the guard mutex on the read side of the pipe. + * select.cc (peek_pipe): Use guard_mutex to discover if we have the + right to read on this pipe. + (fhandler_pipe::readh_for_read): Pass the read pipe guard mutex to + peek_pipe. + * syscalls.cc (_read): Always detect signal catchers, for now. + + * debug.cc (makethread): Eliminate hack to make thread inheritable. + * sigproc.cc (subproc_init): Don't use hack to make thread inheritable. + +Thu Sep 20 16:48:44 2001 Christopher Faylor + + * fhandler.cc (fhandler_base::set_inheritance): Just use + DUPLICATE_CLOSE_SOURCE to change inheritance. Eliminate all other + logic dealing with closed handles. + * fhandler.h (fhandler_base::set_inheritance): Reflect above change. + * fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Ditto. + +Thu Sep 20 13:34:00 2001 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::fixup_after_exec): Close + socket only when not using Winsock2. + +Thu Sep 20 13:20:00 2001 Corinna Vinschen + + * fhandler.h (fhandler_socket::fixup_after_exec): Remove inline + implementation. + (fhandler_dev_raw::fixup_after_exec): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::fixup_after_fork): Don't + duplicate buffer on fork to avoid memory leak. + (fhandler_dev_raw::fixup_after_exec): New implementation equal to + former fixup_after_fork() implementation. + * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Do + nothing when not using Winsock2. + (fhandler_socket::fixup_after_exec): New implementation. + (fhandler_socket::set_close_on_exec): Never call set_inheritance(). + +Thu Sep 20 9:55:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_base::set_inheritance): If available, + use SetHandleInformation() to set inheritance. + * wincap.cc: Set flag has_set_handle_information_on_console_handles + appropriately. + * wincap.h: Add flag has_set_handle_information_on_console_handles. + +Wed Sep 19 12:24:09 2001 Christopher Faylor + + * lib/getopt.c (__progname): Don't declare if not compiling for cygwin. + +Wed Sep 19 18:07:00 2001 Corinna Vinschen + + * lib/getopt.c (getopt_long): Avoid compiler warning. + +Wed Sep 19 11:52:42 2001 Christopher Faylor + + * lib/getopt.c: Use __progname==__argv[0] when not compiling for cygwin. + + * scandir.cc (scandir): Use correct default when compar == NULL. + +Wed Sep 19 17:49:00 2001 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::fhandler_socket): Revert + memory allocation to use cmalloc again. + +Tue Sep 18 21:04:26 2001 Christopher Faylor + + * cygwin.din (__argv): Export. + (__argc): Ditto. + (__progname): Ditto. + * include/getopt.h (getopt_long): constify arguments. + * lib/getopt.c: Import new file from NetBSD. + +Tue Sep 18 18:21:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Don't reuse anonymous memory in MAP_FIXED case. + +Mon Sep 17 17:29:25 2001 Christopher Faylor + + * include/io.h: Add access declaration. + +Mon Sep 17 14:04:27 2001 Christopher Faylor + + * syscalls.cc (rmdir): Set cwd to some other location if attempting to + rmdir current working directory. + +Sun Sep 16 23:04:31 2001 Christopher Faylor + + * dtable.h (not_open): Assure inline. + * fhandler.h (operator []): Make const. + +Sun Sep 16 23:02:57 2001 Robert Collins + + * sync.cc (muto::~muto): Fix typo which stopped muto event handle from + ever being closed. + +2001-09-16 Egor Duda + + * path.cc (symlink): Check arguments for validity. + (getcwd): Ditto. + * syscalls.cc (ftruncate): Ditto. + * times.cc (times): Ditto. + * uname.cc (uname): Ditto. + +Sat Sep 15 22:54:49 2001 Christopher Faylor + + * net.cc (dup_servent_ptr): Detect old Windows 95 misaligned structure + and realign appropriately. + +Sat Sep 15 00:28:40 2001 Christopher Faylor + + * Makefile.in: Generate libcygwin.a during the link pass rather than as + a separate dlltool step. + * dcrt0.cc (_dll_crt0): pppid_handle could be NULL. Don't close it if + so. + +Fri Sep 14 20:48:18 2001 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Create vfork main storage here so that it can + be queried in waitsig later. + * sigproc.cc (wait_sig): Don't deliver a signal if in a vfork. + * sigproc.h (sigframe::init): New method. + (sigframe): Use init. + * perthread.h: Declare main_vfork. + * fork.cc (vfork): Deliver all signals on parent return from vfork. + +Fri Sep 14 10:21:00 2001 Corinna Vinschen + + * dcrt0.cc (_dll_crt0()): Don't call wincap.init() here. + +Fri Sep 14 00:37:54 2001 Christopher Faylor + + * fork.cc (vfork): Avoid recursive vforks. + +Fri Sep 14 00:18:52 2001 Christopher Faylor + + * fhandler.h (fhandler_pipe::is_slow): Return true only if pipes are + reliable (i.e., not Win9x). + * wincap.cc: Make statics NO_COPY to avoid fork overhead. + +Thu Sep 13 23:01:00 2001 Christopher Faylor + + * grp.cc (read_etc_group): Just reuse group_buf storage for subsequent + reread of /etc/group. + * passwd.cc (read_etc_passwd): Just reuse passwd_buf storage for + subsequent reread of /etc/passwd. + +Thu Sep 13 20:46:05 2001 Christopher Faylor + + * cygheap.cc (dup_now): New function. + (cygheap_setup_for_child): Accept new argument controlling whether to + delay copying of cygheap to shared memory region. + (cygheap_setup_for_child_cleanup): Accept new arguments controlling + whether to copy cygheap at this point. + * cygheap.h: Reflect above changes. + * fork.cc (fork_parent): Break copying of cygheap into two parts when + fork_fixup is required so that the child can see the parent's changes. + (vfork): Do stack cleanup prior to forcing a fork error. + * spawn.cc (spawn_guts): Ditto. + +Thu Sep 13 17:14:59 2001 Christopher Faylor + + * cygheap.cc (ccalloc): Pass correct length to creturn so that + cygheap_max is correctly calculated. + +Wed Sep 12 21:06:38 2001 Christopher Faylor + + * sync.cc (muto::acquire): Fix while/if typo. + +Wed Sep 12 23:06:00 2001 Corinna Vinschen + + * wincap.cc (wincapc::init): Simplify W2K/XP case. + +Wed Sep 12 23:02:00 2001 Corinna Vinschen + + * wincap.cc (wincapc::init): Set os name to "NT" on XP, too. + +Wed Sep 12 19:00:00 2001 Corinna Vinschen + + * Makefile.in: Build wincap.o. + * wincap.cc: New file. + * wincap.h: Ditto. + * autoload.cc: Add dynamic load statement for `CreateHardLinkA'. + * dcrt0.cc (os_being_run): Eliminated. + (osname): Ditto. + (iswinnt): Ditto. + (set_os_type): Ditto. + (dll_crt0_1): Call wincap.init() instead of set_os_type(). + (_dll_crt0): Ditto. + * environ.cc (set_chunksize): New function. + (parse_thing): `forkchunk' setting now invokes function `set_chunksize'. + * fork.cc (chunksize): Eliminated. Moved to be member of wincap. + * host_dependent.h: Removed. + * syscalls.cc (_link): Try using `CreateHardLinkA' first, if available. + * cygheap.cc, dcrt0.cc, delqueue.cc, dir.cc, + environ.cc, fhandler.cc, fhandler.h, fhandler_console.cc, + fhandler_mem.cc, fork.cc, mmap.cc, net.cc, pinfo.cc, pinfo.h, + security.cc, syscalls.cc, sysconf.cc, syslog.cc, thread.cc, + times.cc, tty.cc, uinfo.cc, uname.cc, winsup.h: Use new wincap + capability check throughout. + * winsup.h: Include wincap.h. Eliminate extern declarations of + `os_being_run' and `iswinnt'. Eliminate `os_type" definition. + * include/cygwin/version.h: Bump version to 1.3.4. + +Wed Sep 12 01:03:36 2001 Christopher Faylor + + * exceptions.cc (call_signal_handler_now): Add additional guard against + inappropriately calling signal handler. + * syscalls.cc (_read): Reset errno if not exiting due to signal. + +Wed Sep 12 13:03:00 2001 Robert Collins + + * autoload.cc (LoadDLLfuncEx): Auto load TryEnterCriticalSection - it's + an NT only call. + * thread.cc (pthread_cond::TimedWait): Use critical sections for NT. + (pthread_cond::fixup_after_fork): Don't detect bad apps. + (pthread_mutex::pthread_mutex): Use critical sections for NT. + (pthread_mutex::~pthread_mutex): Ditto. + (pthread_mutex::Lock): Ditto. + (pthread_mutex::TryLock): Ditto. + (pthread_mutex::UnLock): Ditto. + (pthread_mutex::fixup_after_fork): Ditto. Also do not detect bad apps. + (__pthread_mutex_trylock): Move WIN32 specific test into the class + method. + (__pthread_mutex_destroy): Prevent dereferencing passed pointer without + valid address. + * thread.h (pthread_mutex): Use critical sections for NT. + +Tue Sep 11 21:55:37 2001 Christopher Faylor + + * sigproc.h (sigframe::unregister): Return true/false whether this + frame is capable of responding to signals. + * exceptions.cc (sigframe::call_signal_handler): Don't call signal + handler if it is not armed for this thread. + +Tue Sep 11 11:23:10 2001 Christopher Faylor + + * cygwin.din: Remove cygwin_getshared. + * shared.cc: Ditto. + * include/cygwin/version.h: Bump API minor number. + +Tue Sep 11 11:14:11 2001 Dmitry Timoshkov + + * dtable.cc (dtable::build_fhandler): Fix incorrect test for socket. + +Tue Sep 11 21:22:00 2001 Robert Collins + + * thread.cc (pthread_cond::~pthread_cond): Fix incorrect use of + InterlockExchangePointer. + (pthread_mutex::~pthread_mutex): Ditto. + (semaphore::~semaphore): Ditto. + +Tue Sep 11 18:15:00 2001 Robert Collins + + * dcrt0.cc (cygwin_finished_initializing): Copy _mtinterf on fork. + * fork.cc (fork_child): Fixup thread-related structures after fork. + * thread.cc (MTinterface::Init): Initialise the new mutex, condition + and semaphore lists. + (MTinterface::fixup_after_fork): Iterate through each list and fixup + the objects. + (pthread_cond::pthread_cond): Add this to the condition list. + (pthread_cond::~pthread_cond): Remove this from the condition list. + (pthread_cond::fixup_after_fork): Recreate as best we can the pre-fork + state. + (pthread_mutex::pthread_mutex): Add this to the mutex list. + (pthread_mutex::~pthread_mutex): Remove this from the mutex list. + (pthread_mutex::fixup_after_fork): Recreate as best we can the pre-fork + state. + (semaphore::semaphore): Store the initial value, and add this to the + semaphore list. + (semaphore::~semaphore): Remove this from the semaphore list. + (semaphore::Post): Increment the current semaphore value. + (semaphore::TryWait): Decrement the current semaphore value. + (semaphore::Wait): Ditto. + (semaphore::fixup_after_fork): Recreate the pre-fork state as best we + can. + * thread.h (pthread_mutex): New members to allow fixup_after_fork. + (pthread_cond): Ditto. + (semaphore): Ditto. + (MTinterface): New list heads for tracking conds and semaphores. + +Sun Sep 9 22:11:27 2001 Christopher Faylor + + * dtable.cc (dtable::fixup_after_fork): Use SetStdHandle appropriately + on inherited fds. + +Sun Sep 9 20:09:11 2001 Christopher Faylor + + * sigproc.cc (NZOMBIES): Reduce substantially to minimize memory use. + +Mon Sep 10 08:28:00 2001 Robert Collins + + * thread.h (MT_Interface): Remove pshared mutex array. Add a + threadsafe list for mutex tracking (for fixup after fork). + * thread.cc (MTInterface::Init): Remove pshared mutex array. + (pthread_mutex::pthread_mutex): Remove pshared mutex functionality. + Fail with EINVAL on attempts to use pshared functionality. + (__pthread_mutex_getpshared): Remove. + (__pthread_cond_timedwait): Remove pshared mutex functionality. + (__pthread_cond_wait): Ditto. + (__pthread_mutex_init): Ditto. + (__pthread_mutex_getprioceiling): Ditto. + (__pthread_mutex_lock): Ditto. + (__pthread_mutex_trylock): Ditto. + (__pthread_mutex_unlock): Ditto. + (__pthread_mutex_destroy): Ditto. + (__pthread_mutex_setprioceiling): Ditto. + (__pthread_mutexattr_setpshared): Ditto. + +Sun Sep 9 23:09:00 2001 Corinna Vinschen + + * pwdgrp.h (pwdgrp_check::set_last_modified): Call GetFileTime() + instead of GetFileInformationByHandle(). + +Sun Sep 9 15:59:53 2001 Christopher Faylor + + * heap.h (inheap): Rewrite macro to accommodate removal of brk macros + below. + +Sun Sep 9 15:02:44 2001 Christopher Faylor + + * cygheap.cc (cygheap_fixup_in_child): Clear cygheap->base so that heap + is not forced to start at the same place in execed process. + * heap.cc: Remove brk* macros for clarity throughout. + * heap.h: Ditto. + * shared.cc (shared_info::initialize): Move heap_chunk test into + heap_chunk_size(). + (heap_chunk_size): Check for chunk size here. Don't go to registry if + heap_chunk_in_mb is already set. + + * smallprint.c (console_printf): Add Windows 95 concessions. + +Sun Sep 9 13:01:06 2001 Christopher Faylor + + * child_info.h (PROC_MAGIC): Bump magic number. + +Sun Sep 9 18:36:00 2001 Corinna Vinschen + Christopher Faylor + + * cygheap.cc (init_cygheap::etc_changed): New method to signal + a change in /etc. + * cygheap.h (struct init_cygheap): Add member `etc_changed_h' + and method `etc_changed'. + * grp.cc (enum grp_state): Eliminate. + (class grp_check): Ditto. + (group_state): Define as `class pwdgrp_check'. + (parse_grp): Remeber path and modification time of /etc/group file. + * passwd.cc (enum_pwd_state): Eliminate. + (class pwd_check): Ditto. + (passwd_state): Define as `class pwdgrp_check'. + (read_etc_passwd): Remember path and modification time of /etc/passwd + file. + * pwdgrp.h: New file. + (enum pwdgrp_state): Substitutes `pwd_state' and `grp_state'. + (class pwdgrp_check): Substitutes `pwd_check' and `grp_check'. + +Sun Sep 9 14:31:00 2001 Corinna Vinschen + + * include/cygwin/version.h: Bump API minor version to 45 according + to adding the gamm*_r functions. + +Sat Sep 8 23:32:18 2001 Christopher Faylor + + * fork.cc (fork_parent): Stop malloc activity while fork is in control + of the heap. + * sigproc.cc (NZOMBIES): Rename from ZOMBIEMAX for clarity. + (zombies): Revert to original behavior. Allocating zombie array + resulted in performance hit. + * winsup.h: Declare malloc lock routines. + +Fri Sep 7 21:35:35 2001 Christopher Faylor + + * cygwin.din: Add gamm*_r function exports. + +Fri Sep 7 17:11:11 2001 Christopher Faylor + + * cygheap.h (init_cygheap): Move heap pointers here. + * include/sys/cygwin.h (perprocess): Remove heap pointers. + * dcrt0.cc (__cygwin_user_data): Reflect obsolete perprocess stuff. + (_dll_crt0): Don't initialize heap pointers. + (cygwin_dll_init): Ditto. + (release_upto): Use heap pointers from cygheap. + * heap.h: Ditto. + * fork.cc (fork_parent): Ditto. Don't set heap pointers in ch. + (fork_child): Remove obsolete sigproc_fixup_after_fork. + * shared.cc (memory_init): Reorganize so that cygheap initialization is + called prior to regular heap since regular heap uses cygheap now. + * sigproc.cc (proc_subproc): Eliminate zombies allocation. + (sigproc_init): Move zombies alloation here. Don't free up array on + fork, just reuse it. + (sigproc_fixup_after_fork): Eliminate. + * sigproc.h: Ditto. + * include/cygwin/version.h: Reflect change to perprocess structure. + +Fri Sep 7 10:53:34 2001 Jason Tishler + + * poll.cc (poll): Change implementation to only call select() when no + invalid file descriptors are specified. + +Fri Sep 7 10:27:00 2001 Corinna Vinschen + + * include/limits.h: Define PIPE_BUF. + * syscalls.cc (fpathconf): Use PIPE_BUF instead of numerical constant. + (pathconf): Ditto. + +Thu Sep 6 20:04:05 2001 Christopher Faylor + + * fhandler_socket.cc (fhandler_socket::fhandler_socket): Ensure that + prot_info_ptr is zeroed for later use. + +Thu Sep 6 14:03:49 2001 Christopher Faylor + + * cygheap.cc (cygheap_fixup_in_child): Don't consider a NULL bucket as + a candidate for deletion. It is actually the end of a linked list + chain. + + * exceptions.cc (open_stackdumpfile): Default to "unknown" program name + if myself->progname hasn't been filled out yet. + +Thu Sep 6 01:16:44 2001 Christopher Faylor + + Move appropriate variables to NO_COPY segment, throughout. + +Thu Sep 6 00:40:35 2001 Christopher Faylor + + Remove initialization of static or global values to zero, throughout. + This just needlessly grows the size of the DLL. + * tty.cc (tty::alive): Make inuse handle non-inheriting on open, just + for thread safety. + +Wed Sep 5 23:36:03 2001 Christopher Faylor + + * cygheap.h (init_cygheap): Move bucket array here from cygheap.cc. + * cygheap.cc: Throughout use bucket array from cygheap. + + * sigproc.cc (proc_subproc): Dynamically allocate zombie buffer to save + DLL space. + (sigproc_fixup_after_fork): Free zombie array after a fork. + * sigproc.h (sigproc_fixup_after_fork): Declare. + +2001-09-06 Egor Duda + + * dir.cc (mkdir): Expand buffer for security descriptor to 4K to avoid + stack corruption. + * fhandler.cc (fhandler_base::open): Ditto. + * path.cc (symlink): Ditto. + +Wed Sep 5 21:35:00 2001 Corinna Vinschen + + * winver.rc: Change copyright to include 2001. + +Wed Sep 5 12:12:00 2001 Corinna Vinschen + + * fhandler_floppy.cc (fhandler_floppy::lseek): Remove iswinnt check. + +Wed Sep 5 11:34:00 2001 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::close): Change 2MSL value + according to MSDN. + +Wed Sep 5 10:14:00 2001 Corinna Vinschen + + * net.cc (cygwin_connect): Add WSAEALREADY and WSAEINVAL handling + for non-blocking sockets. + +Tue Sep 4 22:42:13 2001 Christopher Faylor + + * exceptions.cc (ctrl_c_handler): Only send SIGINT when we have a + controlling terminal and we are the head of the process group. + +Tue Sep 4 16:48:14 2001 Christopher Faylor + + * thread.cc (InterlockedExchangePointer): Don't define if it already + exists. + +Tue Sep 4 22:14:00 2001 Corinna Vinschen + + * uname.cc (uname): Eliminate os specific retrieving of x86 + processor type. + +2001-09-04 Kazuhiro Fujieda + + * fhandler_console.cc (fhandler_console::char_command): Save the cursor + position relative to the top of the window. + * fhandler_cc (fhandler_console::write): Ditto. + +Mon Sep 3 21:06:00 2001 Corinna Vinschen + + * dir.cc (opendir): Write version information to __d_dirent->d_version. + +Mon Sep 3 18:34:00 2001 Corinna Vinschen + + * cygwin.din: Add `dirfd'. + * dir.cc (dirfd): New function. + (opendir): Open a directory file descriptor and save it in + __d_dirent->d_fd. + (closedir): Close directory file descriptor. + * include/cygwin/version.h: Bump API minor version to 44. + +Sun Sep 2 22:09:31 2001 Christopher Faylor + + * child_info.h: Modify magic number. + * dcrt0.cc (_cygwin_testing): Define. + (_dll_crt0): Set _cygwin_testing if CYGWIN_TESTING environment variable + exists. Don't issue "conflicting versions" error if _cygwin_testing is + true. + * shared.cc (shared_name): Use _cygwin_testing global rather than + testing the environment. + * syscalls.cc (_write): Remove debugging info. + +Sat Sep 1 01:37:13 2001 Christopher Faylor + + * tty.cc (tty::create_inuse): Eliminate unneeded argument. + * tty.h: Reflect above change. + * fhandler_tty.cc: Reflect argument reduction in tty::create_inuse, + throughout. Always make inuse inheritable. + +Sat Sep 1 01:10:07 2001 Christopher Faylor + + * debug.cc (mark_closed): Rename from debug_mark_closed and make + static. + (setclexec_pid): New function for marking saved handle as + close-on-exec. + (delete_handle): New function. + (debug_fixup_after_fork): New function. + * debug.h: Declare new functions, remove obsolete ones. + * fork.cc (debug_fixup_after_fork): Call to cleanup close-on-exec + handles. + + * fhandler.cc (fhandler_disk_file::close): Minor reorg. + (fhandler_base::set_inheritance): Set flag appropriately for debugging + when close-on-exec so forked process can delete closed handles. + * tty.h (open_output_mutex): Eliminate unneeded argument. + (open_input_mutex): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::open): reflect open_*_mutex + argument changes. + * fhandler.h (fhandler_socket): Make saw_shutdown_* functions type + bool. + * tty.cc (tty::get_event): Eliminate unneeded argument. + (tty::common_init): Reflect change to get_event. Events should always + be inherited. + +Fri Aug 31 21:39:00 2001 Corinna Vinschen + + * security.cc (create_token): Change initialization of `exp' to comply + with new LARGE_INTEGER definition in winnt.h. + +Fri Aug 31 13:58:51 2001 Christopher Faylor + + * cygwin.sc: Revert to previous NO_COPY behavior. + * winsup.h: Ditto. + * sigproc.cc: Ditto. + * autoload.cc: Ditto. + +Fri Aug 31 00:56:26 2001 Christopher Faylor + + * cygwin.sc: New file -- linker script for building cygwin DLL. + * Makefile.in: Use linker script to control location of cygheap. + * cygheap.cc (buckets): Make static. + (init_cheap): Remove special iswinnt handling. Allocate cygheap at a + fixed location. Display more info when allocation fails. + (cygheap_fixup_in_child): Try harder to move cygheap to correct + location. Display more info when allocation fails. + * fhandler.h (fhandler_socket): Add macros for tracking socket shutdown + state. + * net.cc (cygwin_shutdown): Set appropriate shutdown value for future + use. + * select.cc (select_stuff::cleanup): New method. + (cygwin_select): Call cleanup explicitly to avoid a race. + (select_stuff:~select_stuff): Call cleanup chain via cleanup method. + (fhandler_socket::select_read): Set *_ready when shutdown has been + called on the socket. + (fhandler_socket::select_write): Ditto. + (fhandler_socket::select_except): Ditto. + + * winsup.h: Move NO_COPY to "COMMON" section. + * autoload.cc (wsock_started): Avoid initializing NO_COPY value. + * sigproc.cc: Remove initialization from NO_COPY variables. + (sigproc_init): Initialize sig_loop_wait here, rather than via + initialization. + (subproc_init): Initialize proc_loop_wait here, rather than via + initialization. + +Thu Aug 30 10:19:00 2001 Christopher Faylor + + * select.cc (select_read): Add setting read_ready flag. + (select_write): Add setting write_ready flag. + +Wed Aug 29 00:40:42 2001 Christopher Faylor + + * path.cc (path_conv::check): Avoid splitting off leading '/' in path + component when building a symlink. + +Wed Aug 29 0:45:00 2001 Corinna Vinschen + + * resource.cc (getrlimit): Return actual values on RLIMIT_STACK. + +Tue Aug 28 16:37:17 2001 Christopher Faylor + + * dir.cc (rmdir): Report ENOENT when file doesn't exist rather than + ENOTDIR. + +Mon Aug 27 11:58:19 2001 Christopher Faylor + + * select.cc (cygwin_select): Ensure that arguments are zeroed on + timeout. + (select_stuff::wait): Ditto. + +2001-08-24 Kazuhiro Fujieda + + * syscalls.cc (check_tty_fds): New function. Check whether there is a + fd referring to pty slave. + (setsid): Don't detach console if the process has a pty slave. + +Fri Aug 24 8:54:00 2001 Corinna Vinschen + + * net.cc (free_addr_list): Add define for symmetry. + (free_hostent_ptr): Use free_addr_list to free h_addr_list element. + +Thu Aug 23 16:00:09 2001 Jason Tishler + + * net.cc (dup_addr_list): New static function. + (dup_hostent_ptr): Use dup_addr_list instead of dup_char_list in order + to handle embedded null characters. + +Wed Aug 22 22:23:14 2001 Christopher Faylor + + * dtable.cc (dtable::dup2): Allow extension of fd table by dup2. + * syscalls.cc: Minor code cleanup. + (fpathconf): Check for bad fd before doing anything else. + * termios.cc (tcsetattr): Don't convert to new termios if bad fd. + (tcgetattr): Minor debugging tweak. + +Wed Aug 22 23:41:00 2001 Corinna Vinschen + + * net.cc (cygwin_inet_ntoa): Rearrange previous patch to use + thread local buffer space when compiled thread safe. + (cygwin_getprotobyname): Ditto. + (cygwin_getprotobynumber): Ditto. + (cygwin_getservbyname): Ditto. + (cygwin_getservbyport): Ditto. + (cygwin_gethostbyname): Ditto. + (cygwin_gethostbyaddr): Ditto. Move near to cygwin_gethostbyname. + * thread.h (struct _winsup_t): Add pointers for above used buffer space. + * passwd.cc (getpwduid): Remove initializing passwd. + (setpwent): Ditto. + (endpwent): Ditto. + (setpassent): Ditto. + +Wed Aug 22 13:41:09 2001 Christopher Faylor + + * smallprint.c (console_printf): New function. + * dcrt0.cc (dll_crt0_1): Use console_printf for debugging output. + * debug.cc (debug_mark_closed): New function. + (close_handle): Use debug_mark_closed. + * debug.h: Declare new functions. + * dtable.cc (dtable::build_fhandler): Remove unneeded extern. + * spawn.cc: Cosmetic changes. + * winsup.h: Define NO_COPY for C files, too. Declare a global. + +Wed Aug 22 17:31:00 2001 Corinna Vinschen + + * net.cc (free_char_list): New static function. + (dup_char_list): Ditto. + (free_protoent_ptr): Ditto. + (dup_protoent_ptr): Ditto. + (free_servent_ptr): Ditto. + (dup_servent_ptr): Ditto. + (free_hostent_ptr): Ditto. + (dup_hostent_ptr): Ditto. + (cygwin_inet_ntoa): Use local static buffer to allow propagating of + the result to child processes. + (cygwin_getprotobyname): Ditto. + (cygwin_getprotobynumber): Ditto. + (cygwin_getservbyname): Ditto. + (cygwin_getservbyport): Ditto. + (cygwin_gethostbyname): Ditto. + (cygwin_gethostbyaddr): Ditto. + +Mon Aug 20 11:56:19 2001 Christopher Faylor + + * cygheap.cc (init_cheap): Allocate cygheap in shared memory for Windows NT. + +Thu Aug 16 09:38:59 2001 Jason Tishler + + * fhandler_socket.cc (fhandler_socket::create_secret_event): Relax + security of secret_event so AF_UNIX socket clients can connect to + servers even if running under a different user account. + (fhandler_socket::check_peer_secret_event): Ditto. + +Thu Aug 16 16:26:00 2001 Corinna Vinschen + + * resource.cc (getrlimit): Return getdtablesize () as current limit + on RLIMIT_NOFILE. + * syscalls.cc (getdtablesize): Return OPEN_MAX if current dtable size + is less than OPEN_MAX, the current dtable size otherwise. + * sysconf.cc (sysconf): Return getdtablesize () on _SC_OPEN_MAX. + +Thu Aug 16 16:17:00 2001 Corinna Vinschen + + * resource.cc (getrlimit): Return OPEN_MAX as current limit + on RLIMIT_NOFILE. + * syscalls.cc (getdtablesize): Return OPEN_MAX. + * sysconf.cc (sysconf): Return OPEN_MAX on _SC_OPEN_MAX. + * include/limits.h (OPEN_MAX): Define as 256. + +Wed Aug 15 12:43:00 2001 Corinna Vinschen + + * times.cc (utimes): Revert previous change. Just open the + file using FILE_WRITE_ATTRIBUTES instead of GENERIC_WRITE + on NT/W2K. + +Wed Aug 15 12:18:00 2001 Corinna Vinschen + + * security.cc (set_nt_attribute): Return always -1 in case of + a failure. + * times.cc (utimes): On NTFS with ntsec ON, change the file's + security descriptor temporarily to acquire write access if + opening the file failed. + +Wed Aug 15 9:42:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_base::is_nonblocking): New method. + (fhandler_base::set_nonblocking): Ditto. + * fhandler.h (fhandler_base): Declare new methods `is_nonblocking' and + `set_nonblocking'. + * fhandler_socket.cc (fhandler_socket::ioctl): Use `set_nonblocking'. + * fhandler_tty.cc (fhandler_pty_master::process_slave_output): + Use `is_nonblocking'. + (fhandler_tty_slave::read): Ditto. + (fhandler_tty_slave::ioctl): Use `set_nonblocking'. + (fhandler_pty_master::ioctl): Ditto. + * net.cc (cygwin_sendto): Fallback to winsock 1 functionality + in case of nonblocking IO. + (cygwin_recvfrom): Ditto. + (cygwin_recv): Ditto. + (cygwin_send): Ditto. + * syscalls.cc (_read): Use `is_nonblocking'. + +Tue Aug 14 11:05:26 2001 Christopher Faylor + + * include/cygwin/version.h: Bump API version. + +2001-08-14 Egor Duda + + * spawn.cc (spawn_guts): Enable appropriate privilege before + loading user's registry hive. + +Mon Aug 13 22:34:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_base::fcntl): Use new O_NONBLOCK_MASK define. + * fhandler.h: Move definitions of O_NOSYMLINK, O_DIROPEN and + OLD_O_NDELAY from winsup.h to here. Add O_NONBLOCK_MASK define. + * fhandler_socket.cc (fhandler_socket::close): Add hack to allow + a graceful shutdown even if shutdown() hasn't been called by the + application. Add debug output. + (fhandler_socket::ioctl): Set fhandler's NONBLOCK flag according + to FIONBIO setting. + (fhandler_socket::fcntl): Use new O_NONBLOCK_MASK define. Actually + set `request' before using it. + * fhandler_tty.cc: Use new O_NONBLOCK_MASK define throughout. + (fhandler_tty_slave::ioctl): Set fhandler's NONBLOCK flag according + to FIONBIO setting. + (fhandler_pty_master::ioctl): Ditto. + * net.cc (wsock_event::prepare): Compare WSACreateEvent return code + with `WSA_INVALID_EVENT' according to MSDN. + * syscalls.cc (_read): Use new O_NONBLOCK_MASK define. + +Wed Aug 8 15:24:59 2001 Christopher Faylor + + * include/wchar.h: Define __need_wint_t. + +Wed Aug 8 11:46:00 2001 Corinna Vinschen + + * security.cc (alloc_sd): Revert to setting inheritance attribute for + permissions given to directories. Never set inheritance on NULL ACE. + +Tue Aug 7 18:11:00 2001 Corinna Vinschen + + * security.cc (alloc_sd): Don't set FILE_DELETE_CHILD for group + if S_ISVTX attribute is given. + * dir.cc (mkdir): Allow immediate setting of S_ISUID, S_ISGID and + S_ISVTX attribute. + * syscalls.cc (_open): Ditto. + +Tue Aug 7 16:24:00 2001 Corinna Vinschen + + * dir.cc (mkdir): Set security attributes correctly for + CreateDirectoryA () call if ntsec is on. Don't call + set_file_attributes () then. + * fhandler.cc (fhandler_base::open): Ditto for CreateFileA () call. + * path.cc (symlink): Ditto. + * security.cc (set_security_attribute): New function. + * security.h: Add declaration for `allow_ntea' and + `set_security_attribute'. + +Tue Aug 7 10:54:00 2001 Corinna Vinschen + + * grp.cc (class grp_check): New class. Make `group_state' + a member of class grp_check. + (read_etc_group): Free former allocated memory on reread. + * passwd.cc (class pwd_check): New class Make `passwd_state' + a member of class pwd_check. + (read_etc_passwd): Free former allocated memory on reread. + +Tue Aug 7 01:13:58 2001 Christopher Faylor + + * fhandler_console.cc (get_tty_stuff): Don't initialize shared memory + console area if it is already initialized. + + * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Augment debugging + info. + +Mon Aug 6 19:58:43 2001 Christopher Faylor + + * cygheap.cc (cygheap_root::set): Avoid treating '/' specially. + + * fhandler.cc (fhandler_base::fcntl): Only set specific O_NDELAY style + flag passed in from application. + * fhandler_socket.cc (fhandler_socket::fcntl): Ditto. + * fhandler.h: Set constant for future use. + * winsup.h: Define OLD_O_NDELAY only for old programs. + * include/cygwin/version.h: Define + CYGWIN_VERSION_CHECK_FOR_OLD_O_NONBLOCK. + +Sat Aug 4 16:52:03 2001 Christopher Faylor + + Throughout, change check for running under Windows NT to 'iswinnt'. + * dcrt0.cc (set_os_type): Set 'iswinnt' appropriately. + * cygheap.cc (init_cheap): Revert to using VirtualAlloc for allocating + cygheap. + (cygheap_setup_for_child_cleanup): New function. Standard function to + call after calling CreateProcess to cleanup cygheap info passed to + child. + (cygheap_fixup_in_child): Copy cygheap from shared memory into + allocated space under Windows 9x or if can't relocate shared space + under NT. + * cygheap.h: Declare new function. + * spawn.cc (spawn_guts): Use cygheap_fixup_in_child. + * fork.cc (fork_parent): Ditto. + * winsup.h: Declare iswinnt. + +2001-08-04 Egor Duda + + * dtable.cc (dtable::release): Avoid messing with console when + closing socket. + +Fri Aug 3 14:02:00 2001 Corinna Vinschen + + * net.cc (cygwin_accept): Allow NULL peer and len parameters. + * include/cygwin/socket.h: Define socklen_t as int. + +Fri Aug 3 13:04:00 2001 Corinna Vinschen + + * path.cc (fchdir): Set the fhandler's path to absolute value to ensure + changing to the correct directory even if the fhandler originally + points to a relative path. + +Thu Aug 2 17:59:00 2001 Corinna Vinschen + + * security.cc (set_file_attribute): Clean up. Don't call + `set_nt_attribute' when ntsec isn't set. + +Sat Jul 28 22:30:55 2001 Christopher Faylor + + * dcrt0.cc (alloc_stack_hard_way): Make half-hearted attempt to deal + with growing stack under Windows 95. + +Fri Jul 27 12:36:07 2001 Christopher Faylor + + * Makefile.in: Add install-lib and install-headers. + +Fri Jul 27 12:28:12 2001 Christopher Faylor + + * cygwin.din: Export sys_errlist, sys_nerr. + * include/cygwin/version.h: Bump minor version number. + +Fri 27 Jul 2001 10:29:00 Corinna Vinschen + + * security.cc (get_user_primary_group): Fix compiler warning. + (alloc_sd): Add DELETE permission for user when S_IWUSR is given. + +Thu Jul 26 16:43:39 2001 Pieter de Visser + + * thread.cc (__pthread_equal): Invert return value so that true is + returned when threads are equal. + +Thu Jul 26 15:50:38 2001 Charles Wilson + Christopher Faylor + + * cygwin.din: Export __signgam. + * include/cygwin/version.h: Bump minor version number. + +Thu Jul 26 15:19:50 2001 Christopher Faylor + + Throughout, reorganize header file inclusion to put security.h prior to + fhandler.h. + * fhandler.h (fhandler_base::get_inheritance): New method. + * fhandler_socket.cc (fhandler_socket::create_secret_event): Use proper + close-on-exec inheritance when creating. + (fhandler_socket::check_peer_secret_event): Create handle as + non-inheritable. + +2001-07-25 Kazuhiro Fujieda + + * syscalls.cc (setsid): Detach process from its console if the current + controlling tty is the console and already closed. + * dtable.h (class dtable): Add members to count descriptors referring + to the console. + * dtable.cc (dtable::dec_console_fds): New function to detach process + from its console. + (dtable::release): Decrement the counter of console descriptors. + (dtable::build_fhandler): Increment it. + * exception.cc (ctrl_c_handler): Send SIGTERM to myself when catch + CTRL_SHUTDOWN_EVENT. + +Tue 24 Jul 2001 02:28:00 PM Trevor Forbes + + * thread.cc (verifyable_object_isvalid): Don't validate + PTHREAD_MUTEX_INITIALIZER pointer as it will cause an exception + in IsBadWritePtr() when running GDB. + +Wed 25 Jul 2001 23:46:00 Corinna Vinschen + + * localtime.c: Changed whole file to become C++ clean. Rename to + localtime.cc. + * localtime.cc (tzload): Preserve errno. + +Fri 20 Jul 2001 11:15:50 PM EDT Christopher Faylor + + * cygheap.cc (cygheap_fixup_in_child): Attempt Win95 workaround. + * dtable.cc (dtable::dup_worker): Add debugging output. + (dtable::vfork_child_dup): Correctly set close_on_exec. + * fhandler.cc (fhandler_base::fork_fixup): Don't mess with handle if + there is no need to get it from the parent. + * fhandler_tty.cc (fhandler_tty_common::close): Add debugging output. + +Fri 20 Jul 2001 09:15:00 Mark Bradshaw + + * dir.cc (readdir): Protect FindNextFileA against INVALID_HANDLE_VALUE. + +Wed 18 Jul 2001 01:00:47 PM EDT Christopher Faylor + + * cygheap.cc (_cmalloc): Use correct constants for size calculation. + * dcrt0.cc (dll_crt0_1): Move uid initialization earlier. + * fork.cc (fork_parent): Move cygheap_setup_in_child to just prior to + CreateProcess so that all contents of cygheap are copied. + * spawn.cc (spawn_guts): Ditto. + +Wed 18 Jul 2001 12:54:17 Corinna Vinschen + + * security.cc (get_user_groups): Call Net function with NULL server + name under specific error conditions. + (is_group_member): Ditto. + (get_user_local_groups): Ditto. + (get_user_primary_group): Ditto. + +Wed 18 Jul 2001 11:56:00 Corinna Vinschen + + * syscalls.cc (_unlink): Explicitly check for non-existant file. + +Tue 17 Jul 2001 10:19:00 Corinna Vinschen + + * delqueue.h: Remove obsolete file. + +Mon 16 Jul 2001 10:47:17 PM EDT Christopher Faylor + + * child_info.h: Bump magic number. + (class child_info): Add an element. + * cygheap.cc (init_cheap): Allocate cygwin heap in shared memory area. + (cygheap_fixup_in_child): Map cygwin heap, passed from parent via + shared memory into correct address. + (cygheap_setup_for_child): New function. + * cygheap.h: Declare new functions. + * dcrt0.cc (dll_crt0_1): Accommodate new cygheap_fixup_in_child + arguments. Avoid protecting subproc_ready unless it is spawn/nowait. + * fork.cc (fork_parent): Use new cygheap_setup_for_child function to + setup cygwin heap info. Close passed cygheap shared memory handle. + * spawn.cc (spawn_guts): Ditto. Also, reorganize to avoid + synchronization between parent and child in non-P_OVERLAY case. + * sigproc.cc (wait_sig): Only signal subproc_ready when execing. + +Mon 16 Jul 2001 15:21:00 Corinna Vinschen + + * grp.cc: Add missing Copyright date 2001. + +Mon 16 Jul 2001 00:11:00 Corinna Vinschen + + Change well_known_admin_sid to well_known_admins_sid throughout. + * sec_acl.cc (setacl): Never set DELETE permission. Set + FILE_DELETE_CHILD only on readable and executable directories. + * sec_helper.cc: Add constructor for `well_known_null_sid'. + * security.cc (get_nt_attribute): Set S_ISVTX for directories if + FILE_WRITE_DATA and FILE_EXECUTE but not FILE_DELETE_CHILD is set. + Add evaluation of S_ISVTX, S_ISGID and S_ISUID from NULL ACE. + (alloc_sd): Never set DELETE permission. Set FILE_DELETE_CHILD + only on readable and executable directories. + Add creation of NULL ACE for S_ISVTX, S_ISGID and S_ISUID permissions. + * security.h: Add extern declaration for `well_known_null_sid'. + +Fri 13 Jul 2001 08:08:49 PM EDT Christopher Faylor + + * syscalls.cc (stat_worker): Simplify previous change. + +Fri Jul 13 13:13:09 2001 Christopher Faylor + + * syscalls.cc (_unlink): Correct (?) logic which determines when + to report an access violation and when to queue file for eventual + deletion. + (stat_worker): Check for invalid buf argument. + +Tue Jul 10 23:01:00 2001 Corinna Vinschen + + * mmap.cc (fhandler_disk_file::mmap): Try to open file mappings + by a unified name when running under 9x/ME. If that failes, create + the file mapping using the unified name. + +Mon Jul 9 10:43:00 2001 Corinna Vinschen + + * uinfo.cc (internal_getlogin): Add pointer check. + +Mon Jul 9 10:05:00 2001 Corinna Vinschen + + * security.cc (alloc_sd): Don't set inheritance attribute for + permissions given to directories. + +Thu Jun 28 22:19:08 2001 Christopher Faylor + + * fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Return 0 for success. + +Wed Jun 27 22:19:07 2001 Christopher Faylor + + * path.cc (path_conv::check): Add signal protection here since + retrieving info about remote shares can take some time. + +Wed Jun 27 23:30:00 2001 Robert Collins + Christopher Faylor + + Change check_null_empty_path* to check_null_empty_str* throughout. + * path.h (check_null_empty_str_errno): Convert to a function prototype. + * path.cc (check_null_empty_str): Move to miscfuncs.cc. + * miscfuncs.cc (check_null_empty_str_errno): New function. + (__check_null_invalid_struct): Ditto. + (__check_null_invalid_struct_errno): Ditto. + (check_null_empty_str): Change from VirtualQuery to IsBadWritePtr. + * thread.cc (check_valid_pointer): Ditto. + * resource.cc (getrlimit): Use check_null_invalid_struct macro for + checking validity of pointer. + (setrlimit): Ditto. + +Tue Jun 26 16:59:16 2001 Christopher Faylor + + * fhandler.cc (fhandler_disk_file::fstat): Don't rely on exactly 3 + characters being read for executable test since we could be checking + for less than that. + * syscalls.cc (stat_worker): Try opening the file the "correct" way + first so that #! processing can potentially happen. If that fails, + then use "query open" method. + + * spawn.cc (spawn_guts): Delay processing of signal until after we've + notified parent about reparenting. + +Tue Jun 26 10:47:24 2001 Christopher Faylor + + * mmap.cc: Clean up *ResourceLock calls throughout. + +Tue Jun 26 22:10:00 2001 Robert Collins rbtcollins@hotmail.com + + * thread.cc (pthread_cond::TimedWait): Check for WAIT_TIMEOUT as well + as WAIT_ABANDONED. + (__pthread_cond_timedwait): Calculate a relative wait from the abstime + parameter. + +Sun Jun 24 17:38:19 2001 Christopher Faylor + + * exceptions.cc (interrupt_setup): Move actions from setup_handler to + here. + (setup_handler): Move actions after a successful interrupt to + interrupt_setup. + * fork.cc (vfork): Augment debugging output. + * sigproc.cc (proc_subproc): Ditto. + * spawn.cc (spawn_guts): Ditto. Correctly fill out progname when spawn + NO_WAIT. Call signal handler when a signal arrives. + * sigproc.h: Declare a function. + +Fri Jun 22 16:50:00 2001 Corinna Vinschen + + * fhandler.h class fhandler_socket): Declare new method + `set_close_on_exec'. + * fhandler_socket.cc (fhandler_socket::set_close_on_exec): + New method. + +Fri Jun 22 16:12:00 2001 Corinna Vinschen + + * fhandler_tape.cc (fhandler_dev_tape::tape_erase): Set size + parameter to value expected by GetTapeParameters(). + +Thu Jun 21 22:01:39 2001 Marius Gedminas + + * fhandler_console.cc (fhandler_console::read): Detect AltGr more + robustly on WinNT. + +2001-06-22 Robert Collins + + * thread.cc (__pthread_cond_timedwait): Lock the waiting mutex before + the condition protect mutex to avoid deadlocking. (Found by Greg Smith). + (__pthread_cond_wait): Ditto. + +2001-06-30 Egor Duda + + * fhandler.cc (fhandler_base::open): Work around windows bug when + CreateFile() with dwDesiredAccess == 0 called on remote share returns + valid handle even if file doesn't exist. + +2001-06-20 Egor Duda + + * fhandler_socket.cc (fhandler_socket::signal_secret_event): New + function. + * fhandler.h: Declare it. + * fhandler_socket.cc (fhandler_socket::create_secret_event): Don't + signal secret event immediately. + (fhandler_socket::check_peer_secret_event): Do it after peer event + was opened. + * net.cc (cygwin_connect): Or if socket is non-blocking. + (cygwin_accept): Ditto. + +Mon Jun 18 17:09:25 2001 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave::init): Revert 2001-06-16 change. + + * fork.cc (fork_copy): Print more debugging info. + (fork_parent): Change order of arguments to accomdate buggy gcc. + (fork): Ditto. + +Sun Jun 17 18:54:46 2001 Christopher Faylor + + * syscalls.cc (_unlink): Reorganize to try harder to delete file with + DeleteFile and to recover more gracefully if FILE_FLAG_DELETE_ON_CLOSE + doesn't work properly. + +Sat Jun 16 13:06:49 2001 Christopher Faylor + + * exceptions.cc (sig_handle_tty_stop): Reset PID_STOPPED if not + actually stopping. + * fhandler_console.cc (fhandler_console::fixup_after_fork): Don't set + controlling terminal if just inheriting a handle. + (fhandler_console::fixup_after_exec): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::init): Ditto. + * signal.cc (kill_worker): Set appropriate errno if proc_exists + determines that process does not really exist. + +Fri Jun 15 14:34:19 2001 Christopher Faylor + + * path.cc (path_conv::check): Deal more robustly with foo/ behavior. + +Fri Jun 15 11:15:00 2001 Corinna Vinschen + + * fhandler_tape.cc (fhandler_dev_tape::tape_status): Set size + parameter to value expected by GetTapeParameters(). + +Thu Jun 14 20:19:46 2001 Christopher Faylor + + * fhandler.cc (fhandler_disk_file::fstat): Properly set executable bits + for directory when !ntsec && !ntea. Also move common code prior to + call to get_attributes. + +Fri June 15 09:25:00 Robert Collins + + * thread.cc (pthread_cond::Signal): Release the condition access + variable correctly. + +2001-06-14 Egor Duda + + * fhandler.cc (fhandler_base::open): Set win32 access flags to 0, when + requested. + * fhandler.h: New status flag FH_QUERYOPEN. + (fhandler::get_query_open): New function. + (fhandler::set_query_open): Ditto. + * syscalls.cc (stat_worker): Request query-only open mode. + +2001-06-12 Egor Duda + + * environ.cc (set_file_api_mode): New function. Move setting + of file APIs mode (OEM/ANSI) here. + (codepage_init): From here. + * winsup.h (set_file_api_mode): Declare it. + * fork.cc (fork_child): Set file APIs mode in forkee. + +Mon Jun 11 14:19:49 2001 Christopher Faylor + + * pinfo.cc: Use autoloaded ToolHelp functions throughout for Win9x. + * autoload.cc: Autoload ToolHelp functions. + + * sigproc.cc (proc_subproc): Incorporate SIGCHLD == SIG_IGN special + handling of zombie processes. Ensure that zombie processes which are + at the end of the zombie array are properly cleaned up. + +Mon Jun 11 11:18:56 2001 Christopher Faylor + + * path.cc (chdir): Fix call to path_conv constructor so that it REALLY + doesn't check for the null/non-empty path. + +Sun Jun 10 23:34:09 2001 Christopher Faylor + + * path.cc (path_conv::update_fs_info): Don't consider remote drives to + be NTFS. Set root_dir before invoking GetDriveType (from Kazuhiro + Fujieda ). Eliminate extra checks for rootdir. + +Sun Jun 10 20:19:47 2001 Christopher Faylor + + * path.cc (chdir): Pre-check path for validity before eating trailing + space. Then, ensure that path_conv doesn't check the path for validity + again. + +Sun Jun 10 12:56:00 2001 Christopher Faylor + + * exceptions.cc (sigdelayed): Ensure that signal is cleared as + the last operation or suffer races. + * sigproc.cc (proc_subproc): Deal with zombie array overflow. + +Sun Jun 10 11:56:00 2001 Corinna Vinschen + + * cygwin.din: Add fchdir symbols. + * path.cc (chdir): Guard against invalid parameter. + (fchdir): New function. + * include/cygwin/version.h: Bump API minor version to 40. + * uinfo.cc (internal_getlogin): Remove unused variable. + +Sat Jun 9 23:20:00 2001 Corinna Vinschen + + * syscalls.cc (seteuid): Set environment variables USERNAME and + USERDOMAIN before impersonation to workaround a LookupAccountSid() + misbehaviour. + * uinfo.cc (internal_getlogin): Revert most of the previous change. + Don't set environment variables USERNAME and USERDOMAIN. That's + the job of seteuid() now. Try to get logon server from Lsa + only if logon server isn't already known. + +Thu Jun 7 15:54:32 2001 Robert Collins + + * thread.cc (pthread_cond::Broadcast): Don't print error messages on + invalid mutexs - user programs are allowed to call + pthread_cond_broadcast like that. + (__pthread_cond_timedwait): Initialise themutex properly. + (__pthread_cond_wait): Initialise themutex properly. + +Tue Jun 5 19:56:00 2001 Corinna Vinschen + + * fhandler_console.cc (fhandler_console::dup): Allocate space for + savebuf on Cygwin heap. + (fhandler_console::char_command): Ditto. Use correct values for size. + +2001-06-05 Egor Duda + + * security.h (NTWriteEA): Change prototype. + * ntea.cc (NTReadEA): Don't check for global ntea setting, now + it's caller responsibility. + (NTWriteEA): Ditto. + * security.cc (get_file_attribute): Read attribute from EA only + if 'ntea' is enabled. + (set_file_attribute): Ditto. + * path.h: (class path_conv): Add members to store file system + information. + (path_conv::get_drive_type): New function. + * syscalls.cc (stat_worker): Use it. + * path.cc (path_conv::update_fs_info): New functions. + (path_conv::check): Get file system information from device where + file resides. On NTFS, try to read symlink contents from EA. + (get_symlink_ea): New function. + (set_symlink_ea): Ditto. + (symlink): Store symlink in extended attribute, if possible. + +Tue Jun 5 11:18:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_disk_file::fstat): Always reset file position + to original value after checking for executable magic. + +Mon Jun 4 16:21:00 2001 Corinna Vinschen + + * cygheap.h (cygheap_user::cygheap_user): Initialize token to + INVALID_HANDLE_VALUE. + * uinfo.cc (uinfo_init): Close token handle if needed. + +Sun Jun 3 20:52:13 2001 Christopher Faylor + + * path.cc (normalize_posix_path): Revert .. check removed by previous + changes. + * cygheap.h: Temporarily declare path_prefix_p here. + +Mon Jun 4 0:14:00 2001 Corinna Vinschen + + * net.cc (wsock_event): Add destructor. + +Sun Jun 3 09:49:55 2001 Robert Collins + + * dlfcn.cc (dlclose): Do not call FreeLibrary if the symbol to close + was obtained by dlopen(NULL,...). + +Sat Jun 2 23:11:52 2001 Christopher Faylor + + * syscalls.cc (sleep): Try to be a little more accomodating of signal + arrival. Ensure that the signal handler is called. + +Sat Jun 2 14:07:28 2001 Christopher Faylor + + * cygheap.cc (cygheap_root::cygheap_root): Remove constructor. + (cygheap_root::~cygheap_root): Remove destructor. + (cygheap_root::operator =): Remove. + (cygheap_root::set): New method. + * cygheap.h (cygheap_root): Reflect above changes. Store root info in + mount-like structure. + (cygheap_root:posix_ok): New method. + (cygheap_root::ischroot_native): Ditto. + (cygheap_root::unchroot): Ditto. + (cygheap_root::exists): Ditto. + (cygheap_root::posix_length): Ditto. + (cygheap_root::posix_path): Ditto. + (cygheap_root::native_length): Ditto. + (cygheap_root::native_path): Ditto. + * dir.cc (opendir): Remove special chroot test. + * path.cc (path_prefix_p): Remove front end. + (normalize_posix_path): Reorganize chroot tests to accommodate new + convention of allowing paths using posix chroot prefix. + (path_conv::check): Pass a "already ran normalize" option to + conv_to_win32_path. Return if there is an error from this function. + (mount_info::conv_to_win32_path): Add extra argument. Don't call + normalize_posix_path if caller has already done so. Substitute chroot + setting, if any, for root translation. Add chroot checking to final + output step. + * shared_info (mount_info): Accommodate additional argument to + conv_to_win32_path. + * syscalls.cc (chroot): Store both normalized posix path and native + path in chroot. + +Fri Jun 1 10:57:19 2001 Christopher Faylor + + * path.cc (chdir): Really make sure that isspace gets only an unsigned + char. + +Fri Jun 1 13:45:00 2001 Corinna Vinschen + + * syscalls.cc (_rename): Handle the case that `foo' is renamed to + `bar' while `bar.lnk' is an existing shortcut-symlink. + +Thu May 31 15:57:57 2001 Christopher Faylor + + * fhandler.cc (fhandler_disk_file::fstat): Avoid clearing S_IFMT bits + since we've already pre-cleared everything anyway. + +Wed May 30 23:51:32 2001 Earnie Boyd + + * path.cc (chdir): Always send unsigned chars to isspace since newlib's + isspace doesn't deal well with "negative" chars. + +Wed May 30 23:51:32 2001 Christopher Faylor + + * fhandler.cc (fhandler_disk_file::open): Propagate remote status of + file garnered from path_conv. Move #! checking to fstat. + (fhandler_disk_file::fstat): Reorganize st_mode setting to eliminate + duplication. Move check for #! here from fhandler::open. + + * fhandler.h (fhandler_base::isremote): New method. + (fhandler_base::set_isremote): Ditto. + (fhandler_base::set_execable_p): Also record "don't care if executable + state". + (fhandler_base::dont_care_if_execable): New method. + * path.cc (path_conv::check): Clear new flags. Appropriately set + vol_flags, drive_type, and is_remote_drive. + * path.h: Add new flags and methods for manipulating them. + * syscalls.cc (_unlink): Use isremote() to determine if a path is + remote rather than calling GetDriveType. + (stat_worker): Ditto. + * security.cc (get_file_attribute): Or attribute with result of + NTReadEA to be consistent with get_nt_attribute. + +Tue May 29 19:02:00 2001 Corinna Vinschen + + * sec_helper.cc (cygsid::getfrompw): Change parameter to `const'. + (cygsid::getfromgr): Ditto. + * security.cc: Use `sys_mbstowcs' and `sys_wcstombs' throughout. + (extract_nt_dom_user): Try to get user and domain from SID in + pw->pw_gecos first. + * security.h (class cygsid): Change parameter of getfrompw() and + getfromgr() to `const'. + * uinfo.cc (internal_getlogin): Change order for evaluating user + information in winNT case. Drop usage of NetWkstaUserGetInfo(). + +Mon May 28 21:34:00 2001 Corinna Vinschen + + * shortcut.c (check_shortcut): Treat only Cygwin shortcuts as symlinks. + +Fri May 25 11:07:07 2001 Christopher Faylor + + * path.cc (symlink_info::check): Correctly set 'ext_tacked_on'. Use + this to determine if user specified 'foo.lnk' explicitly. Reorganize + slightly to get rid of one goto. + +Fri May 25 10:15:00 2001 Corinna Vinschen + + * path.cc (symlink_info::check): Add a check to return correctly + if incoming `*.lnk' file is not a symlink. + +Thu May 24 15:46:50 2001 Christopher Faylor + + * path.cc (slash_drive_prefix_p): Remove. + (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. + +Thu May 24 01:17:33 2001 Christopher Faylor + + * exceptions.cc (handle_exceptions): Bump repeat count for debugging + kick out. + + * fhandler.h (fhandler_dev_dsp): Add a fixup_after_exec. + * fhandler_dsp.cc (class Audio): Add TOT_BLOCK_SIZE to enum. + (operator new): New. + (bigwavebuffer): Declare using TOT_BLOCK_SIZE to avoid buffer overruns. + (Audio::Audio): Optimize slightly. + (fhandler_dev_dsp::open): Allocate s_audio using static buffer. + (fhandler_dev_dsp::fixup_after_exec): New function. Ditto. + +Wed May 23 17:45:00 2001 Corinna Vinschen + + * syscalls.cc (seteuid): Restrict overriding external provided + user tokens to ntsec. Don't test external tokens for primary + group to evaluate if it should be overridden. Restrict creating + internal tokens to ntsec. + +Wed May 23 10:11:00 2001 Corinna Vinschen + + * syscalls.cc (chown_worker): Don't check for ENOSYS. + +Tue May 22 12:20:07 2001 Christopher Faylor + + * signal.cc (sleep): Protect with sigframe. + +Tue May 22 17:58:00 2001 Corinna Vinschen + + * security.cc (get_file_attribute): Don't set errno. + +Mon May 21 15:08:00 2001 Christopher Faylor + + * configure.in: Allow --enable-newvfork to turn NEWVFORK on and off. + * configure: Regenerate. + +Mon May 21 11:46:01 2001 Christopher Faylor + + * include/cygwin/version.h: Bump minor version number. + +Sun May 20 13:26:25 2001 Christopher Faylor + + * fhandler_dsp.cc: Reformat to GNU standards. + (s_audio): Change to a pointer throughout. + (fhandler_dev_dsp::open): Initialize s_audio, if required. + +Sat May 19 23:40:00 2001 Corinna Vinschen + + * autoload.cc: Add load statements for `LookupAccountNameW', + `LsaClose', `LsaEnumerateAccountRights', `LsaFreeMemory', + `LsaOpenPolicy', `LsaQueryInformationPolicy', `NetLocalGroupEnum', + `NetLocalGroupGetMembers', `NetServerEnum', `NetUserGetGroups' and + `NtCreateToken'. + * ntdll.h: Add declaration for `NtCreateToken'. + * sec_helper.cc: Add `well_known_local_sid', `well_known_dialup_sid', + `well_known_network_sid', `well_known_batch_sid', + `well_known_interactive_sid', `well_known_service_sid' and + `well_known_authenticated_users_sid'. + (cygsid::string): Define as const method. + (cygsid::get_sid): Set psid to NO_SID on error. + (cygsid::getfromstr): Ditto. + (cygsid::getfrompw): Simplify. + (cygsid::getfromgr): Check for gr == NULL. + (legal_sid_type): Move to security.h. + (set_process_privilege): Return -1 on error, otherwise 0 or 1 related + to previous privilege setting. + * security.cc (extract_nt_dom_user): Remove `static'. + (lsa2wchar): New function. + (open_local_policy): Ditto. + (close_local_policy): Ditto. + (get_lsa_srv_inf): Ditto. + (get_logon_server): Ditto. + (get_logon_server_and_user_domain): Ditto. + (get_user_groups): Ditto. + (is_group_member): Ditto. + (get_user_local_groups): Ditto. + (sid_in_token_groups): Ditto. + (get_user_primary_group): Ditto. + (get_group_sidlist): Ditto. + (get_system_priv_list): Ditto. + (get_priv_list): Ditto. + (get_dacl): Ditto. + (create_token): Ditto. + (subauth): Return immediately if SE_TCB_NAME can't be assigned. + Change all return statements in case of error to jumps to `out' + label. Add `out' label to support cleanup. + * security.h: Add extern declarations for `well_known_local_sid', + `well_known_dialup_sid', `well_known_network_sid', + `well_known_batch_sid', `well_known_interactive_sid', + `well_known_service_sid' and `well_known_authenticated_users_sid'. + Add extern declarations for functions `create_token', + `extract_nt_dom_user' and `get_logon_server_and_user_domain'. + (class cygsid): Add method `assign'. Change operator= to call new + `assign' method. Add `debug_print' method. + (class cygsidlist): New class. + (legal_sid_type): Moved from sec_helper.cc to here. + * spawn.cc (spawn_guts) Revert reversion of previous patch. + Call `RevertToSelf' and `ImpersonateLoggedOnUser' instead of `seteuid' + again. + * syscalls.cc (seteuid): Rearranged. Call `create_token' now when + needed. Call `subauth' if `create_token' fails. Try setting token + owner and primary group only if token was not explicitely created + by `create_token'. + * uinfo.cc (internal_getlogin): Try harder to generate correct user + information. Especially don't trust return value of `GetUserName'. + +Sat May 19 21:16:07 2001 Christopher Faylor + + * fork.cc (fork_parent): Move atforkprepare call here. + (fork): From here. + +Sat May 19 18:35:00 2001 Corinna Vinschen + + * autoload.cc: Add missing load statement for `CancelIo'. + +Sat May 19 01:22:43 2001 Christopher Faylor + + * grp.cc (read_etc_group): Don't copy mutex on fork. + * pwd.cc (read_etc_passwd): Ditto. + * autoload.cc (LoadDLLfuncEx): Use LoadDLLprime to initialize DLL + specific area. + +Fri May 18 10:31:00 2001 Corinna Vinschen + + * net.cc (wsock_event::wait): Explicitely cancel IO when a signal + arrived to avoid data loss. Fallback to blocking IO when canceling + fails. + +Thu May 17 15:29:00 2001 Corinna Vinschen + + * security.cc (cygwin_set_impersonation_token): Never destroy + previous token object. + (subauth): Create token source with well defined identifier. + +Wed May 16 23:27:00 2001 Corinna Vinschen + + * uinfo.cc (uinfo_init): Just set user token to INVALID_HANDLE_VALUE. + Token value is already invalid at that point. + +Wed May 16 21:34:00 2001 Fred Yankowski + + * net.cc (errmap): Add missing mapping from WSAEINTR to EINTR. + +Wed May 16 09:20:00 2001 Corinna Vinschen + + * sec_helper.cc (legal_sid_type): Fix conditional. Change to + inline function. + +Wed May 16 01:01:48 2001 Christopher Faylor + + * autoload.h: Eliminate. + * autoload.cc: Pull in autoload.h. Eliminate many macros. Rewrite to + avoid necessity of initialization routines. Just use a standard one. + (wsock_init): New function. Moved from net.cc. + * net.cc (wsock_init): Move to autoload.cc. + (wsadata): Make global. + * dtable.cc (dtable::build_fhandler): Use more reliable method for + checking if net stuff has been loaded. + +Tue May 15 19:52:00 2001 Corinna Vinschen + + * fork.cc (fork): Eliminate superfluous call to getuid(). + * security.h: New define `NO_SID'. Remove declarations of functions + moved to methods into class cygsid. + (class cygsid): Declare new methods `getfromstr', `get_sid', + `getfrompw', `getfromgr', `get_rid', `get_uid', `get_gid', `string' + and new constructors and operators =, == and !=. + Declare new global cygsids `well_known_XXX_sid' substituting the + corresponding `get_XXX_sid' functions. Remove declarations of + these functions. + * sec_helper.cc (well_known_admin_sid): New global variable. + (well_known_system_sid): Ditto + (well_known_creator_owner_sid): Ditto + (well_known_world_sid): Ditto + (cygsid::string): New method, substituting `convert_sid_to_string_sid'. + (cygsid::get_sid): New method, substituting `get_sid'. + (cygsid::getfromstr): New method, substituting + `convert_string_sid_to_sid'. + (cygsid::getfrompw): New method, substituting `get_pw_sid'. + (cygsid::getfromgr): New method, substituting `get_gr_sid'. + (cygsid::get_id): New method, substituting `get_id_from_sid'. + (get_admin_sid): Eliminated. + (get_system_sid): Ditto. + (get_creator_owner_sid): Ditto. + (get_world_sid): Ditto. + * grp.cc: Use new cygsid methods and well known sids throughout. + * registry.cc: Ditto. + * sec_acl.cc: Ditto. + * security.cc: Ditto. + * shared.cc: Ditto. + * syscalls.cc (seteuid): Ditto. Eliminate redundant conditional. + * uinfo.cc (internal_getlogin): Ditto. + * spawn.cc (spawn_guts) Revert previous patch. + +Tue May 15 10:20:00 2001 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::ioctl): Convert s_addr + field to host byte order before comparing with INADDR_LOOPBACK. + +Tue May 15 9:03:00 2001 Corinna Vinschen + + * autoload.cc: Add autoload statements for ws2_32 functions + `WSACloseEvent', `WSACreateEvent', `WSAGetOverlappedResult', + `WSARecv', `WSARecvFrom', `WSASend', `WSASendTo' and `WSASetEvent', + `WSAWaitForMultipleEvents'. + * net.cc: Define wsock_evt. + (wsock_event): New class. + (cygwin_sendto): Use overlapped socket io if available. + (cygwin_recvfrom): Ditto. + (cygwin_recv): Ditto. + (cygwin_send): Ditto. + * security.cc (subauth): Set Win32 error to 0 to safely ask for the + error code of dynamically loaded function `LsaRegisterLogonProcess'. + +Mon May 14 15:37:29 2001 Christopher Faylor + + * errno.cc (_sys_errlist): Add missing commas. + +Mon May 14 16:13:00 2001 Corinna Vinschen + + * security.cc (subauth): Check if Secur32.dll could be loaded. + +Sun May 13 22:49:04 2001 Christopher Faylor + + * path.cc (path_conv::check): Revert allow_ntsec check so that volume + info is always retrieved and isdisk setting is properly set. + +Sun May 13 14:02:36 2001 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_common::dup): Preserve O_NOCTTY when + duping a filehandle. + +Sat May 12 18:19:00 2001 Corinna Vinschen + + * dir.cc (rmdir): Rearrange slightly to allow removing directories + even when R/O attribute is set. + +Fri May 11 16:53:38 2001 Christopher Faylor + + * external.cc (fillout_pinfo): Use correct pids. + * path.cc (mount_info::conv_to_win32_path): Correct test for whether to + include a slash. + +Fri May 11 01:04:17 2001 Christopher Faylor + + * exceptions.cc (handle_exceptions): Don't print message when executing + from a cygwin program. + +2001-05-10 Egor Duda + Christopher Faylor + + * environ.cc (winenv): Always add SYSTEMDRIVE and SYSYEMROOT to + win32-style environment if they don't already exist. + +2001-05-10 Kazuhiro Fujieda + + * path.cc (mount_info::conv_to_win32_path): Treat UNC paths the same as + paths including `:' or `\'. + +Wed May 9 14:46:32 2001 Christopher Faylor + + * fhandler.h (fhandler_termios::echo_erase): Declare new method. + * fhandler_termios.cc (fhandler_termios::echo_erase): New method for + echoing erase characters. + (fhandler_termios::line_edit): Check the echo flag before echoing + control characters (from Kazuhiro Fujieda ). + +Wed May 9 10:43:30 2001 Christopher Faylor + + * include/pthread.h: Remove C++ comment. + +Tue May 8 11:09:59 2001 Christopher Faylor + + * cygheap.cc (_cfree): Add regparm attribute. + (_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. + +Mon May 7 21:33:17 2001 Christopher Faylor + + * include/sys/file.h: Revert special X_OK usage. Just make it a + constant. + +Sun May 6 17:05:00 2001 Robert Collins + + * thread.h (pthread_cond): New element cond_access to allow atomic + broadcasts. + * thread.cc (pthread_cond::pthread_cond): Initialise cond_access. + (pthread_cond::~pthread_cond): Destroy cond_access. + (pthread_cond::Broadcast): Use cond_access. + (pthread_cond::Signal): Use cond_access. + (pthread_cond_wait): Use cond_access. + (pthread_cond_timedwait): Use cond_access. + +Sun May 6 11:55:40 2001 Christopher Faylor + + * string.h (cygwin_strchr): Make 'static inline' so that things will + still work when optimized. + +Sat May 5 01:04:11 2001 Christopher Faylor + + * exceptions.cc (handle_exceptions): Vastly increase test for exception + loop guard variable. + +Fri May 4 22:23:33 2001 Christopher Faylor + + * exceptions.cc (stack_info): Add some controls. + (stack_info::init): Add extra arguments to control method of + initialization.. If we have a known good frame, set things up so that + this frame is not skipped the first time through. Record whether + caller cares about arguments or not. + (stack_info::walk): Don't store arguments if they're unwanted. + (stackdump): Add isexception parameter for use when called by exception + handler. + (cygwin_stackdump): Accommodate extra argument to stackdump. + (handle_exceptions): Ditto. + (sig_handle): Ditto. + (interrupt_on_return): Accommodate extra arguments to stack walk + initialization. + +Fri May 4 21:05:20 2001 Christopher Faylor + + * localtime.c: Revert exclusion of windows.h. + +Fri May 4 17:03:16 2001 Christopher Faylor + + * string.h: Fix last-minute typo. + +Fri May 4 16:49:34 2001 Christopher Faylor + + * pinfo.h: Correctly set __SIGOFFSET. + + * path.cc (hash_path_name): Avoid calling library functions for simple + copying of characters. + + * shortcut.c: Use WIN32_LEAN_AND_MEAN. + * smallprint.c: Ditto. + + * environ.cc (getwinenv): Minor clarity fix. + + * localtime.c: No need to include windows.h + + * string.h: New file. + +Fri May 4 16:37:30 2001 Christopher Faylor + + * exceptions.cc (ctrl_c_handler): Always send signal to process if it + has no tty. + +2001-05-04 Egor Duda + + * fhandler_socket.cc (set_connect_secret): Use /dev/urandom to + generate secret cookie. + +Thu May 3 16:37:55 2001 Christopher Faylor + + * include/pthread.h (pthread_cleanup_push): Eliminate space preceding + arguments. + (pthread_cleanup_pop): Ditto. + +Thu May 3 18:16:00 2001 Corinna Vinschen + + * net.cc (wsock_init): Rename `was_in_progress' to `wsock_started' + for clearness. + +Thu May 3 10:44:16 2001 Christopher Faylor + + * exceptions.cc (handle_exceptions): Break out of "loop" if the + debugger doesn't seem to be attaching to our process. + +Wed May 2 20:18:00 2001 Corinna Vinschen + + * autoload.cc: Use new definition of LoadDLLinitfunc throughout. + Redefine wrapper for wsock32.dll and ws2_32.dll. + (std_dll_init): New function. + * autoload.h: Rename LoadDLLinitfunc to LoadDLLinitfuncdef. + Add new defines LoadDLLinitfunc and LoadDLLstdfunc. + * net.cc (wsock_init): Add guard variable handling. Take care + to call WSAStartup only once. Load WSAStartup without using + autoload wrapper to eliminate recursion. Eliminate FIONBIO + and srandom stuff. + +Tue May 1 01:26:15 2001 Christopher Faylor + + * path.cc (mount_info::conv_to_win32_path): More path tweaking. + +Tue May 1 00:34:46 2001 Christopher Faylor + + * path.cc (mount_info::conv_to_win32_path): Fix debugging output to + avoid a SIGSEGV. Avoid double backslashes in middle of filename. + +Mon Apr 30 21:51:14 2001 Christopher Faylor + + * path.cc (mkrelpath): New function. + (mount_info::conv_to_win32_path): Eliminate now-unneeded relative path + name arg and processing. + (path_conv::check): Accommodate relative path names again. Accommodate + 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. + +Mon Apr 30 22:09:00 2001 Corinna Vinschen + + * autoload.cc: Add LoadDLLinitfunc for secur32.dll. + Add LoadDLLfuncEx statements for AllocateLocallyUniqueId@4, + DuplicateTokenEx@24, LsaNtStatusToWinError@4, + LsaDeregisterLogonProcess@4, LsaFreeReturnBuffer@4, + LsaLogonUser@56, LsaLookupAuthenticationPackage@12, + LsaRegisterLogonProcess@12, + * environ.cc: Add extern declaration for `subauth_id'. + (subauth_id_init): New function for setting `subauth_id'. + (struct parse_thing): Add entry for `subauth_id'. + * fork.cc (fork_parent): Call `RevertToSelf' and + `ImpersonateLoggedOnUser' instead of `seteuid'. + * security.cc: Define global variable `subauth_id'. + (extract_nt_dom_user): New function. + (cygwin_logon_user): Call `extract_nt_dom_user' now. + (str2lsa): New static function. + (str2buf2lsa): Ditto. + (str2buf2uni): Ditto. + (subauth): Ditto. + * security.h: Add prototype for `subauth'. + * spawn.cc (spawn_guts): Use cygheap->user.token only if impersonated. + Use `cygsid' type. Remove impersonation before allowing access to + workstation/desktop to everyone. Call `RevertToSelf' and + `ImpersonateLoggedOnUser' instead of `seteuid'. + * syscalls.cc (seteuid): Rearranged to allow using subauthentication + to retrieve user tokens when needed. + +Mon Apr 30 20:26:00 2001 Corinna Vinschen + + * uinfo.cc (internal_getlogin): Formatting change. + +Mon Apr 30 19:58:00 2001 Corinna Vinschen + + * grp.cc: Eliminate MAX_DOMAIN_NAME define. + (read_etc_group): Substitute MAX_DOMAIN_NAME by + INTERNET_MAX_HOST_NAME_LENGTH. + * passwd.cc (parse_pwd): Don't force pw_name to be lower case. + * sec_helper.cc: Substitute MAX_USER_NAME by UNLEN, + MAX_COMPUTERNAME_LENGTH by INTERNET_MAX_HOST_NAME_LENGTH throughout. + (lookup_name): Slight cleanup. + * security.cc (alloc_sd): Substitute MAX_USER_NAME by UNLEN. + * security.h: Define DEFAULT_UID as DOMAIN_USER_RID_ADMIN and + DEFAULT_GID as DOMAIN_ALIAS_RID_ADMINS. + * shared.cc (memory_init): Substitute MAX_USER_NAME by UNLEN. + * thread.h: Ditto. + * uinfo.cc (internal_getlogin): Substitute MAX_USER_NAME by UNLEN. + Substitute MAX_COMPUTERNAME_LENGTH and MAX_HOST_NAME by + INTERNET_MAX_HOST_NAME_LENGTH. + * winsup.h: Include lmcons.h. Eliminate MAX_USER_NAME and + MAX_HOST_NAME. Move DEFAULT_UID and DEFAULT_GID to security.h. + +Mon Apr 30 12:35:40 2001 Christopher Faylor + + * path.cc (path_conv::check): Don't use path_flags when converting to + MS-DOS syntax unless parsing tail of path component. Stop parsing path + when we reach the 'root' of the path. Correctly copy tail to path + component. + +Sun Apr 29 22:28:06 2001 Christopher Faylor + + * exceptions.cc (INIT_EXCEPTION_HANDLER): Eliminate. + (init_exceptions): Just use init_exception_handler. + (open_stackdumpfile): New function. + (stack_info::first_time): Eliminate. + (stack_info::init): Set up fields to avoid "first_time" consideration. + (stack_info::walk): Remove "first_time" consideration. + (stackdump): Change arguments to accept initial frame pointer and open + stack file flag. + (stack): Eliminate. + (cygwin_stackdump): Use stackdump() rather than stack(). + (try_to_debug): Remove all synchronization logic. Just keep looping in + exception handler until debugger notices us. Return 1 if successfully + started debugger. + (handle_exceptions): Just return if we know that we're debugging. + Reorganize to avoid creating a stackdump file if we are starting a + debugger. Return from exception handler if debugger started + successfully. + (sig_handle): Create a stackdump only if debugger wasn't started. + * winsup.h (try_to_debug): Add an argument. + +Sun Apr 29 21:41:25 2001 Christopher Faylor + + * path.cc (symlink_info::check): Remove extra arguments, move + functionality 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. + +Sat Apr 28 19:36:13 2001 Christopher Faylor + + Throughout, change 'tty_attached' to 'real_tty_attached', for clarity. + 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 ) + * 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. + +2001-04-27 Kazuhiro Fujieda + + * thread.cc (thread_init_wrapper): Use _REENT_INIT to initialize the + reent structure of newlib. + +Fri Apr 27 14:02:24 2001 Christopher Faylor + + * sigproc.h (sig_send): Add exception parameter to sig_send. + * sigproc.cc (sig_send): Ditto. Use it when setting frame info. + * exceptions.cc (handle_exceptions): Use exception flag when calling + sig_send. + +2001-04-27 Egor Duda + + * tty.cc (tty::make_pipes): Set to_slave pipe mode to nonblocking. + * fhandler_tty.cc (fhandler_pty_master::accept_input): If pipe buffer + is full, give slave a chance to read data. + +2001-04-26 Kazuhiro Fujieda + + * security.cc (alloc_sd): Add unrelated ACCESS_ALLOWED_ACE behind + the `everyone' ACE. + +Wed Apr 25 15:07:37 2001 Christopher Faylor + + * sigproc.h [sigthread]: Add exception field. + [sigframe::~sigframe]: Clear exception field. + [sigframe::set]: Set exception field from caller. + * sigproc.cc (sig_send): Set exception field when frame pointer is + passed in. + * exceptions.cc (interrupt_on_return): Always treat exception as + interruptible. + +2001-04-25 Egor Duda + + * cygwin.din: Export asctime_r, ctime_r, gmtime_r, localtime_r + * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 39 + +Wed Apr 25 10:57:36 2001 Christopher Faylor + + * include/cygwin/version.h: Bump minor version number. + * childinfo.h: Bump child structure magic number. + +2001-04-25 Kazuhiro Fujieda + + * uinfo.cc (internal_getlogin): Return pointer to struct passwd. + (uinfo_init): Accommodate the above change. + * syscalls.cc (seteuid): Ditto. + +Tue Apr 25 11:08:00 2001 Corinna Vinschen + + * autoload.cc: Add LoadDLLfunc statements for SetTokenInformation@16. + * cygheap.cc: Include security.h. + * grp.cc (internal_getgrent): New function. + (getgroups): Rearranged using `internal_getgrent' and the new + `cygsid' class. + * passwd.cc (internal_getpwent): New function. + * sec_acl.cc: Use new `cygsid' class throughout. + (acl_access): Use `internal_getgrent' instead of `getgrent'. + * sec_helper.cc: Use new `cygsid' class throughout. + (get_id_from_sid): Use `internal_getgrent' instead of `getgrent'. + Use `internal_getpwent' instead of `getpwent'. + * security.cc: Use new `cygsid' class throughout. + * security.h: Move `MAX_SID_LEN' from winsup.h to here. + Add extern declarations for `internal_getgrent' and `internal_getpwent'. + (class cygsid): New class. + * shared.cc (sec_user): Use new `cygsid' class. + * syscalls.cc (seteuid): Try to set owner to user and primary group to + current group in impersonation token before performing impersonation. + (setegid): Try to set primary group in process token to the new group + if ntsec is on. + * uinfo.cc (internal_getlogin): Use new `cygsid' class. + Try to set owner to user and primary group to current group in process + token if the process has been started from a non cygwin process. + (uinfo_init): Set primary group only if the process has been started + from a non cygwin process. + * winsup.h: Move define for `MAX_SID_LEN' to security.h. + +Mon Apr 16 23:20:00 2001 Andy Younger + + * fhandler_dsp.cc: Improved handling of 8 bit playback modes. + Put in mock support for SNDCTL_DSP_SETFRAGMENT. + +Tue Apr 24 23:51:00 2001 Corinna Vinschen + + * passwd.cc (getpwnam_r): Add pw_passwd handling as well. + (getpwuid_r): Ditto. + +Tue Apr 24 23:43:00 2001 Corinna Vinschen + + * passwd.cc (getpwnam_r): Use correct offsets into buffer. + Copy pw_gecos field as well. + (getpwuid_r): Ditto. + +2001-04-24 Egor Duda + + * dlmalloc.c: New file. Port of Doug Lea's malloc + * dlmalloc.h: Ditto. + * Makefile.in: Add support for MALLOC_DEBUG + * config.h.in: Ditto. + * winsup.h: Ditto. + * configure.in: Add --enable-malloc-debugging option. + * configure: Regenerate. + * debug.h: Include declarations for debugging malloc. + * tty.cc (grantpt): Fix definition. + (unlockpt): Ditto. + +Mon Apr 23 22:00:29 2001 Christopher Faylor + + Remove trailing underscore from fhandler_base and friends, throughout. + * fhandler.h (fhandler_base::set_open_status): New method. Stores + original open status. + (fhandler_base::get_open_status): New method. Retrieves original open + status. + (fhandler_base::reset_to_open_binmode): New method. + * fhandler.cc (fhandler_base::open): Save open status. + (fhandler_base::init): Ditto. + * fhandler_clipboard.cc (fhandler_clipboard::open): Ditto. + * fhandler_console.cc (fhandler_console::open): Ditto. + * fhandler_dsp.cc (fhandler_dsp::open): Ditto. + * fhandler_dev_mem.cc (fhandler_dev_mem::open): Ditto. + * fhandler_dev_random.cc (fhandler_dev_random::open): Ditto. + * fhandler_serial.cc (fhandler_serial::open): Ditto. + * fhandler_tty_slave.cc (fhandler_tty_slave::open): Ditto. + * fhandler_tty_master.cc (fhandler_tty_master::open): Ditto. + * fhandler_dev_zero.cc (fhandler_dev_zero::open): Ditto. + * syscalls.cc (setmode): Rework so that 0 mode value causes reversion + to open state. + + * fhandler_tty_slave.cc (fhandler_tty_slave::read): Use correct + multiplier when converting from deciseconds to milliseconds. + +Mon Apr 23 13:28:35 2001 Christopher Faylor + + * fhandler.h (fhandler_base::clear_r_binary): New method. + (fhandler_base::clear_w_binary): New method. + * syscalls.cc (setmode): Accept 0 as mode value. Resets text/binary + behavior for fd to default. + +Mon Apr 23 12:46:07 2001 Christopher Faylor + + * net.cc [errmap]: Add '0' condition. + (find_winsock_errno): Don't translate no error to EPERM. + +Sun Apr 22 20:48:24 2001 Christopher Faylor + + * include/cygwin/version.h: Bump Cygwin version and API version. + +Mon Apr 23 9:27:00 2001 Robert Collins + + * thread.cc (MTinterface::Init): Always initialise per process variables. + +Sun Apr 22 19:18:18 2001 Christopher Faylor + + * features.h: Reinstate as wrapper for sys/features.h. + +Mon Apr 23 0:10:00 2001 Corinna Vinschen + + * security.cc (alloc_sd): Reformat comment. + * shared.cc: Drop function declarations already in security.h. + +Sun Apr 22 12:17:57 2001 Christopher Faylor + + * shortcut.c (check_shortcut): Close input file handle before + returning. + * 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. + +Sat Apr 21 19:26:05 2001 Christopher Faylor + + * thread.cc (MTinterface::Init): Remove accidentally checked in code. + +Sun Apr 22 00:22:00 2001 Robert Collins + + * passwd.cc (getpwuid): Check for thread cancellation. + (getpwuid_r): Ditto. + (getpwname): Ditto. + (getpwnam_r): Ditto. + * thread.h (pthread_mutex): New constructors for pshared operation. + (MTinterface): Associative array for pshared mutex's. + * thread.cc (MTinterface::Init): Initailize pshared mutex array. + (pthread_cond::BroadCast): Implementation notes. + (pthread_cond::TimedWait): Remove use of SignalObjectAndWait on non-NT systems. + (pthread_mutex::pthread_mutex(unsigned short)): New function. + (pthread_mutex::pthread_mutex (pthread_mutex_t *, pthread_mutexattr *)):New function. + (pthread_mutex::pthread_mutex(pthread_mutexattr *)): Fail on pshared mutex's. + (__pthread_mutex_getpshared): New function. + (__pthread_join): Check for thread cancellation. + (__pthread_cond_timedwait): Support pshared mutex's. + (__pthread_cond_wait): Ditto. + (__pthread_condattr_setpshared): Error on PROCESS_SHARED requests. + (__pthread_mutex_init): Support pshared mutex's. + (__pthread_mutex_getprioceiling): Ditto. + (__pthread_mutex_lock): Ditto. + (__pthread_mutex_trylock): Ditto. + (__pthread_mutex_unlock): Ditto. + (__pthread_mutex_destroy): Ditto. + (__pthread_mutex_setprioceiling): Ditto. + (__pthread_mutexattr_setpshared): Support PTHREAD_PROCESS_PSHARED requests. + +Fri Apr 20 19:38:29 2001 Christopher Faylor + + * cygwin.din: Add *scanf and *scan_r functions. + +Fri Apr 20 22:25:00 2001 Corinna Vinschen + + * security.cc (set_process_privileges): Swap out. + * sec_helper.cc (set_process_privilege): Rename from + `set_process_privileges'. Takes the privilege to enable or disable + as parameter now. + * security.h: Add prototype for `set_process_privileges'. + +2001-04-19 Egor Duda + + * path.cc (path_conv::check): Always initialize member variables. + +Fri Apr 20 12:27:49 2001 Christopher Faylor + + * include/sys/file.h: More cleanup for X_OK. + +Fri Apr 20 11:48:45 2001 Christopher Faylor + + * include/sys/file.h: Move X_OK protection earlier. + + * dtable.cc (dtable::vfork_child_fixup): Avoid closing already closed + handles. + +Fri Apr 20 16:29:00 2001 Corinna Vinschen + + * grp.cc (getgroups): Change so that SIDs get compared instead + of strings to SIDs. + +Fri Apr 20 14:50:00 2001 Corinna Vinschen + + * Makefile.in: Add object files `sec_helper.cc' and `sec_acl.cc'. + * security.cc: Swap out several functions. + * sec_acl.cc: New file. Move Sun compatibel ACL functions from + `security.cc' to here. + * sec_helper.cc: New file. Move security helper functions from + `security.cc' to here. + * security.h: Changed to accommodate the above changes. + +Fri Apr 20 14:12:00 2001 Corinna Vinschen + + * grp.cc: Replace `group_in_memory_p' by `group_state'. + Eliminate group_sem throughout. + (enum grp_state): New enumeration type. + (read_etc_group): Make race safe. + * security.cc: Eliminate group_sem throughout. + +Thu Apr 19 9:40:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Drop usage of the same memory area if the same + region of the same file is mapped twice. + +Wed Apr 18 16:53:54 2001 Christopher Faylor + + Throughout, change fdtab references to cygheap->fdtab. + * 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. + +Tue Apr 17 12:18:28 2001 Christopher Faylor + + * passwd.cc: Eliminate passwd_sem throughout. + * security.cc: Ditto. + +Tue Apr 17 12:18:28 2001 Robert Collins + + * cygwin.din: Export New functions. + * passwd.cc (read_etc_passwd): Make race safe. + (getpwuid_r): New function. + (getpwnam_r): New function. + +2001-04-18 Egor Duda + + * grp.cc (getgroups): Avoid crash if passwd field if /etc/group is + empty. + +Tue Apr 17 19:05:44 2001 Christopher Faylor + + * path.h (path_conv::add_ext_from_sym): Declare. + * path.cc (path_conv::add_ext_from_sym): Convert to pure inline method. + +Tue Apr 17 18:50:00 2001 Corinna Vinschen + + * path.cc (windows_device_names): Add missing NULL element. + +Tue Apr 17 12:14:54 2001 Christopher Faylor + + * path.cc (windows_device_names): Move dsp to proper location. + +Tue Apr 17 13:44:00 2001 Corinna Vinschen + + * path.cc (path_conv::check): Set case_clash even if pcheck_case + 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. + +Tue Apr 17 2:07:07 2001 Christopher Faylor + + * config.h.in: Turn off VFORK again. + +Mon Apr 16 23:45:24 2001 Christopher Faylor + + * path.h (cwdstuff): Move class. + * 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. + +Mon Apr 16 19:19:00 2001 Corinna Vinschen + + * mmap.cc: Move fh_paging_file from some functions to be + a global static variable. + (class mmap_record): Add `devtype_' member to remember + the device type of the file. Add declaration for methods + `get_device', `alloc_fh' and `free_fh'. + (mmap_record::mmap_record): Initialize `devtype_' correctly. + (mmap_record::alloc_fh): New method. + (mmap_record::free_fh): Ditto. + (munmap): Use new mmap_record::alloc_fh and mmap_record::free_fh + methods to create a correct fhandler. + (msync): Ditto. + (fixup_mmaps_after_fork): Ditto. + +Mon Apr 16 16:01:00 2001 Corinna Vinschen + + * grp.cc (getgroups): If `allow_ntsec' is set, use the process token + information to evaluate the groups list. + +Mon Apr 16 00:08:02 2001 Christopher Faylor + + * features.h: Remove this file as it is now being supplied by newlib. + +Sun Apr 15 23:23:29 2001 Christopher Faylor + + * autoload.cc: Add winmm functions needed by fhandler_dsp.cc. + +Sun Apr 15 22:53:52 2001 Andy Younger + + * 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. + +Sun Apr 15 16:36:27 2001 Christopher Faylor + + * uname.c (uname): Default n in in86 to 6 if Windows returns > 6. + +Sun Apr 15 15:56:00 2001 Corinna Vinschen + + * path.cc (add_ext_from_sym): Redefine to call `add_ext_from_sym_'. + (add_ext_from_sym_): New inline function. + +Sat Apr 14 19:23:52 2001 Christopher Faylor + + * config.h.in: Turn on VFORK by default. + +Sat Apr 14 18:04:35 2001 Christopher Faylor + + * net.cc (cygwin_socket): Set SO_LINGER to small value so closed UNIX + domain sockets will not stay around. + +Sat Apr 14 18:01:43 2001 Pierre A. Humblet + + * select.cc (socket_cleanup): Set SO_LINGER to small value so closed + dummy sockets do not stay around. Use correct value for second argument + to shutdown. + +Sat Apr 14 17:04:00 2001 Robert Collins + + * thread.h (MTinterface): Add threadcount. + * thread.cc (MTinterface::Init): Set threadcount to 1. + (__pthread_create): Increment threadcount. + (__pthread_exit): Decrement threadcount and call exit() from the last thread. + +Fri Apr 13 11:34:24 2001 Robert Collins + + * fork.cc (fork_child): Call the __pthread_atforkchild function. + (fork_parent): Call the __pthread_atforkparent function. + * cygwin.din: Export pthread_atfork. + * thread.h (callback): New class. + (MTinterface): Use it. + * thread.cc (__pthread_atforkprepare): New function. + (__pthread_atforkparent): New function. + (__pthread_atforkchild): New function. + (__pthread_atfork): New function. + * pthread.cc (pthread_atfork): New function. + +Fri Apr 13 9:52:00 2001 Corinna Vinschen + + * path.cc (add_ext_from_sym): New define evaluating `known'suffix'. + (path_conv::check): Use add_ext_from_sym throughout. + +Thu Apr 12 23:19:00 2001 Corinna Vinschen + + * dir.cc (mkdir): Check for case clash. + * 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. + +Thu Apr 12 12:49:53 2001 Christopher Faylor + + * syscalls.cc (mkfifo): New function stub. + +2001-04-12 Robert Collins + + * configure.in: Remove PTH_ALLOW. + * cygwin.din: Remove @PTH_ALLOW@ prefixes to pthread functions. Add + new pthread exports. + * pthread.cc: New wrapper functions for the above new exports. + * sched.cc (valid_sched_parameters): New function. + (sched_setparam): Use it. + (sched_set_thread_priority): New function. Used by pthread_sched*. + * thread.cc (pthread_key_destructor::InsertAfter): New function. + (pthread_key_destructor::UnlinkNext): New function. + (pthread_key_destructor::Next): New function. + (pthread_key_destructor_list::Insert): New function. + (pthread_key_destructor_list::Remove): New function. + (pthread_key_destructor_list::Pop): New function. + (pthread_key_destructor::pthread_key_destructor): New function. + (pthread_key_destructor_list::IterateNull): New function. + (MTinterface::Init): Initialise new member. + (pthread::pthread): Initialise new members. + (pthread::create): Copy new attributes. Set the new thread priority. + (pthread_attr::pthread_attr): Initialise new members. + (pthread_key::pthread_key): Setup destructor function. + (pthread_key::~pthread_key): Remove destructor function. + (pthread_mutexattr::pthread_mutexattr): New function. + (pthread_mutexattr::~pthread_mutexattr): New function. + (__pthread_once): New function. + (__pthread_cleanup): New function. + (__pthread_cancel): New function. + (__pthread_setcancelstate): New function. + (__pthread_setcanceltype): New function. + (__pthread_testcancel): New function. + (__pthread_attr_getinheritsched): New function. + (__pthread_attr_getschedparam): New function. + (__pthread_attr_getschedpolicy): New function. + (__pthread_attr_getscope): New function. + (__pthread_attr_setinheritsched): New function. + (__pthread_attr_setschedparam): New function. + (__pthread_attr_setschedpolicy): New function. + (__pthread_attr_setscope): New function. + (__pthread_exit): Call any key destructors on thread exit. + (__pthread_join): Use the embedded attr values. + (__pthread_detach): Use the embedded attr values. + (__pthread_getconcurrency): New function. + (__pthread_getschedparam): New function. + (__pthread_key_create): Pass the destructor on object creation. + (__pthread_key_delete): Correct incorrect prototype. + (__pthread_setconcurrency): New function. + (__pthread_setschedparam): New function. + (__pthread_cond_timedwait): Support static mutex initialisers. + (__pthread_cond_wait): Ditto. + (__pthread_mutex_getprioceiling): New function. + (__pthread_mutex_lock): Support static mutex initialisers. + (__pthread_mutex_trylock): Ditto. + (__pthread_mutex_unlock): Ditto. + (__pthread_mutex_destroy): Ditto. + (__pthread_mutex_setprioceiling): New function. + (__pthread_mutexattr_getprotocol): New function. + (__pthread_mutexattr_getpshared): New function. + (__pthread_mutexattr_gettype): New function. + (__pthread_mutexattr_init): New function. + (__pthread_mutexattr_destroy): New function. + (__pthread_mutexattr_setprotocol): New function. + (__pthread_mutexattr_setprioceiling): New function. + (__pthread_mutexattr_getprioceiling): New function. + (__pthread_mutexattr_setpshared): New function. + (__pthread_mutexattr_settype): New function. Remove stubs for non + MT_SAFE compilation. + * thread.h: Remove duplicate #defines. Add prototypes for new + functions in thread.cc. + (pthread_key_destructor): New class. + (pthread_key_destructor_list): New class. + (pthread_attr): Add new members. + (pthread): Remove members that are duplicated in the pthread_attr + class. + (pthread_mutex_attr): Add new members. + (pthread_once): New class. + * include/pthread.h: Add prototypes for new functions exported from + cygwin1.dll. Remove typedefs. + * include/sched.h: Add prototypes for new functions in sched.cc. + * include/cygwin/types.h: Add typedefs from pthread.h + +Tue Apr 10 22:02:53 2001 Christopher Faylor + + * path.cc (struct symlink_info): Add extn and ext_tacked_on fields. + (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. + +2001-04-09 Egor Duda + + * fhandler.h (class fhandler_socket): Add members and methods to + support secure connections on AF_UNIX sockets. + * fhandler_socket.cc (fhandler_socket::set_connect_secret): New method. + (fhandler_socket::get_connect_secret): Ditto. + (fhandler_socket::create_secret_event): Ditto. + (fhandler_socket::close_secret_event): Ditto. + (fhandler_socket::check_peer_secret_event): Ditto. + (fhandler_socket::fixup_after_fork): Duplicate secret event to child. + (fhandler_socket::dup): Copy address family. + (fhandler_socket::close): Close secret event. + * net.cc (get_inet_addr): Read secret cookie. + (cygwin_connect): Check if peer knows secret cookie value. + (cygwin_accept): Ditto. Copy address family to newly created socket. + (cygwin_bind): Generate and write secret cookie. + (wsock_init): Initialize random number generator. + +Sun Apr 8 20:40:58 2001 Christopher Faylor + + * Makefile.in: Put -lgcc last in list of libraries, since stdc++ + library needs it. + * cygwin.din: Remove obsolete "__empty" export. + * exceptions.cc (call_signal_handler_now): Force inclusion of function + even when -finline-functions is specified. + * sigproc.h: Remove obsolete call_signal_handler declaration. + +Sun Apr 8 20:36:55 2001 Benjamin Riefenstahl + + * fhandler_console.cc (cp_get_internal): New function. + (cp_convert): New function. + (con_to_str): New function. + (str_to_con): New function. + (fhandler_console::read): Replace OemToCharBuff with con_to_str. + (fhandler_console::write_normal): Replace CharToOemBuff with str_to_con. + +Thu Apr 5 22:41:00 2001 Corinna Vinschen + + * syscalls.cc (stat_worker): Fix conditional which still allowed + successful stat'ing of non-existant files. + +Wed Apr 4 10:37:44 2001 Christopher Faylor + + * child_info.h: Bump magic number for fork/exec/spawn. + +Tue Apr 3 20:06:00 2001 Corinna Vinschen + + * errno.cc (errmap): Map ERROR_FILE_INVALID to ENXIO. + +Mon Apr 2 22:48:58 2001 Christopher Faylor + + * cygrun.c (main): Fix compiler warning. + * gmon.c (_mcleanup): Ditto. + * profil.c (profile_off): Ditto. + + * net.cc (find_winsock_errno): New function. + (__set_winsock_errno): Use find_winsock_errno. + (cygwin_setsockopt): Detect SO_ERROR for debugging. + (cygwin_getsockopt): Ditto. Translate error when getsockopt returns + SO_ERROR. + * winsup.h: regparmize __set_winsock_errno. + * include/sys/strace.h: Document that strace functions can't use + regparm. + +2001-04-02 Kazuhiro Fujieda + + * fhandler.cc (fhandler_disk_file::open): Avoid checking a magic + number of a directory. + +Mon Apr 2 00:24:08 2001 Christopher Faylor + + * shared_info.h (mount_info): Remove mnt_ elements. + * thread.h (struct _winsup_t): Add mnt_ elements. + * path.cc (fillout_mntent): Use mnt_ elements from reent_winsup (). + +Sun Apr 1 20:10:34 2001 Christopher Faylor + + * exceptions.cc (sigframe::call_signal_handler): Return value of + call_signal_handler_now. + * sigproc.h (sigframe): Use constructor. + * syscalls.cc (_read): Correct errno test prior to calling signal + handler. + +Sun Apr 1 00:38:06 2001 Christopher Faylor + + * exceptions.cc (sigframe::call_signal_handler): Move outside of "C" + block or some compilers will complain. + +Sun Apr 1 00:24:14 2001 Christopher Faylor + + * exceptions.cc (call_signal_handler_now): Rename from + call_signal_handler to avoid C++ confusion. + +Sun Apr 1 00:08:15 2001 Christopher Faylor + + * path.cc (fillout_mntent): Always remove drive root directories from + future consideration by "/cygdrive" reporting. + (cygdrive_getmnt): Avoid reporting removable drives or drives with no + media mounted. + +Sat Mar 31 21:56:19 2001 Christopher Faylor + + * thread.h (struct _winsup_t): Remove obsolete elements. Add + available_drives 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. + +Sat Mar 31 18:59:52 2001 Christopher Faylor + + * sigproc.h (class sigframe): Implement 'unregister()' method. + (sigframe::~sigframe): Use unregister method. + (sigframe::call_signal_handler): Declare new method. + * exceptions.cc (sigframe::call_signal_handler): New method. + Unregisters current sigframe before calling signal handler. + (setup_handler): Clear waiting threads prior to arming signal_arrived. + * syscalls.cc (_read): Change goto to loop. Recalculate sigframe + inside of loop so that constructor is called when appropriate. + * wait.cc (wait4): Ditto. + + * signal.cc: Change "sig" to "signal" in debugging messages throughout. + * sigproc.cc: Ditto. + +Sat Mar 31 17:12:08 2001 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::raw_write): Close protected + handles with ForceCloseHandle or suffer spurious warnings. + +Sat Mar 31 16:23:32 2001 Christopher Faylor + + * fhandler.cc (fhandler_base::read): Remove special handling of CTRL-Z. + +Sat Mar 31 11:09:00 2001 Corinna Vinschen + + * fhandler.h (class fhandler_console): Add members `insert_mode'. + * fhandler_console.cc (fhandler_console::dup): Duplicate `insert_mode'. + (fhandler_console::fhandler_console): Initialize `insert_mode'. + (fhandler_console::char_command): Add terminal capabilities + "enter insert mode" = \E[4h and "exit insert mode" = \E[4l. + Care for insert mode on terminal capability "repeat char" = \E[x;yb. + (fhandler_console::write_normal): Care for insert mode before writing + to the console. + (array keytable): Add keymapping for modified cursor and control + block keys (xterm like). + +Fri Mar 30 13:02:00 2001 Corinna Vinschen + + * fhandler.h (class fhandler_console): Add members `savebufsiz' and + `savebuf' to allow save/restore of screen. + * fhandler_console.cc (fhandler_console::dup): Duplicate `savebufsiz' + and `savebuf'. + (fhandler_console::fhandler_console): Initialize `savebufsiz' and + `savebuf'. + (fhandler_console::char_command): Add terminal capabilities + "save screen content" = \E[?47h and "restore screen content" = \E[?47l. + +Wed Mar 28 19:28:50 2001 Christopher Faylor + + * path.cc (chdir): Eat trailing whitespace on input path. + +Tue Mar 27 22:38:42 2001 Christopher Faylor + + * lib/_cygwin_S_IEXEC.c: Remove "const" from globals or they never seem + to be defined. Wrap definitions in extern "C". Include winsup.h to + assure proper definitions. + + * dcrt0.cc (dll_crt0_1): Call stdio_init after premain run so that + binmode.o, etc., will control default stdio settings. + * dtable.cc (dtable::init_std_file_from_handle): Allow __fmode to force + binmode/textmode settings. Default pipes to binmode. + +Tue Mar 27 11:31:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Fix conditional for previous patch. + +Mon Mar 26 18:48:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Outflank copy-on-write problem on 9x by + setting access mode to FILE_MAP_READ when read access is requested. + +Sun Mar 25 20:12:21 2001 Christopher Faylor + + * dlfcn.cc (check_access): Eliminate. + (check_path_access): Use passed in path_conv buf. + (get_full_path_of_dll): Use passed in name buf to avoid a static. Rip + out most of the path checking since LoadLibrary will do all of this + automatically. + (dlopen): Set errno when appropriate (may not be compliant?). + * environ.cc (posify): Don't pass in "native" path if it seems to + actually be posix. + +Thursday Mar 22 2001 Robert Collins + + * fhandler.h (fhandler_dev_clipboard): Extend to support writing. + * fhandler_clipboard.cc (fhandler_dev_clipboard::fhandler_dev_clipboard): + Initialize new fields. Open clipboard here. + (fhandler_dev_clipboard::dup): New method. + (fhandler_dev_clipboard::open): Accommodate new fields. Register + clipboard here, if appropriate. + (set_clipboard): New function. Moves buffer to clipboard. + (fhandler_dev_clipboard::write): Truly implement clipboard writing. + (fhandler_dev_clipboard::read): Reimplement to allow successive reads. + (fhandler_dev_clipboard::lseek): Truly implement seeks in clipboard. + (fhandler_dev_clipboard::close): Clear out new fields. Support + sequential reads and sequential writes. Support for binary data via a + native clipboard format. + +2001-03-22 Egor Duda + + * fhandler_console.cc (fhandler_console::set_default_attr): Update + console color attributes on tty reset. + +Wed Mar 21 22:12:36 2001 Christopher Faylor + + * autoload.cc (kernel32_init): New function for kernel32 autoload + initialization. + (SignalObjectAndWait): Add conditional load of this function when it is + available. + +2001-03-21 Robert Collins + + * sched.cc: New file. Implement sched*. + * include/sched.h: New file. User land includes for sched*. + * Makefile.in: Add sched.o + * cygwin.din: Add exports for sched*. + +Tue Mar 20 14:48:46 2001 Christopher Faylor + + * dtable.cc: Guard against new winsock.h/winsock2.h warnings when + mixing winsock*.h and sys/types.h. + * fhandler_socket.cc: Ditto. + * net.cc: Ditto. + * select.cc: Ditto. + * exceptions.cc: Remove unneeded define. + +Mon Mar 19 17:43:29 2001 Christopher Faylor + + * exceptions.cc (interruptible): Update debugging output. + (setup_handler): Ensure that wait_sig loop wakes up when we punt on + sending a signal. + * poll.cc (poll): Add signal guard here. + +2001-03-19 Egor Duda + + * tty.h (tty::create_inuse): Add new parameter to allow non- + inheritable 'inuse' events. + * tty.cc (tty::create_inuse): Use new parameter. + * fhandler_tty.cc (fhandler_tty_master::init): Ditto. + * fhandler_tty.cc (fhandler_pty_master::open): Ditto. + * fhandler_tty.cc (fhandler_tty_master::init): Create master_alive + event. + * tty.cc (tty_list::terminate): Close master_alive event. + * fhandler_tty.cc (fhandler_tty_common::close): Send EOF to slaves + when master side is closed. + +Mon Mar 19 14:32:00 2001 Corinna Vinschen + + * mmap.cc (map::get_list_by_fd): Avoid calling `get_namehash' when + file descriptor is -1. + +Sat Mar 17 18:30:00 2001 Corinna Vinschen + + * syscalls.cc (check_posix_perm): New static function. + (fpathconf): Add _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY + support. + (pathconf): Ditto. + * include/cygwin/version.h: Bump API minor number to 37. + +2001-03-18 Egor Duda + + * fhandler.h (fhandler_tty_slave): Declare new methods. + * select.cc (fhandler_tty_slave::select_read): New method. + * select.cc (fhandler_tty_slave::ready_for_read): Ditto. + * select.cc (verify_tty_slave): New function. + * fhandler_termios.cc (fhandler_termios::line_edit): Empty input + buffer on signal. + * fhandler_tty.cc (fhandler_tty_slave::read): Check for input data + after reading from pipe. Reset event if input pipe is empty. + * tty.h (class tty): Allow creating events with manual reset. + * tty.cc (tty::get_event): Use manual_reset flag. + * tty.cc (tty::common_init): Create input_available_event with + manual reset. + +Sat Mar 17 21:48:03 2001 Christopher Faylor + + * external.cc (fillout_pinfo): Match windows pid, as well as cygwin pid + when passed in pid. Don't prematurely break when searching for a pid. + + * thread.h (_winsup_t): Eliminate unneeded field. + +Sat Mar 17 20:46:00 2001 Corinna Vinschen + + * net.cc (get_95_ifconf): Use strcasematch instead of strcasecmp. + * syscalls.cc (_unlink): Ditto. + (_rename): Ditto. + +Sat Mar 17 12:43:15 2001 Christopher Faylor + + * path.cc (suffix_scan::next): Avoid searching for foo.lnk twice when + input is "foo". + +Sat Mar 17 18:10:00 2001 Corinna Vinschen + + * net.cc (cygwin_socket): Set protocol to 0 when address family is + AF_UNIX to avoid WSAEPROTONOSUPPORT error. + +Sat Mar 17 09:51:32 2001 Mathew Brozowski + + * net.cc (cygwin_socket): Pass protocol parameter to socket call. + +Sat Mar 17 02:05:38 2001 Christopher Faylor + + * dir.cc (readdir): Use strcasematch for consistency. + * 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. + +Sat Mar 17 00:10:52 2001 Christopher Faylor + + * syscalls.cc (stat_dev): Give devices full read/write by default. + +Saturday Mar 17 3:45 2001 Robert Collins + + * thread.cc (MTinterface::CreateCond): Check for null attr pointer. + +Fri Mar 16 21:13:23 2001 Christopher Faylor + + * fhandler_termios.cc (fhandler_termios::line_edit): Don't accept input + when a signal is sent or we'll end up in an EOF/signal race. + +Fri Mar 16 20:25:40 2001 Christopher Faylor + + * path.cc: Translate scan states from defines to enums. + (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. + +Saturday Mar 17 01:19 2001 Robert Collins rbtcollins@hotmail.com + + * cygwin.din: Export the new functions. + * pthread.cc (pthread_cond_*): Add wrapper functions that call + __pthread_cond* functions. + * thread.cc (__pthread_cond_*): Implement the pthread_cond* functions. + * thread.h: Add new class entries and prototypes for __pthread_cond* + functions. + * include/pthread.h: user land header prototypes for pthread_cond* + functions and related defines. + +Wed Mar 14 16:30:00 2001 Corinna Vinschen + + * environ.cc (parse_options): Use strtok_r instead of strtok. + * security.cc (convert_string_sid_to_sid): Ditto. + (aclfromtext): Ditto. Fix buffer usage. + +Wed Mar 14 10:11:00 2001 Corinna Vinschen + + * path.cc (lnk_suffixes): Remove. + (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'. + +Tue Mar 13 13:52:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_disk_file::fstat): Add correct modes to + symlinks when stat'ing on FAT or FAT32 file systems. + +2001-03-12 Egor Duda + + * fhandler.h (fhandler_termios::fixup_after_exec): New function. + * fhandler_termios.cc (fhandler_termios::fixup_after_fork): New + function. Fixup output handle. + * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Output + handle is now fixed up in fhandler_termios::fixup_after_fork(). + +2001-03-12 Egor Duda + + * fhandler.h (fhandler_termios::fhandler_termios): Enable fixup + after fork. + * fhandler_console.cc (fhandler_console::fhandler_console): Fixup + after fork is now enabled in the base class constructor. + +Mon Mar 12 11:19:41 2001 Christopher Faylor + + * mkvers.sh: Include config.h so that DEBUGGING is correctly defined. + +Mon Mar 12 09:47:55 2001 Christopher Faylor + + * spawn.cc (spawn_guts): Don't set EXIT_REPARENTING if parent process + is not a cygwin process (suggested by Jason Gouger + ). + +Sun Mar 11 16:00:58 2001 Christopher Faylor + + * child_info.h: Bump magic number for fork/exec/spawn. + +Sat Mar 10 20:54:47 2001 Christopher Faylor + + * autoload.cc (noload): Use proper method for multiline strings or + newer gcc's complain. + * exceptions.cc (unused_sig_wrapper): Ditto. + * fhandler.h (fhandler_base): Make get_io_handle and friends return + self. + * fhandler_tty.cc (fhandler_pty_common::close_on_exec): Accommodate + DEBUGGING flag to avoid spurious warnings when inheritance is set. + +Sat Mar 10 16:52:12 2001 Christopher Faylor + + * shortcut.c (PATH_ALL_EXEC): Add parentheses to avoid a compiler + warning. + + * exceptions.cc (setup_handler): Clarify debugging message. + * sigproc.cc (proc_subproc): Remove PROC_CHILDSTOPPED test. It is + handled by normal PROC_CLEARWAIT case. + (wait_sig): Eliminate "dispatched" tracking. Remove __SIGCHILDSTOPPED + test. Decrement counter again before jumping out of + InterlockedDecrement loop so that subsequent InterlockedIncrement will + keep the counter at the correctly decremented value and also detect + when there are pending signals. + * sigproc.h: Remove __SIGCHILDSTOPPED element. + (procstuff): Remove PROC_CHILDSTOPPED element. + +Sat Mar 10 15:22:44 2001 Christopher Faylor + + * syscalls.cc (_rename): Set errno to ENOENT when an old path doesn't + exist (from Kazuhiro Fujieda ). Also set EACCES + when directory is not writable. + +Wed Mar 7 15:49:47 2001 Christopher Faylor + + * syscalls.cc (_read): Change definition to return ssize_t to be + consistent with read. + (_write): Change definition to return ssize_t to be consistent with + write. + +Wed Mar 7 01:08:21 2001 Christopher Faylor + + * sigproc.h (sigthread): Declare new methods. Create new winapi_lock + field. + (sigframe:;set): Call get_winapi_lock after frame is set so that signal + handler thread knows not to call SuspendThread. + (sigframe::~sigframe): Release winapi_lock. + * exceptions.cc (sigthread::get_winapi_lock): New method. + (sigthread::release_winapi_lock): New method. + (setup_handler): Use get_winapi_lock to ensure that signalled thread is + not blocked in a Windows API. + + * path.h (path_types): Avoid broken GCC warning. + +Tue Mar 6 14:02:00 2001 Corinna Vinschen + + * path.cc (suffix_scan::has): Change order of conditionals + to allow checking for .lnk suffixes even if in_suffixes is empty. + +Tue Mar 6 13:02:00 2001 Corinna Vinschen + + * autoload.c (cygwin_premain0): Add missing parameter. + * binmode.c (cygwin_premain0): Ditto. + * textmode.c (cygwin_premain0): Ditto. + +Tue Mar 6 12:04:00 2001 Jason Tiller + + * auto_load.cc: Add "GetKeyboardLayout" entry in the list of + Win32 User32.DLL exports to provide. + * fhandler.h (class fhandler_console): Add meta_mask private + member to remember which keystroke modifiers should generate + META. + * fhandler_console.cc (fhandler_console::read): Modify code that + tests a keystroke for a META-escaped key to use the 'meta_mask' + variable. + (fhandler_console::fhandler_console): Add definition for + variable "meta_mask" used to determine if a keystroke should be + preceded by META in the client console stream. Set meta_mask + based on whether or not user's keyboard language is English - + non-English keyboards pass AltGr (right ) unmolested, + whereas English keyboards now interpret left- and right- + as META. + +Mon Mar 5 20:15:00 2001 Corinna Vinschen + + * include/a.out.h: Add copyright hint. + * include/fcntl.h: Ditto. + * include/lastlog.h: Ditto. + * include/memory.h: Ditto. + * include/mntent.h: Ditto. + * include/paths.h: Ditto. + * include/poll.h: Ditto. + * include/syslog.h: Ditto. + * include/termio.h: Ditto. + * include/tzfile.h: Ditto. + * include/arpa/inet.h: Ditto. + * include/asm/byteorder.h: Ditto. + * include/asm/socket.h: Ditto. + * include/asm/types.h: Ditto. + * include/cygwin/if.h: Ditto. + * include/cygwin/mtio.h: Ditto. + * include/cygwin/rdevio.h: Ditto. + * include/cygwin/socket.h: Ditto. + * include/net/if.h: Ditto. + * include/netinet/in.h: Ditto. + * include/netinet/in_systm.h: Ditto. + * include/netinet/ip.h: Ditto. + * include/netinet/ip_icmp.h: Ditto. + * include/netinet/tcp.h: Ditto. + * include/sys/cdefs.h: Ditto. + * include/sys/cygwin.h: Ditto. + * include/sys/ioctl.h: Ditto. + * include/sys/mman.h: Ditto. + * include/sys/mount.h: Ditto. + * include/sys/mtio.h: Ditto. + * include/sys/procfs.h: Ditto. + * include/sys/resource.h: Ditto. + * include/sys/smallprint.h: Ditto. + * include/sys/socket.h: Ditto. + * include/sys/strace.h: Ditto. + * include/sys/syslog.h: Ditto. + * include/sys/sysmacros.h: Ditto. + * include/sys/termio.h: Ditto. + * include/sys/termios.h: Ditto. + * include/sys/uio.h: Ditto. + * include/sys/un.h: Ditto. + * include/sys/utsname.h: Ditto. + * include/sys/vfs.h: Ditto. + * include/sys/wait.h: Ditto. + * regexp/regerror.c: Ditto. + * regexp/regexp.h: Ditto. + * regexp/regmagic.h: Ditto. + +Mon Mar 5 01:25:03 2001 Christopher Faylor + + * dlopen.c (dlopen): Return NULL when name is NULL (suggested by + 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 interested 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): Accommodate 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. + +2001-03-04 Egor Duda + + * fhandler.h (class fhandler_tty_common): New mutex and event to + syncronize input on master tty with slave tty. + * fhandler_tty.cc (fhandler_pty_master::accept_input): Use them to + syncronize with slave. + * fhandler_tty.cc (fhandler_tty_slave::read): Use input mutex and + event to syncronize with master. Do not limit amount of data read + from master to vmin value. Interrupt on signal and return already + read data, if any. + * fhandler_tty.cc (fhandler_tty_slave::open): Handle input mutex and + event. + * fhandler_tty.cc (fhandler_tty_common::close): Ditto. + * fhandler_tty.cc (fhandler_tty_common::set_close_on_exec): Ditto. + * fhandler_tty.cc (fhandler_tty_common::fixup_after_fork): Ditto. + * fhandler_tty.cc (fhandler_tty_common::dup): Ditto. + * tty.h (tty::open_input_mutex): New function. + * tty.cc (tty::common_init): Create input mutex and event. + +Fri Mar 2 13:32:00 2001 Corinna Vinschen + + * dir.cc (readdir): Fix creating path in symlink check. + +Fri Mar 2 12:33:00 2001 Corinna Vinschen + + * dir.cc (readdir): Fix shortcut==symlink condition. + * 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. + +Thu Mar 1 21:06:07 2001 Christopher Faylor + + * exceptions.cc (sig_handle_tty_stop): Ignore attempts to suspend a + process if started by non-cygwin parent. + +Thu Mar 1 20:48:11 2001 Christopher Faylor + + * select.cc (peek_console): Don't report read_ready on mouse events + unless we are looking for mouse events. + * fhandler.h (fhandler_console::mouse_aware): New method. + +Wed Feb 28 15:10:00 2001 Corinna Vinschen + + * uinfo.cc: Eliminate `#include '. + +2001-02-28 Egor Duda + + * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Determine + drive geometry or partition size to allow seeking from the end of + raw floppy device. Don't allow positioning past the end of media or + to offsets bigger then max off_t. + +2001-02-27 Egor Duda + + * fhandler.h (class fhandler_console): Make all variables that + describe "state" of console to be members of fhandler_console. + default_color is now the color which is set when console recieves + reset command. + * fhandler_console.cc (fhandler_console::fhandler_console): Turn + mouse handling and raw keyboard mode off by default. Initialize + state information. + * fhandler.cc (fhandler_console::set_raw_win32_keyboard_mode): New + function. + * fhandler_console.cc (fhandler_console::set_default_attr): New + function. Reset console attributes to default values. + * fhandler_console.cc (fhandler_console::open): Reset attributes. + * fhandler_console.cc (fhandler_console::get_win32_attr): New function. + Calculate win32-style console attribute based on terminal attributes. + * fhandler_console.cc (fhandler_console::set_cursor_maybe): Use + member variable. + * fhandler_console.cc (fhandler_console::read): If in raw-win32 + keyboard mode, encode win32 keyboard events in \033{x;y;z;t;u;wK + sequences. + * fhandler_console.cc (fhandler_console::dup): Copy all state + information to the dup()ed handle. + * fhandler_console.cc (fhandler_console::scroll_screen): Use current + fill-in attribute. + * fhandler_console.cc (fhandler_console::clear_screen): Ditto. + * fhandler_console.cc (fhandler_console::char_command): Check if we + saw '?' symbol by member variable. Set terminal attributes on \033[Xm + commands. \033[24m - turn off underline mode, \033[27m - turn off + reverse mode, \033[39m - restore default foreground color. + \033[49m - restore default background color. \033[2000h - turn on raw + keyboard mode, \033[2000l - turn off raw keyboard mode. + * fhandler_console.cc (fhandler_console::write): Set attribues to + default values on reset command. + +2001-02-26 Mike Simons + + * times.cc (settimeofday): Replace function stub with working code. + +Mon Feb 26 10:42:00 2001 Corinna Vinschen + + * strace.cc (strace::vprntf): Move prntf functionality to this function + adding an va_list interface to strace. + (strace::printf): Calls strace::vprntf now. + (strace_printf): New function providing an extern "C" interface to + trace output. + * include/sys/strace.h: Make plain C clean. + (class strace): Add `vprntf' method. + +Mon Feb 26 0:10:00 2001 Corinna Vinschen + + * shortcut.c: Remove #include . + +Sun Feb 25 10:32:00 2001 Corinna Vinschen + + * path.cc (symlink): Add a ".lnk" suffix regardless. Add a comment. + +Sun Feb 25 10:18:00 2001 Corinna Vinschen + + * shortcut.c (check_shortcut): Change symlink condition. + +Fri Feb 23 10:42:00 2001 Corinna Vinschen + + * mmap.cc (fhandler_disk_file::mmap): Use `addr' correctly. + * fhandler_mem.cc (fhandler_dev_mem::mmap): Ditto. + +Thu Feb 22 17:09:00 2001 Corinna Vinschen + + * path.cc (symlink): Keep relative paths relative in the DOS + path inside of a shortcut. If that's impossible or the target + path is already absolute save an absolute path. + +Thu Feb 22 15:33:00 2001 Corinna Vinschen + + * cygerrno.h: Revert previous patch. + * 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. + +Thu Feb 22 13:38:00 2001 Corinna Vinschen + + * shortcut.c: New file. Provides a C interface to reading of + 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'. + +Thu Feb 22 12:04:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_disk_file::open): Use `inner_suffixes' when + resolving real_path. + * path.cc (symlink): Ditto for win32_topath. + +Wed Feb 21 22:41:00 2001 Corinna Vinschen + + * Makefile.in: Add `-lshell32 -luuid' to link pass for new-cygwin1.dll. + * 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. + +2001-02-21 Egor Duda + + * sigproc.cc (getsem): Make semaphore always non-inheritable. + +Mon Feb 19 22:25:53 2001 Christopher Faylor + + * dcrt0.cc (locale_init): Remove. + +2001-02-15 Kazuhiro Fujieda + + * cygwin.din: Export rand48 functions. + * thread.cc (MTinterface::Init): Remove the initialization of + `reent_data'. + * dcrt0.cc: Add the initalizer to the declaration of `reent_data'. + * include/cygwin/version.h: Bump CYGWIN_VERSION_API_MINOR to 35. + +2001-02-16 Egor Duda + + * signal.cc (signal): Prohibit setting handlers for SIGKILL and + SIGSTOP + * signal.cc (sigaction): Ditto + * syscalls.cc (_lseek): Return EINVAL on invalid input + +Wed Feb 14 14:54:40 2001 Christophe Iasci + + * dlfcn.cc (dlopen): Do not call LoadLibrary with a NULL pointer, when + the library is not found + +2001-02-14 Egor Duda + + * fhandler_console.cc (fhandler_console::char_command): Ignore unknown + rendition codes in \033[xx;yym control sequences + +Fri Feb 9 23:19:01 2001 Christopher Faylor + + * fork.cc (fork_parent): Return EAGAIN when can't record pid. + * pinfo.h (pinfo::remember): Return value of call to proc_subproc. + * sigproc.cc (proc_subproc): Return error if can't record pid. + +Fri Feb 9 12:17:27 2001 Christopher Faylor + + * syscalls.cc (mknod): Add valid parameters. + +Thu Feb 8 22:09:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Check for reusing a mapping only on MAP_SHARED + and on MAP_PRIVATE|MAP_ANON in the special case of offset 0. + +Thu Feb 8 21:57:00 2001 Corinna Vinschen + + * mmap.cc (class list): Add member `hash'. + (list::list): Initialize `hash'. + (list::get_list_by_fd): Use filepath hash value to get the correct + mapping list if it's not an anonymous mapping. + (map::add_list): Initialize `hash' with filepath hash value. + (mmap): Check for reusing a mapping only on MAP_SHARED. + +Wed Feb 7 18:47:36 2001 Christopher Faylor + + * signal.cc (killpg): Correct first argument. + +Wed Feb 7 22:22:00 2001 Corinna Vinschen + + * autoload.cc: Add LoadDLLinitfunc for iphlpapi.dll. + Add LoadDLLfuncEx statements for GetIfTable@12 and GetIpAddrTable@12. + * fhandler_socket.cc (fhandler_socket::ioctl): Move variable + definitions to the beginning of the function to allow better debugging. + Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC and SIOCGIFMTU. + * net.cc: Include iphlpapi.h. + (get_2k_ifconf): Rewritten. Uses IP Helper API now. + (get_nt_ifconf): Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC + and SIOCGIFMTU. + (get_95_ifconf): Ditto. Renamed from `get_9x_ifconf'. + (get_ifconf): Name loopback `lo' instead of `lo0' as in Linux. + Add handling for SIOCGIFHWADDR, SIOCGIFMETRIC and SIOCGIFMTU. + Call `get_95_ifconf' only on Windows 95, `get_nt_ifconf' only + on Windows NT < Service Pack 3, `get_2k_ifconf otherwise. + * include/asm/socket.h: Add defines for SIOCGIFHWADDR, SIOCGIFMETRIC + and SIOCGIFMTU. + * include/cygwin/if.h: Add `ifr_hwaddr', `ifr_metric' and `ifr_mtu'. + (struct ifreq): Add `ifru_hwaddr'. + +Tue Feb 6 15:04:00 2001 Corinna Vinschen + + * syscalls.cc (stat_worker): Add a check for the special case when + a process creates a file using mode 000 using ntsec. + +Mon Feb 5 17:00:00 2001 Corinna Vinschen + + * fhandler.cc (fhandler_base::open): Always add GENERIC_READ access + when opening raw disk devices. + * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Implement bytewise + access. + * fhandler_raw.cc (fhandler_dev_raw::open): Always open raw disk device + binary. + (fhandler_dev_raw::raw_write): Don't drop read buffer content when + writing after read. + +Mon Feb 5 13:30:00 2001 Corinna Vinschen + + * mmap.cc (mmap_record::fixup_map): New method to duplicate + the memory protection in a just forked child. + (mmap): Realign gran_len to page boundary only on anonymous + mapping before saving in the mmap_record. + (munmap): Cleanup code. + (msync): Ditto. + (fixup_mmaps_after_fork): Ditto. Call mmap_record::fixup_map now. + +Thu Feb 1 23:08:29 2001 Christopher Faylor + + * cygheap.cc (creturn): Correctly calculate cygheap_max. + +Wed Jan 31 10:04:58 2001 Christopher Faylor + + * shared.cc (shared_info::initialize): Reduce size of heap. + +Wed Jan 31 13:22:00 2001 Corinna Vinschen + + * include/sys/resource.h: Fix typo. + +Wed Jan 31 13:20:00 2001 Corinna Vinschen + + * include/sys/resource.h: Add RLIMIT_NLIMITS and RLIM_NLIMITS. + +Tue Jan 30 18:15:23 2001 Christopher Faylor + + * include/cygwin/version.h: Bump version to 1.3.0. + +Tue Jan 30 8:55:00 2001 Corinna Vinschen + + * pinfo.cc (pinfo::init): Use INVALID_HANDLE_VALUE instead of + explicit cast (HANDLE) 0xffffffff. + * shared.cc (open_shared): Ditto. + +Mon Jan 29 17:15:22 2001 Bill Hegardt + + * fhandler_serial.cc (raw_write): Use local copy of OVERLAPPED + structure instead of shared structure to fix a race condition between + read/write. + +Mon Jan 29 14:30:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Remove obsolete check for MAP_SHARED|MAP_ANON as + being invalid. + +Mon Jan 29 10:23:00 2001 Corinna Vinschen + + * mmap.cc (mmap_record::find_empty): Fix loop condition. + +Sun Jan 28 19:40:40 2001 Christopher Faylor + + * syscalls.cc (_link): Make sure that newpath does not exist. Set + errno if it does. + +Sun Jan 28 19:29:08 2001 Christopher Faylor + + * cygheap.cc (init_cheap): Don't specify a load address for the heap. + It doesn't work on #!*& Windows 9x. + (cygheap_init): Move GetUserName to memory_init. + * dcrt0.cc (dll_crt0_1): Call new memory_init functin, eliminate call + to heap_init. + * heap.cc (heap_init): Improve error output. + * heap.h: Correct some declarations. + * shared.cc (mount_table_init): Remove. + (memory_init): Renamed from shared_init. Reorganize to accommodate + strange Windows 9x problems with cygheap/heap interaction. + * shared_info.h: Rename shared_init to memory_init. + +Sun Jan 28 01:25:33 2001 Christopher Faylor + + * include/cygwin/version.h: Bump API version. + +Sun Jan 28 01:18:22 2001 Christopher Faylor + + * cygheap.cc (init_cheap): Move username initialization. + (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. + +Sun Jan 28 00:28:30 2001 Christopher Faylor + + Throughout, change 'cygwin_shared.mount' to 'mount_table'. + * 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. + +Sat Jan 27 10:18:02 2001 Christopher Faylor + + * path.cc (path_conv::check): Detect when path has symlinks. + (symlink_info::check): Remove debugging stuff. + (chdir): Use posix'ized win32 path if cd'ed to a path using symlinks. + +Fri Jan 26 21:20:28 2001 Christopher Faylor + + * exceptions.cc (sigreturn): Call any pending signals prior to + resetting the signal mask so that stacked signals behave correctly. + (sigdelayed): Avoid a race where a signal could end up calling an + incorrect signal handler if two signals come in close together. + +Tue Jan 23 21:56:00 2001 Corinna Vinschen + + * mmap.cc (fhandler_disk_file::mmap): Call CreateFileMapping with + len != 0 only when performing an anonymous mapping. + +Mon Jan 22 15:35:28 2001 Christopher Faylor + + * path.h: Add a new constant. + * syscalls.cc (_read): Oscillate errno check. + +Mon Jan 22 15:27:12 2001 Christopher Faylor + + * include/cygwin/version.h: Bump API to reflect setlogmask. + +Sun Jan 21 22:40:25 2001 Jason Tishler + + * cygwin.din: Add export for setlogmask(). + * syslog.cc (setlogmask): New function. + +Thu Jan 18 10:27:00 2001 Corinna Vinschen + + * resource.cc (setrlimit): Support RLIMIT_NOFILE. + +Wed Jan 17 23:23:12 2001 Christopher Faylor + + * syscalls.cc (setdtablesize): Call with amount to increment not total + amount. Return success or failure error code. + +Wed Jan 17 09:47:13 2001 Christopher Faylor + + * autoload.cc (LoadDLLinitfunc): Remove debugging statement. + + * exceptions.cc (sig_handle_tty_stop): Move setting of PID_STOPPED to + earlier in interrupt. + (interrupt_setup): i.e., here. + (sig_handle): Don't queue multiple SIGSTOPS. + * fhandler.h (bg_check_types): Enumerate return value of bg_check for + clarity. + * signal.cc (kill_pgrp): Minor cleanup. + * fhandler_termios.cc (fhandler_termios::bg_check): Use enumerated type + for function return. Don't raise signal if a signal is already queued. + * fhandler_console.cc (fhandler_console::read): Use enumerated return + type for bg_check. + * select.cc: Ditto, throughout. + * read.cc: Ditto, throughout. + * termios.cc: Ditto, throughout. + (_read): YA interrupt detect simplification. + * wait.cc (wait4): Ditto. + +Wed Jan 17 10:56:00 2001 Corinna Vinschen + + * cygheap.cc (cygheap_user::~cygheap_user): Temporarily + disable free'ing memory. + +Tue Jan 16 18:01:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Initialize fh to avoid compiler warnings. + +Mon Jan 15 21:07:00 2001 Christopher Faylor + + * wait.cc (wait4): Rename variable for consistency. Allow restartable + signal behavior. + +Mon Jan 15 23:15:00 2001 Corinna Vinschen + + * mmap.cc (mmap): Add more parameter checking. Change error output + in case of EINVAL. Treat mmapping /dev/zero like MAP_ANONYMOUS. + +Mon Jan 15 20:34:00 2001 Corinna Vinschen + + * mmap.cc: include . Define some bit operations for + the new page map. + (mmap_record): Change type of base_address_ to caddr_t. + Add map_map_ member. Add several methods to manipulate map_map_. + (mmap_record::alloc_map): New method. + (mmap_record::free_map): Ditto. + (mmap_record::find_empty): Ditto. + (mmap_record::map_map): Ditto. + (mmap_record::unmap_map): Ditto. + (list::add_record): Change return type to `mmap_record *'. + Allocate page map. + (list::match): New method. + (mmap): Partly rewritten to take care for the new page map. Add some + parameter checking. + (munmap): Ditto. + +Mon Jan 15 13:50:00 2001 Corinna Vinschen + + * heap.cc (heap_init): Fix extern declaration of getpagesize. + * syscalls.cc (getpagesize): Fix another typo. + +Mon Jan 15 12:48:00 2001 Corinna Vinschen + + * syscalls.cc (getpagesize): Save pagesize in global variable to + avoid calling GetSystemInfo too often. + * heap.cc (getpagesize): Eliminate. + (heap_init): Use getpagesize function from syscalls.cc. + +Mon Jan 15 11:56:00 2001 Corinna Vinschen + + * sysconf.cc (sysconf): return `getpagesize ()' on _SC_PAGESIZE + request to avoid implementing the same twice. + +Sun Jan 14 14:07:50 2001 Christopher Faylor + + * syscalls.cc (_read): Use more lightweight method for determining if + read has been interrupted by a signal. + +Fri Jan 12 00:35:15 2001 Christopher Faylor + + * debug.h: Add regparm attributes to some functions. + + * signal.cc (sigaction): Don't treat SIGCONT specially. + + * exceptions.cc (interrupt_setup): Save sa_flags of interrupted signal + for later use. + (sig_handler): Default any stopping signal to SIGSTOP. + (call_signal_handler): New function. + (sigdelayed0): New function. + * sigproc.cc (sigproc_init): Initialize SIGSTOP sigaction for special + behavior. + * sigproc.h: Define call_signal_handler. + * syscalls.cc (_read): Allow restartable signal behavior. + +Thu Jan 11 13:17:00 2001 Corinna Vinschen + + * fhandler.h (fhandler_base): New method `fixup_mmap_after_fork'. + (fhandler_disk_file: Ditto. + (fhandler_dev_mem): Ditto. + * fhandler_mem.cc (fhandler_dev_mem::open): Set OBJ_INHERIT attribute + for device\physicalmemory handle. + (fhandler_dev_mem::mmap): Ditto. + * fhandler_mem.cc (fhandler_dev_mem::fixup_mmap_after_fork): New + method. + * mmap.cc (mmap_record): Add private `fdesc_' member. Change + constructor accordingly. + (get_fd): New method. + (mmap): Use new mmap_record constructor. + (fhandler_base::fixup_mmap_after_fork): New method. + (fhandler_disk_file::fixup_mmap_after_fork): Ditto. + (fixup_mmaps_after_fork): Call `fixup_mmap_after_fork' of appropriate + fhandler class. + +Wed Jan 10 22:08:30 2001 Kazuhiro Fujieda + + * sigproc.cc (wait_sig): Allow SIGCONT when stopped. + +Tue Jan 9 16:55:00 2001 Corinna Vinschen + + Patch suggested by René Møller Fonseca + * include/sys/socket.h: Change prototype to have 2nd parameter `const'. + * net.cc (cygwin_bind): Change 2nd parameter to `const'. + +Sun Jan 7 22:59:37 2001 Christopher Faylor + + * pinfo.cc (codepage_init): Move function. + * environ.cc (codepage_init): To here. + * exceptoins.cc (SIG_NONMASKABLE): Remove SIGCONT from consideration + since it is supposed to be maskable. + * signal.cc (sigaction): Ditto. + * sigproc.cc (wait_sig): Ditto. + * winsup.h: Eliminate global declaration of codepage_init. + +Thu Jan 5 9:33:00 2001 Corinna Vinschen + + * resource.cc (getrlimit): Set errno on EFAULT instead of returning + it. + (setrlimit): Ditto. + +Thu Jan 5 3:38:00 2001 David Sainty + + * resource.cc (setrlimit): Prevent failing with an error when the + operation would not have changed anything. + +Thu Jan 4 10:29:54 2001 Earnie Boyd + + * thread.cc: Need LONG_MAX definition. + +Wed Jan 3 13:47:23 2001 Christopher Faylor + + * thread.cc (MTinterface::CreateSemaphore): Correctly set semaphore + max. + +Wed Jan 3 09:44:51 2001 Christopher Faylor + + * fhandler_console.cc (fhandler_console::read): Restore missing test + for code page before doing OemToCharBuff. + +Wed Jan 3 09:20:20 2001 Jason Tishler + + * include/cygwin/version.h: Fix typo in CYGWIN_VERSION_DLL_COMBINED + macro. diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 336e61556..039615d4d 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -1,6 +1,6 @@ /* fhandler.h - Copyright 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. This file is part of Cygwin. @@ -360,6 +360,7 @@ class fhandler_socket: public fhandler_base int connect_secret [4]; HANDLE secret_event; struct _WSAPROTOCOL_INFOA *prot_info_ptr; + char *sun_path; public: fhandler_socket (); @@ -392,6 +393,8 @@ class fhandler_socket: public fhandler_base select_record *select_except (select_record *s); int get_addr_family () {return addr_family;} void set_addr_family (int af) {addr_family = af;} + void set_sun_path (const char *path); + char *get_sun_path () {return sun_path;} void set_connect_secret (); void get_connect_secret (char*); HANDLE create_secret_event (int *secret = NULL); diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 3d6a13dd4..b62a203bf 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -1,6 +1,6 @@ /* fhandler_socket.cc. See fhandler.h for a description of the fhandler classes. - Copyright 2000, 2001 Red Hat, Inc. + Copyright 2000, 2001, 2002 Red Hat, Inc. This file is part of Cygwin. @@ -42,7 +42,7 @@ fhandler_dev_random* entropy_source; /* fhandler_socket */ fhandler_socket::fhandler_socket () - : fhandler_base (FH_SOCKET) + : fhandler_base (FH_SOCKET), sun_path (NULL) { set_need_fork_fixup (); prot_info_ptr = (LPWSAPROTOCOL_INFOA) cmalloc (HEAP_BUF, @@ -53,6 +53,8 @@ fhandler_socket::~fhandler_socket () { if (prot_info_ptr) cfree (prot_info_ptr); + if (sun_path) + cfree (sun_path); } void @@ -478,3 +480,11 @@ fhandler_socket::set_close_on_exec (int val) set_close_on_exec_flag (val); debug_printf ("set close_on_exec for %s to %d", get_name (), val); } + +void +fhandler_socket::set_sun_path (const char *path) +{ + if (sun_path) + cfree (sun_path); + sun_path = cstrdup (path); +} diff --git a/winsup/cygwin/net.cc b/winsup/cygwin/net.cc index 670126934..9e02085e1 100644 --- a/winsup/cygwin/net.cc +++ b/winsup/cygwin/net.cc @@ -1,6 +1,6 @@ /* net.cc: network-related routines. - Copyright 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. This file is part of Cygwin. @@ -1338,6 +1338,7 @@ cygwin_bind (int fd, const struct sockaddr *my_addr, int addrlen) _close (fd); chmod (un_addr->sun_path, (S_IFSOCK | S_IRWXU | S_IRWXG | S_IRWXO) & ~cygheap->umask); + sock->set_sun_path (un_addr->sun_path); res = 0; } #undef un_addr @@ -1366,10 +1367,27 @@ cygwin_getsockname (int fd, struct sockaddr *addr, int *namelen) fhandler_socket *sock = get (fd); if (sock) { - res = getsockname (sock->get_socket (), addr, namelen); - if (res) - set_winsock_errno (); - + if (sock->get_addr_family () == AF_UNIX) + { + struct sockaddr_un *sun = (struct sockaddr_un *) addr; + memset (sun, 0, *namelen); + sun->sun_family = AF_UNIX; + /* According to SUSv2 "If the actual length of the address is greater + than the length of the supplied sockaddr structure, the stored + address will be truncated." We play it save here so that the + path always has a trailing 0 even if it's truncated. */ + strncpy (sun->sun_path, sock->get_sun_path (), + *namelen - sizeof *sun + sizeof sun->sun_path - 1); + *namelen = sizeof *sun - sizeof sun->sun_path + + strlen (sun->sun_path) + 1; + res = 0; + } + else + { + res = getsockname (sock->get_socket (), addr, namelen); + if (res) + set_winsock_errno (); + } } syscall_printf ("%d = getsockname (%d, %x, %d)", res, fd, addr, namelen); return res;