From a89b700926b5b75d62048f1a02b040d4d6f057cf Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Sun, 1 Jan 2006 16:17:55 +0000 Subject: [PATCH] * syslog.cc (vklog): Never log kernel messages using the vsyslog interface. --- winsup/cygwin/ChangeLog | 5813 +--------------------------------- winsup/cygwin/ChangeLog-2005 | 5812 +++++++++++++++++++++++++++++++++ winsup/cygwin/syslog.cc | 5 +- 3 files changed, 5817 insertions(+), 5813 deletions(-) create mode 100644 winsup/cygwin/ChangeLog-2005 diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index bde958055..50dd8a99e 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,5812 +1,5 @@ -2005-12-31 Corinna Vinschen +2006-01-01 Corinna Vinschen - * syslog.cc (vsyslog): Decrement len if trailing \n has been removed. - Add \n when writing to stderr if LOG_PERROR option is set. + * syslog.cc (vklog): Never log kernel messages using the vsyslog + interface. -2005-12-31 Corinna Vinschen - - * include/cygwin/in.h: Drop including stdint.h. Move definition - of in_port_t and in_addr_t to top of file and use throughout. Use - sa_family_t type where appropriate. - (struct in6_addr): Change `unsigned char' to `uint8_t'. - (struct sockaddr_in6): Add sin6_scope_id member. Add comments. - * include/cygwin/socket.h: Include stdint.h. Move definition of - socklen_t to top of file. Define sa_family_t. Define struct - sockaddr_storage as per SUSv3. - * include/sys/un.h: Include cygwin/socket.h. Use sa_family_t type. - -2005-12-29 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Use - strace method rather than accessing field directly. - (fhandler_tty_common::__release_output_mutex): Ditto. - -2005-12-29 Christopher Faylor - - * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. - (child_info::dwProcessId): Delete. - (child_info::straced): New variable. - (child_info::handle_fork): New member function. - * dcrt0.cc (in_forkee): New global variable. - (__cygwin_user_data::forkee): Mark as obsolete. - (do_global_ctors): Use in_forkee rather than user_data->forkee. - (get_cygwin_startup_info): Ditto. Deal with new straced field to allow - strace to deal with children of attached processes. - (initial_env): Accommodate changes to strace::hello. - (child_info_fork::handle_fork): Rename from plain old 'handle_fork'. - Move alloc_stack() call elsewhere. - (dll_crt0_0): Fill out more of user_data. Reference handle_fork via - fork_info. Add some debugging output. - (_dll_crt0): Don't wait for sync thread if sync_startup is invalid. - Zero sync_startup here. Call alloc_stack() here, if appropriate. - (dll_crt0_1): Use in_forkee rather than user_data->forkee. - (dll_crt0): Ditto. - * malloc_wrapper.cc (malloc_init): Ditto. - * dll_init.cc (in_forkee): Remove local static version of this - variable. - (dll_list::load_after_fork): Don't set in_forkee here. - * external.cc (cygwin_internal): Use strace method rather than - accessing field directly. - * fhandler.cc (fhandler_base::read): Ditto. - * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Ditto. - * fork.cc (frok::parent): Invoke strace write_childpid to communicate - with potential strace. - (child_copy): Add more detail to debugging output. - * init.cc (calibration_id): New static variable. - (prime_threads): Set sync_startup to invalid handle if we already know - about thread_func_ix. Use static calibration_id to hold calibration - thread id. - * munge_threadfunc (munge_threadfunc): Don't try to debug if we don't - find threadfunc_ix. - (dll_entry): Avoid calling munge_threadfunc and _cygtls::remove on - non-cygwin threads invoked during process startup. - * pinfo.cc (set_myself): Always call strace.hello here regardless of - DEBUGGING. - * sigproc.cc (child_info::child_info): Remove spurious handling of - dwProcessId. Set straced as appropriate. - * spawn.cc (spawn_guts): Rename ciresrv to ch. Invoke strace - write_childpid to communicate with potential strace. - * strace.cc: Include child_info.h. - (strace::hello): Remove inited test. Use active() method to test if - strace has been activated. Handle case where we are started before - (mypid): New function. - (strace::vsprntf): Try to deal more intelligently with case where - progname may not be filled out. Put pid in parentheses if it is a - windows pid rather than a cygwin pid. myself has been filled out. - (strace::write_childpid): New function for notifying strace about the - creation of children. - (strace::vprntf): Use strace method rather than accessing field - directly. - (strace_printf): Ditto. - (strace::wm): Ditto. - * winsup.h (in_forkee): Declare. - * include/sys/strace.h (strace::write_childpid): Declare new function. - (strace::attached): Define new function. - (strace::active): Ditto. - (strace::active_val): Ditto. - (_STRACE_ON): Delete. - (_STRACE_OFF): Ditto. - (define_strace0): Use strace method rather than accessing field - directly. - (strace_printf_wrap): Ditto. - (strace_printf_wrap1): Ditto. - -2005-12-28 Christopher Faylor - - * environ.cc (win_env::add_cache): Don't add variables to the - environment during initialization. - -2005-12-27 Corinna Vinschen - - * exceptions.cc (_cygtls::handle_exceptions): Drop redundant `break'. - -2005-12-27 Corinna Vinschen - - * exceptions.cc (inside_kernel): Rename from interruptible. - Accommodate change throughout file. - -2005-12-27 Corinna Vinschen - - * exceptions.cc (interruptible): New function, code stripped from - _cygtls::interrupt_now. - (_cygtls::handle_exceptions): Handle STATUS_DATATYPE_MISALIGNMENT as - SIGBUS error. Differ between unmapped memory (SEGV_MAPERR) and access - violation (SEGV_ACCERR) in case of STATUS_ACCESS_VIOLATION. Write - kernel log message in case of uncatched STATUS_ACCESS_VIOLATION. - (_cygtls::interrupt_now): Just call interruptible now instead of - evaluating interruptibility here. - -2005-12-27 Corinna Vinschen - - * path.cc (path_conv::check): Rework loop removing trailing dots - and spaces. - - * syslog.cc (vklog): Set facility to LOG_KERN if not set. - -2005-12-26 Christopher Faylor - - * dcrt0.cc (__api_fatal): Simplify to just use strace mechamisms. - (do_exit): Move minimal_printf... - * pinfo.cc (pinfo::exit): ...into here. - * strace.cc (strace::vprntf): Guarantee output to the console when - system_printf/api_fatal. - - * heap.cc (heap_init): Wait a second before issuing an error when - ERROR_INVALID_ADDRESS since this is probably due to a CTRL-C handler - sneaking in, using the memory that we want to use for the heap, and, - eventually exiting. - -2005-12-23 Christopher Faylor - - * cygtls.cc (_cygtls::handle_threadlist_exception): Make an error - fatal. - * cygtls.h (sockaddr_in): Use header rather than defining our own - structure. - * exceptions.cc (_cygtls::interrupt_setup): Use exact contents of - sa_mask rather than assuming that current sig should be masked, too. - (_cygtls::call_signal_handler): Use more aggressive locking. - * gendef (_sigbe): Wait until later before releasing incyg. - (_sigreturn): Remove more arguments to accommodate quasi-sa_sigaction - support. - (_sigdelayed): Push arguments for sa_sigaction. More work needed here. - * signal.cc (sigaction): Implement SA_NODEFER. - * tlsoffsets.h: Regenerate. - - * sigproc.cc (wait_sig): Use default buffer size or Windows 9x complains - - * pinfo.cc (_onreturn::dummy_handle): Remove. - (_onreturn::h): Make this a pointer. - (_onreturn::~_onreturn): Detect whether pointer is NULL rather than - value is NULL. - (_onreturn::_onreturn): Set h to NULL initially. - (_onreturn::no_close_p_handle): Set h to NULL. - (winpids::add): Initialize onreturn with value from p.hProcess - immediately. - -2005-12-22 Christopher Faylor - - * fork.cc (fork): Honor error return from sig_send. Don't continue - with fork if we couldn't suspend signals. - * sigproc.cc (sig_send): Set sigCONT event when we see __SIGNOHOLD. - (wait_sig): Remove holding_signals. Create pipe with a buffer which - will theoretically cause blocking if there is nothing reading on the - pipe. Wait for sigCONT at end of loop when we have a __SIGHOLD. - -2005-12-22 Corinna Vinschen - - * fhandler.h (fhandler_base::issymlink): New method. - * syscalls.cc (open): Handle O_NOFOLLOW flag. - * include/fcntl.h (_FNOFOLLOW): New define. - (O_NOFOLLOW): Ditto. - * include/cygwin/version.h: Bump API minor number. - -2005-12-22 Christopher Faylor - - * pinfo.cc (winpids::add): Increment nelem when winpid is true since we - don't care if it's a cygwin process in that case. - -2005-12-22 Christopher Faylor - - * pinfo.cc (winpids::release): Fix typo. - -2005-12-21 Christopher Faylor - - * pinfo.cc (pinfo::init): Clarify comment slightly. - (_onreturn): New helper class. - (winpids:add): Remove copied stuff. Try to put process handle into - pinfo in question and use _onreturn class to control when to close it. - (winpids::release): Remove use of copied array. Free procinfo when - hProcess is NULL. Otherwise call release and call CloseHandle on - hProcess. - * pinfo.h (winpids::copied): Remove throughout class. - -2005-12-21 Christopher Faylor - - * pinfo.cc (pinfo::init): Remove spurious low_priority_sleep. - -2005-12-21 Christopher Faylor - - * spawn.cc (spawn_guts): Hide the window whenever ctty == -1, not just - when we have no console. - -2005-12-21 Christopher Faylor - - * cygheap.cc (init_cygheap::manage_console_count): Revert previous - change. Handle this a different way. - * external.cc (cygwin_internal): Accommodate extra - hook_or_detect_cygwin argument. - * hookapi.cc (cygwin_internal): Fill in subsys variable with the - subsystem of the executable. - * spawn.cc (av::iscui): New variable. - (spawn_guts): Hide window when we don't have a console and this isn't - NT/XP/2003. - (av::fixup): Set iscui flag. - * winsup.h (hook_or_detect_cygwin): Accommodate extra argument. - -2005-12-21 Christopher Faylor - - * cygheap.cc (init_cygheap::manage_console_count): Don't call - FreeConsole on 9x/Me. - -2005-12-21 Corinna Vinschen - - * (fhandler_disk_file::fchown): Remove execute bits from "sensible" - permissions. Use same setting as in symlink. - -2005-12-21 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix inode number - debug output. - (fhandler_disk_file::fchown): Always set sensible permission values - when creating the ACL for symlinks. - -2005-12-20 Corinna Vinschen - - * winsup.h (flush_file_buffers): Define as inline function. - * miscfuncs.cc (flush_file_buffers): Remove. - -2005-12-20 Corinna Vinschen - - * winsup.h (flush_file_buffers): Declare new function. - (FLushFileBuffers): New define. - * miscfuncs.cc (flush_file_buffers): Define new function. - -2005-12-20 Christopher Faylor - - * fhandler.h (fhandler_termios::fixup_after_exec): Make non-inlined. - * fhandler_termios.cc (fhandler_termios::fixup_after_exec): Don't call - fixup_after_fork if close_on_exec'ed. - -2005-12-19 Christopher Faylor - - * cygtls.h (_cygtls::interrupt_now): Subsume interruptible(). - (interruptible): Delete. - (setup_handler): Remove interruptible call and just use return from - interrupt_now. - -2005-12-19 Christopher Faylor - - * fhandler.h (set_console_state_for_spawn): Add an argument to the - declaration. - * fhandler_console.cc (set_console_state_for_spawn): Ditto for the - definition. Only set invisible console for non-cygwin process. Remove - debugging leftover. - * spawn.cc (spawn_guts): Pass argument denoting whether this is a - cygwin process to set_console_state_for_spawn and only call this - function when exec'ing. - -2005-12-19 Corinna Vinschen - - * mmap.cc (fhandler_dev_zero::mmap): Call VirtualFree(MEM_RELEASE) - with zero length parameter, otherwise it fails. - (fhandler_dev_zero::munmap): Ditto. - -2005-12-18 Christopher Faylor - - * fhandler.h (fhandler_console::invisible_console): Declare new - variable. - (fhandler_pipe::fixup_in_child): Declare new function. - (fhandler_console::need_invisible): Ditto. - (fhandler_console::has_a): Ditto. - * fhandler_console.cc (set_console_state_for_spawn): Eliminate return - value. Set up an invisible console if necessary prior to spawning. - (fhandler_console::invisible_console): Define. - * fhandler_tty.cc (fhandler_tty_slave::open): Use - fhandler_console::invisible_console to setup an invisible console. - * pipe.cc (fhandler_pipe::fixup_in_child): Define new function from - fixup_after_exec. - (fhandler_pipe::fixup_after_exec): Use fixup_in_child when appropriate. - (fhandler_pipe::fixup_after_fork): Ditto. - * spawn.cc (handle): Reorganize and modernize a little. - (spawn_guts): Rely on set_console_state_for_spawn to set the console - into the right state but don't create the process with "detached" flag - if we have no controlling tty since that confuses 'cmd'. - * dtable.cc (dtable::stdio_init): Don't set console as controlling - terminal if we have an invisible console. - - * sigproc.cc (child_info::sync): Use correct name in ForceCloseHandle1. - -2005-12-18 Christopher Faylor - - * include/sys/dirent.h: Change __deprecated_d_ino to __invalid_d_ino - throughout to make things a little clearer. - * dir.cc (readdir_worker): Reflect above change. - -2005-12-16 Christopher Faylor - - * winsup.h (child_copy): Change prototype to match new functionality. - * cygheap.cc (cygheap_fixup_in_child): Accommodate new child_copy - arguments. - * dcrt0.cc (dll_data_start): Move definition here from fork. - (dll_data_end): Ditto. - (dll_bss_start): Ditto. - (dll_bss_end): Ditto. - (handle_fork): New function. Called when forked to deal with fork - issues and copy data to this process from the parent. - (dll_crt0_0): Call handle_fork when _PROC_FORK condition. - (dll_crt0): Don't copy user_data when we've forked. Don't zero first - element of main_environment ever. - (cygwin_dll_init): Ditto. - * fork.cc (child_copy): Rename from fork_copy and change arguments so - that each pair of things to copy gets its own descriptor. - (frok::child): Remove fixup_mmaps_after_fork call here. Move to - handle_fork in dcrt0.cc. - (frok::parent): Use child_copy rather than fork_copy and accommodate - changes in parameters. - - * exceptions.cc (setup_handler): Delay test of whether we're locked - until after GetThreadContext has been called since there are apparently - cases where SuspendThread does not cause an immediate thread - suspension. - -2005-12-16 Christopher Faylor - - * init.cc (dll_entry): Call prime_threads after dll_crt0_0 to avoid - conflicts between heap allocation and thread stack allocation. - -2005-12-16 Christopher Faylor - - * hookapi.cc (putmem): Remove query of previous memory protection since - we get that for free the first time we call VirtualProtect. - -2005-12-15 Corinna Vinschen - - * mmap.cc (fhandler_dev_zero::fixup_mmap_after_fork): Use - system_printf like any other fixup_mmap_after_fork. - -2005-12-14 Corinna Vinschen - - * fhandler.cc (ACCFLAGS): Remove macro. - (fhandler_base::get_default_fmode): Use O_ACCMODE instead of ACCFLAGS - and or'ed read/write flags. - (fhandler_base::open_9x): Use O_ACCMODE instead of or'ed read/write - flags. - (fhandler_base::open): Ditto. - * fhandler_disk_file.cc (fhandler_base::open_fs): Ditto. - * fhandler_mem.cc (fhandler_dev_mem::open): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::open): Ditto. - -2005-12-14 Corinna Vinschen - - * fhandler.cc (fhandler_base::open_9x): Handle O_SYNC and O_DIRECT - flags. - (fhandler_base::open): Ditto. - * fhandler_floppy.cc (fhandler_dev_floppy::open): Don't allocate devbuf - in O_DIRECT case. - * fhandler_raw.cc (fhandler_dev_raw::ioctl): Don't allow buffer - changes in O_DIRECT case. Allow returning a buffer size 0, which - indicates O_DIRECT. - * fhandler_tape.cc (fhandler_dev_tape::open): Use O_SYNC flag to - hand down the !buffer_writes case. Don't allocate devbuf in O_DIRECT - case. - (fhandler_dev_tape::raw_read): Don't mess with devbuf if it's NULL. - * include/fcntl.h: Define _FDIRECT, O_DIRECT, O_DSYNC and O_RSYNC. - * include/cygwin/version.h: Bump API minor version. - -2005-12-13 Christopher Faylor - - * cygtls.cc (_cygtls::remove): Don't bother if we're exiting. - * sigproc.cc (_cygtls::remove_wq): Ditto. - -2005-12-13 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty::open): Enhance comment. - -2005-12-13 Corinna Vinschen - - * fhandler_tty.cc (fhandler_tty::open): Close newly created window - station after switching to original window station. - -2005-12-13 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty::open): Add a comment. - -2005-12-12 Christopher Faylor - - * times.cc (hires_ms::usecs): Subtract from slop from system time or - we'll always end up priming the pump. - -2005-12-12 Nick Duffek - - * times.cc (systime): Correct precision referenced in comment. - -2005-12-12 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave::open): Don't free original - windows station since that will cause strange problems displaying - fonts. Reset windows station to original station after creating - console. - * times.cc (hires_ms::usecs): Only reprime when calculated time is less - than system time. - -2005-12-12 Christopher Faylor - - * pinfo.cc (winpids::add): Don't copy procinfo when there is no cygwin - process associated with the pid, i.e., procinfo == NULL. - -2005-12-12 Christopher Faylor - - * times.cc (hires_ms::usecs): Correct order when checking if high - precision time is <= current time. - -2005-12-12 Christopher Faylor - - * pinfo.cc (size_copied): New convenience macro. - (winpids::add): Alias the element that we are working on for slightly - better clarity. Honor the "make_copy" flag. - (winpids::release): Free and zero procinfo field if it was allocated - via malloc. - (winpids::~winpids): Free copied array. - * pinfo.h (class pinfo): Make winpids class a friend. - (winpids::make_copy): New field. - (winpids::copied): New array. - (winpids::reset): Reset npids after releasing pinfos or suffer a memory - leak. - (winpids::winpids): Try harder to zero all fields in the class. - -2005-12-12 Corinna Vinschen - - * autoload.cc (GetSystemTimes): Remove. - -2005-12-12 Corinna Vinschen - - * fhandler_proc.cc (format_proc_uptime): Drop usage of GetSystemTimes. - Use NtQuerySystemInformation to evaluate uptime and idle_time from - all CPU's processor times. Fallback to GetTickCount. - -2005-12-12 Corinna Vinschen - - * mmap.cc (gen_create_protect): Always generate WRITECOPY protection - for private maps. - (fixup_mmaps_after_fork): Fix calculation of WRITECOPY protection for - VirtualProtect. Add some words to the comment. - -2005-12-10 Christopher Faylor - - * dirent.h: Change the rest of the d_ino's to __deprecated_d_ino. - -2005-12-10 Christopher Faylor - - * malloc.cc: Update to version 2.8.3. - * cygmalloc.h (MSPACE): Remove unneeded definition. - -2005-12-08 Corinna Vinschen - - * fhandler_raw.cc (fhandler_dev_raw::ioctl): Only allow 0, 1 or a - multiple of 512 as new buffersize. - -2005-12-08 Pekka Pessi - Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::recvfrom): Mask flags with - MSG_WINMASK for Windows socket calls. - (fhandler_socket::recvmsg): Ditto. - (fhandler_socket::sendmsg): Ditto. - -2005-12-07 Christopher Faylor - - * hires.h (hires_ms::initime_ms): Delete. - (hires_ms::initime_us): Just define as LONGLONG. - (hires_ms::uptime): New function. - * select.cc (select_stuff::wait): Use gtod for timing to attempt to - avoid windows 32 bit wraparound. - * times.cc (systime): New function. - (times): Replace GetTickCount with gtod.uptime. - (hires_us::prime): Use systime() to calculate system time rather than - calling GetSystemTimeAsFileTime directly. - (hires_ms::prime): Ditto. Eliminate initime_ms. - (hires_ms::usecs): Try harder to detect wraparound. - - * fhandler_proc.cc (format_proc_partitions): Set drive_size to zero to - avoid a compiler warning. - -2005-12-07 Corinna Vinschen - - * fhandler_proc.cc (format_proc_partitions): Use modern IOCTLs - to determine drive size as far as possible. - -2005-12-07 Corinna Vinschen - - * fhandler_raw.cc (fhandler_dev_raw::ioctl): Fix INVALID_PARAMETER - condition. Only copy devbuf to buf if buf is non-NULL. - -2005-12-07 Corinna Vinschen - - * fhandler_raw.cc (fhandler_dev_raw::ioctl): Fix setting devbuf - when rd_parm is 0 or 1. - -2005-12-07 Corinna Vinschen - - * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Fix test for - valid file position at EOM. - -2005-12-07 Christopher Faylor - - * include/cygwin/stdlib.h: Guard compilation of *unsetenv* in newlib. - -2005-12-07 Corinna Vinschen - - * exceptions.cc (_cygtls::handle_exceptions): In case of a - STATUS_ACCESS_VIOLATION, check if the page is a mmaped page beyond - a file's EOF. Generate SIGBUS instead of SIGSEGV then. - * mmap.cc (__PROT_ATTACH): New define. - (__PROT_FILLER): Ditto. - (fh_anonymous): Rename from fh_paging_file; - (fh_disk_file): New global static variable. - (attached): New inline function. - (filler): Ditto. - (gen_create_protect): Split off from gen_protect to use the file's - access mode to create mapping always with maximum allowed protections. - (gen_protect): Accommodate pages attached beyond EOF. Use symbolic - values instead of numerics when possible. Drop create parameter. - (gen_access): Use file's access mode instead of protection. - (CreateMapping9x): Create named mapping names so that different - creation access modes result in different mappings. - (CreateMappingNT): Only reserve attached pages, don't commit them. - (MapViewNT): Ditto. Set AT_ROUND_TO_PAGE for all non-NULL base - addresses. - (mmap_func_t): Define CreateMapping and MapView function pointers - with additional openflags parameter. - (class mmap_record): Add openflags member. - (mmap_record::mmap_record): Add openflags parameter. - (mmap_record::get_openflags): New accessor. - (mmap_record::attached): Call global attached function. - (mmap_record::filler): Call global filler function. - (mmap_record::gen_create_protect): Call global gen_create_protect - function. - (mmap_record::gen_protect): Drop create parameter. - (mmap_record::alloc_fh): Set fhandler's access flags. - (list::search_record): Accommodate filler pages. - (list::set): Use inode number as hash value. - (map::get_list_by_fd): Check hash value against file's inode number. - (mmap_is_attached_page): New function to evaluate if a given address - is on a attached page. Called from _cygtls::handle_exceptions. - (mmap_worker): New function to do mapping and bookkeeping in a - single call. - (mmap64): Use roundup2 to round length to pagesize alignment. - Initialize global fhandlers. Simplify anonymous initialization. - Add SUSv3 compatible check of file open mode vs. requested protection. - Try creating new file handles to allow maximum page protection. - Allow creating attached pages in case of mapping beyond EOF. - Close new file handle if one has been created. - (munmap): Align len to pagesize. - (msync): Rework argument checks. Align len to pagesize. - (mprotect): Ditto. Accommodate attached pages. - (mlock): Use roundup/rounddown macros instead of homemade expressions. - (munlock): Add page alignment as in mlock. - (fhandler_dev_zero::munmap): Fix unmapping of non-private mappings. - (fhandler_dev_zero::fixup_mmap_after_fork): Accommodate filler pages. - (fixup_mmaps_after_fork): Don't fail if attached pages couldn't be - created in child. Avoid superfluous call to VirtualFree. Check for - original allocation protection to fix PAGE_WRITECOPY protection. - * ntdll.h: Revert deletion of AT_ROUND_TO_PAGE define. - * winsup.h (mmap_is_attached_page): Declare. - -2005-12-05 Christopher Faylor - - * include/cygwin/stdlib.h: New file. - * environ.cc (unsetenv): Change to return -1 on input error. - * include/cygwin/version.h: Add more description to latest api bump. - -2005-12-05 Christopher Faylor - - * dir.cc (readdir_workdir): Only fill out d_ino when linked into older - app. - * include/cygwin/version.h: Bump api minor number to 147, reflecting - obsolescence of d_ino. - (CYGWIN_VERSION_USER_API_VERSION_COMBINED): New convenience macro. - (CYGWIN_VERSION_CHECK_FOR_NEEDS_D_INO): New convenience macro. - * include/sys/dirent.h: Change d_ino field to __deprecated_d_ino. - -2005-12-05 Christopher Faylor - - Remove unneeded whitespace. - * cygtls.cc (_cygtls::set_state): Delete. - (_cygtls::reset_exception): Ditto. - (_cygtls::init_thread): Set initialized state directly here. - (_cygtls::push): Remove exception argument. Don't treat exceptions - specially. - * cygtls.h (_cygtls::push): Ditto. - (_cygtls::isinitialized): Don't treat exceptions specially. - (_cygtls::reset_exception): Delete. - (_cygtls::set_state): Ditto. - (_cygtls::handle_exceptions): Don't push ebp on the stack prior to - calling sig_send. Just set incyg instead. - (_cygtls::interrupt_setup): Accommodate _cygtls::push argument change. - (_cygtls::interrupt_now): Ditto. - (setup_handler): Don't treat exceptions specially. - * gendef (longjmp): Always zero incyg flag. - -2005-12-04 Corinna Vinschen - - * environ.cc (spenvs): Add "windir" as an "always export" variable - to accommodate WinSock on Windows 95. - -2005-12-02 Christopher Faylor - - * include/exceptions.h (exception_list): Revert previous change. - Windows doesn't care. - (exception_handler): Use real exception_list parameter type rather than - void * - * tlsoffsets.h: Regenerate. - * cygtls.h (_cygtls::handle_exceptions): Use real exception_list - parameter type rather than void *. - (handle_threadlist_exception): Ditto. - (init_exception_handler): Ditto. - * cygtls.cc (_cygtls::handle_threadlist_exception ): Ditto. - (_cygtls::init_exception_handler): Add kludge to terminate linked list - with a loop, which seems to solve problem of RtlUnwind causing problems - * exceptions.cc (rtl_unwind): Use real exception_list parameter type - rather than void *. - (_cygtls::handle_exceptions): Ditto. - -2005-12-02 Christopher Faylor - - * cygtls.h (_cygtls::el): New field. - (_cygtls::handle_exceptions): New function declaration. - (_cygtls::handle_threadlist_exception): Ditto. - (_cygtls::init_exception_handler): Ditto. - (_cygtls::init_threadlist_exceptions): Remove arg from declaration. - * cygtls.cc (_cygtls::call2): Don't initialize exceptions here. - (_cygtls::init_thread): Do it here instead and use member function. - (_cygtls::handle_threadlist_exception): Move into _cygtls class. - (_cygtls::init_exception_handler): Ditto. Rely on existence of 'el' - memmber in _cygtls. - (_cygtls::init_threadlist_exceptions): Ditto. - * dcrt0.cc (dll_crt0_1): Remove exception_list definition and setting - since it now commonly resides in the tls. - * exceptions.cc (init_exception_handler): Move to cygtls.cc. - (init_exceptions): Ditto. - (rtl_unwind): New, safe wrapper function for RtlUnwind. - (_cygtls::handle_exceptions): Move to _cygtls. Call rtl_unwind to - unwind frames and eliminate copying of structures. Put address of - failing instruction in si_addr, not the address on the stack. Return 0 - to indicate that we've handled this exception. - * external.cc (cygwin_internal): Make CW_INIT_EXCEPTIONS a no-op. - * sigproc.cc (wait_sig): Accommodate argument change to - _cygtls::init_threadlist_exceptions. - * tlsoffsets.h: Regenerate. - * include/exceptions.h (exception_list): Add more stuff to the - exception list. Apparently windows needs this? - (init_exceptions): Remove bogus declaration. - - * include/cygwin/signal.h (SI_USER): Redefine as zero as per SUSv3. - * include/cygwin/version.h: Bump API minor version number to 146. - - * thread.cc (pthread_kill): Set si_pid and si_uid. - - * timer.cc (timer_thread): Set si_code to SI_TIMER. - -2005-12-01 Christopher Faylor - - * dcrt0.cc (getstack): Try harder to modify memory. - (alloc_stack): Alloc page prior to stack top, too. - -2005-12-01 Christopher Faylor - - * devices.h (_major): Revert previous ill-advised change. - (_minor): Ditto. - -2005-12-01 Christopher Faylor - - * exceptions.cc (handle_exceptions): Translate a guard page exception - to a "SIGBUS". - -2005-12-01 Corinna Vinschen - - * mmap.cc: Make debug output more consistently. Fix some comments. - (gen_protect): Convert to inline function. - (gen_access): Ditto. - (mmap_record::gen_protect): Add create parameter as in global function. - (mmap_record::alloc_page_map): Change condition so that always the - correct protection setting is set after mapping has been established. - (mmap64): For anonymous mappings set offset always to 0. - (fixup_mmaps_after_fork): Always call fixup_mmap_after_fork method - with the MAP_FIXED flag set. - -2005-12-01 Christopher Faylor - - * devices.h (_minor): Coerce argument to proper type before - manipulating. - (_major): Ditto. - (device::is_fs_special): New function. - * fhandler_disk_file.cc (fhandler_base::fstat_helper): Set the size to - 0 for devices rather than reporting the size of the symlink. - (fhandler_disk_file::readdir): Use is_fs_special to determine if .lnk - should be stripped. - * path.cc: Rename symlink_info::is_symlink to symlink_info::issymlink - throughout. - (symlink_info::isdevice): New field. - (path_conv::check): Use 'isdevice' to determine if just-parsed entity - is a device rather than relying on non-zero major/minor. - (symlink_info::parse_device): Set isdevice to true if we've discovered - a device. - (symlink_info::check): Clear isdevice field prior to processing. Use - isdevice to control debugging output. - (symlink_info::set): Set isdevice to false. - * path.h (path_conv::is_fs_special): New function. - * devices.cc: Regenerate. - -2005-11-30 Christopher Faylor - - * times.cc (hires_ms::prime): Remove debugging stuff. - (hires_ms::usecs): Ditto. - -2005-11-30 Corinna Vinschen - - * mmap.cc (list::try_map): New method, implementing trying to map - within another already existing map, moved from mmap64 here. - (mmap64): Just call try_map now. - (fhandler_dev_zero::fixup_mmap_after_fork): Always create new private - map with PAGE_READWRITE protection. - (fixup_mmaps_after_fork): Fix comment. - -2005-11-29 Corinna Vinschen - - * include/cygwin/version.h: Bump API minor version. - -2005-11-29 Corinna Vinschen - - * fhandler.h (fhandler_dev_zero::mmap): Add method. - (fhandler_dev_zero::munmap): Ditto. - (fhandler_dev_zero::msync): Ditto. - (fhandler_dev_zero::fixup_mmap_after_fork): Ditto. - * mmap.cc: Implement anonymous mapping using fhandler_dev_zero class. - Implement private anonymous maps using VirtualAlloc/VirtualFree. Fix - or add some more comments. - (fh_paging_file): Change to type fhandler_dev_zero. - (priv): New static inline function to avoid having lots of flag bit - tests in the code. Use throughout were appropriate. - (fixed): Ditto. - (anonymous): Ditto. - (noreserve): Ditto. - (autogrow): Ditto. - (gen_protect): Never generate PAGE_WRITECOPY protection for - private anonymous maps. - (gen_access): Drop FILE_MAP_EXECUTE handling since it's not supported - correctly on 9x. - (VirtualProt9x): Move comment from mmap64 here. - (mmap_record::mmap_record): Gegerate correct device entry for - anonymous maps, though unused right now. - (mmap_record::priv): Call global priv function. - (mmap_record::fixed): Call global fixed function. - (mmap_record::anonymous): Call global anonymous function. - (mmap_record::noreserve): Call global noreserve function. - (mmap_record::autogrow): Call global autogrow function. - (list::anonymous): New method. Use throughout were appropriate. - (mmap_record::compatible_flags): Drop now useless ifdef. - (mmap_record::alloc_page_map): Accommodate private anonymous maps. - (mmap_record::map_pages): Accommodate MAP_NORESERVE mappings. - (mmap_record::unmap_pages): Accommodate private anonymous maps. - (mmap64): Simplify argument check. Don't remove the MAP_PRIVATE flag - for anonymous mappings on 9x anymore since that's now handled - gracefully. - (mprotect): Accommodate MAP_NORESERVE mappings. Fix case when - non-mmap areas are just MEM_RESERVEd. - (fhandler_dev_zero::mmap): Implement anonymous mapping here. - (fhandler_dev_zero::munmap): Ditto. - (fhandler_dev_zero::msyn): Ditto. - (fhandler_dev_zero::fixup_mmap_after_fork): Ditto. - (fixup_mmaps_after_fork): Accommodate private anonymous maps. Enhance - debug output in case VirtualProtect fails. - * include/sys/mman.h: Really define MAP_NORESERVE now. - -2005-11-28 Corinna Vinschen - - * autoload.cc (NtCreateSection): Define. - * cygheap.cc (_csbrk): Call getpagesize instead of getshmlba. - * dcrt0.cc (dll_crt0_0): Call mmap_init. - * external.cc (cygwin_internal): Call getpagesize instead of getshmlba. - * fhandler.h (fhandler_base::mmap): Change access to prot parameter. - (fhandler_base::fixup_mmap_after_fork): Ditto. - (fhandler_disk_file::mmap): Ditto. - (fhandler_disk_file::fixup_mmap_after_fork): Ditto. - (fhandler_dev_mem::mmap): Ditto. - (fhandler_dev_mem::fixup_mmap_after_fork): Ditto. - * fhandler_mem.cc (fhandler_dev_mem::write): Call getsystempagesize - instead of getpagesize. - (fhandler_dev_mem::read): Ditto. - (fhandler_dev_mem::fstat): Ditto. - (fhandler_dev_mem::mmap): Move to mmap.cc. - (fhandler_dev_mem::munmap): Ditto. - (fhandler_dev_mem::msync): Ditto. - (fhandler_dev_mem::fixup_mmap_after_fork): Ditto. - * fhandler_proc.cc (format_proc_meminfo): Call getsystempagesize - instead of getpagesize. - * fhandler_process.cc (format_process_stat): Ditto. - (format_process_status): Ditto. - (get_mem_values): Ditto. - * mmap.cc: Fix formatting. Try to make more readable and modular. - Take advantage of pagesize==granularity. - (gen_protect): New static function to evaluate Windows - protection bits from POSIX protection and flags. - (gen_access): Ditto for Windows access mode. - (VirtualProt9x): Wrapper function to call VirtualProtect on 9x. - (VirtualProtNT): Ditto for NT. - (VirtualProtEx9x): Ditto for VirtualProtectEx on 9x. - (VirtualProtExNT): Ditto for NT. - (CreateMapping9x): Wrapper function for creating a mapping handle on 9x. - (CreateMappingNT): Ditto for NT. - (MapView9x): Wrapper function to map a view on 9x. - (MapViewNT): Ditto for NT. - (mmap_funcs_9x): Structure containing function pointers to wrapper - functions for 9x. - (mmap_funcs_nt): Ditto for NT. - (mmap_func): Pointer to wrapper functions used in subsequent code. - (mmap_init): Initialize mmap_func depending on OS. - (class mmap_record): Use sensible member names. Add POSIX protection - member. Drop Windows access flags member. Constify more methods. - Use accessors instead of direct member access inside of own methods. - (mmap_record::gen_protect): Class wrapper to evaluate matching - Windows protection bits. - (mmap_record::gen_access): Ditto for Windows access flags. - (mmap_record::compatible_flags): New function to check if flags are - compatible with flags of existing map. - (list::add_record): Drop offset and length arguments. - (class map): Change counters to unsigned. Match usage throughout. - (mmapped_areas): Convert from pointer to global struct. - (mmap_record::alloc_page_map): Simplify. - (mmap_record::map_pages): Ditto. - (mmap_record::fixup_page_map): Delete. - (mmap64): Simplify. Add workaround for Windows 98 bug. Fix bug on - NT that existing anonymous mappings weren't searched for a match. - (munmap): Add workaround for Windows 98 bug. - (msync): Simplify. - (mprotect): Handle existing maps correctly. - (mlock): Add local pagesize variable and enlightening comment. - (fhandler_disk_file::mmap): Main functionality now in CreateMapping/ - MapView wrapper functions. - (fhandler_disk_file::fixup_mmap_after_fork): Call MapView wrapper. - (fhandler_dev_mem::mmap): Moved from fhandler_mem.cc. Simplify by - calling MapViewNT. - (fhandler_dev_mem::munmap): Moved from fhandler_mem.cc. - (fhandler_dev_mem::msync): Ditto. - (fhandler_dev_mem::fixup_mmap_after_fork): Ditto. Call MapViewNT. - (fixup_mmaps_after_fork): Restructure and hopefully speed up loop for - setting protection and memory content on MAP_PRIVATE maps. - * ntdll.h (AT_ROUND_TO_PAGE): Remove define. - (AT_EXTENDABLE_FILE): Add define. - (NtCreateSection): Add prototype. - * syscalls.cc (getpagesize): Return granularity as pagesize now. - (getsystempagesize): New function to retrieve "real" pagesize. - (getshmlba): Delete since it's replaced by getpagesize now. - * wincap.h (wincaps::has_mmap_alignment_bug): New element. - * wincap.cc: Implement above element throughout. - * winsup.h (getshmlba): Drop prototype. - (getsystempagesize): Add prototype. - (mmap_init): Ditto. - * include/sys/mman.h: (Not yet) define MAP_NORESERVE. - -2005-11-28 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't rely on - has_acl() state for evaluating inodes. Temporarily(?) enable "real" - inodes for remote drives. - -2005-11-25 Christopher Faylor - - * heap.cc: Remove spurious getpagesize declaration. - -2005-11-25 Christian Franke - - * exceptions.cc (ctrl_c_handler): Distinguish CTRL-BREAK from CTRL-C in - some cases. - -2005-11-23 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave::open): Reset the current windows - station whenever ctty == -1 regardles of whether there's a windows - station already assigned. Close the old windows station in this - situation. - * pinfo.cc (_pinfo::set_ctty): Reinstate incrementing of console count - when recording ctty so that the current tty is always around. - * autoload.cc (CloseWindowStation): Define. - -2005-11-18 Christopher Faylor - - * strptime.cc (_strptime): Fix gcc warnings. - -2005-11-18 Christopher Faylor - - * memmem.cc: Move from here. - * lib/memmem.cc: Move to here. - -2005-11-18 Corinna Vinschen - - * libc: Add subdirectory. - * Makefile.in (VPATH): Add libc subdir. - (DLL_OFILES): Add strptime.o and timelocal.o. - * cygwin.din: Export timelocal and timegm. - * localtime.cc: Define STD_INSPIRED unconditionally. - * include/cygwin/time.h (timelocal): Add declaration. - (timegm): Ditto. - * include/cygwin/version.h: Bump API minor version. - * libc/strptime.cc: New file. - * libc/timelocal.cc: New file. - * libc/timelocal.h: New file. - -2005-11-18 Christopher Faylor - - * include/cygwin/sys_time.h: Move futimes and lutimes declaration here - from newlib. - -2005-11-18 Christopher Faylor - - * times.cc (timezone): Put back (void). - * include/cygwin/time.h: Add more cygwin stuff from newlib. - -2005-11-18 Christopher Faylor - - * include/cygwin/sys_time.h: Rename from include/cygwin/time.h. - * include/cygwin/time.h: New file. - -2005-11-17 Christopher Faylor - - * fork.cc (fork): Move top-of-stack calculation later. - - * pinfo.cc (_pinfo::set_ctty): Use __ctty to print current console in - debugging output. - -2005-11-17 Corinna Vinschen - - * fhandler_tty.cc (fhandler_tty_slave::open): Don't expect that - service applications have no window station attached. - -2005-11-16 Christopher Faylor - - * times.cc (hires_ms::prime): Don't escalate the priority. - -2005-11-14 Christopher Faylor - - * include/sys/elf64.h: Fix types to reflect linux usage. - -2005-11-14 Corinna Vinschen - Christopher Faylor - - * fhandler.h (fhandler_console::fixup_after_fork_exec): Define with - additional bool parameter. - (fhandler_console::fixup_after_exec): Accommodate - fixup_after_fork_exec's parameter. - (fhandler_console::fixup_after_fork): Ditto. - * fhandler_console.cc (fhandler_console::fixup_after_fork_exec): Avoid - opening new console only when close_on_exec AND execing. - -2005-11-14 Christopher Faylor - - * fhandler.h (fhandler_console::fixup_after_fork_exec): Declare new function. - (fhandler_console::fixup_after_fork): Use fixup_after_fork_exec. - (fhandler_console::fixup_after_exec): Ditto. - * fhandler_console.cc (fhandler_console::fixup_after_fork): Delete definition. - (fhandler_console::fixup_after_fork_exec): Rename from fixup_after_exec. - * pinfo.cc (_pinfo::set_ctty): Don't play with console count here. - * syscalls.cc (close_all_files): Don't close cygheap ctty if hExeced - since the child will be copying information from us. - (setsid): Use myctty() rather than raw ctty #. - -2005-11-13 Christopher Faylor - - * cygheap.h (init_cygheap::manage_console_count): Declare new function. - (init_cygheap::console_count): Renamed from open_fhs. Make private. - * cygheap.cc (init_cygheap::manage_console_count): Define new function. - * dtable.cc (dtable::fixup_after_exec): Always call fixup_after_exec on - elements of fd even when they are about to be closed. - * fhandler.h (report_tty_counts): Remove open_fhs from debugging - output. - * fhandler_console.cc (fhandler_console::open): Use - manage_console_count rather than manipulating count directly. - (fhandler_console::close): Ditto. - (fhandler_console::fixup_after_fork): Ditto. - (fhandler_console::fixup_after_exec): Ditto. Don't close handles if - close_on_exec. - * fhandler_tty.cc (fhandler_tty_slave::open): Use - manage_console_count() rather than manipulating count directly. - Reflect change in arguments to report_tty_counts(). - (fhandler_tty_slave::close): Ditto for both. - (fhandler_tty_slave::dup): Ditto for both. - (fhandler_tty_slave::ioctl): Use myctty() rather than raw ctty #. - (fhandler_tty_slave::fixup_after_fork): Reflect change in arguments to - report_tty_counts(). - (fhandler_tty_master::init_console): Use manage_console_count() rather - than manipulating count directly. - * fhandler_clipboard.cc (fhandler_dev_clipboard::fixup_after_exec): - Don't perform any operations if close_on_exec. - * fhandler_dsp.cc (fhandler_dev_dsp::fixup_after_exec): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::fixup_after_exec): Ditto. - * fhandler_serial.cc (fhandler_serial::fixup_after_exec): Ditto. - * pinfo.h (_pinfo::_ctty): Declare new function. - (myctty): Declare new macro. - (__ctty): Declare new macro. - * pinfo.cc (_pinfo::_ctty): Define new function. - (_pinfo::set_ctty): Use manage_console_count() rather than manipulating - count directly. - * signal.cc (kill_pgrp): Use myctty() and __ctty() macros rather than - raw ctty #. - * syscalls.cc (setsid): Ditto. Use manage_console_count() rather than - manipulating count directly. - -2005-11-13 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::recvfrom): Just return 0 (EOF) - in case of WSAESHUTDOWN. - (fhandler_socket::recvmsg): Ditto. - * poll.cc (poll): Set revents to POLLIN instead of POLLHUP. Add comment. - -2005-11-11 Christopher Faylor - - * cygheap.h (init_cygheap::_gtod): Remove. - * cygwin.din: Export clock_getres and clock_setres. - * hires.h (hires_ms::minperiod): Delete declaration. - (hires_ms::began_period): Ditto. - (hires_ms::prime): Make void. - (hires_ms::resolution): Just define here. - (hires_ms::usecs): Remove unneeded argument. - (gtod): Redeclare as a variable. - * timer.cc (timer_thread): Eliminate argument to gtod.usecs(). - (timer_tracker::gettime): Ditto. - (timer_tracker::settime): Ditto. - * times.cc (gettimeofday): Ditto. - (hires_ms::began_period): Delete declaration. - (hires_us::prime): Remove debugging. - (hires_ms::prime): Make void. Eliminate period stuff. - (hires_ms::usecs): Eliminate argument to gtod.usecs(). - (hires_ms::resolution): New function. - (clock_getres): Ditto. - (clock_setres): Ditto. - * version.h: Bump API version to 143. - * include/cygwin/time.h: New file. - -2005-11-10 Christopher Faylor - - * times.cc (hires_ms::prime): Comment out call to timeBeginPeriod for - now. - (hires_ms::usecs): Call prime if haven't called began_period(). - - * param.h: Don't define stuff that is already defined in endian.h. - -2005-11-10 Christopher Faylor - - * include/endian.h: Remove USE_BSD ifdef since it is never defined on - Cygwin. - -2005-11-10 Corinna Vinschen - - * syslog.cc (setlogmask): Don't mask the mask. - (vsyslog): Fix priority check. - -2005-11-10 Scott Finneran - - * include/cygwin/signal.h: Add missing sigrelse prototype. - -2005-11-08 Christopher Faylor - - * fhandler_base.cc (fhandler_base::readv): Free buf, not a pointer into - the middle of buf. - -2005-11-08 Christopher Faylor - - * memmem.cc: New file. - * include/cygwin/version.h: Bump API version number to 142. - * cygwin.din: Export memmem. - * Makefile.in: Build memmem.o. - -2005-11-08 Christopher Faylor - - * environ.cc (spenvs): Make "SYSTEMDRIVE" an "always export". - -2005-11-07 Corinna Vinschen - - * times.cc (futimes): Redirect to utimes_worker if given file - descriptor is opened R/O. - -2005-11-06 Christopher Faylor - - * dcrt0.cc (dll_crt0_0): Initialize security data first so that it can - be used by subsequent handle creation. - -2005-11-04 Christopher Faylor - - * cygheap.h (init_cygheap::_gtod): New hires_ms element. - * hires.h (hires_ms::minperiod): Remove static designation. - (hires::began_period): New field. - * signal.cc: Include headers required for cygheap.h now that gtod lives - in the cygheap. - * timer.c: Ditto. - * times.cc (gtod): Delete variable. - (gtod::minperiod): Ditto. - (gtod::began_period): Define. - (hires_ms::prime): Add more debugging output. Call timeBeginPeriod - only when !began_period. - -2005-11-04 Christopher Faylor - - * times.cc (hires_ms::prime): More debugging. - (hires_ms::usecs): Ditto. - -2005-11-03 Christopher Faylor - - * times.cc (stupid_printf): Define and use throughout -- temporarily. - -2005-11-03 Christopher Faylor - - * times.cc (hires_ms::prime): Add lots of temporary debugging output. - -2005-11-02 Christopher Faylor - - * times.cc (hires_ms::minperiod): Make copy-on-fork. - (gettimeofday): Remove temporary debugging. - (hires_us::prime): Add lots of temporary debugging output. - -2005-11-02 Christopher Faylor - - * times.cc (gettimeofday): Add temporary debugging output. - -2005-11-01 Christopher Faylor - - * include/sys/cygwin.h: Define CYGWIN_SIGNAL_STRING. - * exceptins.cc (sigpacket::process): Send a _CYGWIN_SIGNAL_STRING to - gdb if the process is being debugged. A WIP. - -2005-10-29 Christopher Faylor - - * exceptions.cc (signal_exit): Eliminate setting of main thread - priority since process lock should make that unnecessary. - * fork.cc (stack_base): Eliminate. - (frok::parent): Subsume stack_base and just set stack stuff here. - Report on priority class in debugging output. - * spawn.cc (spawn_guts): Report on priority class in debugging output. - -2005-10-29 Christopher Faylor - - * fork.cc (frok::child): Change order of cleanup prior to return. - (fork): Save more of the stack. - - * gendef: Fix some comments. - - * sigproc.cc (wait_sig): Clarify debug output. - -2005-10-29 Christopher Faylor - - * child_info.h (CHILD_INFO_MAGIC): Reset. - -2005-10-24 Christopher Faylor - - * pinfo.cc (_pinfo::fds): Lock fdtab while enumerating. - -2005-10-24 Corinna Vinschen - - * spawn.cc (spawn_guts): Don't leave the function with return inside - pthread cleanup brackets. - -2005-10-24 Christopher Faylor - - * cygheap.h (cygheap_fdenum): Remove start_fd stuff. - (cygheap_fdenum::rewind): Ditto. - * pipe.cc (fhandler_pipe::open): Lock fdtab while enumerating. - * times.cc (utimes_worker): Ditto. - -2005-10-23 Christopher Faylor - - * cygheap.h (cygheap_fdenum::cygheap_fdenum): Record locked state or - suffer deadlocks. - (class locked_process): Move to another header. - * sync.h (lock_process): Define here. - * cygtls.cc (_cygtls::fixup_after_fork): Reset spinning state as well - as stacklock state. - * dcrt0.cc (lock_process::locker): Define. - (dtable::lock_cs): Delete. - (dll_crt0_0): Initialize process lock here ASAP. - * dtable.cc (dtable_init): Eliminate call to init_lock(). - (dtable::fixup_after_fork): Ditto. - (dtable::init_lock): Delete definition. - * dtable.h (dtable::init_lock): Delete declaration. - (dtable::lock): Use process lock rather than dtable-specific lock. - (dtable::unlock): Ditto. - - * sigproc.cc (sigproc_init): Minor change to debugging output. - - * times.cc (utime_worker): Use build_fh_pc rather than reinterpreting - the posix path name again. Return any error from path_conv immediately. - -2005-10-22 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::connect): Don't restrict - WSAEINVAL -> WSAEISCONN conversion to nonblocking sockets. - (fhandler_socket::accept): Use event driven technique to implement - interuptible accept. - (fhandler_socket::wait): Allow FD_ACCEPT handling. - * net.cc (cygwin_accept): Remove workaround for allowing blocking - accept. That's entirely in fhandler_socket::accept now. - -2005-10-22 Corinna Vinschen - - * fhandler.h (class fhandler_socket): Add timeout parameter to wait() - method. - * fhandler_socket.cc (fhandler_socket::connect): Use event driven - technique (prepare/wait/release) to implement interuptible connect. - (fhandler_socket::wait): Add timeout parameter. Allow FD_CONNECT - handling. - * net.cc (cygwin_connect): Remove braindead workaround for allowing - blocking connect. That's entirely in fhandler_socket::connect now. - -2005-10-22 Corinna Vinschen - - * include/cygwin/version.h: Fix typo. - -2005-10-21 Christopher Faylor - - * dir.cc (rmdir): Eliminate nonsensical code. - - * fork.cc (fork): Move exit debug_printf to last statement. - -2005-10-20 Corinna Vinschen - - * cygwin.din (futimes): Export. - (lutimes): Export. - * times.cc (utimes_worker): Created from utimes, add nofollow flag - to implement utimes and lutimes. - (utimes): Just call utimes_worker. - (lutimes): New function. - (futimes): Ditto. - * include/cygwin/version.h: Bump API minor version. - -2005-10-19 Christopher Faylor - - * sigproc.cc (child_info::sync): Move check for !wr_proc_pipe lower. - * spawn.cc (spawn_guts): Correct check for top-level process. - -2005-10-19 Corinna Vinschen - - * autoload.cc: Revert loading rcmd, rexec, rresvport and inet_network - from wsock32.dll since these symbols are not exported from ws2_32.dll. - -2005-10-19 Christopher Faylor - - * times.cc (utimes): Only consider fds opened with write access. - -2005-10-19 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_base::utimes_fs): Use existing handle - if fhandler has one. - * times.cc (utimes): Scan open fds for matching paths and use existing - fhandler if one exists. - -2005-10-19 Christopher Faylor - - * pinfo.cc (_pinfo::dup_proc_pipe): Make warning more severe by - actually printing it. - (_pinfo::alert_parent): Fix comment. Don't send to parent if we are in - an exec stub. - -2005-10-18 Christopher Faylor - - * cygtls.cc (handle_threadlist_exception): Improve diagnostic output. - - * sigproc.cc (child_info::sync): Only clear hProcess when execing. - (wait_sig): Protect readsig handle. - -2005-10-18 Corinna Vinschen - - * autoload.cc (NtLockVirtualMemory): Import. - (NtUnlockVirtualMemory): Import. - (GetProcessWorkingSetSize): Import. - (SetProcessWorkingSetSize): Import. - * cygwin.din (mlock): Export. - (munlock): Export. - * mmap.cc (mlock): New function. - (munlock): Ditto. - * ntdll.h (STATUS_WORKING_SET_QUOTA): Define. - (LOCK_VM_IN_WSL): Define. - (LOCK_VM_IN_RAM): Define. - (NtLockVirtualMemory): Declare. - (NtUnlockVirtualMemory): Declare. - * sysconf.cc (sysconf): Implement _SC_MEMLOCK_RANGE. - * wincap.h: Implement has_working_virtual_lock throughout. - * wincap.cc: Ditto. - * include/cygwin/version.h: Bump API minor version. - * include/sys/mman.h (mlock): Declare, - (munlock): Declare. - -2005-10-18 Christopher Faylor - - * sigproc.cc (child_info::sync): Use correct name when closing to - prevent warnings when DEBUGGING. - * spawn.cc (spawn_guts): Set myself.hProcess to pi.hProcess since this - may have been zeroed by the previous sync. - -2005-10-18 Christopher Faylor - - * sigproc.cc (child_info::sync): Fix typo which caused hProcess to - never be cleared. Only clear hProcess when not forking. - -2005-10-17 Christopher Faylor - - Change process_lock to lock_process throughout. - Change all calls to new cygthread to handle extra argument, throughout. - * cygthread.h (cygthread::callproc): Declare new method. - (cygthread::cygthread): Add optional length argument to allow copying - arguments to executing thread. - * cygthread.cc (cygthread::callproc): Define new method. - (cygthread::stub): Use callfunc to invoke thread func to allow - potentially allocating stack memory which will be returned. - (cygthread::simplestub): Ditto. - (cygthread::cygthread): Accept arglen argument. Reset ev here prior to - activating thread. Wait for ev after activating thread if we're - copying contents to the thread. Wait until the end before setting h, - to allow thread synchronization. - (cygthread::release): Don't reset ev here. Rely on that happening the next - time the thread is activated. - * pinfo.h (commune_process): Rename declaration from _pinfo::commune_process. - * pinfo.cc (commune_process): Ditto for definition. Modify slightly to allow - running as a separate cygthread. - * sigproc.cc (child_info::sync): Always wait for both subproc_ready and - any hProcess if we have a cygwin parent. - (talktome): Change argument to be a pointer to siginfo_t. Contiguously - allocate whole siginfo_t structure + any needed extra for eventual passing - to commune_process thread. - (wait_sig): Accommodate change in talktome argument. - - * pipe.cc (fhandler_pipe::fixup_after_exec): Remove debugging. - -2005-10-17 Corinna Vinschen - - * autoload.cc: Never load wsock32.dll. Load all wsock32 function - from ws2_32. Rearrange symbol order accordingly. None of the ws2_32 - functions is optional right now. - (wsadata): Move from net.cc here. Define NO_COPY. - (wsock_init): Drop unused symbols ws2_32_handle and wsock32_handle. - (load_wsock32): Remove. - (WSACleanup): Remove. - * fhandler_socket.cc: Drop Winsock 1 accommodations throughout. - (fhandler_socket::readv): Accommodate new POSIX style struct msghdr. - (fhandler_socket::writev): Ditto. - (fhandler_socket::recvmsg): Ditto. Handle "old" applications using - former struct msghdr correctly. - * net.cc: Drop Winsock 1 accommodations throughout. - (wsadata): Move definition to autoload.cc. - (set_socket_inheritance): Remove. - (convert_ws1_ip_optname): New static function to convert Winsock1 - IPPROTO_IP option values into Winsock2 IPPROTO_IP option values. - (cygwin_setsockopt): Remove wrong and incomplete cleartext printing - of optname. For "old" applications, convert optname from Winsock1 - to Winsock2 values before using them. Add comment to describe the - IP_TOS weirdness on W2K and above. - (cygwin_getsockopt): Remove wrong and incomplete cleartext printing - of optname. For "old" applications, convert optname from Winsock1 - to Winsock2 values before using them. - * select.cc (start_thread_socket): Forget about winsock2_active. - * winsup.h (wsock32_handle): Remove declaration. - (ws2_32_handle): Ditto. - (netapi32_handle): Ditto. - (wsadata): Ditto. - (winsock2_active): Remove definition. - * include/cygwin/socket.h: Change formatting slightly. - (socklen_t): Move definition up in file. - (struct msghdr): Convert to POSIX style. - (struct cmsghdr): New type. - (CMSG_ALIGN): New macro. - (CMSG_LEN): Ditto. - (CMSG_SPACE): Ditto. - (CMSG_FIRSTHDR): Ditto. - (CMSG_NXTHDR): Ditto. - (CMSG_DATA): Ditto. - (SCM_RIGHTS): Ditto. - (struct OLD_msghdr): Define old msghdr structure for Cygwin internal - purposes. - (MSG_TRUNC): New macro. - (MSG_CTRUNC): Ditto. - (IP_OPTIONS): Redefine IPPROTO_IP option values to Winsock2 values. - Keep Winsock1 values for Cygwin internal purposes. - * include/cygwin/version.h: Bump API minor version. - (CYGWIN_VERSION_CHECK_FOR_USING_ANCIENT_MSGHDR): Define to check for - applications using old struct msghdr. - (CYGWIN_VERSION_CHECK_FOR_USING_WINSOCK1_VALUES): Define to check for - applications using old Winsock1 IPPROTO_IP values. - -2005-10-13 David Rothenberger - Christopher Faylor - - * Makefile.in (MKDIRP): Just use raw $(INSTALL) rather than - $(INSTALL_DATA). Create directories with 755 permissions. - -2005-10-12 Christopher Faylor - - * dir.cc (mkdir): Abandon use of PC_WRITABLE. - (rmdir): Ditto. - * path.h (PC_WRITABLE): Delete. - * path.cc (path_conv::check): Remove PC_WRITABLE accommodations. - Revisit later. - -2005-10-12 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::rmdir): Convert an - ERROR_INVALID_FUNCTION into an ERROR_FILE_NOT_FOUND. Add comment - to explain why. - -2005-10-11 Christopher Faylor - - * Makefile.in: Make sure that directories are created prior to copying - to them. - -2005-10-11 Christopher Faylor - - * net.cc (cygwin_gethostbyname): Remove debugging. - -2005-10-11 Corinna Vinschen - - * syslog.cc (try_connect_syslogd): Add priority parameter. Use writev - to add the priority to the message in a syslog conformant way. - (vsyslog): If facility isn't set in the priority, use default facility - as given in call to openlog. Fix agressive use of spaces in syslog - output. Call try_connect_syslogd with priority parameter. - -2005-10-11 Christopher Faylor - - * (symlink_info::set_error): Change to return bool if input error - should be ignored. - (symlink_info::check): Treat path as a normal file if set_error returns - false. - -2005-10-03 Christopher Faylor - - * cygheap.h (class process_lock): New class. - * dtable.h (class dtable): Add class process_lock as a friend. - * dcrt0.cc (get_exit_lock): Delete. - (do_exit): Use process_lock class instead of get_exit_lock. - * exceptions.cc (signal_exit): Ditto. - * pinfo.cc (pinfo::exit): Ditto. - (_pinfo::commune_process): Set process lock around this whole function. - (_pinfo::commune_request): Use process_lock rather than myself.lock. - * pinfo.h (pinfo::_lock): Delete. - (pinfo::initialize_lock): Delete. - (pinfo::lock): Delete. - (pinfo::unlock): Delete. - * winsup.h (get_exit_lock): Delete declaration. - -2005-10-03 Corinna Vinschen - - * uname.cc (uname): Disable use of GetNativeSystemInfo. - -2005-10-01 Christopher Faylor - - * dcrt0.cc (get_exit_lock): Use myself.lock rather than exit_lock. - * exceptions.cc (exit_lock): Delete. - (events_init): Don't init exit_lock. - * (_pinfo::commune_process): Add per-PICOM debugging. - * sigproc.cc (talktome): Add some temporary debugging statements. - - * fhandler_proc.cc (format_proc_cpuinfo): Cosmetic change. - (format_proc_partitions): Ditto. - * syscalls.cc (locked_append): Ditto. - -2005-09-30 Christopher Faylor - - * dcrt0.cc (do_exit): Don't set ES_SET_MUTO here. Call get_exit_lock() - instead. - (get_exit_lock): New function. Grabs the lock and sets initial - exit_state. - * exceptions.cc (try_to_debug): Use low_priority_sleep. - (sigpacket::process): Avoid handler if this is an exec stub. - (signal_exit): Use get_exit_lock rather than manipulating the exit_lock - critical section directly. - * pinfo.cc (pinfo::exit): Ditto. - * winsup.h (get_exit_lock): Declare. - (exit_lock): Delete declaration. - -2005-09-30 Corinna Vinschen - - * fhandler_disk_file.cc: Change calls to pc.set_attributes into - calls to pc.file_attributes throughout. - * path.h (class path_conv): Remove superfluous set_attributes method. - -2005-09-30 Corinna Vinschen - - * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Use - fhandler method to access major device number. Add comment to - explain floppy weirdness. - -2005-09-30 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Also use - attributes stored in this->pc if call to GetFileInformationByHandle - failed. - -2005-09-30 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Only write - attributes if call to GetFileInformationByHandle was successful. - -2005-09-29 Christopher Faylor - - * fork.cc (frok::parent): Simplify error messages. Don't issue an - error when child.remember fails. - (fork): When appropriate, build up an error message from grouped.error. - -2005-09-29 Corinna Vinschen - - * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Don't call - EX ioctls on floppy drives. - -2005-09-29 Corinna Vinschen - - * dir.cc (mkdir): Check for trailing /. or /.. component. - (rmdir): Ditto. - * path.cc (has_dot_last_component): New function. - * path.h (has_dot_last_component): Add declaration. - -2005-09-29 Corinna Vinschen - - * crt0.cc: Remove PPC considerations. - (WinMainCRTStartup): Add symbol as alias to mainCRTStartup. - -2005-09-28 Christopher Faylor - - Change name from commune_recv to commune_process throughout. - Change name from commune_send to commune_request throughout. - * pinfo.h (PICOM_EXTRASTR): New flag. - (PICOM_FIFO): Define with new flag. - (_pinfo::hello_pid): Delete. - (_pinfo::tothem): Delete. - (_pinfo::fromthem): Delete. - (_pinfo::commune_process): Rename from commune_recv. Add a siginfo_t - argument to declaration. - (_pinfo::commune_request): Rename from commune_send. Change DWORD to - __uint32_t in declaration. - * pinfo.cc (_pinfo::commune_process): Rename from commune_recv. Add - siginfo_t argument. Use information from argument rather than reading - from another pipe. Synchronize with other process's commune event. - (_pinfo::commune_request): Rename from commune_send. Change DWORD to - __uint32 in argument. Fill out information in new siginfo_t element - and rely on extended operation of sig_send rather than trying to deal - with synchronization issues here. Use process handle and read pipe - information filled out by sig_send to gather information from the other - process. - * sigproc.cc (sig_send): Take special action if "communing" to ensure - synchronization with the other process and to return information about - the other process to the caller. - (talktome): Accept a siginfo_t and handle arguments. Read additional - information from the signal pipe when _si_commune._si_code has the - PICOM_EXTRASTR flag set. - (wait_sig): Pass the transmitted siginfo_t struct and the pipe handle - to talktome. Close pipe read handle as soon as possible after we - detect that we're exiting. - -2005-09-28 Christopher Faylor - - * hookapi.cc (hook_or_detect_cygwin): Correct inverted test for whether - to allocate a buffer by always allocating a buffer. - -2005-09-28 Corinna Vinschen - - * fhandler.h (class fhandler_dev_raw): Delete current_position and - eof_detected status flag. Delete is_eom and is_eof methods. - Move drive_size, bytes_per_sector, eom_detected status flag, as well - as the methods read_file, write_file, raw_read and raw_write to ... - (class fhandler_dev_floppy): ... here. Remove is_eom and is_eof - methods. Add dup method. - * fhandler_floppy.cc (IS_EOM): New macro. - (fhandler_dev_floppy::is_eom): Remove. - (fhandler_dev_floppy::is_eof): Remove. - (fhandler_dev_floppy::fhandler_dev_floppy): Initialize status flags. - (fhandler_dev_floppy::get_drive_info): Only call EX functions on - systems supporting them and stop suffering strange delays. - (fhandler_dev_floppy::read_file): Move here, drop setting - current_position. - (fhandler_dev_floppy::write_file): Move here, drop setting - current_position. - (fhandler_dev_floppy::open): Rearrange comment. - (fhandler_dev_floppy::dup): New method. - (fhandler_dev_floppy::get_current_position): New inline method. Use - instead of former current_position were appropriate. - (fhandler_dev_floppy::raw_read): Move here. Drop EOF handling. - (fhandler_dev_floppy::raw_write): Move here. Drop EOF handling. - (fhandler_dev_floppy::lseek): Remove useless conditions. Convert - sector_aligned_offset to LARGE_INTEGER to improve SetFilePointer call. - (fhandler_dev_floppy::ioctl): Move blocksize check in RDSETBLK case - to here. - * fhandler_raw.cc (fhandler_dev_raw::is_eom): Remove. - (fhandler_dev_raw::is_eof): Remove. - (fhandler_dev_raw::write_file): Remove. - (fhandler_dev_raw::read_file): Remove. - (fhandler_dev_raw::raw_read): Remove. - (fhandler_dev_raw::raw_write): Remove. - (fhandler_dev_raw::dup): Drop copying removed members. - (fhandler_dev_raw::ioctl): Drop blocksize testing. - * wincap.h: Implement has_disk_ex_ioctls throughout. - * wincap.cc: Ditto. - (wincap_vista): Preliminary wincaps for Windows Vista/Longhorn. - (wincapc::init): Add Vista/Longhorn handling. - -2005-09-28 Christopher Faylor - - * dcrt0.cc (getstack): New function. - (alloc_stack): Use tls stuff for stack info rather than calling - VirtualQuery. - (dll_crt0_0): Initialize _impure_ptr stuff much earlier. Move - init_console_handler here. - * fork.cc (class frok): New class renamed from local fork() struct. - (stack_base): Change argument type. Use tls stuff to determine stack - info rather than calling VirtualQuery. - (frok::child): Rename from fork_child. Eliminate now unneeded - arguments. - (frok::parent): Rename from fork_parent and ditto. Set error and errno - as appropriate. Fixup impersonation in cleanup, if needed. Try harder - to set errno appropriately. - (fork): Define "grouped" as a frok type. Deal with errors from - fork_parent here. - * init.cc (dll_entry): Remove init_console_handler call. - -2005-09-28 Christopher Faylor - - * pinfo.cc (_pinfo::dup_proc_pipe): Ignore error if the child process - has just gone away. - -2005-09-27 Christopher Faylor - - * init.cc (prime_threads): Make this static, as it should be. - (dll_entry): Apply cosmetic changes to define closer to the way MSDN - suggests. - -2005-09-27 Corinna Vinschen - - * pthread.cc (mangle_sem_name): Use cygheap->shared_prefix instead - of fiddling with wincap.has_terminal_services manually. - -2005-09-27 Corinna Vinschen - - * cygheap.cc (cygheap_init): Add GLOBAL_PRIV to hProcToken explicitely - since hProcImpToken isn't initialized here. - * shared.cc (open_shared): Always print mapname instead of name in - debug output. - -2005-09-27 Christopher Faylor - - * strace.cc (strace::vsprntf): Avoid printing a zero pid. - -2005-09-27 Corinna Vinschen - - * init.cc (dll_entry): Call IsWow64Process with GetCurrentProcess - as process handle since hMainProc isn't initialized here. - -2005-09-27 Corinna Vinschen - - * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Always - try IOCTL_DISK_GET_DRIVE_GEOMETRY_EX and - IOCTL_DISK_GET_PARTITION_INFO_EX ioctls first, to allow access to GPT - partitioned disks. Fall back to old non-EX ioctls otherwise. - Add comment to explain NT4 weirdness. - -2005-09-26 Corinna Vinschen - - * errno.cc (errmap): Map ERROR_SEEK and ERROR_SECTOR_NOT_FOUND. - -2005-09-26 Christopher Faylor - - * exceptions.cc (_cygtls::call_signal_handler): Minor cleanup. - -2005-09-26 Corinna Vinschen - - * fhandler.h (class fhandler_dev_raw): Add drive information members - drive_size, current_position and bytes_per_sector. - (fhandler_dev_floppy::get_drive_info): Declare. - * fhandler_floppy.cc (fhandler_dev_floppy::is_eom): Define ERROR_SEEK - and ERROR_SECTOR_NOT_FOUND as end-of-medium conditions. - (fhandler_dev_floppy::get_drive_info): New method to have one function - retrieving drive info. - (fhandler_dev_floppy::open): Call get_drive_info to get drive - information right from the start. - (fhandler_dev_floppy::lseek): Use and set drive information members. - Especially keep track of current_position. - (fhandler_dev_floppy::ioctl): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::write_file): Keep track of - current_position. - (fhandler_dev_raw::read_file): Ditto. - (fhandler_dev_raw::raw_read): Never try to read beyond end-of-medium. - (fhandler_dev_raw::dup): Handle new drive information members. - -2005-09-26 Christopher Faylor - - * exceptions.cc (handle_exceptions): Just set si_code to SI_KERNEL - first and let it be overridden. - -2005-09-26 Yitzchak Scott-Thoennes - - * exceptions.cc (_cygtls::call_signal_handler): Call signal handler - with extra siginfo_t * and void * parameters when SA_SIGINFO flag is - set. - * signal.cc (signal): Clear SA_SIGINFO flag. - (sigqueue): Fix incorrect setting of si_code. - * sigproc.cc (signal_fixup_after_exec): Clear SA_SIGINFO flag when - setting handler to SIG_DFL. - -2005-09-26 Christopher Faylor - - * pinfo.cc (proc_waiter): Properly fill out si_code as according to SUSv3. - -2005-09-26 Christopher Faylor - - * exceptions.cc (handle_exceptions): Properly fill out si_code as - according to SUSv3. - -2005-09-25 Christopher Faylor - - * sigproc.cc (wait_sig): Cosmetic change. - * pinfo.cc (pinfo::exit): Don't explicitly remove myself since some - other thread may still be using it. - -2005-09-24 Christopher Faylor - - * sigproc.cc (sigproc_terminate): More reversion of - always-exit-from-sigthread change. - -2005-09-23 Christopher Faylor - - * shared.cc (open_shared): Add crucial bit of debugging info. - -2005-09-23 Christopher Faylor - - Semi-reversion of always-exit-from-sigthread change of 2005-09-15. - * exceptions.cc (sigpacket::process): Eliminate return after call to - reinstated noreturn function. - (signal_exit): Allow function to exit when a captive process has been - terminated. - * pinfo.cc (pinfo::exit): Enter exit_lock here. Once again exit here - under control of exit_lock. - * sigproc.cc (sig_send): Don't wait for completion if process is exiting. - Remove special __SIGEXIT accommodations. - (wait_sig): Just exit the thread when a __SIGEXIT has been detected. - Don't exit the process. - -2005-09-23 Christopher Faylor - - * net.cc (cygwin_gethostbyname): Remove debugging cruft. - -2005-09-23 Christopher Faylor - - * pinfo.cc (pinfo::exit): Call ExitProcess if called from signal - thread. - -2005-09-23 Christopher Faylor - - * pinfo.cc (pinfo::exit): Eliminate use of _my_tls.thread_handle. - * tlsoffsets.h: Regenerate. - -2005-09-23 Christopher Faylor - - * cygtls.h (struct _cygtls::thread_handle): Remove/revert. - * sigproc.h (struct sipacket::thread_handle): Put thread_handle here. - * sigproc.cc (sigproc_terminate): Move setting of thread_handle... - (sig_send): ...to here. Put it in packet being sent. Only close - pack.wakeup when we're waiting for completion. - (wait_sig): Use thread_handle directly from received packet. - -2005-09-22 Christopher Faylor - - * cygheap.cc (cygheap_fixup_in_child): It's not just for exec. - * cygtls.h (struct _cygtls::thread_handle): New field. - * dcrt0.cc (exit_lock): Remove declaration. - * winsup.h (exit_lock): Add declaration. - * exceptions.cc (sigpacket::process): Properly return after - signal_exit. - * pinfo.cc (pinfo::exit): Only exit the process if - _my_tls.thread_handle has not been filled out -- which should be an - impossible event. - * sigproc.cc (sigproc_terminate): Fillout _my_tls.thread_handle to - provide something for wait_sig to wait for. Use the siginfo_t version - of sig_send and fill out the tls argument with _my_tls. - (wait_sig): Wait for the thread specified in pack.tls or (for now) - complain bitterly if it doesn't exit. - * tlsoffsets.h: Regenerate. - -2005-09-22 Christopher Faylor - - * pinfo.cc (set_myself): Call strace.hello unconditionally when - DEBUGGING. - (pinfo::init): Sleep and issue debugging output before looping when a - PID_EXITED is found. - -2005-09-22 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix copy/paste - bug. - -2005-09-22 Christopher Faylor - - * strace.cc (strace::vsprntf): Avoid accessing myself->pid if !myself. - -2005-09-22 Christopher Faylor - - * include/sys/strace.h (_STRACE_ON): Remove semicolon from definition. - (_STRACE_OFF): Remove semicolon from definition. - -2005-09-22 Corinna Vinschen - - * fhandler.h (fhandler_base::fstat_helper): Declare with additional - file attributes argument. - * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Use - file attributes evaluated from NtQueryFileInformation or - FileInformationByHandle in call to fstat_helper. - Set pc.fileattr from just evaluated file attributes here. - (fhandler_base::fstat_by_name): Use file attributes evaluated from - FindFileFirst or default attribute in call to fstat_helper. - Set pc.fileattr from just evaluated file attributes here. - (fhandler_base::fstat_helper): Use file attributes given as argument, - not file attributes stored in this fhandler, since this information - is potentially wrong. Add comment to explain this. - * path.h (has_attribute): New global inline function. - (path_conv::set_attributes): New method to change fileattr. - -2005-09-21 Christopher Faylor - - * cygthread.cc (cygthread::operator new): Just use getenv() to look for - CYGWIN_FREERANGE_NOCHECK since the Windows environment may be truncated - by being previously execed. - -2005-09-20 Christopher Faylor - - * spawn.cc (av::fixup): Just blindly run any file if it has a .bat or - .cmd extension. - -2005-09-19 Christopher Faylor - - * dcrt0.cc (do_exit): Only call sigproc_terminate from one location -- - pinfo::exit. - * pinfo.cc (pinfo::exit): Move sigproc_terminate later so that signals - can be processed while waiting for hExeced child. - (pinfo::maybe_set_exit_code_from_windows): Set exit code from sigExeced - if it is non-zero. Set exit_state to ES_EXEC_EXIT prior to waiting for - captive process exit code. - * exceptions.cc (sigExeced): New global variable. - (signal_exit): Remove noreturn attribute from declaration. - (signal_exit): Just terminate captive process and return if hExeced on - the theory that the exit will be subsequently handled in the main - thread. - * sigproc.cc (sigproc_terminate): Eliminate test for - ES_SIGPROCTERMINATE and use ES_FINAL instead. - (sig_send): Use no_signals_available instead of duplicate test. - * winsup.h (ES_EXEC_EXIT): New enum. - (ES_SIGPROCTERMINATE): Delete. - -2005-09-19 Christopher Faylor - - * sigproc.cc (talktome): Take siginfo_t argument. Don't scan all pids - trying to find one that's talking to me. Just use the pid from - siginfo_t. - (wait_pid): Pass siginfo_t argument to talktome. - -2005-09-17 Christopher Faylor - - * pipe.cc (fhandler_pipe::open): Use 'cfree' to free buffer since it is - now allocated by cmalloc. - -2005-09-17 Corinna Vinschen - - * net.cc (cygwin_inet_ntop): Change len argument to socklen_t to - follow SUSv3. - * include/arpa/inet.h (inet_ntop): Ditto. - * include/cygwin/in.h: Include cygwin/socket.h to get socklen_t. - -2005-09-16 Christopher Faylor - - * environ.cc (build_env): Use "kilo"bytes not "mega"bytes. Return - immediately on error. - * spawn.cc (spawn_guts): Set return value to -1 on error from - build_env. - -2005-09-16 Christopher Faylor - - * environ.cc (build_env): Clear envblock and return NULL on attempt to - use env var > 32K. - * spawn.cc (spawn_guts): Set E2BIG if build_env detects an error. - -2005-09-16 Christopher Faylor - - * environ.cc (environ_init): Protect with a 'myfault' in case - GetEnvironmentStrings misbehaves. - -2005-09-16 Christopher Faylor - - * environ.cc (environ_init): Add debugging output with value returned - from GetEnvironmentStrings. - -2005-09-16 Christopher Faylor - - * environ.cc (environ_init): Issue an error if GetEnvironmentStrings - fails and return. - -2005-09-15 Christopher Faylor - - * pinfo.h (EXITCODE_SET): Move out of range of Windows error. - (EXITCODE_NOSET): Ditto. - * sigproc.cc (no_signals_available): Remove check for hwait_sig. Just - rely on my_sendsig. Pass in an argument controlling when it is - appropriate to test EXITCODE_SET. - (proc_can_be_signalled): Remove checks for myself since this function - is never called in that context. - (sigproc_init): Pre-initialize my_sendsig to non-zero so that - proc_can_be_signalled will know that we expect to be signalable soon. - (sig_send): Change debugging output. - -2005-09-15 Christopher Faylor - - * sigproc.cc (no_signals_available): Return true if sending to self - from the signal thread. - (wait_sig): Correct so that WaitForSingleObject is called when - hMainThread is != 0, rather than the reverse. - - * cygheap.cc (cygheap_fixup_in_child): Clarify potential error message. - - * fork.cc (fork_copy): Cosmetic change. - -2005-09-15 Christopher Faylor - - * sigproc.cc (wait_sig): Reorganize exit case so that ExitProcess is - always called, since that is the intent of sending a __SIGEXIT. Wait - forever for main thread to go away since, presumably, the main thread - told us it was going away. - -2005-09-14 Christopher Faylor - - * spawn.cc (av::fixup): Avoid breaking out of the wrong "loop". - -2005-09-14 Christopher Faylor - - * hookapi.cc (hook_or_detect_cygwin): Simplify very slightly. - * spawn.cc (av::fixup): Guard against problems reading an executable - which does not match Microsoft's documentation about PE format. - -2005-09-14 Christopher Faylor - - * spawn.cc (av::error): Eliminate. - (av::av): Remove reference to error. - (av::replace0_maybe): Ditto. - (av::dup_maybe): Ditto. - (av::dup_all): Ditto. - (av::unshift): Ditto. - (spawn_guts): On a fault, return E2BIG only if ENOMEM has been set. - Otherwise return EFAULT. - -2005-09-14 Christopher Faylor - - * cygtls.h (san): New structure. - (cygtls::andreas): New element. Replaces _myfault and _myfault_errno. - (cygtls::fault_guarded): Use andreas. - (cygtls::return_from_fault): Ditto. - (cygtls::setup_fault): Add a parameter denoting where to store old - fault handler, if any and use it to "stack" faults. - (cygtls::reset_fault): Restore fault from parameter. - (myfault::sebastian): New variable. - (myfault::~myfault): Pass sebastian to reset_fault. - (myfault::myfault): Store old fault values in sebastian. - -2005-09-14 Christopher Faylor - - * heap.cc (heap_init): Revert 2005-09-11 patch as it seems to - inexplicably cause problems with emacs. - -2005-09-14 Christopher Faylor - - Remove some more unneeded 'return;'s throughout. - -2005-09-14 Christopher Faylor - - * sigproc.h: Protect declaration so that it only happens when - __INSIDE_CYGWIN__. - -2005-09-14 Christopher Faylor - - * exceptions.cc (sigtid): Remove declaration. - (handle_exceptions): Use _sig_tls rather than sigtid to determine if - this is the signal thread. - (set_signal_mask): Ditto for conditionalized CGF code. - * pinfo.cc (pinfo::exit): Exit the thread if we forcefully terminated - the main thread. - * sigproc.cc (sigtid): Delete. - (_sig_tls): Define. - (sig_clear): Use _sig_tls rather than sigtid to determine if this is - the signal thread. - (sig_dispatch_pending): Ditto. - (wait_sig): Set _sig_tls here. - -2005-09-13 Christopher Faylor - - * dcrt0.cc (do_exit): Move sigproc_terminate call later since signal - handling was still needed for subsequent stuff. Call sigproc_terminate - with new exit_state value. - * pinfo.cc (pinfo::exit): Call sigproc_terminate with new exit_state - value. - * sigproc.cc (proc_terminate): Remove unnecessary (void) parameter. - (sigproc_terminate): Ditto. Add new argument to accept exit state to - be set. - (wait_sig): Reorganize __SIGEXIT handling. Add more debugging output. - * winsup.h (sigproc_terminate): Declare with new exit_state argument. - (exit_states): Reorganize to reflect new exit ordering of - sigproc_terminate. - -2005-09-13 Christopher Faylor - - * dcrt0.cc (do_exit): Rely on sigproc_terminate to set exit_state - appropriately. - * pinfo.cc (pinfo::exit): Always call sigproc_terminate here. Rely on - sigproc_terminate to signal signal thread to handle eventual process - exit. - * sigproc.cc (no_signals_available): Change criteria for determining if - this process can handle signals to itself. - (my_sendsig): New variable. Copy of my sendsig handle. - (proc_can_be_signalled): Don't send signals if exit code is set. - (sigproc_terminate): Use and set exit_state appropriately to determine - when to do anything. Send __SIGEXIT to self to control process exit. - (sig_send): Use my_sendsig for sending signals. Don't call - proc_can_be_signalled for myself since the criteria is now different - for sending signals to myself. - (wait_sig): Copy myself->sendsig to my_sendsig for future use. Exit - signal loop when __SIGEXIT is received. Wait for main thread to exit - and use its exit status to actually exit process. - * sigproc.h (__SIGEXIT): New enum. - -2005-09-13 Christopher Faylor - - * dcrt0.cc (alloc_stack): Eliminate superfluous "return;". - * debug.cc (add_handle): Ditto. - * devices.in (device::parse): Ditto. - * dtable.cc (dtable::vfork_parent_restore): Ditto. - (dtable::vfork_child_fixup): Ditto. - * environ.cc (parse_options): Ditto. - * errno.cc (seterrno_from_win_error): Ditto. - * exceptions.cc (sig_handle_tty_stop): Ditto. - (set_signal_mask): Ditto. - * fhandler.cc (fhandler_base::read): Ditto. - (fhandler_base::operator delete): Ditto. - (fhandler_base::seekdir): Ditto. - (fhandler_base::rewinddir): Ditto. - * fhandler_console.cc (fhandler_console::read): Ditto. - (fhandler_console::fixup_after_exec): Ditto. - * sigproc.cc (sigproc_init): Ditto. - (sigproc_terminate): Ditto. - - * devices.cc: Regenerate. - -2005-09-13 Christopher Faylor - - * sigproc.cc (wait_sig): Be more defensive about detecting when we're - exiting. - -2005-09-12 Christopher Faylor - - * cygthread.cc (cygthread::cygthread): Add more info to fatal error. - - * fhandler_disk_file.cc (fhandler_disk_file::readdir): Temporarily - remove insertion of /dev into root directory. - * path.cc (path_conv::check): Ditto. - -2005-09-11 Christopher Faylor - - * heap.cc (heap_init): Allocate heap from top down as a hedge against - subsequent ERROR_INVALID_ADDRESS in forked processes when CTRL-C is - pressed. - -2005-09-09 Christopher Faylor - - * heap.cc (heap_init): Be slightly more aggressive when trying to - allocate heap. Change fatal error message to avoid confusion with - cygheap. - - * spawn.cc (linebuf::finish): New function. - (linebuf::add): Cosmetic change. - (spawn_guts): Only avoid building windows command line if the program - being executed was actually mounted with -X. Don't return E2BIG if we - hit the 32K size and we're executing a detected cygwin program. Just - silently truncate the windows command line, instead. - -2005-09-08 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::tcgetattr): Just zero c_cflag - here rather than clearing CBAUD after the fact. - * termios.cc (tcgetattr): Revert previous change. - -2005-09-08 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::ioctl): Always return 0 for - window size. - * termios.cc (tcgetattr): Clear out baud part of c_cflag since it is - always ignored. - -2005-09-08 Corinna Vinschen - - * exceptions.cc (ctrl_c_handler): Disable any special CTRL_LOGOFF_EVENT - handling and add longish comment about the reasons. - -2005-09-07 Christopher Faylor - - * hookapi.cc (rvadelta): Change argument to DWORD to eliminate a - compiler warning. - - * path.h (path_conv::set_cygexec): New function. - * spawn.cc (av::iscygwin): Eliminate. - (av::av): Don't initialize iscygwin. - (spawn_guts): Just use real_path.iscygexec for all tests. - (av::fixup): Short circuit test if .exe extension and known cygexec. - Set cygexec flag appropriately if we find that program uses cygwin1.dll. - -2005-09-06 Christopher Faylor - - * dcrt0.cc (initial_env): Don't attempt stracing if dynamically loaded. - (dll_crt0_0): Move console initialization earlier. - * init.cc (dll_entry): Move console initialization here. - * exceptions.cc (init_console_handler): Fully remove any old console - handler. - (handle_sigsuspend): Make cancelable when called from non-main thread. - - * spawn.cc (spawn_guts): Don't fill out windows argv if we've deduced - that this is a cygwin-using program. - (av::fixup): Always check executables to see if they are using - cygwin1.dll. Don't consider .com files to be scripts. - * hookapi.cc (rvadelta): New function. - (PEHeaderFromHModule): Simplify slightly. - (hook_or_detect_cygwin): Use passed in name argument for "HMODULE" - rather than incorrectly reading current program. Calculate delta - needed to read image data and file names if this isn't a real - "HMODULE". - -2005-09-06 Corinna Vinschen - - * thread.h: Revert patch from 2005-09-05. - * thread.cc (pthread_mutex::can_be_unlocked): Return true also if - mutex is owned by MUTEX_OWNER_ANONYMOUS. - -2005-09-05 Christopher Faylor - - * cygheap.cc (cygheap_init): Eliminate debugging #if. - - * fork.cc (fork_parent): Don't issue errors if "somebody" has set the - PID_EXITED flag on a child. Don't close process handle if it has - potentially already been closed. - * pinfo.cc (winpids::add): Eliminate PID_ALLPIDS handling which was - obsoleted by previous changes. - - * spawn.cc (av::fixup): Do win16 detection for .com files. Make sure - that buffer has been unmapped in all cases. - -2005-09-05 Corinna Vinschen - - * thread.h (pthread_mutex::get_pthread_self): Remove. - (pthread_mutex::lock): Use ::pthread_self as self parameter. - (pthread_mutex::trylock): Ditto. - (pthread_mutex::unlock): Ditto. - (pthread_mutex::destroy): Ditto. - -2005-09-02 Dave Korn - - * Makefile.in (CXXFLAGS): Use 'override' to correctly set flags to - generate dependencies when invoked from top-level make. - -2005-08-28 Christopher Faylor - - * exceptions.cc (set_process_mask_delta): Conditionalize debugging - output. - * sigproc.cc (proc_subproc): Make strace output a little more verbose. - -2005-08-28 Christopher Faylor - - * cygtls.h (__ljfault): Declare. - (_cygtls::return_from_fault): Use __ljfault. - * exceptions.cc (set_signal_mask): Revert previous checkin. - * gendef (__sjfault): Split out into a separate function which doesn't - bother with any special signal locking. - (_ljfault): Return from a __sjfault without bothering with signals. - -2005-08-28 Christopher Faylor - - * cygtls.h (_local_storage::strerror_buf): Allocate more space. - * errno.cc (strerror_worker): New function, adapted from strerror. - (strerror): Use strerror_worker. - * tlsoffsets.h: Regenerate. - - * exceptions.cc (set_signal_mask): Minimize time during which mask_sync - is held. - -2005-08-28 Christopher Faylor - - * cygwin.din: Correct readdir_r typo. - -2005-08-27 Bas van Gompel - - * dir.cc (readdir_r): Invert sense on error test. - -2005-08-25 Corinna Vinschen - - * path.cc (normalize_posix_path): Keep two leading slashes - intact throughout. - (normalize_win32_path): Revert to only checking for slash. - (realpath): Convert drive letters to cygdrive paths before - doing anything else. - * shared_info.h (mount_info::cygdrive_posix_path): Make public. - -2005-08-25 Corinna Vinschen - - * path.cc (realpath): Drop call to mount_info::conv_to_posix_path - in favor of calling path_conv with PC_POSIX flag. Align error - handling closer to POSIX. As on Linux, return user space allocated - memory if second parameter is NULL. - -2005-08-25 Corinna Vinschen - - * path.cc (normalize_win32_path): Honor network paths. Fold more - than two leading dir separators into one. Check for dir separator - instead of just slashes to handle incoming Win32 paths correctly. - -2005-08-25 Christopher Faylor - - * errno.cc (errmap): Translate ERROR_NO_MORE_ITEMS to ENMFILE. - -2005-08-24 Christopher Faylor - - * exceptions.cc (handle_sigsuspend): Just sleep forever if called from - non-main thread. - (sigpacket:process): Simplify logic which determines when and how a - signal is masked. Don't trigger sigwait if there is a signal handler. - * sigproc.cc (wait_sig): Update comment. Try to process a signal which - is in the queue if it isn't queued for the target thread (this is still - not right). - -2005-08-24 Christopher Faylor - - * spawn.cc (perhaps_suffix): Record errno-type error value in third - argument. - (find_exec): On error, set errno returned from perhaps_suffix. - (spawn_guts): Ditto. - -2005-08-24 Christopher Faylor - - * fhandler_virtual.cc (fhandler_virtual::close): Don't free filebuf if - it's NULL. - * pinfo.cc (_pinfo::commune_send): Fix test for incorrect number of - bytes read from pipe. - -2005-08-24 Corinna Vinschen - - * syscalls.cc (endusershell): Reset shell_fp to NULL to allow - subsequent getusershell calls. - -2005-08-24 Christopher Faylor - - * path.cc (path_conv::check): Fill in fileattr for /dev, defaulting to - directory if /dev doesn't actually exist. - (win32_device_name): Don't consider FH_DEV to be a device since it's - really a directory which should go through mount processing. - -2005-08-24 Christopher Faylor - - * cygheap.h (cygheap_types): Add HEAP_COMMUNE. - * fhandler_proc.cc: Use cygheap rather than user heap for allocation of - filebuf throughout. - * fhandler_registry.cc: Ditto. - * fhandler_virtual.cc: Ditto. - * fhandler_process.cc: Ditto. - (get_mem_values): Use malloc/realloc/free rather than new. - * pinfo.cc (_pinfo::commune_send): Allocate on cygwin heap rather than - user heap. Avoid calling ReadFile when correct number of characters - have been read or suffer buffer corruption. - (_pinfo::fd): Allocate on cygwin heap rather than user heap. - (_pinfo::fds): Ditto. - (_pinfo::root): Ditto. - (_pinfo::cwd): Ditto. - (_pinfo::cmdline): Ditto. - - * devices.h (FH_DEV): New define. - * devices.in: Detect lone /dev. - * devices.cc: Regenerate. - * path.cc (path_conv::check): Treat FH_DEV as a special case. - -2005-08-23 Christopher Faylor - - * sigproc.h (set_signal_mask): Remove default on second parameter and - make pass by reference. - * signal.cc (abort): Accommodate change to set_signal_mask. - * select.cc (pselect): Ditto. - * exceptions.cc (handle_sigsuspend): Ditto. - (ctrl_c_handler): Ditto. - (sighold): Ditto. - (sigrelse): Ditto. - (set_process_mask_delta): Ditto. - (_cygtls::call_signal_handler): Ditto. - - * fhandler_disk_file.cc (fhandler_disk_file::readdir): Return ENMFILE - if __handle is not set. Set __handle to NULL when out of files. - (fhandler_disk_file::rewinddir): Don't close handle if it's NULL. - (fhandler_disk_file::closedir): Ditto. - -2005-08-22 Christopher Faylor - - * dir.cc (readdir_worker): Make static. Only add '.' and '..' when - readdir fails due to ENMFILE. - * fhandler_disk_file.cc (fhandler_disk_file::readdir): Only close - handle on error != ENMFILE. - -2005-08-22 Corinna Vinschen - - * mtinfo.h (mtinfo_drive::error): Fix argument bug in debug_printf call. - -2005-08-20 Christopher Faylor - - * cygerrno.h (geterrno_from_win_error): Change declaration to default - to using GetLastError and EACCESS. - * cygwin.din: Export readdir_r. - * include/cygwin/version.h: Bump API version number to 138. - * syscalls.cc (readdir_worker): New function, renamed from old - readdir() function. - (readdir): Use readdir_worker. - (readdir_r): New function. - * fhandler.h (fhandler_base::readdir): Accommodate second argument - indicating dirent buffer. - (fhandler_disk_file::readdir): Ditto. - (fhandler_cygdrive::readdir): Ditto. - (fhandler_proc::readdir): Ditto. - (fhandler_netdrive::readdir): Ditto. - (fhandler_registry::readdir): Ditto. - (fhandler_process::readdir): Ditto. - * fhandler.cc (fhandler_base::readdir): Ditto. - * fhandler_disk_file.cc (fhandler_disk_file::readdir): Ditto. - * fhandler_cygdrive.cc (fhandler_cygdrive::readdir): Ditto. - * fhandler_proc.cc (fhandler_proc::readdir): Ditto. - * fhandler_netdrive.cc (fhandler_netdrive::readdir): Ditto. - * fhandler_registry.cc (fhandler_registry::readdir): Ditto. - * fhandler_process.cc (fhandler_process::readdir): Ditto. - * include/sys/dirent.h (readdir_r): Add declaration. - -2005-08-19 Christopher Faylor - - * fhandler.h (dirent_states): Add dirent_saw_proc. - * fhandler_disk_file.cc (fhandler_disk_file::readdir): Fill in "proc" - if it is the root dir and it is missing. - -2005-08-19 Christopher Faylor - - * fhandler.h (dirent_states): Add dirent_isroot, dirent_saw_cygdrive, - dirent_saw_dev. - * dir.cc (opendir): Don't zero __flags here. Push that responsibility - to opendir methods. - (seekdir): Preserve dirent_isroot in __flags. - (rewinddir): Ditto. - * fhandler_disk_file.cc (fhandler_disk_file::opendir): Set - dirent_isroot appropriately. - (fhandler_disk_file::readdir): Fill in "cygdrive" and "dev" if it is - the root dir and they are missing. - * fhandler_process.cc (fhandler_process::opendir): Set __flags here. - * fhandler_virtual.cc (fhandler_virtual::opendir): Set __flags here. - -2005-08-19 Christopher Faylor - - * winsup.h (create_pipe): Declare new function. - (CreatePipe): New define. - * miscfuncs.cc (create_pipe): Define new function. - -2005-08-18 Christopher Faylor - - * fhandler.h (fhandler_tty_common::lseek): Declare new method. - (fhandler_tty_slave::lseek): Delete old method. - (fhandler_tty_master::lseek): Delete old method. - * fhandler_tty.cc (fhandler_tty_common::lseek): Define new method. - -2005-08-18 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::recvfrom): Always initialize - ret to 0. - (fhandler_socket::recvmsg): Ditto. - -2005-08-18 Corinna Vinschen - - * errno.cc (strerror): Check errnum for underflow. - -2005-08-17 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Tweak debugging stuff. - -2005-08-17 Pavel Tsekov - - * fhandler_tty.cc (fhandler_tty_common::close): Rearrange the code so - that the master end of the input and output pipes is closed before - signalling an EOF event to the slave. - (fhandler_pty_master::close): Likewise. - -2005-08-14 Corinna Vinschen - - * init.cc (respawn_wow64_process): Make inline function. Remove - "noreturn" attribute. Add additional check if parent process is - actually a 64 bit process. - (dll_entry): Only test WOW64 processes with a stack in the usual - "dangerous" process space area. - -2005-08-11 Troy Curtiss - - * fhandler_serial.cc (fhandler_serial::tcgetattr): Return current baud - rate regardless of current DTR state. - -2005-08-11 Christopher Faylor - - * dcrt0.cc: Remove ld_preload declaration. - * winsup.h: Move ld_preload declaration here. - * fork.cc (fork_child): Call ld_preload() before returning. - -2005-08-11 Christopher Faylor - - * child_info. (CURR_CHILD_INFO_MAGIC): Refresh. - (child_info::child_info()): New constructor. - (child_info_spawn::child_info_spawn()): Ditto. - (child_info_spawn::operator new): New operator. - (child_info_spawn::set): New function. - * spawn.cc (av()): New constructor. - (av::operator new): New operator. - (av::set): New function. - (spawn_guts): Reorganize so that classes which allocate are defined - early in the function so that it can be properly cleaned up after an - efault. Set errno to E2BIG in the event of a SEGV situation. - -2005-08-08 Christopher Faylor - - * include/sys/cdefs.h: Remove extra line. - -2005-08-08 Corinna Vinschen - - * security.cc (get_reg_security): New static function. - (get_nt_object_security): Call get_reg_security for registry keys - to circumvent problems with predefined registry keys. - -2005-08-08 Corinna Vinschen - - * fhandler_process.cc (fhandler_process::open): Allow opening of - /proc//fd for reading. - * fhandler_registry.cc (fhandler_registry::open): Ditto for registry - keys. - -2005-08-08 Christopher Faylor - - * include/sys/cdefs.h (__CONCAT): Define. - * include/elf.h: New file. - * include/sys/elf32.h: Ditto. - * include/sys/elf64.h: Ditto. - * include/sys/elf_common.h: Ditto. - * include/sys/elf_generic.h: Ditto. - -2005-08-08 Christopher Faylor - - * cygwin.sc: Use simpler method to align .cygheap. - * dllfixdbg: Just copy .stab and .stabstr sections when making - cygwin1.dbg, rather than relying on objcopy to keep only the debug - sections since objcopy seems to get it wrong. - -2005-08-08 Corinna Vinschen - - * dtable.cc (build_fh_pc): Check setting fh to fhandler_nodevice for - NULL, too. - -2005-08-08 Corinna Vinschen - - * ftw.c: Include winsup.h. - * nftw.c: Ditto. - * include/ftw.h: Guard declarations appropriately. - -2005-08-08 Corinna Vinschen - - * Makefile.in (DLL_OFILES): Add fts.o, ftw.o, nftw.o. - * cygwin.din: Export fts_children, fts_close, fts_get_clientptr, - fts_get_stream, fts_open, fts_read, fts_set, fts_set_clientptr, - ftw, nftw. - * fts.c: New file, imported from FreeBSD. - * ftw.c: Ditto. - * nftw.c: Ditto. - * include/fts.h: Ditto. - * include/ftw.h: Ditto. - * include/cygwin/version.h: Bump API minor number. - -2005-08-07 Christopher Faylor - - * Makefile.in (dtable_CFLAGS): Use -fomit-frame-pointer and - -fcheck-new. - * cygheap.cc (cmalloc): Only emit system_printf warnings on failure if - DEBUGGING. - (crealloc): Ditto. - (ccalloc): Ditto. - * dtable.cc (build_fh_name): Treat NULL return from cnew as indicative - of EMFILE condition. - (build_fh_dev): Ditto. - (dtable::dup_worker): Handle NULL return from build_fh_pc. - (dtable::vfork_child_dup): Trust dup_worker to set errno. - * fhandler.h (fhandler_base::new): Mark as nothrow. - -2005-08-07 Christopher Faylor - - * dllfixdbg: New perl script. - * configure.in: Detect objcopy, objdump, strip. - * configure: Regenerate. - * Makefile.in: Pass target objcopy/objdump to new dllfixdbg script. - Remove previous perl check. - * cygwin.sc: Add .gnu_debuglink_overlay section for eventual - replacement with .gnu_debuglink section. Revert move of cygheap to end - of image. - -2005-08-06 Corinna Vinschen - - * Makefile.in: Allow previous patch to work in a 64 bit environment. - -2005-08-06 Christopher Faylor - - * Makefile.in: Warn when end of cygheap is not on 64k boundary. - * cygwin.sc: Try harder to ensure that cygheap is on a 64k boundary. - Move cygheap to end of image to stop interference from unstripped debug - regions. - -2005-08-06 Christopher Faylor - - * include/endian.h: Move everything into this file and define things - more like linux. - * include/cygwin/types.h: Include endian.h. - * include/sys/dirent.h: Define DT_* types and conversion macros. - - * pinfo.cc (pinfo::init): Remove special handling for PID_ALLPIDS and - execed code, even though it probably still isn't quite right. - -2005-08-05 Michael Gorse - - * thread.cc (pthread::create(3 args)): Make bool. - (pthread_null::create): Ditto. - (pthread::create(4 args)): Check return of inner create rather than - calling is_good_object(). - * thread.h: Ditto. - -2005-08-05 Vaclav Haisman - - * fhandler_tty.cc (fhandler_tty_slave::tcflush): Return either 0 or -1. - -2005-08-05 Corinna Vinschen - - * thread.cc (pthread_cond_timedwait): Check abstime for validity - according to SUSv3. Rewrite timeout check and waitlength calculation - to avoid overflow problems. - -2005-08-02 Yitzchak Scott-Thoennes - - * include/sys/termios.h: Define TIOCMBIS and TIOCMBIC. - * fhandler.h (class fhandler_serial): Declare switch_modem_lines. - * fhandler_serial.cc (fhandler_serial::switch_modem_lines): New - static function to set or clear DTR and/or RTS. - (fhandler_serial::ioctl): Use switch_modem_lines for TIOCMSET - and new TIOCMBIS and TIOCMBIC. - * include/cygwin/version.h: Bump API minor number. - -2005-07-29 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_base::pread): Don't move file offset - pointer after I/O. - (fhandler_base::pwrite): Ditto. - -2005-07-29 Christopher Faylor - - * fhandler.h (fhandler_base::pread): Declare new function. - (fhandler_base::pwrite): Ditto. - (fhandler_disk_file::pread): Ditto. - (fhandler_disk_file::pwrite): Ditto. - * fhandler.cc (fhandler_base::pread): Define new function. - (fhandler_base::pwrite): Ditto. - * fhandler_disk_file.cc (fhandler_base::pread): Ditto. - (fhandler_base::pwrite): Ditto. - * syscalls.cc (pread): Define new function. - (pwrite): Ditto. - * cygwin.din: Export pread, pwrite. - - * include/sys/ioctl.h: Guard some _IO* declarations to avoid conflict - with socket.h. - -2005-07-29 Christopher Faylor - - * include/sys/ioctl.h: Add some linux defines. - -2005-07-29 Christopher Faylor - - * pinfo.cc (pinfo::init): Put back accidentally removed debug_printf. - -2005-07-29 Arto Huusko - - * cygthread.cc (cygthread::simplestub): Wait for h to be filled out - by main thread before assigning it. - -2005-07-29 Arto Huusko - - * pinfo.cc (pinfo::init): Sleep before retrying open_shared(). - -2005-07-29 Arto Huusko - - * fork.cc (fork_parent): Fix null deref if pinfo creation fails. - -2005-07-28 Christopher Faylor - - * cygmalloc.h (MSPACES): Define. This dropped through the cracks after - the last malloc update. - * dcrt0.cc: Fix a comment. - * malloc.cc (internal_malloc): Fix definition so that it can be safely - coerced. - -2005-07-27 Christopher Faylor - - * include/cygwin/in.h (INET_ADDRSTRLEN): Add new definition. - -2005-07-27 Christopher Faylor - - * gendef: Use nocr to remove \r's from input. - gendef (nocr): New function. - -2005-07-27 Christopher Faylor - - * fhandler_clipboard.cc (fhandler_dev_clipboard::close): Set membuffer - to NULL. - (fhandler_dev_clipboard::fixup_after_exec): Don't call close here. - Just set variables directly. - -2005-07-25 Christopher Faylor - - * include/byteswap.h: New file. - -2005-07-25 Christopher Faylor - - * include/cygwin/types.h: Define loff_t. - -2005-07-16 Christopher Faylor - - * child_info.h (child_info::sync): Pass pid and HANDLE rather than - using pinfo. - (child_info::child_info): Accept an argument controlling whether to - create proc_subproc. - (child_info_spawn::child_info_spawn): Ditto. - * sigproc.cc (child_info::child_info): Ditto. - (child_info_spawn::child_info_spawn): Ditto. - (child_info::sync): Use passed in pid and HANDLE. - * fork.cc (fork_parent): Reflect additional arguments required for - child_info::sync. - * hookapi.cc (hook_or_detect_cygwin): Rename. Change so that NULL 'fn' - argument just returns "true", indicating that program uses cygwin1.dll. - * spawn.cc (av::win16_exe): New element. - * spawn.cc (av::iscygwin): New element. - (av::fixup): New function. - (spawn_guts): Protect against SEGV. Use fixup function to detect when - it is safe to wait for a spawned (as opposed to an execed) program. - Reflect changes in child_info::sync arguments. - * external.cc (cygwin_internal): Reflect function renaming to - hook_or_detect_cygwin. - - * cygheap.cc (cygheap_fixup_in_child): Close handle after debug fixup - has been done to prevent false positives in handle collision. - - * exceptions.cc (try_to_debug): Notify debugger if already being - debugged. - -2005-07-09 Christopher Faylor - - * path.cc (mount): Only check win32_path when we know we need it. - -2005-07-09 Nicholas Wourms - - * cygwin.din (getline): Export. - (getdelim): Export. - * include/sys/stdio.h (getline): Replace macro with function prototype. - (getdelim): Likewise. - * include/cygwin/version.h: Bump API minor number. - -2005-07-08 Corinna Vinschen - - * cygwin.din (__getline): Export. - (__getdelim): Export. - * include/sys/stdio.h (getline): Define as __getline. - (getdelim): Define as __getdelim. - * include/cygwin/version.h: Bump API minor number. - -2005-07-06 Christopher Faylor - - Eliminate (void) cast on standalone function calls throughout. - -2005-07-05 Christopher Faylor - - * dcrt0.cc (cygwin_exit): Mark as "noreturn". - * sigproc.cc (child_info::ready): Don't signal parent that we are a - cygwin process if we are dynamically loaded. - -2005-07-05 Christopher Faylor - - * malloc.cc: Update to version 2.8.2. - -2005-07-05 Corinna Vinschen - - * fhandler_tape.cc (fhandler_dev_tape::close): Don't do "extra stuff" - when we know we're execing. - -2005-07-04 Christopher Faylor - - Change foo (void) to foo () for all c++ functions throughout. - Remove all fhandler_*::dump functions throughout. - - * fhandler.h (fhandler_dev_mem::close): Remove pass-through function in - favor of virtual method. - (handler_dev_raw::close): Ditto. - (fhandler_dev_clipboard::fixup_after_exec): New method. - * fhandler_dev_mem.cc (fhandler_dev_mem::close): Eliminate pass through - function in favor of virtual method. - * fhandler_dev_raw.cc (fhandler_dev_raw::close): Ditto. - * fhandler_clipboard.cc (fhandler_dev_clipboard::close): Don't go to - extra effort when execing. - (fhandler_dev_clipboard::fixup_after_exec): New function. - * fhandler_console.cc (fhandler_console::close): Don't do "extra stuff" - when we know we're execing. - * fhandler_disk_file.cc (fhandler_disk_file::close): Ditto. - * fhandler_dsp.cc (fhandler_dev_dsp::close): Ditto. - * fhandler_fifo.cc (fhandler_fifo.cc::close): Ditto. function in favor - of base function. - * fhandler_random.cc (fhandler_dev_random::close): Ditto. - * fhandler_registry.cc (fhandler_registry::close): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::close): Ditto. - * fhandler_virtual.cc (fhandler_virtual::close): Ditto. - - * pinfo.cc (proc_waiter): Remove unneeded hExeced declaration. - * sigproc.cc: Ditto. - * winsup.h (hExeced): Define here. - - * fhandler_virtual.cc (fhandler_virtual::fixup_after_exec): Just call - close() to reinitialize things to known state. - -2005-07-04 Christopher Faylor - - * cygtls.h (_cygtls): Perform minor reformatting. - - * winsup.h (close_all_files): Reflect argument change. - * dtable.cc (close_all_files): Ditto. - * dtable.h: Ditto. - * fhandler.h: Ditto. - * spawn.cc (spawn_guts): Move close_all_files back to its original - location in first P_OVERLAY test but use argument denoting that handles - are only supposed to be closed, not released (more work to be done - here). - * syscalls.cc (close_all_files): Take an argument denoting whether to - release closed files or not. - - * path.cc (symlink): Change argument names to reflect linux man page. - (symlink_worker): Ditto. Also appropriately set ENOENT for empty - strings. - - -2005-07-04 Pierre Humblet - - * cygheap.h (struct init_cygheap): Delete cygwin_regname member. - * external.cc (cygwin_internal): Use cygpsid::get_id for - CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID. - Turn CW_SET_CYGWIN_REGISTRY_NAME and CW_GET_CYGWIN_REGISTRY_NAME - into noops. - -2005-07-03 Christopher Faylor - - * thread.cc (pthread_mutex::init): Remove unneeded efault/mutex check. - -2005-07-02 Christopher Faylor - - * thread.h (verifyable_object_state verifyable_object_isvalid): Delete - function declaration that should have been static. - * thread.cc (verifyable_object_state verifyable_object_isvalid): Make - inline static. - (pthread*::is_good_object): Move to directly after - verifyable_object_state verifyable_object_isvalid and make inline. - (check_valid_pointer): Delete function. - (pthread_cond_timedwait): Use myfault to detect valid pointer. - (pthread_mutex::init): Ditto. - -2005-07-02 Christopher Faylor - - Replace valid memory checks with new myfault class "exception - handling", almost everywhere. Leave some thread.cc stuff alone for - now. - * cygtls.h: Kludge some definitions to avoid including a problematic - windows header. - (_cygtls::_myfault): New entry. - (_cygtls::_myfault_errno): Ditto. - (_cygtls::fault_guarded): New function. - (_cygtls::setup_fault): Ditto. - (_cygtls::return_from_fault): Ditto. - (_cygtls::clear_fault): Ditto. - (myfault): New class. - * exceptions.cc (handle_exceptions): Handle case of guarded fault in - system routine. - * gendef: Add another entry point for setjmp that the compiler doesn't - know about and won't complain about. - * gentls_offsets: Just include windows.h rather than kludging a HANDLE - def. - * miscfuncs.cc (check_null_str): Delete. - (check_null_empty_str): Ditto. - (check_null_empty_str_errno): Ditto. - (check_null_str_errno): Ditto. - (__check_null_invalid_struct): Ditto. - (__check_null_invalid_struct_errno): Ditto. - (__check_invalid_read_ptr): Ditto. - (__check_invalid_read_ptr_errno): Ditto. - (dummytest): New function. - (check_iovec_for_read): Delete. - (chec_iovec): Rename from check_iovec_for_write. Take a read/write - parameter. - * tlsoffsets.h: Regenerate. - * winsup.h: Remove check_* declarations. - (check_iovec_for_read): Delete declaration. Turn into a define - instead. - (check_iovec_for_write): Ditto. - (check_iovec): New declaration. - - * thread.h: Use ifdef guard name consistent with other header files. - -2005-07-02 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number to 19. - -2005-06-30 Corinna Vinschen - - * fhandler.cc (fhandler_base::readv): Use malloc/free instead of alloca. - (fhandler_base::writev): Ditto. - -2005-06-29 Christopher Faylor - - * cygerrno.h: Make multi-inclusion safe. - * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Deal with EINTR. - * dcrt0.cc (dll_crt0_0): Accommodate init_console_handler argument - change. - * winsup.h: Ditto. - * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. - * exceptions.cc (init_console_handler): Ditto. Ignore console events - if we're not attached to a terminal. - * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. - * wincap.cc: Implement has_null_console_handler_routine throughout. - * wincap.h: Ditto. - -2005-06-29 Christopher Faylor - - * autoload.cc (LoadDLLprime): Use a more descriptive name for autoload - text sections. - * cygwin.sc: Ditto. - -2005-06-27 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::facl): Add missing break. - -2005-06-24 Corinna Vinschen - - * path.cc (path_conv::check): Don't strip trailing dots and spaces - at the start of the path. - -2005-06-24 Corinna Vinschen - - * fhandler.cc (rootdir): Don't set errno. - * syscalls.cc (statvfs): Set errno to ENOTDIR if rootdir() failed. - -2005-06-22 Corinna Vinschen - - * fhandler.h (class fhandler_dev_tape): Add declaration for - fixup_after_fork and set_close_on_exec. - * fhandler_tape.cc (fhandler_dev_tape::open): Create mt_mtx mutex - inheritable. - (fhandler_dev_tape::close): Close mt_mtx. - (fhandler_dev_tape::dup): Duplicate mt_mtx and mt_evt as necessary. - (fhandler_dev_tape::fixup_after_fork): New method. - (fhandler_dev_tape::set_close_on_exec): New method. - -2005-06-21 Corinna Vinschen - - * security.cc (get_initgroups_sidlist): Drop special_pgrp parameter. - (get_setgroups_sidlist): Avoid duplicate groups in group list. - (create_token): Remove special_pgrp local variable. Accommodate - change to get_initgroups_sidlist call. - -2005-06-21 Corinna Vinschen - - * uinfo.cc (uinfo_init): Call reimpersonate to set the main thread's - impersonation token. - -2005-06-20 Corinna Vinschen - - * fhandler_proc.cc (format_proc_partitions): Only list recognized - partitions. Use partition number given by PartitionNumber member. - -2005-06-18 Corinna Vinschen - - * glob.c: (glob0): New local variable `limit`. Use in calls to glob1 - and globextend. - (glob1): Add `limit' parameter. - (glob2): Ditto. - (glob3): Ditto. - (globextend): Ditto. Implement GLOB_LIMIT handling. - * include/glob.h (GLOB_LIMIT): New define. - * include/cygwin/version.h: Bump API minor number. - -2005-06-17 Christopher Faylor - - * wincap.h (wincaps::detect_win16_exe): Declare. - (wincapc::detect_win16_exe): Implement. - * wincap.cc: Populate detect_win16_exe where appropriate. - * spawn.cc (spawn_guts): Only go out of the way to detect 16-bit apps - on systems which are flummoxed by them. - -2005-06-17 Christopher Faylor - - * spawn.cc (spawn_guts): Detect when executing a 16-bit application and - avoid setting the process pipe since this causes conniptions in Windows - 9x. - -2005-06-17 Corinna Vinschen - - * cygwin.din (inet_pton): Export. - (inet_ntop): Export. - * net.cc (cygwin_inet_pton): Implement inet_pton for AF_INET for now. - (cygwin_inet_ntop): Implement inet_ntop for AF_INET for now. - * include/arpa/inet.h (inet_pton): Declare. - (inet_ntop): Declare. - * include/cygwin/version.h: Bump API minor number. - -2005-06-17 Corinna Vinschen - - * fhandler.h (fhandler_union): Add missing members corresponding to - fhandler_fifo and fhandler_netdrive. - -2005-06-16 Corinna Vinschen - - * syscalls.cc (statvfs): Handle the case when GetDiskFreeSpaceEx - succeeds but GetDiskFreeSpace fails by faking bytes-per-sector and - sectors-per-cluster values. - -2005-06-15 Christopher Faylor - - * cygthread.cc (cygthread::detach): Fix debugging output. - * dcrt0.cc (dll_crt0_1): Create signal_arrived early -- before any - filename manipulation. - * sigproc.cc (sigproc_init): Don't create signal_arrived here. - * fork.cc (fork_child): Ditto. - * sigproc.h (create_signal_arrived): Declare. - -2005-06-14 Christopher Faylor - - * path.cc (path_conv::check): Always reset to FH_FS when component != 0 - and FH_NETDRIVE to fix problems with strict case checking. - -2005-06-12 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::recvmsg): Avoid SEGV in OpenSSH - when trying to pass file descriptor by setting msg->msg_accrightslen - to 0. - -2005-06-11 Christopher Faylor - - * Makefile.in: Avoid initial heap allocation since cygwin has its own - heap. - -2005-06-11 Christopher Faylor - - * fhandler_console.cc (fhandler_console::read): Fix a compiler warning. - -2005-06-10 Christopher Faylor - - * include/pthread.h: Change PTHREAD_MUTEX_DEFAULT to - PTHREAD_MUTEX_NORMAL. Revert PTHREAD_MUTEX_INITIALIZER to - PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP since that is actually closer - to what linux does. - * thread.h (cw_cancel_action): New enum. - (cancelable_wait): Use cw_cancel_action as third argument. - * thread.cc (cancelable_wait): Ditto. Don't wait for cancel if - cancel_action == cw_no_cancel. - (pthread::create): Don't wait for cancel event since that is racy. - (pthread_mutex::pthread_mutex): Set default to PTHREAD_MUTEX_ERRORCHECK. - (pthread_mutexattr::pthread_mutexattr): Ditto. - (pthread_mutex::_lock): Tell cancelable_wait not to wait for - cancellation event. - (semaphore::_timedwait): Accommodate change in cancelable_wait args. - (pthread::join): Ditto. - -2005-06-10 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::sendto): Always initialize - ret to 0. - (fhandler_socket::sendmsg): Ditto. - -2005-06-10 Corinna Vinschen - - * cygwin.din (imaxabs): Export. - (imaxdiv): Export. - (llabs): Export. - (lldiv): Export. - (strtoimax): Export. - (strtoumax): Export. - * include/inttypes.h (imaxabs): Activate declaration. - (imaxdiv): Ditto. - (strtoimax): Ditto. - (strtoumax): Ditto. - * include/cygwin/version.h: Bump API minor. - -2005-06-09 Christopher Faylor - - * cygthread.cc (cygthread::detach): Improve diagnostics for what should - be an impossible failure condition. - -2005-06-09 Christopher Faylor - - * cygtls.h (_local_storage::setmode_file): New element. - (_local_storage::setmode_mode): New element. - * tlsoffsets.h: Regenerate. - * cygwin.din (setmode): Define as cygwin_getmode. - * syscalls.cc (setmode_helper): Use setmode_* variables from tls rather - than using unthreadsafe static. - (setmode): Break out fwalk stuff. - (cygwin_setmode): New function. Put fwalk stdio stuff here. - -2005-06-09 Christopher Faylor - - * thread.cc (pthread_mutex::_lock): Use cancelable_wait rather than - WaitForSingleObject. - -2005-06-09 Christopher Faylor - - * cygwin.sc: Place .cygwin_dll_common in a more sensible spot. - -2005-06-09 Christopher Faylor - - * cygwin.sc: Place .cygwin_dll_common. - * init.cc (threadfunc_ix): Use a more common name for the section name. - -2005-06-09 Christopher Faylor - - * include/pthread.h (PTHREAD_MUTEX_INITIALIZER): Change to - PTHREAD_NORMAL_MUTEX_INITIALIZER_NP to be closer to linux default. - -2005-06-09 Christopher Faylor - - * thread.cc (cancelable_wait): No-op change to make sure that res is - always a valid WFMO return. - -2005-06-09 Christopher Faylor - - Change pthread::cancelable_wait to just cancelable_wait, throughout. - * thread.h (cw_sig_wait): New enum. - (fast_mutex::lock): Use cancelable_wait with resumable signal. - (cancelable_wait): Change fourth argument to cw_sig_wait enum. - * thread.cc (cancelable_wait): Ditto. Loop on signal detection if - fourth argument == cw_sig_resume. - -2005-06-08 Christopher Faylor - - * cygwin.sc: Apparently nonloading sections need to go last. - -2005-06-08 Christopher Faylor - - * cygwin.sc: Restore resource and reloc sections and use more modern - syntax for stabs sections. - -2005-06-08 Christopher Faylor - - * environ.cc (spenvs): Remove cut/paste error which associated - CYGWIN_DEBUG with HOME. - -2005-06-08 Corinna Vinschen - - * security.cc (cygwin_logon_user): Run LogonUser in the primary - process token context. Fix potential handle leak. - -2005-06-07 Corinna Vinschen - - * pinfo.cc (pinfo::init): Define sa_buf as PSECURITY_ATTRIBUTES and - allocate dynamically. - (pinfo::set_acl): Replace sa_buf by dynamically allocated acl_buf. - * sec_acl.cc (setacl): Allocate acl dynamically. - * sec_helper.cc (sec_acl): Add test for alignment of acl when - DEBUGGING is defined. - (__sec_user): Same for sa_buf. - * security.cc (verify_token): Define sd_buf as PSECURITY_DESCRIPTOR - and allocate dynamically. - (alloc_sd): Allocate acl dynamically. - security.h (sec_user_nih): Change first parameter to - SECURITY_ATTRIBUTES *. - (sec_user): Ditto. - * sigproc.cc (wait_sig): Define sa_buf as PSECURITY_ATTRIBUTES and - allocate dynamically. - * syscalls.cc (seteuid32): Define dacl_buf as PACL and allocate - dynamically. - * uinfo.cc (cygheap_user::init): Define sa_buf as PSECURITY_ATTRIBUTES - and allocate dynamically. - * winbase.h (ilockincr): Mark first argument of inline assembly as - earlyclobber. - (ilockdecr): Ditto. - -2005-06-07 Christopher Faylor - - * cygthread.cc (cygthread::detach): Make error message a little more - detailed. - * fhandler.cc (fhandler_base::raw_read): Ditto for debug message. - * dcrt0.cc (do_exit): Add some more synchronization tests. - * fhandler_fifo.cc (fhandler_fifo::dup): Don't duplicate a nonexistent - handle. Use derived return value rather than always retuning 0. - * fhandler_netdrive.cc (fhandler_netdrive::exists): Wnet -> WNet. - * winsup.h (exit_states): Add a couple of new exit states. - -2005-06-06 Corinna Vinschen - - * path.cc (symlink_info::check): If GetFileAttributes returns - with ERROR_SHARING_VIOLATION, the file exists. - -2005-06-06 Corinna Vinschen - - * uname.cc (uname): Change "amd64" to "x86_64" as on Linux. - -2005-06-06 Corinna Vinschen - - * uname.cc (uname): Add missing break. - -2005-06-05 Christopher Faylor - - * Makefile.in: Build sync.o with -fomit-frame-pointer and -O3. - -2005-06-05 Christopher Faylor - - * sync.cc (muto::acquire): Remove unneeded brackets and fix whitespace. - -2005-06-04 Christopher Faylor - - * malloc.cc: Update to Doug Lea's malloc v2.8.0. - -2005-06-03 Max Kaehn - - * dcrt0.cc (cygwin_dll_init): Initialize main_environ and cygtls. Add - comment to explain the caveats of this method. - * how-cygtls-works.txt: New file. - -2005-06-02 Christopher Faylor - - * dlfcn.cc (get_full_path_of_dll): Use a relative path when converting - so that the standard Windows rules for finding a library will be used - if no path is given. Stop explicitly searching /usr/bin since that is - now in effect. - -2005-06-01 Christopher Faylor - - Revert 2005-05-30 close_all_files changes. - * spawn.cc (spawn_guts): When execing, close all files after the child - has synced with us. - -2005-06-01 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fchown): Make sure that - disk open is called in case we're passed in a non-existent device. - -2005-06-01 Christopher Faylor - - * include/machine/stdlib.h: New file. - -2005-06-01 Christopher Faylor - - * thread.h (List_remove): Revert most of 2005-05-30 change. - -2005-06-01 Christopher Faylor - - * cygwin.sc: Don't output .reloc or .rsrc sections. Clean up stuff - around .cygheap and use a workaround to get things working with newer - (broken?) binutils. - -2005-05-31 Christopher Faylor - - * cygheap.cc (cygheap_end): Remove bogus section attribute. - * cygwin.sc: Make __cygheap_mid absolute. Remove unused _cygheap_foo. - -2005-05-30 Christopher Faylor - - * child_info.h (child_info::cygheap_h): Delete. - (child_info::dwProcessId): New field. - * cygheap.cc (init_cheap): Delete. - (dup_now): Ditto. - (cygheap_setup_for_child): Ditto. - (cygheap_setup_for_child_cleanup): Ditto. - (cygheap_fixup_in_child): Simplify. Use new "child_copy" function to - copy heap from parent. - (_csbrk): Don't attempt allocation if within cygheap section. Fix so - that more than one allocation will succeed. - (cygheap_init): Reset possibly-nonzero region to zero. - * cygheap.h (cygheap_setup_for_child): Delete declaration. - (cygheap_setup_for_child_cleanup): Ditto. - (cygheap_start): Define as an array. - * cygwin.sc: Modernize. Remove unneeded sections. Define cygheap - here. - * dcrt0.cc (do_exit): Reflect argument change to close_all_files. - * dtable.cc (dtable::vfork_parent_restore): Ditto. - * dtable.h: Ditto. - * fhandler.h: Ditto. - * fork.cc (fork_copy): Call ReadProcessMemory if there is no thread - (indicating that we're execing). - (fork_child): Don't mess with hParent. - (fork_parent): Remove hParent stuff. It happens earlier now. - Remove call to cygheap_setup_for_child* stuff. - (fork): Put child_info_stuff in grouped structure. Issue error if - parent handle is not set. - (child_copy): New function. - * sigproc.cc (child_info::child_info): Put cygheap settings here. Set - parent handle. - (child_info::~child_info): Close parent handle if it exists. - * spawn.cc (spawn_guts): Reorganize so that ciresrv is allocated at - only the last minute so that cygheap changes are reflected. Delete - cygheap_setup* calls. - * syscalls.cc (close_all_files): Add an argument to flag when the fd - entry should be released. - * winsup.h (close_all_files): Add an argument to close_all_files - declaration. Declare child_copy. - -2005-05-30 Vaclav Haisman - - * thread.h (List_remove): Make node parameter const. Use simple - comparison and assignment rather than InterlockedCompareExchangePointer - since access is already synchronized. - -2005-05-30 Christopher Faylor - - * dlfcn.cc (set_dl_error): Use UNIX error rather than Windows error. - -2005-05-29 Christopher Faylor - - * cygmagic: Remove debugging cruft missed on 2005-05-21. - -2005-05-29 Corinna Vinschen - - * path.cc (path_conv::check): Move component to function scope. Set - PATH_RO only on *real* FH_NETDRIVEs or on non-FH_NETDRIVE virtual - paths. Allow non-retrievable shares to be handled as files. - -2005-05-29 Eric Blake - - * include/limits.h (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Always define. - -2005-05-28 Christopher Faylor - - * thread.h (pthread_key::set): Inline. - (pthread_key::get): Ditto. - * thread.cc (pthread::set): Delete. - (pthread::get): Ditto. - -2005-05-28 Christopher Faylor - - * cygwin.din: Remove signal front end from pthread_[gs]etspecific. - -2005-05-28 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave:tcflush): Use signed comparison. - -2005-05-28 Christopher Faylor - - * times.cc (time_ms::usecs): Coerce comparison to signed or whole test - is a no-op. - -2005-05-27 Christopher Faylor - - * cygheap.h: Reference _cygheap_start via .cygheap section. - - * environ.cc: Fix force_into_environment typo throughout. - (spenvs): Export CYGWIN_DEBUG if DEBUGGING. - -2005-05-26 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number to 18. - -2005-05-25 Pierre Humblet - - * fhandler.h (fhandler_base::mkdir): New virtual method. - (fhandler_base::rmdir): Ditto. - (fhandler_disk_file:mkdir): New method. - (fhandler_disk_file:rmdir): Ditto. - * dir.cc (mkdir): Implement with fhandlers. - (rmdir): Ditto. - * fhandler.cc (fhandler_base::mkdir): New virtual method. - (fhandler_base::rmdir): Ditto. - (fhandler_disk_file::mkdir): New method. - (fhandler_disk_file::rmdir): Ditto. - -2005-05-24 Christopher Faylor - - * include/cygwin/version.h: Bump API minor number to 129. - -2005-05-24 Christopher Faylor - - * cygwin.din: Export mkdtemp. - * mktemp.cc: New file. - * Makefile.in (DLL_OFILES): Add mktemp.o - -2005-05-23 Eric Blake - - * include/stdint.h (INTMAX_C, UINTMAX_C): Fix definition. - -2005-05-21 Christopher Faylor - - * spawn.cc (find_exec): Accept a PATH-like string in place of an - environment variable. - * dlfcn.cc (get_full_path_of_dll): Search /usr/bin (for windows - compatibility) and /usr/lib (for UNIX compatibility) when looking for - shared libraries. - * environ.cc (conv_envvars): Put back LD_LIBRARY_PATH since it is used - by get_full_path_of_dll(). - * errno.cc (errmap): Map MOD_NOT_FOUND to ENOENT. - - * cygmagic: Remove debugging cruft. - -2005-05-19 Corinna Vinschen - - * include/cygwin/in.h: Add comment. - -2005-05-19 Corinna Vinschen - - * include/cygwin/in.h: Define IPPROTO_xxx values as macros to - accommodate SUSv3. - -2005-05-19 Christopher Faylor - - * include/limits.h: Include features.h, as on linux. - -2005-05-19 Christopher Faylor - - * include/endian.h: New file. - -2005-05-19 Corinna Vinschen - - * cygwin.sc: Add Dwarf-2 debug sections. - -2005-05-19 Corinna Vinschen - - * mmap.cc (mmap64): Make granularity an automatic variable. - -2005-05-19 Christopher Faylor - - * fhandler.h (fhandler_cygdrive::seekdir): Delete declaration. - (fhandler_cygdrive::seekdir): Delete. - -2005-05-19 Pierre Humblet - - * fhandler.h (fhandler_cygdrive::iscygdrive_root): Delete method. - (fhandler_cygdrive::telldir): Delete declaration. - * fhandler_disk_file.cc: Remove all uses of - fhandler_cygdrive::iscygdrive_root. - (fhandler_disk_file::mkdir): New method. - (fhandler_disk_file::rmdir): Ditto. - (fhandler_cygdrive::telldir): Delete. - -2005-05-18 Christopher Faylor - - * external.cc: Move pids declaration to file scope and use less - enthusiastic constructor. - * pinfo.h (winpids::winpids): Remove default setting. - * fhandler_fifo.cc (fhandler_fifo::open_not_mine): Accommodate removal - of default setting. - * fhandler_proc.cc (fhandler_proc::readdir): Ditto. - -2005-05-18 Christopher Faylor - - * cygtls.h (_local_storage::unknown_thread_name): New buffer. - * tlsoffsets.h: Regenerate. - * cygthread.cc (cygthread::name): Use new thread-local buffer. - * exceptions.cc (handle_exceptions): Avoid unnecessary initialization - of static variables to zero. - * fork.cc (slow_pid_reuse) Ditto. - -2005-05-18 Corinna Vinschen - - * mmap.cc (mmap64): Avoid compiler warning. - * ntea.cc (NTReadEA): Ditto. - * hires.h (hires_base): Remove useless usecs function. - -2005-05-18 Corinna Vinschen - - * fhandler_netdrive.cc (fhandler_netdrive::telldir): Remove since it's - equivalent to fhandler_virtual::telldir now anyway. - * fhandler.h (class fhandler_netdrive): Remove telldir. - -2005-05-18 Corinna Vinschen - - * fhandler_netdrive.cc (fhandler_netdrive::telldir): Implement. - (fhandler_netdrive::seekdir): Implement. - (fhandler_netdrive::closedir): Call rewinddir to have only one point - of calling WNetCloseEnum. - -2005-05-17 Corinna Vinschen - - * fhandler.h (class fhandler_netdrive): Add method rewinddir. - * fhandler_netdrive.cc (struct netdriveinf): New structure to - store thread arguments. - (thread_netdrive): Thread handling all potentially blocking - WNet... calls. - (create_thread_and_wait): Start and wait for above thread. - (fhandler_netdrive::exists): Change to call create_thread_and_wait - instead of calling WNet... function. - (fhandler_netdrive::readdir): Ditto. Fix error handling. - (fhandler_netdrive::rewinddir): New method. - -2005-05-17 Corinna Vinschen - - * external.cc (cygwin_internal): Avoid compiler warning. - -2005-05-16 Christopher Faylor - - * dcrt0.cc (dll_crt0_0): Don't do fixup_after_exec if dynamically - loaded since the state of fds is unknown at this point. - -2005-05-16 Christopher Faylor - - * include/sys/cygwin.h (enum cygwin_getinfo_types): Add CW_DEBUG_SELF. - * external.cc (cygwin_internal): Implement CW_DEBUG_SELF. - - * init.cc (dll_entry): Minor rearrangement of code. - -2005-05-16 Christopher Faylor - - * path.cc (path_conv::check): Remove embedded dots before slashes. - -2005-05-16 Corinna Vinschen - - * environ.cc (conv_envvars): Remove LD_LIBRARY_PATH entirely. - It doesn't belong here. - -2005-05-15 Corinna Vinschen - - * environ.cc (conv_envvars): Treat LD_LIBRARY_PATH as path list. - -2005-05-14 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Check - return code from GetFileSize and set file size to 0 if necessary. - * fhandler_netdrive.cc (fhandler_netdrive::fstat): Set permissions - to read/execute for all. - -2005-05-13 Christopher Faylor - - * path.cc (normalize_posix_path): Do normalization on . and .. after - a '//'. - -2005-05-13 Corinna Vinschen - - * fhandler.h (fhandler_netdrive::readdir): Remove useless comment. - -2005-05-13 Corinna Vinschen - - * autoload.cc (WNetGetResourceParentA): Import. - (WNetOpenEnumA): Import. - (WNetEnumResourceA): Import. - (WNetCloseEnum): Import. - * fhandler.h (fhandler_netdrive::telldir): Add declaration. - (fhandler_netdrive::seekdir): Ditto. - (fhandler_netdrive::closedir): Ditto. - * fhandler_netdrive.cc: Drop explicit including windows.h. Include - winnetwk.h instead of shlwapi.h. Include dirent.h. - (fhandler_netdrive::readdir): Implement. - (fhandler_netdrive::telldir): New method. - (fhandler_netdrive::seekdir): New method. - (fhandler_netdrive::closedir): Ditto. - -2005-05-13 Christopher Faylor - - Remove PC_FULL from path_conv usage throughout. - * path.h (enum pathconv_arg): Change PC_FULL to PC_NOFULL. - * path.cc (path_conv::check): Test for PC_NOFULL rather than !PC_FULL. - (cygwin_conv_to_win32_path): Use PC_NOFULL to force non-absolute path. - -2005-05-13 Christopher Faylor - - * fhandler_netdrive.cc (fhandler_netdrive::exists): Assert that "//" - exists. - -2005-05-12 Christopher Faylor - - * cygtls.cc (_cygtls::remove): Eliminate compiler warning. - - * dir.cc (mkdir): Check path for writability. - (rmdir): Ditto. Remove check for special directories. - * path.cc (path_conv::check): Set PATH_RO for virtual devices. Set - error if read-only and asked for writability. - * path.h (pathconv_arg): Add PC_WRITABLE. - (path_types): Add PATH_RO. - (path_conv::isro): Add (currently unused) check for read-only - filesystem. Return "ENOSHARE" when we know a share doesn't exist. - * include/sys/mount.h: Add MOUNT_RO flag. - * autoload.cc (WNetGetResourceInformationA): Import. - * fhandler_netdrive.cc (fhandler_netdrive::exists): Detect actual - existence of remote system rather than always assuming that it exists. - -2005-05-11 Christopher Faylor - - * dcrt0.cc (do_global_dtors): Don't call dll_global_dtors here. - (__main): Reinstate atexit of do_global_dtors. - (cygwin_exit): Call dll_global_dtors here. - (do_exit): And here. - - -2005-05-10 Christopher Faylor - - * cygtls.cc (_cygtls::remove): Clear exitsock after close. - * fhandler_console.cc (fhandler_console::write_normal): Store character - in a local variable for potential future inspection. - -2005-05-10 Corinna Vinschen - - * Makefile.in (DLL_OFILES): Add fhandler_mailslot.o. - * devices.h (FH_KMSG): Define new device. - * devices.in: Add "/dev/kmsg" entry. - * devices.cc: Regenerate. - * dtable.cc (build_fh_pc): Handle case FH_KMSG. - * fhandler.h (class fhandler_mailslot): New class. - (class select_stuff): Add device_specific_mailslot pointer. - * fhandler_mailslot.cc: New file. - * select.cc (peek_mailslot): New function. - (verify_mailslot): Ditto. - (struct mailslotinf): New stuct to handle select on mailslots. - (thread_mailslot): New function. - (start_thread_mailslot): Ditto. - (mailslot_cleanup): Ditto. - (fhandler_mailslot::select_read): New method. - * syslog.cc (klog_guard): New muto. - (dev_kmsg): Local mailslot for kernel message device. - (vklog): New function. - (klog): Ditto. - * winsup.h (vklog): Declare. - (klog): Ditto. - * include/sys/syslog.h: Define _PATH_KLOG. - -2005-05-10 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Call cygwin_exit to ensure that destructors - are handled correctly. - -2005-05-10 Corinna Vinschen - - * path.cc (path_conv::check): Set correct file attributes for socket - files. - -2005-05-09 Pierre Humblet - - * fhandler.h (class fhandler_netdrive): New class. - * fhandler_netdrive.cc (fhandler_netdrive::fhandler_netdrive): New constructor. - (fhandler_netdrive::exists): New method. - (fhandler_netdrive::fstat): Ditto. - (fhandler_netdrive::readdir): Ditto. - (fhandler_netdrive::open): Ditto. - * dtable.cc (build_fh_pc): Handle case FH_NETDRIVE. - * path.cc (isvirtual_dev): Add FH_NETDRIVE. - (mount_info::conv_to_win32_path): Detect netdrive device and bypass mount - search for network paths. - -2005-05-08 Christopher Faylor - - * dcrt0.cc (get_cygwin_startup_info): New function pulled from - dll_crt0_0. - (dll_crt0_0): Use get_cygwin_startup_info to retrieve cygwin-specific - startup pointer. - * external.cc (cygwin_internal): Implement CW_ARGV and CW_ENVP. - * include/sys/cygwin.h: Implement CW_ARGV and CW_ENVP. - -2005-05-07 Christopher Faylor - - * path.cc (normalize_posix_path): Don't treat '//' specially since - newer versions of bash now get this right. - -2005-05-07 Christopher Faylor - - * devices.cc: Regenerate with correct name for dev_netdrive_storage. - -2005-05-06 Christopher Faylor - - * Makefile.in (DLL_O_FILES): Add fhandler_netdrive.o. - * fhandler_netdrive.cc: Placeholder file for future development. - * devices.h (FH_NETDRIVE): Define new virtual device type. - (netdrive_dev): Define. - * devices.in (dev_netdrive_storage): Define. - * devices.cc: Regenerate. - -2005-05-04 Corinna Vinschen - - * cygerrno.h (__set_errno): Remove useless parentheses. - -2005-05-04 Corinna Vinschen - - * cygerrno.h (__set_errno): Define as inline function here. - (set_errno): Always define as call to __set_errno. - * debug.cc (__set_errno): Move to cygerrno.h. - -2005-05-03 Christopher Faylor - - * shared.cc (user_shared_initialize): Rework locking so that nothing is - checked until cb is non-zero. - -2005-05-03 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Don't treat - inability to open file as failure if only SetFileAttributes is - going to be called. Only call set_file_attribute if really necessary. - -2005-05-03 Corinna Vinschen - - * fhandler_socket.cc (get_inet_addr): Add missing __seterrno call. - -2005-05-01 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave::read): Actually read input when - vmin == vtime == 0. - -2005-04-30 Christopher Faylor - - * environ.cc (spenv::force_into_environment): Rename from add_always. - (spenv::add_if_exists): Rename from force. - (build_env): Accommodate name changes. Make sure that stuff that is - always supposed to be in the environment is actually added to the - environment. - - * shared.cc (open_shared): Restore VirtualFree eliminated by 2005-04-28 - change. - -2005-04-30 Christopher Faylor - - * errno.cc (errmap): Sort table. - -2005-04-29 Christopher Faylor - - * errno.cc (errmap): Map ERROR_NETNAME_DELETED to ENOSHARE. - -2005-04-28 Corinna Vinschen - - * shared_info.h (cygwin_shared_address): Bump to a higher value to avoid - collision with large data areas. - -2005-04-28 Christopher Faylor - - * fhandler_console.cc (fhandler_console::get_tty_stuff): Accommodate - changes to open_shared arguments. - * fhandler_tape.cc (mtinfo_init): Ditto. - * pinfo.cc (pinfo::init): Use open_shared rather than win32 mmap calls. - * shared.cc (user_shared_initialize): Ditto. - (memory_init): Ditto. - (open_shared): Change to allow use a smore general mmap handler. - * shared_info.h (shared_locations): Add SH_JUSTCREATE, SH_JUSTOPEN. - (open_shared): Change declaration to match new usage. - - * autoload.cc (LoadDLLfuncEx2): Define in terms of LoadDLLfuncEx3. - (LoadDLLfuncEx3): New macro. - -2005-04-27 Christopher Faylor - - * fhandler.cc (fhandler_base::open_9x): Remove (broken) check for - O_CREAT|O_EXCL. - * syscalls.cc (open): Do O_CREAT|O_EXCL check here first. - -2005-04-26 Christopher Faylor - - * environ.cc (build_env): Ensure that win32 array is properly filled in - when a missing value has to be generated. - -2005-04-26 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number to 17. - -2005-04-24 Pavel Tsekov - - * how-to-debug-cygwin.txt: Fix typo. - -2005-04-22 Christopher Faylor - - * shared.cc (user_shared_initialize): Implement locking similar to - shared_info when initializing shared region. - -2005-04-22 Christopher Faylor - - * fhandler.h (dev_console::set_color): Define new function. - (dev_console::set_default_attr): Ditto, moved from fhandler_console. - (dev_console::fillin_info): Ditto. Accommodate this change throughout - this file. - (fhandler_console::get_win32_attr): Eliminate. - * fhandler_console.cc (fhandler_console::get_tty_stuff): Properly set - default attributes on initialization. - (fhandler_console::open): Set current attributes rather than default - color on open. - (fhandler_console::get_win32_attr): Eliminate. - (dev_console::set_color): New function. Move get_win32_attr stuff - here. - (dev_console::set_default_attr): New function, moved from - fhandler_console. - (dev_console::fillin_info): Ditto. - (fhandler_console::char_command): Call set_color to set screen - characteristics. - -2005-04-22 Christopher Faylor - - * fhandler.cc (fhandler_base::read): Remove unused signal state tweaks. - * fhandler.h (fhandler_pipe::create_selectable): Declare. - (fhandler_fifo::close_one_end): Declare. - * fhandler_fifo.cc (fhandler_fifo::close_one_end): Define. - (fhandler_fifo::open_not_mine): Use close_one_end to close appropriate - end of pipe. - * pinfo.cc (_pinfo::commune_recv): Ditto. - * pipe.cc (fhandler_pipe::create_selectable): Rename from - create_selectable_pipe. Reorganize. - (fhandler_pipe::create): Use create_selectable. - -2005-04-21 Christopher Faylor - - * shared.cc (shared_info::initialize): Test previous version of shared - memory magic rather than current version when determining if there has - been a shared memory mismatch. - -2005-04-20 Christopher Faylor - - * sigproc.cc (proc_subproc): Fix handling of waiting for pids with zero - value. - - * strace.cc (strace::hello): Report parent pid of executing process. - -2005-04-20 Christopher Faylor - - * path.cc (path_conv::check): Fix problem reading symlinks introduced - in below change by reverting the change and adding an additional test - for nonexistent files in /proc. - -2005-04-20 Christopher Faylor - - * path.cc (path_conv::check): Punt when attempting to access a - nonexistent directory or file in /proc. - -2005-04-19 Corinna Vinschen - - * security.cc (alloc_sd): Remove DELETE bit from user's ACE if - allow_traverse is set. - -2005-04-19 Corinna Vinschen - - * cygwin.din (pselect): Export. - * select.cc (pselect): New function. - * include/cygwin/version.h: Bump API minor number. - * include/sys/select.h: Include signal.h. Declare pselect. - -2005-04-18 Corinna Vinschen - - * fhandler.h (enum conn_state): Add connect_failed state. - * fhandler_socket.cc (fhandler_socket::connect): Set connect_state to - connect_failed when connect failed. - * poll.cc (poll): Change errno to EINVAL if allocating memory fails, - according to SUSv3. Add socket descriptors always to except_fds. Test - for failed connect and set revents flags appropriately. - * select.cc (set_bits): Set connect_state to connect_failed when - select indicates failed nonblocking connect. - (fhandler_dev_null::select_except): Set except_ready to false so that - /dev/null is not always in except state. - (peek_socket): Fix bogus conditional. - (fhandler_socket::select_write): Treat all connect_states except - unconnected equivalent to return consistent results. - (fhandler_windows::select_except): Set except_ready to false so that - /dev/windows is not always in except state. - -2005-04-18 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number to 16. - -2005-04-18 Pierre Humblet - - * grp.cc (initgroups32): Return the correct value. - -2005-04-16 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::utimes_fs): Ignore - ERROR_NOT_SUPPORTED to workaround Win9x weirdness. - * path.cc (symlink_info::check): Remap ERROR_INVALID_FUNTION to - ERROR_FILE_NOT_FOUND for the same reason. - -2005-04-16 Corinna Vinschen - Pierre Humblet - - * security.h (cygsidlist::addfromgr): Allow duplicate entries. - (get_server_groups): Declare new function. - * security.cc (is_group_member): Simplify. - (get_server_groups): New function. - (get_initgroups_sidlist): Call get_server_groups. - (verify_token): Allow token when supplementary sids are not in - /etc/group but are in the token. - Streamline the code. - * grp.cc (initgroups32): New implementation. - (getgroups32): Handle case where the supplementary groups are set. - -2005-04-16 Corinna Vinschen - - * environ.cc (environ_init): Don't set traverse checking as default. - -2005-04-16 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::utimes_fs): Drop touching - ChangeTime. - -2005-04-16 Christopher Faylor - - * fhandler.cc (fhandler::dup): Duplicate flags, too. - * fhandler.h (fhandler_fifo::owner): Eliminate. - * fhandler_disk_file.cc (fhandler_base::fstat_fs): Handle on-disk - devices better. - (fhandler_base::fstat_helper): Ditto. - * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Don't initialize - obsolete "owner". - (fhandler_fifo::open_not_mine): Add some debugging. Duplicate correct - handle when we own it. - (fhandler_fifo::open): Set flags from input, not from first pipe. Flag - that fork fixup is needed. - (fhandler_fifo::dup): Set errno correctly when DuplicateHandle fails. - * pinfo.cc (commune_send): Add debugging for fifo. - - * cygwin/version.h: Bump API minor version to 127 to reflect exporting - of sigrelese. - -2005-04-14 Kazuhiro Fujieda - - * syscalls.cc (setuid32): Correct debugging output. - -2005-04-14 Christopher Faylor - - * dcrt0.cc (do_global_dtors): Run DLL dtors. - (__main): Don't rely on atexit to run dtors. - (do_exit): Specifically call do_global_dtors here. - (cygwin_exit): Ditto. - * dll_init.cc (dll_global_dtors): Make global. Only run dtors once. - (dll_list::init): Just set flag that dtors should be run. Don't rely on atexit. - * dll_init.h (dll_global_dtors): Declare. - - * exceptions.cc (sigrelse): Define. - - * path.h (is_fs_device): New method. - (is_lnk_special): Ditto. - * fhandler_disk_file.cc (fhandler_disk_file::link): Use - "is_lnk_special" rather than "is_lnk_symlink". - * syscalls.cc (rename): Ditto. - - * hookapi.cc (ld_preload): Use colon as a separator rather than space. - -2005-04-13 Corinna Vinschen - - * fhandler.h (class fhandler_socket): Remove utimes. - * fhandler_socket.cc (fhandler_socket::utimes): Remove. - -2005-04-13 Corinna Vinschen - - * cygerrno.h (__seterrno_from_nt_status): Define. Always set Win32 - error code as well as errno. Use throughout where errno is set from - NT status. - (set_errno): Evaluate val only once. - * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fix typo in - debug output. - * fhandler_mem.cc (fhandler_dev_mem::open): Rely on - __seterrno_from_nt_status setting Win32 error code in debug output. - * fhandler_proc.cc (format_proc_uptime): Ditto. - (format_proc_stat): Ditto. - * fhandler_process.cc (format_process_stat): Ditto. - * sysconf.cc (sysconf): Ditto. - -2005-04-13 Christopher Faylor - - * fhandler.h (fhandler_base::utimes_fs): New method. - * fhandler.cc (fhandler_base::utimes): Call utimes_fs if on-disk - special file. - * fhandler_disk_file.cc (fhandler_disk_file::utimes): Use utimes_fs. - (fhandler_base::utimes_fs): Handle on-disk device files. - -2005-04-13 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::utimes): Don't set errno - if open fails, it has already been set by open. - -2005-04-12 Corinna Vinschen - - * autoload.cc (NtQueryVolumeInformationFile): Add. - * fhandler.cc (fhandler_base::raw_write): Don't touch has_changed flag. - * fhandler.h (enum change_state): Remove. - (fhandler_base::status): Revert has_changed to a simple bit. - (fhandler_base::fstat_helper): Add nAllocSize parameter. Rename - ftCreationTime to ftChangeTime. - * fhandler_disk_file.cc: Call fstat_helper with additional - allocation size throughout. - (fhandler_base::fstat_by_handle): Use NT native functions to get - full file information on NT. Call fstat_helper with LastWriteTime - as ctime, if ChangeTime is not available. - (fhandler_base::fstat_by_name): Call fstat_helper with LastWriteTime - as ctime. - (fhandler_base::fstat_helper): Add comment. Drop special FAT - handling since it's useless. Use nAllocSize for st_blocks if available. - (fhandler_disk_file::touch_ctime): Only touch LastWriteTime. - (fhandler_disk_file::fchmod): Set has_changed on 9x only. - (fhandler_disk_file::fchown): Don't set has_changed. - (fhandler_disk_file::facl): Ditto. - (fhandler_disk_file::ftruncate): Ditto. - (fhandler_disk_file::link): Set has_changed on 9x only and on original - file only. - (fhandler_base::open_fs): Don't set has_changed in O_TRUNC case. - * ntdll.h (FILE_BASIC_INFORMATION): Define. - (FILE_STANDARD_INFORMATION): Define. - (FILE_INTERNAL_INFORMATION): Define. - (FILE_EA_INFORMATION): Define. - (FILE_ACCESS_INFORMATION): Define. - (FILE_POSITION_INFORMATION): Define. - (FILE_MODE_INFORMATION): Define. - (FILE_ALIGNMENT_INFORMATION): Define. - (FILE_NAME_INFORMATION): Don't define with arbitrary FileName size. - (FILE_ALL_INFORMATION): Define. - (FILE_INFORMATION_CLASS): Add FileAllInformation. - (FILE_FS_VOLUME_INFORMATION): Define. - (FS_INFORMATION_CLASS): Define. - (NtQueryVolumeInformationFile): Define. - -2005-04-11 Corinna Vinschen - - Revert previous patch. - * autoload.cc (GetVolumePathNamesForVolumeNameA): Remove. - (GetVolumeNameForVolumeMountPointA): Add. - * syscalls.cc (sync): Rewrite guid case to skip floppies also on - Windows 2000. - -2005-04-11 Corinna Vinschen - - * syscalls.cc (sync): Use renamed has_get_volume_pathnames wincap. - * wincap.h (wincaps::has_get_volume_pathnames): Rename from - has_guid_volumes - * wincap.cc: Accommodate above rename throughout. Set to false on - Windows 2000. - -2005-04-08 Christopher Faylor - - * pipe.cc (fhandler_pipe::open): Remove O_CREAT limitation. - -2005-04-07 Corinna Vinschen - - * syslog.cc (try_connect_guard): Remove useless conditionalized code. - -2005-04-07 Corinna Vinschen - - * syslog.cc: Include sys/socket.h. - (try_connect_guard): New static variable. - (syslogd_inited): Ditto. - (syslogd_sock): Ditto. - (try_connect_syslogd): New function to connect and write syslog to - local syslogd. - (vsyslog): Log to stderr if LOG_PERROR flag has been given to openlog. - Try logging to syslogd. Use Event Log resp. log file as fallback. - (closelog): Close socket to syslogd. - * include/sys/syslog.h (_PATH_LOG): Define. - (INTERNAL_NOPRI): Define if SYSLOG_NAMES is defined. - (INTERNAL_MARK): Ditto. - (struct _code): Ditto. - (prioritynames): Ditto. - (facilitynames): Ditto. - -2005-04-06 Corinna Vinschen - - * fhandler_socket.cc (get_inet_addr): Add type parameter to return - unix socket type. Read socket type from unix socket file. - (fhandler_socket::bind): Write socket type to unix socket file. - (fhandler_socket::connect): Return with errno EPROTOTYPE if - socket type of socket doesn't match socket type of unix socket - trying to connect to. - -2005-04-06 Pierre Humblet - - * security.h (cygsidlist::addfromgr): Avoid duplicate entries. - * grp.cc (initgrousp): Add syscall_printf. - (setgroups): Add syscall_printf and make sure sids are added only once. - -2005-04-06 Christopher Faylor - - * net.cc (cygwin_getservbyname): Return (possibly NULL) return value of - dup_ent rather than assuming that tls buffer is valid. - (cygwin_getservbyport): Ditto. - (cygwin_gethostbyname): Ditto. - (cygwin_gethostbyaddr): Ditto. - -2005-04-05 Christopher Faylor - - * cygtls.cc (_cygtls::remove): Don't free or close stuff if we're being - called in a "non-standard" way. - -2005-04-05 Christopher Faylor - - * sync.h (muto::initforce): Delete flawed implementation. - * pwdgrp.h (pwdgrp::pglock): Make static. - * grp.cc (pwdgrp::pwdgrp): Eliminate use of initforce. - -2005-04-05 Christopher Faylor - - * sync.h (muto::initforce): Force initialization even when name != - NULL. - * grp.cc (pwdgrp::pwdgrp): Use initforce since the enclosing structure - is !NO_COPY. - -2005-04-05 Christopher Faylor - - * sync.h (muto::operator int): New operator. - (locker): Remove unused class. - (new_muto): Delete. - (new_muto1): Ditto. - (new_muto_name): Ditto. - * cygheap.cc (cygheap_setup_for_child): Reflect use of static storage - for muto rather than pointer. - (_csbrk): Ditto. - (_cmalloc): Ditto. - (_cmalloc): Ditto. - (_cfree): Ditto. - * cygheap.h (cwdstuff::cwd_lock): Ditto. - (cwdstuff::get_drive): Ditto. - * cygmalloc.h (__malloc_lock): Ditto. - (__malloc_unlock): Ditto. - * cygtls.cc (sentry::lock): Ditto. - (sentry::sentry): Ditto. - (~sentry): Ditto. - (_cygtls::init): Ditto. - * dcrt0.cc: Ditto. - (cygwin_atexit): Ditto. - (cygwin_exit): Ditto. - * debug.cc (lock_debug::locker): Ditto. - (lock_debug::lock_debug): Ditto. - (lock_debug::unlock): Ditto. - (debug_init): Ditto. - * dtable.cc (dtable::init_lock): Ditto. - * dtable.h (dtable::lock_cs): Ditto. - (dtable::lock): Ditto. - (dtable::unlock): Ditto. - * exceptions.cc (mask_sync): Ditto. - (sighold): Ditto. - (set_process_mask_delta): Ditto. - (set_signal_mask): Ditto. - (events_init): Ditto. - * grp.cc (pwdgrp::pwdgrp): Ditto. - * malloc_wrapper.cc (mallock): Ditto. - (malloc_init): Ditto. - * path.cc (cwdstuff::cwd_lock): Ditto. - (cwdstuff::get_hash): Ditto. - (cwdstuff::get_hash): Ditto. - (cwdstuff::init): Ditto. - (cwdstuff::set): Ditto. - (cwdstuff::get): Ditto. - * pwdgrp.h (pwdgrp::pglock): Ditto. - (pwdgrp::refresh): Ditto. - * sigproc.cc (sync_proc_subproc): Ditto. - (get_proc_lock): Ditto. - (proc_subproc): Ditto. - (_cygtls::remove_wq): Ditto. - (proc_terminate): Ditto. - (sigproc_init): Ditto. - * timer.cc (lock_timer_tracker::protect): Ditto. - (lock_timer_tracker::lock_timer_tracker): Ditto. - (lock_timer_tracker::~lock_timer_tracker): Ditto. - * wininfo.cc (wininfo::_lock;): Ditto. - (wininfo::winthread): Ditto. - (operator HWND): Ditto. - (wininfo::lock): Ditto. - (wininfo::release): Ditto. - * wininfo.h (wininfo::_lock;): Ditto. - -2005-04-04 Christopher Faylor - - * path.cc (path_conv::check): Only check for PC_NO_ACCESS_CHECK in end - component. - -2005-04-04 Corinna Vinschen - - * dcrt0.cc (dll_crt0_1): Don't call set_cygwin_privileges on 9x. - - * fhandler.h (enum change_state): Add. - (fhandler_base::status): Add a bit to has_changed flag. - (fhandler_base::has_changed): Implement with type change_state. - * fhandler.cc (fhandler_base::raw_write): Accommodate type change - of has_changed. - * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Also - touch modification time if has_changed == data_changed. - (fhandler_disk_file::fchmod): Also open on 9x, otherwise we can't - touch ctime. Accommodate type change of has_changed. - (fhandler_disk_file::fchown): Accommodate type change of has_changed. - (fhandler_disk_file::facl): Ditto. - (fhandler_disk_file::ftruncate): Ditto. - (fhandler_disk_file::link): Ditto. - (fhandler_base::open_fs): Ditto. - -2005-04-03 Corinna Vinschen - - * cygheap.cc (cygheap_init): Accommodate set_process_privilege change. - * cygheap.h (cygheap_user::curr_primary_token): New member. - (cygheap_user::primary_token): New method. - (cygheap_user::deimpersonate): Always revert to processes' - impersonation token. - (cygheap_user::reimpersonate): Set processes' or setuid token as - necessary. - (cygheap_user::has_impersonation_tokens): Look for curr_primary_token - value. - (cygheap_user::close_impersonation_tokens): Close curr_primary_token - here if necessary. Don't reset token values to NO_IMPERSONATION since - that's done in uinfo_init anyway. - (init_cygheap::luid): New LUID array keeping privilege LUIDs. - * cygtls.cc (_cygtls::init_thread): Call cygheap->user.reimpersonate. - * dcrt0.cc (hProcToken): New global variable to keep process token. - (hProcImpToken): Ditto for process impersonation token. - (dll_crt0_0): Open process token here once. Duplicate to create - hProcImpToken. - (dll_crt0_1): Call set_cygwin_privileges. - * environ.cc (allow_ntea): Drop duplicate declaration. - (allow_smbntsec): Ditto. - (set_traverse): Only set allow_traverse here. - (environ_init): Ditto. - * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Drop call to - enable_restore_privilege. - (fhandler_disk_file::fchown): Ditto. - (fhandler_disk_file::facl): Ditto. - * fork.cc (fork_child): Move call to cygheap->user.reimpersonate after - syn with parent. Call set_cygwin_privileges. - * grp.cc (internal_getgroups): Use hProcImpToken instead of opening - process token. - * path.cc (fs_info::update): Bypass traverse checking when retrieving - volume information using push/pop_thread_privileges. - * registry.cc (load_registry_hive): Drop setting restore privilege - since it's already set if available. - * sec_helper.cc: Include cygtls.h. - (cygpriv): Privilege string array. - (privilege_luid): New function, evaluate LUID from cygpriv_idx. - (privilege_luid_by_name): New function, evaluate LUID from privilege - string. - (privilege_name): New function, evaluate privilege string from - cygpriv_idx. - (set_privilege): New static function called by set_process_privilege - and set_thread_privilege. Call privilege_luid to get privilege LUID. - Fix bug in return value evaluation. Improve debug output. - (set_cygwin_privileges): New function. - (set_process_privilege): Remove. - (enable_restore_privilege): Remove. - * security.cc (allow_traverse): New global variable. - (sys_privs): Change type to cygpriv_idx and store privilege indices - instead of strings. - (SYSTEM_PRIVILEGES_COUNT): Renamed from SYSTEM_PERMISSION_COUNT. - (get_system_priv_list): Don't use numerical constant in malloc call. - Use privilege_luid to get privilege LUIDs. - (get_priv_list): Call privilege_luid_by_name to get LUIDs. Improve - inner privilege LUID comparison loop. - (create_token): Enable create token privilege using - push/pop_self_privileges. Use hProcToken instead of opening process - token. Use default DACL when duplicating token. - (subauth): Enable tcb privilege using push/pop_self_privileges. - Use sec_none instead of homw made security attributes when duplicating - token. - (check_file_access): Don't duplicate access token, use active - impersonation token as is. - * security.h (enum cygpriv_idx): New enumeration type enumerating - possible privileges. - (privilege_luid): Declare new function. - (privilege_luid_by_name): Ditto. - (privilege_name): Ditto. - (allow_traverse): Declare. - (set_privilege): Declare function. - (set_process_privilege): Define as macro. - (enable_restore_privilege): Remove declaration. - (_push_thread_privilege): Define macro. - (push_thread_privilege): Ditto. - (pop_thread_privilege): Ditto. - (pop_self_privilege): Ditto. - * spawn.cc (spawn_guts): Use cygheap->user.primary_token instead of - cygheap->user.token. - * syscalls.cc (statvfs): Bypass traverse checking when retrieving - volume information using push/pop_thread_privileges. Rearrange code - to simplify push/pop bracketing. - (seteuid32): Use hProcToken instead of opening process token. Call - cygheap->user.deimpersonate instead of RevertToSelf. Create - impersonation token from primary internal or external token. Set - cygheap->user.curr_primary_token and cygheap->user.current_token - privileges once here. Drop "failed" and "failed_ptok" labels. - Drop setting DefaultDacl of process token. - (setegid32): Use hProcToken and hProcImpToken instead of opening - process token. Always reimpersonate afterwards. - * uinfo.cc (cygheap_user::init): Use hProcToken instead of opening - process token. - (internal_getlogin): Ditto. Set hProcImpToken, too. - (uinfo_init): Initialize cygheap->user.curr_primary_token. - * winsup.h (hProcToken): Declare. - (hProcImpToken): Declare. - -2005-04-03 Corinna Vinschen - - Unify usage of CYG_MAX_PATH throughout. Change buffers from - size CYG_MAX_PATH + 1 to CYG_MAX_PATH. Change length tests - accordingly. - -2005-04-02 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number to 15. - -2005-04-01 Corinna Vinschen - - * fork.cc (fork_child): Add missing __stdcall. - -2005-04-01 Christopher Faylor - - * sigproc.cc (create_signal_arrive): New (temporary?) function to - create signal_arrived event. - (sigproc_init): Use create_signal_arrived. - * fork.cc (fork_child): Create signal_arrived early. - -2005-04-01 Corinna Vinschen - - * fork.cc (fork_child): Fixup SYSV IPC shared memory before fixing - up fdtab. - -2005-03-31 Corinna Vinschen - - * gentls_offsets: Add '-m32' flag to native compiler call to satisfy - cross platform builds. - -2005-03-31 Corinna Vinschen - - * errno.cc (NO_SYSTEM_RESOURCES): Map to EAGAIN. - (NONPAGED_SYSTEM_RESOURCES): Ditto. - (PAGED_SYSTEM_RESOURCES): Ditto. - (WORKING_SET_QUOTA): Ditto. - (PAGEFILE_QUOTA): Ditto. - (COMMITMENT_LIMIT): Ditto. - -2005-03-30 Christopher Faylor - - * environ.cc (spenvs): Re-force SYSTEMROOT to always be included in - environment. - (build_env): Ditto. - -2005-03-30 Christopher Faylor - - * environ.cc (spenv::retrieve): Revert most of previous change. - (build_env): Ditto. Rework to track environment variables which need - to always be in the windows environment in a separate array. - -2005-03-30 Igor Pechtchanski - - * path.cc (symlink_info::case_check): Ignore trailing characters - in paths when comparing case. - -2005-03-30 Christopher Faylor - - * environ.h (win_env::immediate): Declare new field. - (win_env::operator = ): Declare new operator. - (win_env::reset): Declare new function. - (win_env::~win_env): Declare new destructor. - (getwinenv): Add optional third argument to declaration. - * environ.cc (conv_envvars): Accommodate immediate field. - (win_env::operator =): Define new operator. - (win_env::~win_env): Define new destructor. - (win_env::add_cache): Add value to environment immediately if - "immediate" is set. - (getwinenv): Accept optional third argument which will be used to store - "cached" values to avoid overwriting real cache. - (spenv::force): Declare new field. - (spenvs): Accommodate force field. Add "PATH=" with force set to true. - (spenv::retrieve): Avoid duping anything if we're not building an - envblock. - (build_env): Ditto. Use size of potentially constructed new - environment block to determine if we need to create an environment - block. Pass getwinenv temporary storage to avoid inappropriately - overwriting the environment cache. - -2005-03-29 Eric Blake - - * include/limits.h (NAME_MAX): New define. - (PATH_MAX): POSIX allows PATH_MAX to include trailing NUL. - -2005-03-29 Corinna Vinschen - - * path.cc (is_floppy): Make externally available. - * path.h (is_floppy): Declare. - * syscalls.cc (sync): Check for floppies on A: and B: in guid case. - Don't call setmntent in non-guid case but evaluate drive bit mask - locally. - -2005-03-29 Corinna Vinschen - - * fhandler_process.cc: Re-add exename. - -2005-03-28 Christopher Faylor - - * include/ctype.h: Accommodate building in newlib. - -2005-03-28 Christopher Faylor - - * timer.cc (getitimer): Check that ovalue is a valid pointer, not just - NULL. - -2005-03-28 Christopher Faylor - - * timer.cc (timer_tracker::settime): Set times to zero when just - cancelling a timer. - -2005-03-28 Christopher Faylor - - * cygthread.cc (cygthread::detach): Revert to just waiting for thread - event since waiting for anything else is racy. - * timer.cc (timer_tracker::hcancel): Rename from cancel. - (timer_tracker::cancel): New method. - (timer_tracker::th): Remove. - (timer_tracker::~timer_tracker): Call cancel method. - (timer_tracker::timer_tracker): Ditto. - (timer_tracker::timer_tracker): Always, clear cancel, even though it is - probably not strictly necessary for ttstart. - (timer_thread): Accommodate cancel -> hcancel rename. - (timer_tracker::settime): Ditto. - (timer_tracker::gettime): Ditto. - (timer_delete): Ditto. - - * cygwin.din: Export _ctype_. - * include/ctype.h: Mark that _ctype_ is imported. - -2005-03-28 Christopher Faylor - - * timer.cc (timer_tracker::timer_tracker): Eliminate simple - constructor. - (ttstart): Fully initialize. - - * errno.cc: Fix typo introduced in previous change. - -2005-03-28 Eric Blake - - * errno.cc (FILENAME_EXCED_RANGE): Map to ENAMETOOLONG. - -2005-03-27 Christopher Faylor - - * signal.cc (nanosleep): Revert tv_sec < 0 check as it is fixed - properly in the below change to hires.h. - -2005-03-27 Pierre Humblet - - * times.cc (hires_ms::usecs): Compare the difference. - * hires.h: Add parentheses to HIRES_DELAY_MAX. - -2005-03-26 Christopher Faylor - - * timer.cc (nanosleep): Treat tv_sec < 0 as invalid. - - * include/search.h: Make declarations consistent with newlib. - -2005-03-26 Pierre Humblet - Christopher Faylor - - * wininfo.h (wininfo::timer_active): Delete. - (wininfo::itv): Ditto. - (wininfo::start_time): Ditto. - (wininfo::window_started): Ditto. - (wininfo::getitimer): Ditto. - (wininfo::setitimer): Ditto. - (wininfo::wininfo): Ditto. - (wininfo::lock): New method. - (wininfo::release): Ditto. - * window.cc: Use new lock/acquire wininfo methods throughout. - (wininfo::wininfo): Delete - (wininfo::getitimer): Ditto. - (wininfo::setitimer): Ditto. - (getitimer): Ditto. - (setitimer): Ditto. - (ualarm): Ditto. - (alarm): Ditto. - (wininfo::lock): Define new function. - (wininfo::release): Ditto. - (wininfo::process): Delete WM_TIMER handling. - * timer.cc (struct timetracker): Delete it, flags. Add it_interval, - interval_us, sleepto_us, running, init_muto(), syncthread, and - gettime(). - (ttstart): Make NO_COPY. - (lock_timer_tracker): New class. - (timer_tracker::timer_tracker): Distinguish ttstart case. - (timer_tracker::~timer_tracker): New destructor. Clean out events, and - reset magic. - (timer_tracker::init_muto): New method. - (to_us): Round up as per POSIX. - (timer_thread): Reorganize to match timer_tracker::settime and - timer_tracker::gettime. Call sig_send without wait. Call - auto_release. - (timer_tracker::settime): Reorganize logic to avoid race. Call gettime - to recover old value. - (timer_tracker::gettime): New method. - (timer_create): Properly set errno on invalid timerid. Use new - lock_timer_tracker method. - (timer_delete): Ditto. Simplify code slightly. - (timer_gettime): New function. - (fixup_timers_after_fork): Reinit ttstart. - (getitimer): New implementation. - (setitimer): Ditto. - (ualarm): Ditto. - (alarm): Ditto. - * cygwin.din: Export timer_gettime. - * winsup.h: Remove has has_visible_window_station declaration. - -2005-03-26 Christopher Faylor - - * Makefile.in (DLL_OFILES): Add lsearch.o. - * cygthread.h (cygthread::notify_detached): New element. - (cygthread::cygthread): Take optional fourth argument signifying event - to signal on thread completion. - * cygthread.cc (cygthread::stub): Signal notify_detached event, if it - exists. - (cygthread::cygthread): Initialize notify_detached from fourth argument. - (cygthread::detach): Wait for notify_detached field is present. - - * lsearch.cc: New file. - * search.h: Ditto. - * include/cygwin/version.h: Bump API minor number to 126. - * cygwin.din: Export lsearch, lfind. - -2005-03-23 Corinna Vinschen - - * fhandler.h (fhandler_socket::secret_event): Remove. - (fhandler_socket::af_local_set_secret): New function combining former - set_connect_secret and get_connect_secret into one function. - (fhandler_socket::af_local_setblocking): Rename from eid_setblocking. - (fhandler_socket::af_local_unsetblocking): Rename from - eid_unsetblocking. - (fhandler_socket::af_local_set_cred): New method. - (fhandler_socket::af_local_copy): New method. - (fhandler_socket::af_local_recv_secret): New method. - (fhandler_socket::af_local_send_secret): New method. - (fhandler_socket::af_local_recv_cred): Rename from eid_recv. - (fhandler_socket::af_local_send_cred): Rename from eid_send. - (fhandler_socket::af_local_accept): New method. - (fhandler_socket::af_local_set_sockpair_cred): Rename from - set_socketpair_eids. - (fhandler_socket::eid_accept): Remove. - (fhandler_socket::eid_connect): Remove. - (fhandler_socket::set_connect_secret): Remove. - (fhandler_socket::get_connect_secret): Remove. - (fhandler_socket::create_secret_event): Remove. - (fhandler_socket::check_peer_secret_event): Remove. - (fhandler_socket::signal_secret_event): Remove. - (fhandler_socket::close_secret_event): Remove. - (fhandler_socket::sec_event_accept): Remove. - (fhandler_socket::sec_event_connect): Remove. - * fhandler_socket.cc (secret_event_name): Remove. - (fhandler_socket::af_local_set_sockpair_cred): Rename from - set_socketpair_eids. - (fhandler_socket::af_local_setblocking): Rename from eid_setblocking. - (fhandler_socket::af_local_unsetblocking): Rename from - eid_unsetblocking. - (fhandler_socket::af_local_recv_secret): New function to receive - AF_LOCAL connect secret over socket itself. - (fhandler_socket::af_local_send_secret): New function to send AF_LOCAL - connect secret over socket itself. - (fhandler_socket::af_local_recv_cred): Rename from eid_recv. - (fhandler_socket::af_local_send_cred): Rename from eid_send. - (fhandler_socket::eid_connect): Remove. - (fhandler_socket::af_local_connect): Take over connect side handling - of AF_LOCAL secret and credential handshake. - (fhandler_socket::eid_accept): Remove. - (fhandler_socket::af_local_accept): New method, take over accept side - handling of AF_LOCAL secret and credential handshake. - (fhandler_socket::af_local_set_cred): New method, set eid credentials - to start values. - (fhandler_socket::af_local_copy): New method, copy secret and - credentials to another socket. - (fhandler_socket::af_local_set_secret): New function combining former - set_connect_secret and get_connect_secret into one function. - (fhandler_socket::create_secret_event): Remove. - (fhandler_socket::signal_secret_event): Remove. - (fhandler_socket::close_secret_event): Remove. - (fhandler_socket::check_peer_secret_event): Remove. - (fhandler_socket::sec_event_connect): Remove. - (fhandler_socket::sec_event_accept): Remove. - (fhandler_socket::fixup_after_fork): Drop secret_event handling. - (fhandler_socket::bind): Call af_local_set_secret. - (fhandler_socket::connect): Call af_local_set_cred and af_local_connect. - (fhandler_socket::listen): Call af_local_set_cred. - (fhandler_socket::accept): Call af_local_copy and af_local_accept on - accepted socket. - (fhandler_socket::close): Don't call close_secret_event. - (fhandler_socket::set_close_on_exec): Don't set secret_event - inheritance. - * net.cc (cygwin_getsockopt): Add debug output. - (socketpair): Call af_local_set_sockpair_cred instead of - set_socketpair_eids. - * select.cc (set_bits): Drop AF_LOCAL special handling in case - of except bit set. - -2005-03-23 Christopher Faylor - - * include/ctype.h: Always define macros when inside cygwin. - (isblank): New macro. - -2005-03-23 Corinna Vinschen - - * fhandler.h (fhandler_socket::eid_connect): Make private. - (fhandler_socket::set_connect_secret): Ditto. - (fhandler_socket::get_connect_secret): Ditto. - (fhandler_socket::create_secret_event): Ditto. Remove secret argument. - (fhandler_socket::check_peer_secret_event): Ditto. - (fhandler_socket::signal_secret_event): Make private. - (fhandler_socket::close_secret_event): Ditto. - (fhandler_socket::sec_event_accept): New private method. - (fhandler_socket::sec_event_connect): Ditto. - (fhandler_socket::af_local_connect): New public method. - * fhandler_socket.cc: Use 'struct sockaddr' and 'struct sockaddr_in' - rather than just 'sockaddr' and 'sockaddr_in' throughout. - (fhandler_socket::eid_connect): Drop AF_LOCAL/SOCK_STREAM test. - (fhandler_socket::create_secret_event): Remove secret argument. - Always use connect_secret instead. - (fhandler_socket::check_peer_secret_event): Ditto. - (fhandler_socket::sec_event_connect): New method, combining entire - secret event handshake on connect side. - (fhandler_socket::af_local_connect): New method, combining secret - event handshake and eid credential transaction on connect side, to - be called from select. - (fhandler_socket::sec_event_accept): New method, combining entire - secret event handshake on accept side. - (fhandler_socket::connect): Drop secret, use connect_secret instead. - Move entire secret event handshake to sec_event_connect. - (fhandler_socket::accept): Move entire secret event handshake to - sec_event_accept. - * select.cc (set_bits): Just call af_local_connect here. - -2005-03-23 Christopher Faylor - - * include/cygwin/version.h: Change comment for most recent API version - bump to reflect new additions to the DLL and to remove change obsoleted - by the previous checkin. - -2005-03-23 Christopher Faylor - - * include/ctype.h: New file. - * ctype.cc: Ditto. - * Makefile.in: Add ctype.o to DLL_OFILES. - * cygwin.din: Remove _ctype_ptr (for now?). - -2005-03-22 Christopher Faylor - - * Makefile.in (DLL_OFILES): Add hookapi.o. Eliminate some cruft. - * cygheap.h (cygheap_types): Add new enum: HEAP_1_HOOK. - (hook_chain): New struct. - (init_cygheap::hooks): Define new element. - * cygheap.cc (cygheap_fixup_in_child): Zero hook chain on exec. - * dcrt0.cc (dll_crt0_1): Call ld_preload just before calling main function. - * external.cc (cygwin_internal): Implement CW_HOOK. - * fork.cc (fork_child): Call fixup_hooks_after_fork. - * init.cc (cygwin_hmodule): Reinstate after a long absence. - * include/sys/cygwin.h: Define CW_HOOK. - * hookapi.cc: New file. - - * select.cc (start_thread_socket): Add debugging output. - - * fhandler_disk_file.cc (fhandler_disk_file::fchmod): gcc 4.x - accommodation. - - * fhandler_socket.cc (fhandler_socket::connect): Make sure that err is - initialized. - -2005-03-22 Corinna Vinschen - - * cygwin.din (__ctype_ptr): Export. - * include/cygwin/version.h: Bump API minor version. - -2005-03-21 Corinna Vinschen - - * fhandler.h (class cygthread): Remove forward declaration. - -2005-03-21 Corinna Vinschen - - * fhandler.h (class cygthread): Forward declare. - (fhandler_socket::sec_pipe): Remove. - (fhandler_socket::eid_pipe_name): Remove. - (fhandler_socket::eid_setblocking): New private method. - (fhandler_socket::eid_unsetblocking): Ditto - (fhandler_socket::eid_recv): Ditto - (fhandler_socket::eid_send): Ditto - (fhandler_socket::eid_accept): Ditto - (fhandler_socket::eid_connect): New public method. - * fhandler_socket.cc (ASYNC_MASK): Move to beginning of file. - (fhandler_socket::eid_pipe_name): Remove. - (fhandler_socket::set_socketpair_eids): Move down to fhandler_socket - methods. - (fhandler_socket::fhandler_socket): Drop initializing sec_pipe. - (fhandler_socket::~fhandler_socket): Drop closing sec_pipe. - (fhandler_socket::eid_setblocking): New method. - (fhandler_socket::eid_unsetblocking): New method. - (fhandler_socket::eid_recv): New method. - (fhandler_socket::eid_send): New method. - (fhandler_socket::eid_connect): New method. - (fhandler_socket::eid_accept): New method. - (fhandler_socket::dup): Drop sec_pipe handling. - (fhandler_socket::connect): Fix WinSock error handling. Prepare - eid credential transaction. Call eid_connect on successful connect. - (fhandler_socket::listen): Drop creating sec_pipe. - (fhandler_socket::accept): Slightly simplify code. Call eid_accept - on accepted socket. - (fhandler_socket::getpeereid): Reshuffle code for readability. Fix - test for invalid pid. - * select.cc (set_bits): Call eid_connect on successfully connected - socket. - -2005-03-19 Christopher Faylor - - * child_info.h (fork_info): Use different method to alias variable. - (spawn_info): Ditto. - * cxx.cc (__cxa_guard_acquire): New function (needed for gcc 4.x). - (__cxa_guard_release): Ditto. - * devices.in: Make sure stuff is correctly bracketed (for gcc 4.x). - * devices.cc: Regenerate. - * fhandler.h (fhandler_disk_file::fchmod): Avoid left coercion (for gcc - 4.x). - * smallprint.c (__rn): Declare as __fastcall since gcc 4.x complains - about use of regparm, for some reason. - * sync.h (sync::init_lock): Remove. - * sync.cc (sync::init_lock): Ditto. - -2005-03-18 Christopher Faylor - - * net.cc (cygwin_getprotobyname): Don't try to be fancy with return - values. - (cygwin_getprotobynumber): Ditto. - -2005-03-17 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::utimes): Handle opening - directories under 9x gracefully. - -2005-03-17 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::connect): Always set sun_path - in case of a successful or pending connect. - (fhandler_socket::accept): Don't run secret event and eid credential - transactions if OS accept returned WSAEWOULDBLOCK. - -2005-03-16 Christopher Faylor - - * fhandler_tape.cc (get_ll): This is a generally useful function so - move it - * winsup.h (get_ll): to here. - * security.cc (get_token_group_sidlist): Use get_ll to figure out the - long long version of the luid since QuadPart is not part of the - standard Windows API. - -2005-03-16 Christopher Faylor - - * dir.cc: Rename opendir_* to dirent_* throughout. - (opendir_states): Move and rename. - * fhandler.h (dirent_states): to here. - * fhandler_disk_file.cc (fhandler_disk_file::readdir): Use raw readdir - when skipping through entries since it is keeping track of "." and - "..". - (fhandler_cygdrive::seekdir): Use fhandler_disk_file::readdir to do - everything. - * fhandler_virtual.cc (fhandler_virtual::opendir): Set flag indicating - that we provide . and .. - (fhandler_virtual::seekdir): Ditto. - (fhandler_virtual::rewinddir): Ditto. - * fhandler_registry.cc (fhandler_registry::rewinddir): Ditto. - -2005-03-16 Christopher Faylor - - * cygtls.cc (free_local): New macro. - (_cygtls::remove): Use free_local to free known-malloced local - variables. - * cygtls.h: Mark some variables as "malloced". - * net.cc (enum struct_type): Rename from is_* to t_* for clarity. - (dump_protoent): Delete. - (dup_ent): New macro. - (__dup_ent): Renamed from dup_ent. Change arguments for convenience. - Replace first argument with newly alloced value. Allocate a rounded - number of bytes in an attempt to try to reuse space. Subsume - "dump_protent". - (cygwin_getprotobyname): Simplify using new dup_ent functionality. - (cygwin_getprotobynumber): Ditto. - (cygwin_getservbyname): Ditto. - (cygwin_getservbyport): Ditto. - (cygwin_gethostname): Ditto. - (cygwin_gethostbyname): Ditto. - * tlsoffsets.h: Regenerate. - - * syslog.cc (openlog): Use NULL rather than 0, for consistency with the - rest of cygwin. - (pass_handler::initialize): Use unbuffered I/O in pass one. - -2005-03-15 Christopher Faylor - - * errno.cc (errmap): Correct typo in previous change. - -2005-03-15 Christopher Faylor - - * cygtls.cc (_cygtls::remove): Free process_ident, if it exists. - - * errno.cc (errmap): ERROR_DISK_CORRUPT -> EIO. - -2005-03-11 Christopher Faylor - - * path.h (pathconv_arg): Define PC_NO_ACCESS_CHECK. - (path_types): Define PATH_NO_ACCESS_CHECK == PC_NO_ACCESS_CHECK. - * path.cc (symlink_info::check_sysfile): Move to symlink_info class and - eliminate arguments that are part of class. Use set_error. - (symlink_info::check_shortcut): Ditto. - (symlink_info::set_error): New function. - (path_conv::check): Pass PC_NO_ACCESS_CHECK to symlink_info::check. - (symlink_info::check): Preserve PC_NO_ACCESS_CHECK in pflags. Use - set_error. - -2005-03-10 Corinna Vinschen - - * path.cc (is_floppy): New function. - (setmntent): Drop floppy drives on A: and B: from logical drive DWORD. - * syscalls.cc (sync): Don't sync floppies on A: and B:. - -2005-03-10 Christopher Faylor - - * autoload.cc (LoadDLLprime): Use nocopy segment or forked processes - will not initialize properly. - -2005-03-10 Christopher Faylor - - * autoload.cc (LoadDLLprime): Scrap use of .linkonce and just use an - ifdef guard to load .foo_init into data segment. - - * dcrt0.cc (initial_env): Allow colon or space as CYGWIN_DEBUG - separator for consistency. - -2005-03-09 Christopher Faylor - - * pinfo.h (pinfo::pinfo): Clear more elements in the constructor. - -2005-03-09 Christopher Faylor - - * net.cc (dup_ent): Revert older stupid test for null. Don't copy name - if it is NULL. - -2005-03-09 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::eid_pipe_name): Fix format - string. - (fhandler_socket::connect): Set sun_path before running eid credential - transaction. Run transaction only if OS connect was successful. - (fhandler_socket::accept): Run transaction only if OS accept was - successful. - -2005-03-09 Corinna Vinschen - - * signal.cc (sigprocmask): Rename first parameter to "how". - (handle_sigprocmask): Ditto. Check "how" for being a valid "how" value. - Fix call order in case of wrong "how" value. - -2005-03-09 Christopher Faylor - - * net.cc (dup_ent): Revert previous stupid change. - -2005-03-09 Christopher Faylor - - * net.cc (dup_ent): Avoid dereferencing a null pointer in a debug_printf. - -2005-03-09 Christopher Faylor - - * path.cc (path_conv::check): Treat ENOSHARE similarly to ENOENT when - determining if there was a problem with a symlink. - -2005-03-08 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::listen): Don't limit the number - of pipe instances. - -2005-03-08 Christopher Faylor - - * pinfo.cc (pinfo::exit): Right shift exit value by eight when not - started in a cygwin environment. - -2005-03-07 Corinna Vinschen - - * mmap.cc (mmap64): Handle MAP_AUTOGROW flag. - (fhandler_disk_file::mmap): Ditto. Clean conditional for readability. - * include/sys/mman.h: Add MAP_AUTOGROW flag. - * include/cygwin/version.h: Bump API minor version. - -2005-03-08 Christopher Faylor - - * dcrt0.cc (dll_crt0_0): Eliminate muto::init call. - * sync.h (locker): New, currently unused class. - (muto::init): Eliminate. - * sync.cc (muto::init): Ditto. - (muto::init): Eliminate critical section lock and instead use name as a - guard to prevent against multiple attempts to initialize the same muto. - - * pinfo.cc (pinfo::init): Set myself procinfo when not execing and pid - matches windows pid or cygwin pid. - -2005-03-06 Pavel Tsekov - - * path.cc (mount_info::read_cygdrive_info_from_registry): Use the user - prefix if it exists. - -2005-03-06 Christopher Faylor - - * sync.h (sync::init_lock): Declare new static member. - (sync::init()): Declare new static function. - * sync.cc (sync::init): Define. - (sync::init): Lock attempt to initialize a muto to stop multiple - threads from colliding. - * dcrt0.cc (dll_crt0_0): Initialize muto environment. - -2005-03-06 Christopher Faylor - - * path.cc (special_name): Reorganize to always detect the use of - special names first, before detecting special characters. - -2005-03-04 Christopher Faylor - - * fhandler_clipboard.cc: Use int for cygnativeformat rather than UINT - as that is what is returned by GetPriorityClipboardFormat. - (fhandler_dev_clipboard::read): Ditto for the format variable. - -2005-03-04 Corinna Vinschen - - * fhandler.cc (fhandler_base::open_9x): Satisfy query_open values. - -2005-03-04 Pierre Humblet - - * fhandler_socket.cc (fhandler_socket::ioctl): Only cancel - WSAAsyncSelect when async mode is on. - -2005-03-03 Corinna Vinschen - - * cygwin.din (utmpxname): Export. - * syscalls.cc (utmpxname): Create export alias to utmpname. - * include/utmpx.h: Define ut_name and ut_xtime if not already defined. - (utmpxname): Add prototype. - * include/sys/utmp.h: Only define ut_name if not already defined. - * include/cygwin/version.h: Bump API minor version. - -2005-03-03 Christopher Faylor - - * cygthread.cc (cygthread::detach): Use a slightly higher priority when - waiting for thread signalling. - -2005-03-02 Christopher Faylor - - * autoload.cc (std_dll_init): Save and restore fpu control register - around LoadAddress to prevent loaded dlls (like msvcrt.dll) from - setting unwanted stuff. - -2005-03-02 Christopher Faylor - - * cygtls.cc (_cygtls::remove): Don't attempt any removal activities if - exitsock is zero. - -2005-03-02 Christopher Faylor - - * cygtls.cc (_cygtls::init_thread): Move exitsock setting later. It - should always be set. - (_cygtls::remove): Detect zero exitsock. Not quite sure why this is needed. - -2005-03-02 Christopher Faylor - - * autoload.cc (LoadDLLprime): Mask error code to low-order 16 bits. - (noload): Preserve sign when returning error code. - -2005-03-02 Christopher Faylor - - * spawn.cc (do_cleanup): Properly restore SIGINT/SIGQUIT even if they - had previously been SIG_DFL. - -2005-03-01 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Replace - GetSystemTime/SystemTimeToFileTime with GetSystemTimeAsFileTime. - * times.cc (time_as_timestruc_t): Ditto. - (time): Ditto. - -2005-03-01 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number to 14. - -2005-03-01 Corinna Vinschen - - * fhandler_clipboard.cc (fhandler_dev_clipboard::write): Never set - errno to 0. - (fhandler_dev_clipboard::read): Ditto. - * fhandler_windows.cc (fhandler_windows::read): Ditto. - * scandir.cc (scandir): Ditto. - * syscalls.cc (_fstat64_r): Ditto. - (_fstat_r): Ditto. - (_stat64_r): Ditto. - (_stat_r): Ditto. - - * mmap.cc (mmap64): Fix /dev/zero mapping. - -2005-02-28 Corinna Vinschen - - * fhandler.h (class fhandler_socket): Declare new method - set_socketpair_eids. - * fhandler_socket.cc (fhandler_socket::set_socketpair_eids): New method. - (fhandler_socket::dup): Duplicate sec_pipe if necessary. - (fhandler_socket::listen): Only create sec_pipe if named pipes are - available. Initialized sec_peer_pid to 0 as on Linux. - (fhandler_socket::connect): Only run eid credential transaction if - named pipes are available. Fake otherwise. Initialized sec_peer_pid - to 0 as on Linux. - (fhandler_socket::accept): Ditto. - (fhandler_socket::close): Move closing sec_pipe handle from here... - (fhandler_socket::~fhandler_socket): ... to here. - * net.cc (socketpair): Set eid credentials by calling - fhandler_socket::set_socketpair_eids() on both socket ends. - * wincap.h (wincaps::has_named_pipes): New element. - * wincap.cc: Implement above element throughout. - -2005-02-26 Christopher Faylor - - * sigproc.cc (_pinfo::set_ctty): Move function - * pinfo.cc (_pinfo::set_ctty): to here. - - * fhandler_mem.cc (fhandler_dev_mem::fstat): Don't fill out structure - if this is an on-disk device rather than an "auto" device. - * fhandler_raw.cc (fhandler_dev_raw::fstat): Ditto. - - * path.cc (normalize_posix_path): Don't treat a standalone '//' as - introducing a UNC path. - (normalize_win32_path): Ditto. - -2005-02-26 Christopher Faylor - - * debug.cc (delete_handle): Report on handle value in debugging output. - - * pinfo.h (_pinfo::exists): Declare "new" function. - (_pinfo::kill): Ditto. - * fhandler_termios.cc (tty_min::kill_pgrp): Use _pinfo::exists rather - than proc_exists. - * pinfo.cc (pinfo::init): Ditto. Don't do a low_priority_sleep(0) when - looping to find exec'ed procinfo. - (pinfo::release): Be more careful about unmapping and closing. - * signal.cc (_pinfo::kill): Rename from kill_worker. Accommodate entry - into _pinfo class. - (kill0): Use _pinfo::kill rather than kill_worker. - (kill_pgrp): Ditto. Use _pinfo::exists rather than proc_exists. - * sigproc.cc (_pinfo::exists): Rename from proc_exists. - (pid_exists): Use _pinfo::exists rather than proc_exists. - (remove_proc): Ditto. - * sigproc.h (proc_exists): Delete declaration. - -2005-02-25 Corinna Vinschen - - * fhandler.h (class fhandler_base): Declare fixup_mmap_after_fork - with additional flags parameter. Change offset parameter to _off64_t. - (class fhandler_disk_file): Ditto. - (class fhandler_dev_mem): Ditto. - * fhandler_mem.cc (fhandler_dev_mem::fixup_mmap_after_fork): - Accommodate new parameters. - * mmap.cc: Include ntdll.h. - (class mmap_record): Add flags member. - (mmap_record::mmap_record): Add flags parameter. - (mmap_record::get_flags): New method. - (class map): Add next_anon_addr member to store next anonymous mapping - address suggestion. - (map::get_next_anon_addr): New method. - (map::set_next_anon_addr): New method. - (mmap64): Don't align offset and length to granularity in case of - MAP_ANONYMOUS on NT. Check for already existing mapping only on 9x. - Call mmap_record::mmap_record with additional flags argument. - (fhandler_base::fixup_mmap_after_fork): Accommodate new parameters. - (fhandler_disk_file::mmap): Use NtMapViewOfSection with - AT_ROUND_TO_PAGE flag for anonymous mappings on NT. If addr is NULL, - try to map adjacent to previous mapping. - (fhandler_disk_file::fixup_mmap_after_fork): Add flags argument. - Change offset parameter to _off64_t. Use NtMapViewOfSection to - re-create anonymous mappings on NT. - (fixup_mmaps_after_fork): Accommodate new parameters when calling - fhandler's fixup_mmaps_after_fork function. - * ntdll.h (AT_ROUND_TO_PAGE): New define. - -2005-02-25 Corinna Vinschen - - * mmap.cc (mmap64): Handle anonymous MAP_FIXED request on - non-granulation boundary. - -2005-02-25 Corinna Vinschen - - * mmap.cc (class mmap_record): Declare new map_pages method with - address parameter. - (mmap_record::map_pages): New method with address parameter. - (mmap64): Evaluate access mode before checking if already existing - mapping can be used. - Only use existing mapping if requested access mode matches the one - in the existing mapping. - Add check for existing mapping for anonymous MAP_FIXED case. - -2005-02-23 Corinna Vinschen - - * localtime.cc: Implement setting __tzrule's offset member using - newlib's __gettzinfo () interface. - (__tzrule): Remove. - (timezone): Define as long according to POSIX. - -2005-02-23 Eric Blake - - * devices.in (parsedisk): Fix typo. - * devices.cc: Regenerate. - -2005-02-23 Corinna Vinschen - - * cygwin.din (getpeereid): Export. - * fhandler.h (class fhandler_socket): Add pipe and id members to - exchange eid credentials for AF_LOCAL sockets. - (eid_pipe_name): Declare new method. - (getpeereid): Ditto. - * fhandler_socket.cc (fhandler_socket::eid_pipe_name): New method. - (fhandler_socket::fhandler_socket): Initialize sec_pipe. - (fhandler_socket::connect): Exchange eid credentials with accepting - socket process. - (fhandler_socket::listen): Prepare eid credential transaction. - (fhandler_socket::accept): Exchange eid credentials with connecting - socket process. - (fhandler_socket::close): Close eid credentials pipe if open. - (fhandler_socket::getpeereid): New method. - * net.cc (cygwin_getsockopt): Add SO_PEERCRED handling. - (getpeereid): New function. - * include/asm/socket.h (SO_PEERCRED): Define. - * include/cygwin/socket.h (struct ucred): Define new type. - * include/cygwin/version.h: Bump API minor version. - -2005-02-23 Corinna Vinschen - - * include/sys/statvfs.h (ST_RDONLY): Define. - (ST_NOSUID): Define. - -2005-02-23 Corinna Vinschen - - * cygwin.din (fstatvfs): Export. - (statvfs): Export. - * syscalls.cc: Include sys/statvfs.h. - (statvfs): New function. Move statfs functionality here. - (fstatvfs): New function. - (statfs): Just call statvfs and copy structure. Check validity of - incoming struct statfs pointer. - * include/cygwin/types.h (fsblkcnt_t): Define. - (fsfilcnt_t): Define. - * include/cygwin/version.h: Bump API minor version. - * include/sys/statvfs.h: New file. - -2005-02-23 Corinna Vinschen - - * devices.h: Switch FH_ZERO and FH_PORT as on Linux. Add FH_FULL. - * devices.in: Add /dev/full. - * devices.cc: Regenerate. - * dtable.cc (build_fh_pc): Add FH_FULL. - * fhandler.cc (fhandler_base::fstat): Set FH_FULL permission bits - correctly. - * fhandler_zero.cc (fhandler_dev_zero::write): Set errno to ENOSPC - and return -1 if device is FH_FULL. - -2005-02-22 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_cygdrive::closedir): Return 0 when - closing cygdrive_root. - -2005-02-22 Corinna Vinschen - - * cygwin.din (basename): Export. - (dirname): Export. - * path.cc (basename): New function. - (dirname): New function. - * include/libgen.h: New file. - * include/cygwin/version.h: Bump API minor version. - -2005-02-22 Corinna Vinschen - - * select.cc (peek_pipe): Disable new pipe code until there's - a working substitute. - -2005-02-22 Corinna Vinschen - - * cygwin.din (fdatasync): Export. - * fhandler.cc (fhandler_base::fsync): Return with EINVAL if no - handle is available. - * syscalls.cc (fdatasync): Create export alias to fsync. - * include/cygwin/version.h: Bump API minor version. - -2005-02-20 Corinna Vinschen - - * fhandler.h (fhandler_base::fstat_helper): Declare with additional - dwVolumeSerialNumber argument. Drop default values for last three - arguments. - * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Pass - dwVolumeSerialNumber from GetFileInformationByHandle to fstat_helper. - (fhandler_base::fstat_by_name): Pass pc.volser () to fstat_helper. - Accommodate dropping default values for last three arguments of - fstat_helper. - (fhandler_base::fstat_helper): Add dwVolumeSerialNumber argument. - Use for st_dev member unless 0 in which case pc.volser () is used. - -2005-02-20 Corinna Vinschen - - * autoload.cc (FindFirstVolumeA): Add. - (FindNextVolumeA): Add. - (FindVolumeClose): Add. - (GetVolumePathNamesForVolumeNameA): Add. - * fhandler.h (class fhandler_base): Declare new method fsync. - * fhandler.cc (fhandler_base::fsync): New method. - * syscalls.cc (fsync): Move functionality into fhandler method fsync. - Just call this method from here. - (sync_worker): New static function. - (sync): Fill with life for NT systems. - * wincap.h (wincaps::has_guid_volumes): New element. - * wincap.cc: Implement above element throughout. - -2005-02-20 Corinna Vinschen - - * fhandler.h (enum query_state): Add query_write_attributes state. - (fhandler_base::status.query_open): Add a bit to make room for more - states. - (class fhandler_base): Declare new method utimes. - (class fhandler_socket): Ditto. - (class fhandler_disk_file): Ditto. - (fhandler_disk_file::fhandler_disk_file): Add constructor with - path_conv parameter. - * fhandler.cc (fhandler_base::open): Add query_write_attributes - handling. - (fhandler_base::utimes): New method. - * fhandler_disk_file.cc (fhandler_disk_file::link): Simplify. - Open file with query_write_attributes instead of query_write_control. - (fhandler_disk_file::utimes): New method. - (fhandler_disk_file::fhandler_disk_file): Add constructor with - path_conv parameter setting pc member immediately. - * fhandler_socket.cc (fhandler_socket::fchmod): Use new - fhandler_disk_file constructor. - (fhandler_socket::fchown): Ditto. - (fhandler_socket::facl): Ditto. - (fhandler_socket::link): Ditto. - (fhandler_socket::utimes): New method. - * times.cc: Include dtable.h. - (timeval_to_filetime): Make non-static. - (utimes): Move functionality into fhandler method utimes. Just call - this method from here. - * winsup.h: Simplify declarations of time helper functions. - (timeval_to_filetime): Add extern declaration. - -2005-02-19 Corinna Vinschen - - * fhandler.h (class fhandler_base): Declare new method link. - (class fhandler_socket): Ditto. - (class fhandler_disk_file): Ditto. - * fhandler.cc (fhandler_base::open): Add FILE_WRITE_ATTRIBUTES - to query_write_control access flags. - (fhandler_base::link): New method. - * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Don't try to - open with O_WRONLY since query_write_control includes - FILE_WRITE_ATTRIBUTES. - (fhandler_disk_file::fchown): Ditto. - (fhandler_disk_file::facl): Ditto. - (fhandler_disk_file::link): New method. Touch st_ctime on successful - link. - * fhandler_socket.cc (fhandler_socket::link): New method. - * syscalls.cc (link): Move functionality into fhandler method link. - Just call this method from here. - -2005-02-19 Corinna Vinschen - - * fhandler.h (class fhandler_socket): Declare new methods fchown, - fchmod and facl. - * fhandler_socket.cc (fhandler_socket::fstat): Handle AF_LOCAL - sockets. - (fhandler_socket::fchmod): New method. - (fhandler_socket::fchown): New method. - (fhandler_socket::facl): New method. - -2005-02-19 Corinna Vinschen - - * localtime.cc: Temporary implementation of setting __tzrule's offset - member to be used by strftime. - (__tzrule): New global variable. - (tzparse): Set __tzrule's offset member appropriately. - -2005-02-17 Christopher Faylor - - * path.cc (path_conv::check): Set fs flag when a unix-domain socket - is detected. - -2005-02-17 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::fstat): Set st_ctime if - has_changed flag is set. - (fhandler_disk_file::touch_ctime): Reset has_changed flag on success. - -2005-02-17 Corinna Vinschen - - * times.cc (utimes): Open files with FILE_WRITE_ATTRIBUTES first, - if that fails, try opeing with GENERIC_WRITE. Fix comments. - -2005-02-15 Christopher Faylor - - * path.h (path_conv::issocket): Return true if device == FH_UNIX rather - than expecting path_conv to set a flag. - -2005-02-11 Corinna Vinschen - - * fhandler.cc (fhandler_base::raw_write): Mark as changed on - successful write. - * fhandler.h (fhandler_base::status_flags): Add 'has_changed' flag. - * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Call - fhandler_disk_file's own open and close instead of open_fs and - close_fs. Mark as changed on success. - (fhandler_disk_file::fchown): Ditto. - (fhandler_disk_file::facl): Ditto. - (fhandler_disk_file::ftruncate): Ditto. - (fhandler_base::open_fs): Mark as changed when O_TRUNC flag on existing - file is set. - (fhandler_disk_file::close): Set st_ctime if has_changed flag is set. - -2005-02-11 Christopher Faylor - - * cygthread.cc (cygthread::release): Reset ev here if it exists. - (cygthread::terminate_thread): Eliminate racy code which reset ev and - thread_sync. Remove a few nonsensical inuse checks. Exit at the - bottom. - (cygthread::detach): Rewrite to again try to ensure that we don't say - we're signalled when we are not signalled. - * fhandler.cc (fhandler_base::raw_read): Revert to signalling read - success quickly. - * pipe.cc (fhandler_pipe::close): Use base method to close handle. - * sigproc.h (WAIT_SIG_PRIORITY): Just trundle along at normal priority - to allow the pipe thread to do its thing if possible. - - * pinfo.h (pinfo::zap_cwd): Declare new function. - (pinfo::zap_cwd): Move 'cd out of the way code' here. - (pinfo::exit): Use it here. - * spawn.cc (spawn_guts): And here. - -2005-02-11 Corinna Vinschen - - * times.cc (utimes): Open files with GENERIC_WRITE on file systems - not supporting ACLs. - -2005-02-09 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Fix checking - lseek return code. - -2005-02-08 Corinna Vinschen - - * times.cc (timeval_to_filetime): Define first parameter const. - (utimes): Define second parameter to const according to SUSv3. - (utime): Ditto. - * include/sys/utime.h (utime) : Change declaration accordingly. - -2005-02-08 Corinna Vinschen - - * cygthread.cc (cygthread::detach): Just test thread handle after - signal arrived, don't wait infinitely for it. - -2005-02-08 Christopher Faylor - - * pipe.cc (fhandler_pipe::read): Remove hold over from old read_state - implementation. - -2005-02-06 Yitzchak Scott-Thoennes - - * net.cc (cygwin_gethostbyname): Be more picky about what's a numeric - address string, and use tls in that case too. - -2005-02-07 Christopher Faylor - - * exceptions.cc: Make windows_system_directory non-static. - * pinfo.cc (pinfo::exit): Change innocuous cd'ed location to one that - is more likely to exist. - -2005-02-06 Corinna Vinschen - - * path.cc (path_conv::check): Leave symlink expansion loop in case - a not-ENOENT error happens. - - * cygheap.h (cygheap_fdmanip::fhandler_pipe *): New cast operator. - * pinfo.cc (_pinfo::commune_recv): Add PICOM_PIPE_FHANDLER handling. - (_pinfo::commune_send): Ditto. - (_pinfo::pipe_fhandler): New method. - * pinfo.h (enum picom): Add PICOM_PIPE_FHANDLER. - (_pinfo::pipe_fhandler): Declare. - * pipe.cc (fhandler_pipe::open): Rewrite. Allow to open foreign - pipe handles. - -2005-02-03 Christopher Faylor - - * cygthread.h (cygthread::terminate_thread): Reflect return value. - * cygthread.cc (cygthread::detach): Be more careful about ensuring that - sigwait is properly waited for to avoid later missynchronization. - (cygthread::terminate_thread): Return true if thread was actually - terminated and all handles were closed. - * fhandler_base.cc (fhandler_base::raw_read): Use signal_read_state - rather than raw calls to win32 api. - (fhandler_base::read): Ditto. - * fhandler.h (fhandler_pipe::fixup_after_exec): Use method to create - read_state signalling. - (fhandler_pipe::create): Ditto. - - * Makefile.in: Make some more files -fomit-frame-pointer. - -2005-02-02 Corinna Vinschen - - * fhandler.h (fhandler_base::ftruncate): Define new virtual method. - (fhandler_disk_file::ftruncate): Ditto. - * fhandler.cc (fhandler_base::ftruncate): New method. - * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Ditto. - * syscalls.cc (ftruncate64): Move functionality into fhandlers. - Call fhandler method from here. - -2005-02-02 Corinna Vinschen - - * pipe.cc (fhandler_pipe::dup): Fix conditionals in case of error. - -2005-02-02 Corinna Vinschen - - * times.cc (utimes): Mark st_ctime for update according to SUSv3. - -2005-02-01 Christopher Faylor - - * fhandler_proc.cc (format_proc_partitions): Remove PartitionType check - since it could skip over partitions that are actually interesting. - -2005-02-01 Christopher Faylor - - * cygthread.cc (cygthread::terminate_thread): Wait briefly for - notification event in the event that the thread was actually in the - process of exiting. - - * pipe.cc (fhandler_pipe::dup): read_state is not supposed to be - inheritable. Fix that. - - * path.cc (path_conv::check): Set symlen = 0 to avoid a compiler - warning. - - * devices.h (devices::parsedisk): Declare new function. - * devices.in (devices::parsedisk): Define new function. - * dtable.cc (dtable::init_std_file_from_handle): Use device numbers - rather than name. - * fhandler_proc.cc (format_proc_partitions): Use parsedisk to generate - disk names from numeric codes. (This was broken on two of my - systems previously and is still broken now) - -2005-02-01 Corinna Vinschen - - * pipe.cc (fhandler_pipe::open): Allow re-opening of /proc//fd - pipes of the current process. - -2005-02-01 Corinna Vinschen - - * fhandler.cc (fhandler_base::get_proc_fd_name): Don't generate - "device:" entry. - * fhandler.h (fhandler_socket::open): New method. - (fhandler_pipe::open): New method. - * fhandler_proc.cc (fhandler_proc::exists): Return -2 in case of - /proc/self. - * fhandler_process.cc (fhandler_process::exists): Return -2 in - case of symlinks, -3 for pipes and -4 for sockets. - (fhandler_process::fstat): Handle pipes and sockets. - (fhandler_process::open): Handle opening /proc//fd. - (fhandler_process::fill_filebuf): Generate empty names for - non exisiting file descriptors. - * fhandler_socket.cc (fhandler_socket::get_proc_fd_name): Always - generate "socket:[number]" strings as on Linux. - (fhandler_socket::open): New method. - (fhandler_socket::fstat): Always return socket type. - * path.cc (symlink_info::set): Remove unused second parameter. - (path_conv::check): Handle pipes and sockets in /proc. - Set correct device type for AF_LOCAL sockets. - * pinfo.cc (_pinfo::commune_recv): Generate empty names for - non exisiting file descriptors. - (_pinfo::fd): Ditto. - * pipe.cc (fhandler_pipe::open): New method. - -2005-01-31 Christopher Faylor - - * path.h (path_conv::set_name): Declare new function. - * path.cc (path_conv::set_name): Define new function. - * fhandler.h (fhandler_dev_null::open): Declare new function. - * fhandler.cc (fhandler_dev_null::open): Define new function. - -2005-01-31 Christopher Faylor - - * smallprint.c (rnarg): Use long rather than unsigned long so that we - get proper sign extension. - -2005-01-31 Corinna Vinschen - - * environ.cc (set_traverse): New function. - (parse_thing): Add "traverse" option. Sort options alphabetically. - (environ_init): On NT, switch on traverse checking by default. - -2005-01-31 Christopher Faylor - - * smallprint.c (__rn): Regparmize. - -2005-01-31 Christopher Faylor - - * smallprint.c (rnarg): New macro. - (rnargLL): Ditto. - (__rn): Rename from 'rn', add a mask argument, and use the mask - argument to control how many significant digits to care about. - (__small_vsprintf): Use __rn, rnarg, rnargLL, as appropriate. - -2005-01-31 Christopher Faylor - - * pinfo.cc (pinfo::exit): Only return low-order 16 bits when exiting. - -2005-01-31 Corinna Vinschen - - * fhandler_process.cc (format_process_maps): Get destbuf argument by - reference. Allow resizing of destbuf as necessary. Fix string - handling. - -2005-01-31 Corinna Vinschen - - * cygheap.h (class cygheap_fdenum): New class to enumerate used - fhandlers. - * dtable.h (class dtable): Add cygheap_fdenum as friend class. - * fhandler.h (fhandler_base::get_proc_fd_name): New virtual method - to return a name for /proc//fd. - (fhandler_socket::get_proc_fd_name): Ditto. - (fhandler_pipe::get_proc_fd_name): Ditto. - (fhandler_virtual::opendir): Make virtual method. - (fhandler_process::opendir): New method. - * fhandler.cc (fhandler_base::get_proc_fd_name): New method. - * fhandler_process.cc: Include ctype.h. - (PROCESS_FD): Define. - (process_listing): Add "fd". - (fhandler_process::exists): Fix comment. Return 1 in case of "fd" - directory. Handle files below "fd". - (fhandler_process::fstat): Drop "self" handling. Set correct link - count for directories. - (fhandler_process::opendir): New method to handle "fd" directory. - (fhandler_process::readdir): Add "fd" handling. - (fhandler_process::open): Drop "self" handling. - (fhandler_process::fill_filebuf): Ditto. Add "fd" handling. Fix - "maps" output string. - * fhandler_registry.cc (fhandler_registry::fstat): Set correct link - count for directories. - * fhandler_socket.cc (fhandler_socket::get_proc_fd_name): New method. - * path.cc (symlink_info::set): Fix thinko. - * pinfo.cc (_pinfo::commune_recv): Rename pathbuf to path throughout. - Drop local path variable in PICOM_FIFO case. Fix debug output. - Close handles as early as possible. Add PICOM_FDS and PICOM_FD - handling. - (_pinfo::commune_send): Add PICOM_FDS and PICOM_FD handling. - (_pinfo::fd): New method. - (_pinfo::fds): New method. - * pinfo.h (enum picom): Add PICOM_FDS and PICOM_FD. - (_pinfo::fd): Declare. - (_pinfo::fds): Declare. - * pipe.cc (fhandler_pipe::get_proc_fd_name): New method. - -2005-01-29 Corinna Vinschen - - * smallprint.c (rn): Change uval to unsigned long long to fix 64 bit - handling. - * fhandler_process.cc (format_process_maps): Print major, minor and - inode numbers correctly. - -2005-01-29 Corinna Vinschen - - * autoload.cc (GetModuleFileNameExA): Add. - (GetModuleInformation): Add. - (QueryWorkingSet): Add. - * fhandler.h (fhandler_virtual::get_filebuf): New method. - * fhandler_proc.cc (PROC_SELF): Define. - (proc_fhandlers): Change type of self to FH_PROC. - (fhandler_proc::exists): Return -3 if self. - (fhandler_proc::fstat): Handle self as symlink. - (fhandler_proc::fill_filebuf): Handle self. - * fhandler_process.cc: Include psapi.h. - (PROCESS_EXENAME): Remove. - (PROCESS_MAPS): Define. - (PROCESS_ROOT): Define. - (PROCESS_EXE): Define. - (PROCESS_CWD): Define. - (process_listing): Remove "exename", add "maps, "root", "exe" and - "cwd" elements. - (fhandler_process::exists): Return -2 for symlinks. - (fhandler_process::fstat): Handle symlinks. - (fill_filebuf): Evaluate pid if pid is 0. Use exename handling for - exe. Handle maps, root and cwd. - (format_process_maps): New function evaluating "maps". - * path.cc (symlink_info::set): New method to fill symlink_info - with data matching virtual symlinks. - (path_conv::check): Handle virtual symlinks. - * pinfo.cc (_pinfo::commune_recv): Add PICOM_CWD and PICOM_ROOT - handling. - (_pinfo::commune_send): Ditto. - (_pinfo::root): New function. - (_pinfo::cwd): New function. - * pinfo.h (enum picom): Add PICOM_CWD and PICOM_ROOT. - (_pinfo::root): Declare. - (_pinfo::cwd): Declare. - -2005-01-29 Christopher Faylor - - * cygthread.cc (new): Add a little more debugging. - * thread.cc (pthread_null::exit): Add a _my_tls.remove() for safety. - -2005-01-28 Christopher Faylor - - * cygtls.cc (cygtls::call2): Move socket cleanup. - (cygtls::remove): Move socket cleanup here. Don't use _my_tls to - reference it. - -2005-01-26 Christopher Faylor - - * pinfo.cc (pinfo::init): Avoid a compiler warning. - -2005-01-25 Corinna Vinschen - - * syscalls.cc (setpriority): Implement PRIO_PGRP, PRIO_USER and - setting priority in other Cygwin processes. - (getpriority): Implement PRIO_PGRP, PRIO_USER and getting nice value - from other processes. - -2005-01-26 Pierre Humblet - - * path.cc (path_conv::check): Return ENOTDIR rather than ENOENT - when a component is not a directory. Remove unreachable code. - (digits): Delete. - -2005-01-25 Christopher Faylor - - * pinfo.h (pinfo::init): Make third parameter non-optional and - propagate change throughout. - * pinfo.cc (set_myself): Pass INVALID_HANDLE_POINTER if h is NULL. - (pinfo::init): Make third parameter non-optional. Eliminate use of - PID_EXECED as an argument. Put setting of handle back inside loop but - reorganize to try to open it only when necessary. - -2005-01-25 Corinna Vinschen - - * cygwin.din: Export getpriority and setpriority. - * fork.cc (fork_parent): Copy parent's nice value into child. - * spawn.cc (spawn_guts): Ditto. - * miscfuncs.cc (winprio_to_nice): New function. - (nice_to_winprio): Ditto. - * pinfo.cc (pinfo_init): If parent is not a Cygwin process, set - default nice value according to current Win32 priority class. - * pinfo.h (class _pinfo): Add nice member. - * syscalls.cc (setpriority): New function, only implementing - PRIO_PROCESS for now. - (getpriority): Ditto. - (nice): Just call setpriority. - * wincap.h (wincaps::has_extended_priority_class): New element. - * wincap.cc: Implement above element throughout. - * winsup.h: Add prototypes for winprio_to_nice and nice_to_winprio. - * include/limits.h (NZERO): New define. - * include/cygwin/types.h (id_t): New datatype. - * include/cygwin/version.h: Bump API minor version. - * include/sys/resource.h: Add PRIO_XXX defines and prototypes for - getpriority and setpriority. - -2005-01-25 Corinna Vinschen - - * path.cc (realpath): Allow to expand with .exe suffix. - -2005-01-22 Christopher Faylor - - * spawn.cc (spawn_guts): Perform same "cd" as in pinfo::exit below to - make sure that a stub process does not keep the current working - directory busy after the "execed" process has exited. - -2005-01-22 Christopher Faylor - - * pinfo.cc (pinfo::init): Move everything but the MapViewOfFileEx out - of the loop since trying multiple times to call CreateFileMapping - doesn't make much sense. Try to structure the loop a little better so - that exiting with a break does the right thing. - (pinfo::release): Release shared memory area if it exists and close - handle if it exists. - -2005-01-22 Christopher Faylor - - * pinfo.cc (pinfo::maybe_set_exit_code_from_windows): Make sure that - process has exited before getting an error code. - (pinfo::exit): "cd" to innocuous location before exiting to make sure - that process does not keep the current working directory busy while it - is in the process of really exiting. - -2005-01-18 Corinna Vinschen - - * autoload.cc (CoInitialize): Remove. - (CoUninitialize): Remove. - (CoCreateInstance): Remove. - (CoTaskMemFree): Add. - (SHGetDesktopFolder): Add. - * path.cc (shortcut_header): Remove. - (shortcut_initalized): Remove. - (GUID_shortcut): New static GUID. - (struct win_shortcut_hdr): New struct describing Windows shortcut - header structure. - (symlink_worker): Rewrite creating Windows shortcuts. Create - ITEMIDLIST if target exists. Only write once. - (cmp_shortcut_header): Use win_shortcut_hdr structure for comparison. - (check_shortcut): Rewrite to read only once from file. Allow skipping - an ITIMIDLIST in the file. - -2005-01-16 Christopher Faylor - - * pinfo.h (maybe_set_exit_code_from_windows): Renamed from - set_exit_state. - * pinfo.cc (pinfo::exit): Use renamed function. - (proc_waiter): Ditto. Make a copy of input argument to avoid problems - when procs array is shuffled. Flag when copy is made so that - remove_proc knows when it is safe to reshuffle. - * sigproc.cc (proc_terminate): Don't flag process_state as PID_EXITED. - (remove_proc): Wait for waiter to finish copying pinfo element before - moving it (an actual wait should be an extremely rare event). - -2005-01-15 Christopher Faylor - - * init.cc (dll_entry): Remove unused extern. - - * include/sys/cygwin.h: Remove PID_ZOMBIE. - * pinfo.h: Rename EXITCODE_* defines. - (pinfo::set_exit_state): Remove parameter. - * pinfo.cc (set_exit_state): Remove parameter. Reverse sense of test - so that exitcode is checked for having been set rather than not having - been set. Set flag when exitcode has been established. Don't set - PID_STATE here. - (pinfo::init): Remove exitcode initialization. - (pinfo::exit): Reflect change in EXITCODE_* naming. Set flag when - exitcode has been established. Reflect change in arguments to - set_process_state. - (proc_waiter): Reflect change in arguments to set_process_state. Set - process_state here and only here. - * fhandler_process.cc (fhandler_process::fill_filebuf): Reflect removal - of PID_ZOMBIE define. - (format_process_stat): Ditto. - (format_process_status): Ditto. - * sigproc.cc (pid_exists): Ditto. - (stopped_or_terminated): Ditto. Make sure that only low-order 16 bits of - exitcode are used. - * spawn.cc (spawn_guts): Reflect change in EXITCODE_* naming. - -2005-01-15 Christopher Faylor - - * sigproc.cc (sig_send): Don't complain if attempt to send signal to - myself fails after I've "execed". - -2005-01-14 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_disk_file::facl): Pretend successful - SETACL if no acls are available. - * fhandler.cc (fhandler_base::facl): Implement to return sensible - values on GETACL and GETACLCNT. Pretend successful SETACL. - * fhandler_virtual.cc (fhandler_virtual::facl): Ditto. - -2005-01-13 Corinna Vinschen - - * fhandler.h (fhandler_disk_file::touch_ctime): Declare. - * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): New method - to set file's ctime. - (fhandler_disk_file::fchmod): Try opening file for writing first. - Set file's ctime on success. - (fhandler_disk_file::fchown): Ditto. - (fhandler_disk_file::facl): Ditto. - -2005-01-13 Corinna Vinschen - - * pinfo.cc (pinfo::exit): Don't access self after releasing it. - * path.h (path_conv::path_conv): Fill path with native device - name in case of device argument. - -2005-01-13 Corinna Vinschen - - * fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup - for child, not for parent. - -2005-01-13 Christopher Faylor - - * init.cc (dll_entry): Nuke attempt to set exit code since parent will - use windows exit code if needed. - * pinfo.cc (pinfo::exit): Move release() here to minimize pid creation - race (suggested by Pierre Humblet). - -2005-01-12 Christopher Faylor - - Reorganize header file inclusion throughout so that cygerrno.h comes - first. - * fhandler.h (select_record::thread_errno): Save any encountered errno - here. - (select_record::set_select_errno): New function. - (select_record::saw_error): New function. - (select_record::select_record): Initialize thread_errno to zero. - * select.cc (set_handle_or_return_if_not_open): Set thread_errno on - failure. - (select_stuff::wait): Record errno for later resurrection in calling - thread. - (peek_serial): Ditto. - -2005-01-12 Christopher Faylor - - * syscalls.cc (system): Use "/bin/sh" as per linux and (sorta) SUSv3. - -2005-01-12 Christopher Faylor - - * pinfo.cc (pinfo::exit): Don't assume that this == myself. - -2005-01-11 Christopher Faylor - - * pinfo.cc (pinfo::init): Don't close input handle on temporary (?) - failure. - -2005-01-11 Christopher Faylor - - * pinfo.h (_pinfo::set_exit_state): Declare new function. - (pinfo::exit): Move here from _pinfo::exit. - * sigproc.cc (child_info::sync): Use new function to set exitcode and - process_state. - * pinfo.cc (_pinfo::exit): Ditto. - (proc_waiter): Ditto. - (_pinfo::set_exit_state): Define new function. - (_pinfo::dup_proc_pipe): Close handle when there is no parent process - around to care about the exit value. - * dcrt0.cc (dll_crt0_0): Move subproc_ready synchronization later to - make sure that myself is still mapped in parent. - (do_exit): Reflect movement to pinfo::exit. - (__api_fatal): Ditto. - * exceptions.cc (signal_exit): Ditto. - * errno.cc (errmap): Map PROC_NOT_FOUND. - * init.cc (dll_entry): Release myself before exiting. - * sigproc.cc (proc_can_be_signalled): Set errno appropriately. - (sig_send): Ditto. Also remove ill-advised test for !myself->sendsig - since this is an indication of a process which is still initializating - -- it is not an error. - (child_info::sync): Don't set exitcode here. Assume that will happen - in proc_waiter, if necessary. - * spawn.cc (spawn_guts): Delay "wait_for_myself" logic until later. - Don't wait at all if the process has already exited. Reflect movement - to pinfo::exit. - -2005-01-11 Corinna Vinschen - - * environ.cc (build_env): Disallow empty strings and strings starting - with '=' in Win32 environment. - -2005-01-08 Pierre Humblet - - * syscalls.cc (seteuid32): Only change the default dacl when - seteuid succeeds. Do not close HKCU. - -2005-01-06 Corinna Vinschen - - * fhandler_process.cc: Use strcasematch instead of strcasecmp - throughout. - -2005-01-06 Corinna Vinschen - - * syscalls.cc (rename): Fix behaviour in case of renaming directories - according to SUSv3. - -2005-01-06 Corinna Vinschen - - * fhandler_disk_file.cc (fhandler_base::open_fs): Don't allow - opening directories for writing. - -2005-01-06 Christopher Faylor - - * timer.cc (timer_thread): Pass sigev pointer value as per SuSv3 rather - than pointer to sigev. - -2005-01-05 Christopher Faylor - - * dcrt0.cc (multiple_cygwin_problem): Reorganize error message to not - always talk about a "version" when it's not a version. - (dll_crt0_0): Change info passed to multiple_cygwin_problem to be a - little more precise. - * shared.cc (user_shared_initialize): Ditto. - (shared_info::initialize): Ditto. - -2005-01-03 Christopher Faylor - - * pinfo.cc (_pinfo::dup_proc_pipe): Can't close proc pipe when execing - or we will suffer an exit code race. - -2005-01-03 Corinna Vinschen - - * signal.cc (abort): Call _GLOBAL_REENT's __cleanup. - -2005-01-03 Corinna Vinschen - - * syscalls.cc (setmode): Call _fwalk with _GLOBAL_REENT. - -2005-01-01 Christopher Faylor - - * cygthread.cc (cygthread::stub): Set inuse to false when exiting. - (cygthread::cygthread): Actually pass name as argument to debugging - output to avoid SEGV when strace'ing. - (cygthread::release): Don't set stack_ptr to NULL, since it is only set - once on first entry to a stub not on each stub iteration. - (cygthead::exit_thread): Remove obsolete function. - * cygthread.h (cygthread::exit_thread): Ditto. - -2005-01-01 Christopher Faylor - - * shared.cc (open_shared): Don't attempt VirtualAlloc magic if first - attempt to map memory fails. diff --git a/winsup/cygwin/ChangeLog-2005 b/winsup/cygwin/ChangeLog-2005 new file mode 100644 index 000000000..bde958055 --- /dev/null +++ b/winsup/cygwin/ChangeLog-2005 @@ -0,0 +1,5812 @@ +2005-12-31 Corinna Vinschen + + * syslog.cc (vsyslog): Decrement len if trailing \n has been removed. + Add \n when writing to stderr if LOG_PERROR option is set. + +2005-12-31 Corinna Vinschen + + * include/cygwin/in.h: Drop including stdint.h. Move definition + of in_port_t and in_addr_t to top of file and use throughout. Use + sa_family_t type where appropriate. + (struct in6_addr): Change `unsigned char' to `uint8_t'. + (struct sockaddr_in6): Add sin6_scope_id member. Add comments. + * include/cygwin/socket.h: Include stdint.h. Move definition of + socklen_t to top of file. Define sa_family_t. Define struct + sockaddr_storage as per SUSv3. + * include/sys/un.h: Include cygwin/socket.h. Use sa_family_t type. + +2005-12-29 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Use + strace method rather than accessing field directly. + (fhandler_tty_common::__release_output_mutex): Ditto. + +2005-12-29 Christopher Faylor + + * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. + (child_info::dwProcessId): Delete. + (child_info::straced): New variable. + (child_info::handle_fork): New member function. + * dcrt0.cc (in_forkee): New global variable. + (__cygwin_user_data::forkee): Mark as obsolete. + (do_global_ctors): Use in_forkee rather than user_data->forkee. + (get_cygwin_startup_info): Ditto. Deal with new straced field to allow + strace to deal with children of attached processes. + (initial_env): Accommodate changes to strace::hello. + (child_info_fork::handle_fork): Rename from plain old 'handle_fork'. + Move alloc_stack() call elsewhere. + (dll_crt0_0): Fill out more of user_data. Reference handle_fork via + fork_info. Add some debugging output. + (_dll_crt0): Don't wait for sync thread if sync_startup is invalid. + Zero sync_startup here. Call alloc_stack() here, if appropriate. + (dll_crt0_1): Use in_forkee rather than user_data->forkee. + (dll_crt0): Ditto. + * malloc_wrapper.cc (malloc_init): Ditto. + * dll_init.cc (in_forkee): Remove local static version of this + variable. + (dll_list::load_after_fork): Don't set in_forkee here. + * external.cc (cygwin_internal): Use strace method rather than + accessing field directly. + * fhandler.cc (fhandler_base::read): Ditto. + * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Ditto. + * fork.cc (frok::parent): Invoke strace write_childpid to communicate + with potential strace. + (child_copy): Add more detail to debugging output. + * init.cc (calibration_id): New static variable. + (prime_threads): Set sync_startup to invalid handle if we already know + about thread_func_ix. Use static calibration_id to hold calibration + thread id. + * munge_threadfunc (munge_threadfunc): Don't try to debug if we don't + find threadfunc_ix. + (dll_entry): Avoid calling munge_threadfunc and _cygtls::remove on + non-cygwin threads invoked during process startup. + * pinfo.cc (set_myself): Always call strace.hello here regardless of + DEBUGGING. + * sigproc.cc (child_info::child_info): Remove spurious handling of + dwProcessId. Set straced as appropriate. + * spawn.cc (spawn_guts): Rename ciresrv to ch. Invoke strace + write_childpid to communicate with potential strace. + * strace.cc: Include child_info.h. + (strace::hello): Remove inited test. Use active() method to test if + strace has been activated. Handle case where we are started before + (mypid): New function. + (strace::vsprntf): Try to deal more intelligently with case where + progname may not be filled out. Put pid in parentheses if it is a + windows pid rather than a cygwin pid. myself has been filled out. + (strace::write_childpid): New function for notifying strace about the + creation of children. + (strace::vprntf): Use strace method rather than accessing field + directly. + (strace_printf): Ditto. + (strace::wm): Ditto. + * winsup.h (in_forkee): Declare. + * include/sys/strace.h (strace::write_childpid): Declare new function. + (strace::attached): Define new function. + (strace::active): Ditto. + (strace::active_val): Ditto. + (_STRACE_ON): Delete. + (_STRACE_OFF): Ditto. + (define_strace0): Use strace method rather than accessing field + directly. + (strace_printf_wrap): Ditto. + (strace_printf_wrap1): Ditto. + +2005-12-28 Christopher Faylor + + * environ.cc (win_env::add_cache): Don't add variables to the + environment during initialization. + +2005-12-27 Corinna Vinschen + + * exceptions.cc (_cygtls::handle_exceptions): Drop redundant `break'. + +2005-12-27 Corinna Vinschen + + * exceptions.cc (inside_kernel): Rename from interruptible. + Accommodate change throughout file. + +2005-12-27 Corinna Vinschen + + * exceptions.cc (interruptible): New function, code stripped from + _cygtls::interrupt_now. + (_cygtls::handle_exceptions): Handle STATUS_DATATYPE_MISALIGNMENT as + SIGBUS error. Differ between unmapped memory (SEGV_MAPERR) and access + violation (SEGV_ACCERR) in case of STATUS_ACCESS_VIOLATION. Write + kernel log message in case of uncatched STATUS_ACCESS_VIOLATION. + (_cygtls::interrupt_now): Just call interruptible now instead of + evaluating interruptibility here. + +2005-12-27 Corinna Vinschen + + * path.cc (path_conv::check): Rework loop removing trailing dots + and spaces. + + * syslog.cc (vklog): Set facility to LOG_KERN if not set. + +2005-12-26 Christopher Faylor + + * dcrt0.cc (__api_fatal): Simplify to just use strace mechamisms. + (do_exit): Move minimal_printf... + * pinfo.cc (pinfo::exit): ...into here. + * strace.cc (strace::vprntf): Guarantee output to the console when + system_printf/api_fatal. + + * heap.cc (heap_init): Wait a second before issuing an error when + ERROR_INVALID_ADDRESS since this is probably due to a CTRL-C handler + sneaking in, using the memory that we want to use for the heap, and, + eventually exiting. + +2005-12-23 Christopher Faylor + + * cygtls.cc (_cygtls::handle_threadlist_exception): Make an error + fatal. + * cygtls.h (sockaddr_in): Use header rather than defining our own + structure. + * exceptions.cc (_cygtls::interrupt_setup): Use exact contents of + sa_mask rather than assuming that current sig should be masked, too. + (_cygtls::call_signal_handler): Use more aggressive locking. + * gendef (_sigbe): Wait until later before releasing incyg. + (_sigreturn): Remove more arguments to accommodate quasi-sa_sigaction + support. + (_sigdelayed): Push arguments for sa_sigaction. More work needed here. + * signal.cc (sigaction): Implement SA_NODEFER. + * tlsoffsets.h: Regenerate. + + * sigproc.cc (wait_sig): Use default buffer size or Windows 9x complains + + * pinfo.cc (_onreturn::dummy_handle): Remove. + (_onreturn::h): Make this a pointer. + (_onreturn::~_onreturn): Detect whether pointer is NULL rather than + value is NULL. + (_onreturn::_onreturn): Set h to NULL initially. + (_onreturn::no_close_p_handle): Set h to NULL. + (winpids::add): Initialize onreturn with value from p.hProcess + immediately. + +2005-12-22 Christopher Faylor + + * fork.cc (fork): Honor error return from sig_send. Don't continue + with fork if we couldn't suspend signals. + * sigproc.cc (sig_send): Set sigCONT event when we see __SIGNOHOLD. + (wait_sig): Remove holding_signals. Create pipe with a buffer which + will theoretically cause blocking if there is nothing reading on the + pipe. Wait for sigCONT at end of loop when we have a __SIGHOLD. + +2005-12-22 Corinna Vinschen + + * fhandler.h (fhandler_base::issymlink): New method. + * syscalls.cc (open): Handle O_NOFOLLOW flag. + * include/fcntl.h (_FNOFOLLOW): New define. + (O_NOFOLLOW): Ditto. + * include/cygwin/version.h: Bump API minor number. + +2005-12-22 Christopher Faylor + + * pinfo.cc (winpids::add): Increment nelem when winpid is true since we + don't care if it's a cygwin process in that case. + +2005-12-22 Christopher Faylor + + * pinfo.cc (winpids::release): Fix typo. + +2005-12-21 Christopher Faylor + + * pinfo.cc (pinfo::init): Clarify comment slightly. + (_onreturn): New helper class. + (winpids:add): Remove copied stuff. Try to put process handle into + pinfo in question and use _onreturn class to control when to close it. + (winpids::release): Remove use of copied array. Free procinfo when + hProcess is NULL. Otherwise call release and call CloseHandle on + hProcess. + * pinfo.h (winpids::copied): Remove throughout class. + +2005-12-21 Christopher Faylor + + * pinfo.cc (pinfo::init): Remove spurious low_priority_sleep. + +2005-12-21 Christopher Faylor + + * spawn.cc (spawn_guts): Hide the window whenever ctty == -1, not just + when we have no console. + +2005-12-21 Christopher Faylor + + * cygheap.cc (init_cygheap::manage_console_count): Revert previous + change. Handle this a different way. + * external.cc (cygwin_internal): Accommodate extra + hook_or_detect_cygwin argument. + * hookapi.cc (cygwin_internal): Fill in subsys variable with the + subsystem of the executable. + * spawn.cc (av::iscui): New variable. + (spawn_guts): Hide window when we don't have a console and this isn't + NT/XP/2003. + (av::fixup): Set iscui flag. + * winsup.h (hook_or_detect_cygwin): Accommodate extra argument. + +2005-12-21 Christopher Faylor + + * cygheap.cc (init_cygheap::manage_console_count): Don't call + FreeConsole on 9x/Me. + +2005-12-21 Corinna Vinschen + + * (fhandler_disk_file::fchown): Remove execute bits from "sensible" + permissions. Use same setting as in symlink. + +2005-12-21 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix inode number + debug output. + (fhandler_disk_file::fchown): Always set sensible permission values + when creating the ACL for symlinks. + +2005-12-20 Corinna Vinschen + + * winsup.h (flush_file_buffers): Define as inline function. + * miscfuncs.cc (flush_file_buffers): Remove. + +2005-12-20 Corinna Vinschen + + * winsup.h (flush_file_buffers): Declare new function. + (FLushFileBuffers): New define. + * miscfuncs.cc (flush_file_buffers): Define new function. + +2005-12-20 Christopher Faylor + + * fhandler.h (fhandler_termios::fixup_after_exec): Make non-inlined. + * fhandler_termios.cc (fhandler_termios::fixup_after_exec): Don't call + fixup_after_fork if close_on_exec'ed. + +2005-12-19 Christopher Faylor + + * cygtls.h (_cygtls::interrupt_now): Subsume interruptible(). + (interruptible): Delete. + (setup_handler): Remove interruptible call and just use return from + interrupt_now. + +2005-12-19 Christopher Faylor + + * fhandler.h (set_console_state_for_spawn): Add an argument to the + declaration. + * fhandler_console.cc (set_console_state_for_spawn): Ditto for the + definition. Only set invisible console for non-cygwin process. Remove + debugging leftover. + * spawn.cc (spawn_guts): Pass argument denoting whether this is a + cygwin process to set_console_state_for_spawn and only call this + function when exec'ing. + +2005-12-19 Corinna Vinschen + + * mmap.cc (fhandler_dev_zero::mmap): Call VirtualFree(MEM_RELEASE) + with zero length parameter, otherwise it fails. + (fhandler_dev_zero::munmap): Ditto. + +2005-12-18 Christopher Faylor + + * fhandler.h (fhandler_console::invisible_console): Declare new + variable. + (fhandler_pipe::fixup_in_child): Declare new function. + (fhandler_console::need_invisible): Ditto. + (fhandler_console::has_a): Ditto. + * fhandler_console.cc (set_console_state_for_spawn): Eliminate return + value. Set up an invisible console if necessary prior to spawning. + (fhandler_console::invisible_console): Define. + * fhandler_tty.cc (fhandler_tty_slave::open): Use + fhandler_console::invisible_console to setup an invisible console. + * pipe.cc (fhandler_pipe::fixup_in_child): Define new function from + fixup_after_exec. + (fhandler_pipe::fixup_after_exec): Use fixup_in_child when appropriate. + (fhandler_pipe::fixup_after_fork): Ditto. + * spawn.cc (handle): Reorganize and modernize a little. + (spawn_guts): Rely on set_console_state_for_spawn to set the console + into the right state but don't create the process with "detached" flag + if we have no controlling tty since that confuses 'cmd'. + * dtable.cc (dtable::stdio_init): Don't set console as controlling + terminal if we have an invisible console. + + * sigproc.cc (child_info::sync): Use correct name in ForceCloseHandle1. + +2005-12-18 Christopher Faylor + + * include/sys/dirent.h: Change __deprecated_d_ino to __invalid_d_ino + throughout to make things a little clearer. + * dir.cc (readdir_worker): Reflect above change. + +2005-12-16 Christopher Faylor + + * winsup.h (child_copy): Change prototype to match new functionality. + * cygheap.cc (cygheap_fixup_in_child): Accommodate new child_copy + arguments. + * dcrt0.cc (dll_data_start): Move definition here from fork. + (dll_data_end): Ditto. + (dll_bss_start): Ditto. + (dll_bss_end): Ditto. + (handle_fork): New function. Called when forked to deal with fork + issues and copy data to this process from the parent. + (dll_crt0_0): Call handle_fork when _PROC_FORK condition. + (dll_crt0): Don't copy user_data when we've forked. Don't zero first + element of main_environment ever. + (cygwin_dll_init): Ditto. + * fork.cc (child_copy): Rename from fork_copy and change arguments so + that each pair of things to copy gets its own descriptor. + (frok::child): Remove fixup_mmaps_after_fork call here. Move to + handle_fork in dcrt0.cc. + (frok::parent): Use child_copy rather than fork_copy and accommodate + changes in parameters. + + * exceptions.cc (setup_handler): Delay test of whether we're locked + until after GetThreadContext has been called since there are apparently + cases where SuspendThread does not cause an immediate thread + suspension. + +2005-12-16 Christopher Faylor + + * init.cc (dll_entry): Call prime_threads after dll_crt0_0 to avoid + conflicts between heap allocation and thread stack allocation. + +2005-12-16 Christopher Faylor + + * hookapi.cc (putmem): Remove query of previous memory protection since + we get that for free the first time we call VirtualProtect. + +2005-12-15 Corinna Vinschen + + * mmap.cc (fhandler_dev_zero::fixup_mmap_after_fork): Use + system_printf like any other fixup_mmap_after_fork. + +2005-12-14 Corinna Vinschen + + * fhandler.cc (ACCFLAGS): Remove macro. + (fhandler_base::get_default_fmode): Use O_ACCMODE instead of ACCFLAGS + and or'ed read/write flags. + (fhandler_base::open_9x): Use O_ACCMODE instead of or'ed read/write + flags. + (fhandler_base::open): Ditto. + * fhandler_disk_file.cc (fhandler_base::open_fs): Ditto. + * fhandler_mem.cc (fhandler_dev_mem::open): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::open): Ditto. + +2005-12-14 Corinna Vinschen + + * fhandler.cc (fhandler_base::open_9x): Handle O_SYNC and O_DIRECT + flags. + (fhandler_base::open): Ditto. + * fhandler_floppy.cc (fhandler_dev_floppy::open): Don't allocate devbuf + in O_DIRECT case. + * fhandler_raw.cc (fhandler_dev_raw::ioctl): Don't allow buffer + changes in O_DIRECT case. Allow returning a buffer size 0, which + indicates O_DIRECT. + * fhandler_tape.cc (fhandler_dev_tape::open): Use O_SYNC flag to + hand down the !buffer_writes case. Don't allocate devbuf in O_DIRECT + case. + (fhandler_dev_tape::raw_read): Don't mess with devbuf if it's NULL. + * include/fcntl.h: Define _FDIRECT, O_DIRECT, O_DSYNC and O_RSYNC. + * include/cygwin/version.h: Bump API minor version. + +2005-12-13 Christopher Faylor + + * cygtls.cc (_cygtls::remove): Don't bother if we're exiting. + * sigproc.cc (_cygtls::remove_wq): Ditto. + +2005-12-13 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty::open): Enhance comment. + +2005-12-13 Corinna Vinschen + + * fhandler_tty.cc (fhandler_tty::open): Close newly created window + station after switching to original window station. + +2005-12-13 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty::open): Add a comment. + +2005-12-12 Christopher Faylor + + * times.cc (hires_ms::usecs): Subtract from slop from system time or + we'll always end up priming the pump. + +2005-12-12 Nick Duffek + + * times.cc (systime): Correct precision referenced in comment. + +2005-12-12 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave::open): Don't free original + windows station since that will cause strange problems displaying + fonts. Reset windows station to original station after creating + console. + * times.cc (hires_ms::usecs): Only reprime when calculated time is less + than system time. + +2005-12-12 Christopher Faylor + + * pinfo.cc (winpids::add): Don't copy procinfo when there is no cygwin + process associated with the pid, i.e., procinfo == NULL. + +2005-12-12 Christopher Faylor + + * times.cc (hires_ms::usecs): Correct order when checking if high + precision time is <= current time. + +2005-12-12 Christopher Faylor + + * pinfo.cc (size_copied): New convenience macro. + (winpids::add): Alias the element that we are working on for slightly + better clarity. Honor the "make_copy" flag. + (winpids::release): Free and zero procinfo field if it was allocated + via malloc. + (winpids::~winpids): Free copied array. + * pinfo.h (class pinfo): Make winpids class a friend. + (winpids::make_copy): New field. + (winpids::copied): New array. + (winpids::reset): Reset npids after releasing pinfos or suffer a memory + leak. + (winpids::winpids): Try harder to zero all fields in the class. + +2005-12-12 Corinna Vinschen + + * autoload.cc (GetSystemTimes): Remove. + +2005-12-12 Corinna Vinschen + + * fhandler_proc.cc (format_proc_uptime): Drop usage of GetSystemTimes. + Use NtQuerySystemInformation to evaluate uptime and idle_time from + all CPU's processor times. Fallback to GetTickCount. + +2005-12-12 Corinna Vinschen + + * mmap.cc (gen_create_protect): Always generate WRITECOPY protection + for private maps. + (fixup_mmaps_after_fork): Fix calculation of WRITECOPY protection for + VirtualProtect. Add some words to the comment. + +2005-12-10 Christopher Faylor + + * dirent.h: Change the rest of the d_ino's to __deprecated_d_ino. + +2005-12-10 Christopher Faylor + + * malloc.cc: Update to version 2.8.3. + * cygmalloc.h (MSPACE): Remove unneeded definition. + +2005-12-08 Corinna Vinschen + + * fhandler_raw.cc (fhandler_dev_raw::ioctl): Only allow 0, 1 or a + multiple of 512 as new buffersize. + +2005-12-08 Pekka Pessi + Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::recvfrom): Mask flags with + MSG_WINMASK for Windows socket calls. + (fhandler_socket::recvmsg): Ditto. + (fhandler_socket::sendmsg): Ditto. + +2005-12-07 Christopher Faylor + + * hires.h (hires_ms::initime_ms): Delete. + (hires_ms::initime_us): Just define as LONGLONG. + (hires_ms::uptime): New function. + * select.cc (select_stuff::wait): Use gtod for timing to attempt to + avoid windows 32 bit wraparound. + * times.cc (systime): New function. + (times): Replace GetTickCount with gtod.uptime. + (hires_us::prime): Use systime() to calculate system time rather than + calling GetSystemTimeAsFileTime directly. + (hires_ms::prime): Ditto. Eliminate initime_ms. + (hires_ms::usecs): Try harder to detect wraparound. + + * fhandler_proc.cc (format_proc_partitions): Set drive_size to zero to + avoid a compiler warning. + +2005-12-07 Corinna Vinschen + + * fhandler_proc.cc (format_proc_partitions): Use modern IOCTLs + to determine drive size as far as possible. + +2005-12-07 Corinna Vinschen + + * fhandler_raw.cc (fhandler_dev_raw::ioctl): Fix INVALID_PARAMETER + condition. Only copy devbuf to buf if buf is non-NULL. + +2005-12-07 Corinna Vinschen + + * fhandler_raw.cc (fhandler_dev_raw::ioctl): Fix setting devbuf + when rd_parm is 0 or 1. + +2005-12-07 Corinna Vinschen + + * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Fix test for + valid file position at EOM. + +2005-12-07 Christopher Faylor + + * include/cygwin/stdlib.h: Guard compilation of *unsetenv* in newlib. + +2005-12-07 Corinna Vinschen + + * exceptions.cc (_cygtls::handle_exceptions): In case of a + STATUS_ACCESS_VIOLATION, check if the page is a mmaped page beyond + a file's EOF. Generate SIGBUS instead of SIGSEGV then. + * mmap.cc (__PROT_ATTACH): New define. + (__PROT_FILLER): Ditto. + (fh_anonymous): Rename from fh_paging_file; + (fh_disk_file): New global static variable. + (attached): New inline function. + (filler): Ditto. + (gen_create_protect): Split off from gen_protect to use the file's + access mode to create mapping always with maximum allowed protections. + (gen_protect): Accommodate pages attached beyond EOF. Use symbolic + values instead of numerics when possible. Drop create parameter. + (gen_access): Use file's access mode instead of protection. + (CreateMapping9x): Create named mapping names so that different + creation access modes result in different mappings. + (CreateMappingNT): Only reserve attached pages, don't commit them. + (MapViewNT): Ditto. Set AT_ROUND_TO_PAGE for all non-NULL base + addresses. + (mmap_func_t): Define CreateMapping and MapView function pointers + with additional openflags parameter. + (class mmap_record): Add openflags member. + (mmap_record::mmap_record): Add openflags parameter. + (mmap_record::get_openflags): New accessor. + (mmap_record::attached): Call global attached function. + (mmap_record::filler): Call global filler function. + (mmap_record::gen_create_protect): Call global gen_create_protect + function. + (mmap_record::gen_protect): Drop create parameter. + (mmap_record::alloc_fh): Set fhandler's access flags. + (list::search_record): Accommodate filler pages. + (list::set): Use inode number as hash value. + (map::get_list_by_fd): Check hash value against file's inode number. + (mmap_is_attached_page): New function to evaluate if a given address + is on a attached page. Called from _cygtls::handle_exceptions. + (mmap_worker): New function to do mapping and bookkeeping in a + single call. + (mmap64): Use roundup2 to round length to pagesize alignment. + Initialize global fhandlers. Simplify anonymous initialization. + Add SUSv3 compatible check of file open mode vs. requested protection. + Try creating new file handles to allow maximum page protection. + Allow creating attached pages in case of mapping beyond EOF. + Close new file handle if one has been created. + (munmap): Align len to pagesize. + (msync): Rework argument checks. Align len to pagesize. + (mprotect): Ditto. Accommodate attached pages. + (mlock): Use roundup/rounddown macros instead of homemade expressions. + (munlock): Add page alignment as in mlock. + (fhandler_dev_zero::munmap): Fix unmapping of non-private mappings. + (fhandler_dev_zero::fixup_mmap_after_fork): Accommodate filler pages. + (fixup_mmaps_after_fork): Don't fail if attached pages couldn't be + created in child. Avoid superfluous call to VirtualFree. Check for + original allocation protection to fix PAGE_WRITECOPY protection. + * ntdll.h: Revert deletion of AT_ROUND_TO_PAGE define. + * winsup.h (mmap_is_attached_page): Declare. + +2005-12-05 Christopher Faylor + + * include/cygwin/stdlib.h: New file. + * environ.cc (unsetenv): Change to return -1 on input error. + * include/cygwin/version.h: Add more description to latest api bump. + +2005-12-05 Christopher Faylor + + * dir.cc (readdir_workdir): Only fill out d_ino when linked into older + app. + * include/cygwin/version.h: Bump api minor number to 147, reflecting + obsolescence of d_ino. + (CYGWIN_VERSION_USER_API_VERSION_COMBINED): New convenience macro. + (CYGWIN_VERSION_CHECK_FOR_NEEDS_D_INO): New convenience macro. + * include/sys/dirent.h: Change d_ino field to __deprecated_d_ino. + +2005-12-05 Christopher Faylor + + Remove unneeded whitespace. + * cygtls.cc (_cygtls::set_state): Delete. + (_cygtls::reset_exception): Ditto. + (_cygtls::init_thread): Set initialized state directly here. + (_cygtls::push): Remove exception argument. Don't treat exceptions + specially. + * cygtls.h (_cygtls::push): Ditto. + (_cygtls::isinitialized): Don't treat exceptions specially. + (_cygtls::reset_exception): Delete. + (_cygtls::set_state): Ditto. + (_cygtls::handle_exceptions): Don't push ebp on the stack prior to + calling sig_send. Just set incyg instead. + (_cygtls::interrupt_setup): Accommodate _cygtls::push argument change. + (_cygtls::interrupt_now): Ditto. + (setup_handler): Don't treat exceptions specially. + * gendef (longjmp): Always zero incyg flag. + +2005-12-04 Corinna Vinschen + + * environ.cc (spenvs): Add "windir" as an "always export" variable + to accommodate WinSock on Windows 95. + +2005-12-02 Christopher Faylor + + * include/exceptions.h (exception_list): Revert previous change. + Windows doesn't care. + (exception_handler): Use real exception_list parameter type rather than + void * + * tlsoffsets.h: Regenerate. + * cygtls.h (_cygtls::handle_exceptions): Use real exception_list + parameter type rather than void *. + (handle_threadlist_exception): Ditto. + (init_exception_handler): Ditto. + * cygtls.cc (_cygtls::handle_threadlist_exception ): Ditto. + (_cygtls::init_exception_handler): Add kludge to terminate linked list + with a loop, which seems to solve problem of RtlUnwind causing problems + * exceptions.cc (rtl_unwind): Use real exception_list parameter type + rather than void *. + (_cygtls::handle_exceptions): Ditto. + +2005-12-02 Christopher Faylor + + * cygtls.h (_cygtls::el): New field. + (_cygtls::handle_exceptions): New function declaration. + (_cygtls::handle_threadlist_exception): Ditto. + (_cygtls::init_exception_handler): Ditto. + (_cygtls::init_threadlist_exceptions): Remove arg from declaration. + * cygtls.cc (_cygtls::call2): Don't initialize exceptions here. + (_cygtls::init_thread): Do it here instead and use member function. + (_cygtls::handle_threadlist_exception): Move into _cygtls class. + (_cygtls::init_exception_handler): Ditto. Rely on existence of 'el' + memmber in _cygtls. + (_cygtls::init_threadlist_exceptions): Ditto. + * dcrt0.cc (dll_crt0_1): Remove exception_list definition and setting + since it now commonly resides in the tls. + * exceptions.cc (init_exception_handler): Move to cygtls.cc. + (init_exceptions): Ditto. + (rtl_unwind): New, safe wrapper function for RtlUnwind. + (_cygtls::handle_exceptions): Move to _cygtls. Call rtl_unwind to + unwind frames and eliminate copying of structures. Put address of + failing instruction in si_addr, not the address on the stack. Return 0 + to indicate that we've handled this exception. + * external.cc (cygwin_internal): Make CW_INIT_EXCEPTIONS a no-op. + * sigproc.cc (wait_sig): Accommodate argument change to + _cygtls::init_threadlist_exceptions. + * tlsoffsets.h: Regenerate. + * include/exceptions.h (exception_list): Add more stuff to the + exception list. Apparently windows needs this? + (init_exceptions): Remove bogus declaration. + + * include/cygwin/signal.h (SI_USER): Redefine as zero as per SUSv3. + * include/cygwin/version.h: Bump API minor version number to 146. + + * thread.cc (pthread_kill): Set si_pid and si_uid. + + * timer.cc (timer_thread): Set si_code to SI_TIMER. + +2005-12-01 Christopher Faylor + + * dcrt0.cc (getstack): Try harder to modify memory. + (alloc_stack): Alloc page prior to stack top, too. + +2005-12-01 Christopher Faylor + + * devices.h (_major): Revert previous ill-advised change. + (_minor): Ditto. + +2005-12-01 Christopher Faylor + + * exceptions.cc (handle_exceptions): Translate a guard page exception + to a "SIGBUS". + +2005-12-01 Corinna Vinschen + + * mmap.cc: Make debug output more consistently. Fix some comments. + (gen_protect): Convert to inline function. + (gen_access): Ditto. + (mmap_record::gen_protect): Add create parameter as in global function. + (mmap_record::alloc_page_map): Change condition so that always the + correct protection setting is set after mapping has been established. + (mmap64): For anonymous mappings set offset always to 0. + (fixup_mmaps_after_fork): Always call fixup_mmap_after_fork method + with the MAP_FIXED flag set. + +2005-12-01 Christopher Faylor + + * devices.h (_minor): Coerce argument to proper type before + manipulating. + (_major): Ditto. + (device::is_fs_special): New function. + * fhandler_disk_file.cc (fhandler_base::fstat_helper): Set the size to + 0 for devices rather than reporting the size of the symlink. + (fhandler_disk_file::readdir): Use is_fs_special to determine if .lnk + should be stripped. + * path.cc: Rename symlink_info::is_symlink to symlink_info::issymlink + throughout. + (symlink_info::isdevice): New field. + (path_conv::check): Use 'isdevice' to determine if just-parsed entity + is a device rather than relying on non-zero major/minor. + (symlink_info::parse_device): Set isdevice to true if we've discovered + a device. + (symlink_info::check): Clear isdevice field prior to processing. Use + isdevice to control debugging output. + (symlink_info::set): Set isdevice to false. + * path.h (path_conv::is_fs_special): New function. + * devices.cc: Regenerate. + +2005-11-30 Christopher Faylor + + * times.cc (hires_ms::prime): Remove debugging stuff. + (hires_ms::usecs): Ditto. + +2005-11-30 Corinna Vinschen + + * mmap.cc (list::try_map): New method, implementing trying to map + within another already existing map, moved from mmap64 here. + (mmap64): Just call try_map now. + (fhandler_dev_zero::fixup_mmap_after_fork): Always create new private + map with PAGE_READWRITE protection. + (fixup_mmaps_after_fork): Fix comment. + +2005-11-29 Corinna Vinschen + + * include/cygwin/version.h: Bump API minor version. + +2005-11-29 Corinna Vinschen + + * fhandler.h (fhandler_dev_zero::mmap): Add method. + (fhandler_dev_zero::munmap): Ditto. + (fhandler_dev_zero::msync): Ditto. + (fhandler_dev_zero::fixup_mmap_after_fork): Ditto. + * mmap.cc: Implement anonymous mapping using fhandler_dev_zero class. + Implement private anonymous maps using VirtualAlloc/VirtualFree. Fix + or add some more comments. + (fh_paging_file): Change to type fhandler_dev_zero. + (priv): New static inline function to avoid having lots of flag bit + tests in the code. Use throughout were appropriate. + (fixed): Ditto. + (anonymous): Ditto. + (noreserve): Ditto. + (autogrow): Ditto. + (gen_protect): Never generate PAGE_WRITECOPY protection for + private anonymous maps. + (gen_access): Drop FILE_MAP_EXECUTE handling since it's not supported + correctly on 9x. + (VirtualProt9x): Move comment from mmap64 here. + (mmap_record::mmap_record): Gegerate correct device entry for + anonymous maps, though unused right now. + (mmap_record::priv): Call global priv function. + (mmap_record::fixed): Call global fixed function. + (mmap_record::anonymous): Call global anonymous function. + (mmap_record::noreserve): Call global noreserve function. + (mmap_record::autogrow): Call global autogrow function. + (list::anonymous): New method. Use throughout were appropriate. + (mmap_record::compatible_flags): Drop now useless ifdef. + (mmap_record::alloc_page_map): Accommodate private anonymous maps. + (mmap_record::map_pages): Accommodate MAP_NORESERVE mappings. + (mmap_record::unmap_pages): Accommodate private anonymous maps. + (mmap64): Simplify argument check. Don't remove the MAP_PRIVATE flag + for anonymous mappings on 9x anymore since that's now handled + gracefully. + (mprotect): Accommodate MAP_NORESERVE mappings. Fix case when + non-mmap areas are just MEM_RESERVEd. + (fhandler_dev_zero::mmap): Implement anonymous mapping here. + (fhandler_dev_zero::munmap): Ditto. + (fhandler_dev_zero::msyn): Ditto. + (fhandler_dev_zero::fixup_mmap_after_fork): Ditto. + (fixup_mmaps_after_fork): Accommodate private anonymous maps. Enhance + debug output in case VirtualProtect fails. + * include/sys/mman.h: Really define MAP_NORESERVE now. + +2005-11-28 Corinna Vinschen + + * autoload.cc (NtCreateSection): Define. + * cygheap.cc (_csbrk): Call getpagesize instead of getshmlba. + * dcrt0.cc (dll_crt0_0): Call mmap_init. + * external.cc (cygwin_internal): Call getpagesize instead of getshmlba. + * fhandler.h (fhandler_base::mmap): Change access to prot parameter. + (fhandler_base::fixup_mmap_after_fork): Ditto. + (fhandler_disk_file::mmap): Ditto. + (fhandler_disk_file::fixup_mmap_after_fork): Ditto. + (fhandler_dev_mem::mmap): Ditto. + (fhandler_dev_mem::fixup_mmap_after_fork): Ditto. + * fhandler_mem.cc (fhandler_dev_mem::write): Call getsystempagesize + instead of getpagesize. + (fhandler_dev_mem::read): Ditto. + (fhandler_dev_mem::fstat): Ditto. + (fhandler_dev_mem::mmap): Move to mmap.cc. + (fhandler_dev_mem::munmap): Ditto. + (fhandler_dev_mem::msync): Ditto. + (fhandler_dev_mem::fixup_mmap_after_fork): Ditto. + * fhandler_proc.cc (format_proc_meminfo): Call getsystempagesize + instead of getpagesize. + * fhandler_process.cc (format_process_stat): Ditto. + (format_process_status): Ditto. + (get_mem_values): Ditto. + * mmap.cc: Fix formatting. Try to make more readable and modular. + Take advantage of pagesize==granularity. + (gen_protect): New static function to evaluate Windows + protection bits from POSIX protection and flags. + (gen_access): Ditto for Windows access mode. + (VirtualProt9x): Wrapper function to call VirtualProtect on 9x. + (VirtualProtNT): Ditto for NT. + (VirtualProtEx9x): Ditto for VirtualProtectEx on 9x. + (VirtualProtExNT): Ditto for NT. + (CreateMapping9x): Wrapper function for creating a mapping handle on 9x. + (CreateMappingNT): Ditto for NT. + (MapView9x): Wrapper function to map a view on 9x. + (MapViewNT): Ditto for NT. + (mmap_funcs_9x): Structure containing function pointers to wrapper + functions for 9x. + (mmap_funcs_nt): Ditto for NT. + (mmap_func): Pointer to wrapper functions used in subsequent code. + (mmap_init): Initialize mmap_func depending on OS. + (class mmap_record): Use sensible member names. Add POSIX protection + member. Drop Windows access flags member. Constify more methods. + Use accessors instead of direct member access inside of own methods. + (mmap_record::gen_protect): Class wrapper to evaluate matching + Windows protection bits. + (mmap_record::gen_access): Ditto for Windows access flags. + (mmap_record::compatible_flags): New function to check if flags are + compatible with flags of existing map. + (list::add_record): Drop offset and length arguments. + (class map): Change counters to unsigned. Match usage throughout. + (mmapped_areas): Convert from pointer to global struct. + (mmap_record::alloc_page_map): Simplify. + (mmap_record::map_pages): Ditto. + (mmap_record::fixup_page_map): Delete. + (mmap64): Simplify. Add workaround for Windows 98 bug. Fix bug on + NT that existing anonymous mappings weren't searched for a match. + (munmap): Add workaround for Windows 98 bug. + (msync): Simplify. + (mprotect): Handle existing maps correctly. + (mlock): Add local pagesize variable and enlightening comment. + (fhandler_disk_file::mmap): Main functionality now in CreateMapping/ + MapView wrapper functions. + (fhandler_disk_file::fixup_mmap_after_fork): Call MapView wrapper. + (fhandler_dev_mem::mmap): Moved from fhandler_mem.cc. Simplify by + calling MapViewNT. + (fhandler_dev_mem::munmap): Moved from fhandler_mem.cc. + (fhandler_dev_mem::msync): Ditto. + (fhandler_dev_mem::fixup_mmap_after_fork): Ditto. Call MapViewNT. + (fixup_mmaps_after_fork): Restructure and hopefully speed up loop for + setting protection and memory content on MAP_PRIVATE maps. + * ntdll.h (AT_ROUND_TO_PAGE): Remove define. + (AT_EXTENDABLE_FILE): Add define. + (NtCreateSection): Add prototype. + * syscalls.cc (getpagesize): Return granularity as pagesize now. + (getsystempagesize): New function to retrieve "real" pagesize. + (getshmlba): Delete since it's replaced by getpagesize now. + * wincap.h (wincaps::has_mmap_alignment_bug): New element. + * wincap.cc: Implement above element throughout. + * winsup.h (getshmlba): Drop prototype. + (getsystempagesize): Add prototype. + (mmap_init): Ditto. + * include/sys/mman.h: (Not yet) define MAP_NORESERVE. + +2005-11-28 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::fstat_helper): Don't rely on + has_acl() state for evaluating inodes. Temporarily(?) enable "real" + inodes for remote drives. + +2005-11-25 Christopher Faylor + + * heap.cc: Remove spurious getpagesize declaration. + +2005-11-25 Christian Franke + + * exceptions.cc (ctrl_c_handler): Distinguish CTRL-BREAK from CTRL-C in + some cases. + +2005-11-23 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave::open): Reset the current windows + station whenever ctty == -1 regardles of whether there's a windows + station already assigned. Close the old windows station in this + situation. + * pinfo.cc (_pinfo::set_ctty): Reinstate incrementing of console count + when recording ctty so that the current tty is always around. + * autoload.cc (CloseWindowStation): Define. + +2005-11-18 Christopher Faylor + + * strptime.cc (_strptime): Fix gcc warnings. + +2005-11-18 Christopher Faylor + + * memmem.cc: Move from here. + * lib/memmem.cc: Move to here. + +2005-11-18 Corinna Vinschen + + * libc: Add subdirectory. + * Makefile.in (VPATH): Add libc subdir. + (DLL_OFILES): Add strptime.o and timelocal.o. + * cygwin.din: Export timelocal and timegm. + * localtime.cc: Define STD_INSPIRED unconditionally. + * include/cygwin/time.h (timelocal): Add declaration. + (timegm): Ditto. + * include/cygwin/version.h: Bump API minor version. + * libc/strptime.cc: New file. + * libc/timelocal.cc: New file. + * libc/timelocal.h: New file. + +2005-11-18 Christopher Faylor + + * include/cygwin/sys_time.h: Move futimes and lutimes declaration here + from newlib. + +2005-11-18 Christopher Faylor + + * times.cc (timezone): Put back (void). + * include/cygwin/time.h: Add more cygwin stuff from newlib. + +2005-11-18 Christopher Faylor + + * include/cygwin/sys_time.h: Rename from include/cygwin/time.h. + * include/cygwin/time.h: New file. + +2005-11-17 Christopher Faylor + + * fork.cc (fork): Move top-of-stack calculation later. + + * pinfo.cc (_pinfo::set_ctty): Use __ctty to print current console in + debugging output. + +2005-11-17 Corinna Vinschen + + * fhandler_tty.cc (fhandler_tty_slave::open): Don't expect that + service applications have no window station attached. + +2005-11-16 Christopher Faylor + + * times.cc (hires_ms::prime): Don't escalate the priority. + +2005-11-14 Christopher Faylor + + * include/sys/elf64.h: Fix types to reflect linux usage. + +2005-11-14 Corinna Vinschen + Christopher Faylor + + * fhandler.h (fhandler_console::fixup_after_fork_exec): Define with + additional bool parameter. + (fhandler_console::fixup_after_exec): Accommodate + fixup_after_fork_exec's parameter. + (fhandler_console::fixup_after_fork): Ditto. + * fhandler_console.cc (fhandler_console::fixup_after_fork_exec): Avoid + opening new console only when close_on_exec AND execing. + +2005-11-14 Christopher Faylor + + * fhandler.h (fhandler_console::fixup_after_fork_exec): Declare new function. + (fhandler_console::fixup_after_fork): Use fixup_after_fork_exec. + (fhandler_console::fixup_after_exec): Ditto. + * fhandler_console.cc (fhandler_console::fixup_after_fork): Delete definition. + (fhandler_console::fixup_after_fork_exec): Rename from fixup_after_exec. + * pinfo.cc (_pinfo::set_ctty): Don't play with console count here. + * syscalls.cc (close_all_files): Don't close cygheap ctty if hExeced + since the child will be copying information from us. + (setsid): Use myctty() rather than raw ctty #. + +2005-11-13 Christopher Faylor + + * cygheap.h (init_cygheap::manage_console_count): Declare new function. + (init_cygheap::console_count): Renamed from open_fhs. Make private. + * cygheap.cc (init_cygheap::manage_console_count): Define new function. + * dtable.cc (dtable::fixup_after_exec): Always call fixup_after_exec on + elements of fd even when they are about to be closed. + * fhandler.h (report_tty_counts): Remove open_fhs from debugging + output. + * fhandler_console.cc (fhandler_console::open): Use + manage_console_count rather than manipulating count directly. + (fhandler_console::close): Ditto. + (fhandler_console::fixup_after_fork): Ditto. + (fhandler_console::fixup_after_exec): Ditto. Don't close handles if + close_on_exec. + * fhandler_tty.cc (fhandler_tty_slave::open): Use + manage_console_count() rather than manipulating count directly. + Reflect change in arguments to report_tty_counts(). + (fhandler_tty_slave::close): Ditto for both. + (fhandler_tty_slave::dup): Ditto for both. + (fhandler_tty_slave::ioctl): Use myctty() rather than raw ctty #. + (fhandler_tty_slave::fixup_after_fork): Reflect change in arguments to + report_tty_counts(). + (fhandler_tty_master::init_console): Use manage_console_count() rather + than manipulating count directly. + * fhandler_clipboard.cc (fhandler_dev_clipboard::fixup_after_exec): + Don't perform any operations if close_on_exec. + * fhandler_dsp.cc (fhandler_dev_dsp::fixup_after_exec): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::fixup_after_exec): Ditto. + * fhandler_serial.cc (fhandler_serial::fixup_after_exec): Ditto. + * pinfo.h (_pinfo::_ctty): Declare new function. + (myctty): Declare new macro. + (__ctty): Declare new macro. + * pinfo.cc (_pinfo::_ctty): Define new function. + (_pinfo::set_ctty): Use manage_console_count() rather than manipulating + count directly. + * signal.cc (kill_pgrp): Use myctty() and __ctty() macros rather than + raw ctty #. + * syscalls.cc (setsid): Ditto. Use manage_console_count() rather than + manipulating count directly. + +2005-11-13 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::recvfrom): Just return 0 (EOF) + in case of WSAESHUTDOWN. + (fhandler_socket::recvmsg): Ditto. + * poll.cc (poll): Set revents to POLLIN instead of POLLHUP. Add comment. + +2005-11-11 Christopher Faylor + + * cygheap.h (init_cygheap::_gtod): Remove. + * cygwin.din: Export clock_getres and clock_setres. + * hires.h (hires_ms::minperiod): Delete declaration. + (hires_ms::began_period): Ditto. + (hires_ms::prime): Make void. + (hires_ms::resolution): Just define here. + (hires_ms::usecs): Remove unneeded argument. + (gtod): Redeclare as a variable. + * timer.cc (timer_thread): Eliminate argument to gtod.usecs(). + (timer_tracker::gettime): Ditto. + (timer_tracker::settime): Ditto. + * times.cc (gettimeofday): Ditto. + (hires_ms::began_period): Delete declaration. + (hires_us::prime): Remove debugging. + (hires_ms::prime): Make void. Eliminate period stuff. + (hires_ms::usecs): Eliminate argument to gtod.usecs(). + (hires_ms::resolution): New function. + (clock_getres): Ditto. + (clock_setres): Ditto. + * version.h: Bump API version to 143. + * include/cygwin/time.h: New file. + +2005-11-10 Christopher Faylor + + * times.cc (hires_ms::prime): Comment out call to timeBeginPeriod for + now. + (hires_ms::usecs): Call prime if haven't called began_period(). + + * param.h: Don't define stuff that is already defined in endian.h. + +2005-11-10 Christopher Faylor + + * include/endian.h: Remove USE_BSD ifdef since it is never defined on + Cygwin. + +2005-11-10 Corinna Vinschen + + * syslog.cc (setlogmask): Don't mask the mask. + (vsyslog): Fix priority check. + +2005-11-10 Scott Finneran + + * include/cygwin/signal.h: Add missing sigrelse prototype. + +2005-11-08 Christopher Faylor + + * fhandler_base.cc (fhandler_base::readv): Free buf, not a pointer into + the middle of buf. + +2005-11-08 Christopher Faylor + + * memmem.cc: New file. + * include/cygwin/version.h: Bump API version number to 142. + * cygwin.din: Export memmem. + * Makefile.in: Build memmem.o. + +2005-11-08 Christopher Faylor + + * environ.cc (spenvs): Make "SYSTEMDRIVE" an "always export". + +2005-11-07 Corinna Vinschen + + * times.cc (futimes): Redirect to utimes_worker if given file + descriptor is opened R/O. + +2005-11-06 Christopher Faylor + + * dcrt0.cc (dll_crt0_0): Initialize security data first so that it can + be used by subsequent handle creation. + +2005-11-04 Christopher Faylor + + * cygheap.h (init_cygheap::_gtod): New hires_ms element. + * hires.h (hires_ms::minperiod): Remove static designation. + (hires::began_period): New field. + * signal.cc: Include headers required for cygheap.h now that gtod lives + in the cygheap. + * timer.c: Ditto. + * times.cc (gtod): Delete variable. + (gtod::minperiod): Ditto. + (gtod::began_period): Define. + (hires_ms::prime): Add more debugging output. Call timeBeginPeriod + only when !began_period. + +2005-11-04 Christopher Faylor + + * times.cc (hires_ms::prime): More debugging. + (hires_ms::usecs): Ditto. + +2005-11-03 Christopher Faylor + + * times.cc (stupid_printf): Define and use throughout -- temporarily. + +2005-11-03 Christopher Faylor + + * times.cc (hires_ms::prime): Add lots of temporary debugging output. + +2005-11-02 Christopher Faylor + + * times.cc (hires_ms::minperiod): Make copy-on-fork. + (gettimeofday): Remove temporary debugging. + (hires_us::prime): Add lots of temporary debugging output. + +2005-11-02 Christopher Faylor + + * times.cc (gettimeofday): Add temporary debugging output. + +2005-11-01 Christopher Faylor + + * include/sys/cygwin.h: Define CYGWIN_SIGNAL_STRING. + * exceptins.cc (sigpacket::process): Send a _CYGWIN_SIGNAL_STRING to + gdb if the process is being debugged. A WIP. + +2005-10-29 Christopher Faylor + + * exceptions.cc (signal_exit): Eliminate setting of main thread + priority since process lock should make that unnecessary. + * fork.cc (stack_base): Eliminate. + (frok::parent): Subsume stack_base and just set stack stuff here. + Report on priority class in debugging output. + * spawn.cc (spawn_guts): Report on priority class in debugging output. + +2005-10-29 Christopher Faylor + + * fork.cc (frok::child): Change order of cleanup prior to return. + (fork): Save more of the stack. + + * gendef: Fix some comments. + + * sigproc.cc (wait_sig): Clarify debug output. + +2005-10-29 Christopher Faylor + + * child_info.h (CHILD_INFO_MAGIC): Reset. + +2005-10-24 Christopher Faylor + + * pinfo.cc (_pinfo::fds): Lock fdtab while enumerating. + +2005-10-24 Corinna Vinschen + + * spawn.cc (spawn_guts): Don't leave the function with return inside + pthread cleanup brackets. + +2005-10-24 Christopher Faylor + + * cygheap.h (cygheap_fdenum): Remove start_fd stuff. + (cygheap_fdenum::rewind): Ditto. + * pipe.cc (fhandler_pipe::open): Lock fdtab while enumerating. + * times.cc (utimes_worker): Ditto. + +2005-10-23 Christopher Faylor + + * cygheap.h (cygheap_fdenum::cygheap_fdenum): Record locked state or + suffer deadlocks. + (class locked_process): Move to another header. + * sync.h (lock_process): Define here. + * cygtls.cc (_cygtls::fixup_after_fork): Reset spinning state as well + as stacklock state. + * dcrt0.cc (lock_process::locker): Define. + (dtable::lock_cs): Delete. + (dll_crt0_0): Initialize process lock here ASAP. + * dtable.cc (dtable_init): Eliminate call to init_lock(). + (dtable::fixup_after_fork): Ditto. + (dtable::init_lock): Delete definition. + * dtable.h (dtable::init_lock): Delete declaration. + (dtable::lock): Use process lock rather than dtable-specific lock. + (dtable::unlock): Ditto. + + * sigproc.cc (sigproc_init): Minor change to debugging output. + + * times.cc (utime_worker): Use build_fh_pc rather than reinterpreting + the posix path name again. Return any error from path_conv immediately. + +2005-10-22 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::connect): Don't restrict + WSAEINVAL -> WSAEISCONN conversion to nonblocking sockets. + (fhandler_socket::accept): Use event driven technique to implement + interuptible accept. + (fhandler_socket::wait): Allow FD_ACCEPT handling. + * net.cc (cygwin_accept): Remove workaround for allowing blocking + accept. That's entirely in fhandler_socket::accept now. + +2005-10-22 Corinna Vinschen + + * fhandler.h (class fhandler_socket): Add timeout parameter to wait() + method. + * fhandler_socket.cc (fhandler_socket::connect): Use event driven + technique (prepare/wait/release) to implement interuptible connect. + (fhandler_socket::wait): Add timeout parameter. Allow FD_CONNECT + handling. + * net.cc (cygwin_connect): Remove braindead workaround for allowing + blocking connect. That's entirely in fhandler_socket::connect now. + +2005-10-22 Corinna Vinschen + + * include/cygwin/version.h: Fix typo. + +2005-10-21 Christopher Faylor + + * dir.cc (rmdir): Eliminate nonsensical code. + + * fork.cc (fork): Move exit debug_printf to last statement. + +2005-10-20 Corinna Vinschen + + * cygwin.din (futimes): Export. + (lutimes): Export. + * times.cc (utimes_worker): Created from utimes, add nofollow flag + to implement utimes and lutimes. + (utimes): Just call utimes_worker. + (lutimes): New function. + (futimes): Ditto. + * include/cygwin/version.h: Bump API minor version. + +2005-10-19 Christopher Faylor + + * sigproc.cc (child_info::sync): Move check for !wr_proc_pipe lower. + * spawn.cc (spawn_guts): Correct check for top-level process. + +2005-10-19 Corinna Vinschen + + * autoload.cc: Revert loading rcmd, rexec, rresvport and inet_network + from wsock32.dll since these symbols are not exported from ws2_32.dll. + +2005-10-19 Christopher Faylor + + * times.cc (utimes): Only consider fds opened with write access. + +2005-10-19 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_base::utimes_fs): Use existing handle + if fhandler has one. + * times.cc (utimes): Scan open fds for matching paths and use existing + fhandler if one exists. + +2005-10-19 Christopher Faylor + + * pinfo.cc (_pinfo::dup_proc_pipe): Make warning more severe by + actually printing it. + (_pinfo::alert_parent): Fix comment. Don't send to parent if we are in + an exec stub. + +2005-10-18 Christopher Faylor + + * cygtls.cc (handle_threadlist_exception): Improve diagnostic output. + + * sigproc.cc (child_info::sync): Only clear hProcess when execing. + (wait_sig): Protect readsig handle. + +2005-10-18 Corinna Vinschen + + * autoload.cc (NtLockVirtualMemory): Import. + (NtUnlockVirtualMemory): Import. + (GetProcessWorkingSetSize): Import. + (SetProcessWorkingSetSize): Import. + * cygwin.din (mlock): Export. + (munlock): Export. + * mmap.cc (mlock): New function. + (munlock): Ditto. + * ntdll.h (STATUS_WORKING_SET_QUOTA): Define. + (LOCK_VM_IN_WSL): Define. + (LOCK_VM_IN_RAM): Define. + (NtLockVirtualMemory): Declare. + (NtUnlockVirtualMemory): Declare. + * sysconf.cc (sysconf): Implement _SC_MEMLOCK_RANGE. + * wincap.h: Implement has_working_virtual_lock throughout. + * wincap.cc: Ditto. + * include/cygwin/version.h: Bump API minor version. + * include/sys/mman.h (mlock): Declare, + (munlock): Declare. + +2005-10-18 Christopher Faylor + + * sigproc.cc (child_info::sync): Use correct name when closing to + prevent warnings when DEBUGGING. + * spawn.cc (spawn_guts): Set myself.hProcess to pi.hProcess since this + may have been zeroed by the previous sync. + +2005-10-18 Christopher Faylor + + * sigproc.cc (child_info::sync): Fix typo which caused hProcess to + never be cleared. Only clear hProcess when not forking. + +2005-10-17 Christopher Faylor + + Change process_lock to lock_process throughout. + Change all calls to new cygthread to handle extra argument, throughout. + * cygthread.h (cygthread::callproc): Declare new method. + (cygthread::cygthread): Add optional length argument to allow copying + arguments to executing thread. + * cygthread.cc (cygthread::callproc): Define new method. + (cygthread::stub): Use callfunc to invoke thread func to allow + potentially allocating stack memory which will be returned. + (cygthread::simplestub): Ditto. + (cygthread::cygthread): Accept arglen argument. Reset ev here prior to + activating thread. Wait for ev after activating thread if we're + copying contents to the thread. Wait until the end before setting h, + to allow thread synchronization. + (cygthread::release): Don't reset ev here. Rely on that happening the next + time the thread is activated. + * pinfo.h (commune_process): Rename declaration from _pinfo::commune_process. + * pinfo.cc (commune_process): Ditto for definition. Modify slightly to allow + running as a separate cygthread. + * sigproc.cc (child_info::sync): Always wait for both subproc_ready and + any hProcess if we have a cygwin parent. + (talktome): Change argument to be a pointer to siginfo_t. Contiguously + allocate whole siginfo_t structure + any needed extra for eventual passing + to commune_process thread. + (wait_sig): Accommodate change in talktome argument. + + * pipe.cc (fhandler_pipe::fixup_after_exec): Remove debugging. + +2005-10-17 Corinna Vinschen + + * autoload.cc: Never load wsock32.dll. Load all wsock32 function + from ws2_32. Rearrange symbol order accordingly. None of the ws2_32 + functions is optional right now. + (wsadata): Move from net.cc here. Define NO_COPY. + (wsock_init): Drop unused symbols ws2_32_handle and wsock32_handle. + (load_wsock32): Remove. + (WSACleanup): Remove. + * fhandler_socket.cc: Drop Winsock 1 accommodations throughout. + (fhandler_socket::readv): Accommodate new POSIX style struct msghdr. + (fhandler_socket::writev): Ditto. + (fhandler_socket::recvmsg): Ditto. Handle "old" applications using + former struct msghdr correctly. + * net.cc: Drop Winsock 1 accommodations throughout. + (wsadata): Move definition to autoload.cc. + (set_socket_inheritance): Remove. + (convert_ws1_ip_optname): New static function to convert Winsock1 + IPPROTO_IP option values into Winsock2 IPPROTO_IP option values. + (cygwin_setsockopt): Remove wrong and incomplete cleartext printing + of optname. For "old" applications, convert optname from Winsock1 + to Winsock2 values before using them. Add comment to describe the + IP_TOS weirdness on W2K and above. + (cygwin_getsockopt): Remove wrong and incomplete cleartext printing + of optname. For "old" applications, convert optname from Winsock1 + to Winsock2 values before using them. + * select.cc (start_thread_socket): Forget about winsock2_active. + * winsup.h (wsock32_handle): Remove declaration. + (ws2_32_handle): Ditto. + (netapi32_handle): Ditto. + (wsadata): Ditto. + (winsock2_active): Remove definition. + * include/cygwin/socket.h: Change formatting slightly. + (socklen_t): Move definition up in file. + (struct msghdr): Convert to POSIX style. + (struct cmsghdr): New type. + (CMSG_ALIGN): New macro. + (CMSG_LEN): Ditto. + (CMSG_SPACE): Ditto. + (CMSG_FIRSTHDR): Ditto. + (CMSG_NXTHDR): Ditto. + (CMSG_DATA): Ditto. + (SCM_RIGHTS): Ditto. + (struct OLD_msghdr): Define old msghdr structure for Cygwin internal + purposes. + (MSG_TRUNC): New macro. + (MSG_CTRUNC): Ditto. + (IP_OPTIONS): Redefine IPPROTO_IP option values to Winsock2 values. + Keep Winsock1 values for Cygwin internal purposes. + * include/cygwin/version.h: Bump API minor version. + (CYGWIN_VERSION_CHECK_FOR_USING_ANCIENT_MSGHDR): Define to check for + applications using old struct msghdr. + (CYGWIN_VERSION_CHECK_FOR_USING_WINSOCK1_VALUES): Define to check for + applications using old Winsock1 IPPROTO_IP values. + +2005-10-13 David Rothenberger + Christopher Faylor + + * Makefile.in (MKDIRP): Just use raw $(INSTALL) rather than + $(INSTALL_DATA). Create directories with 755 permissions. + +2005-10-12 Christopher Faylor + + * dir.cc (mkdir): Abandon use of PC_WRITABLE. + (rmdir): Ditto. + * path.h (PC_WRITABLE): Delete. + * path.cc (path_conv::check): Remove PC_WRITABLE accommodations. + Revisit later. + +2005-10-12 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::rmdir): Convert an + ERROR_INVALID_FUNCTION into an ERROR_FILE_NOT_FOUND. Add comment + to explain why. + +2005-10-11 Christopher Faylor + + * Makefile.in: Make sure that directories are created prior to copying + to them. + +2005-10-11 Christopher Faylor + + * net.cc (cygwin_gethostbyname): Remove debugging. + +2005-10-11 Corinna Vinschen + + * syslog.cc (try_connect_syslogd): Add priority parameter. Use writev + to add the priority to the message in a syslog conformant way. + (vsyslog): If facility isn't set in the priority, use default facility + as given in call to openlog. Fix agressive use of spaces in syslog + output. Call try_connect_syslogd with priority parameter. + +2005-10-11 Christopher Faylor + + * (symlink_info::set_error): Change to return bool if input error + should be ignored. + (symlink_info::check): Treat path as a normal file if set_error returns + false. + +2005-10-03 Christopher Faylor + + * cygheap.h (class process_lock): New class. + * dtable.h (class dtable): Add class process_lock as a friend. + * dcrt0.cc (get_exit_lock): Delete. + (do_exit): Use process_lock class instead of get_exit_lock. + * exceptions.cc (signal_exit): Ditto. + * pinfo.cc (pinfo::exit): Ditto. + (_pinfo::commune_process): Set process lock around this whole function. + (_pinfo::commune_request): Use process_lock rather than myself.lock. + * pinfo.h (pinfo::_lock): Delete. + (pinfo::initialize_lock): Delete. + (pinfo::lock): Delete. + (pinfo::unlock): Delete. + * winsup.h (get_exit_lock): Delete declaration. + +2005-10-03 Corinna Vinschen + + * uname.cc (uname): Disable use of GetNativeSystemInfo. + +2005-10-01 Christopher Faylor + + * dcrt0.cc (get_exit_lock): Use myself.lock rather than exit_lock. + * exceptions.cc (exit_lock): Delete. + (events_init): Don't init exit_lock. + * (_pinfo::commune_process): Add per-PICOM debugging. + * sigproc.cc (talktome): Add some temporary debugging statements. + + * fhandler_proc.cc (format_proc_cpuinfo): Cosmetic change. + (format_proc_partitions): Ditto. + * syscalls.cc (locked_append): Ditto. + +2005-09-30 Christopher Faylor + + * dcrt0.cc (do_exit): Don't set ES_SET_MUTO here. Call get_exit_lock() + instead. + (get_exit_lock): New function. Grabs the lock and sets initial + exit_state. + * exceptions.cc (try_to_debug): Use low_priority_sleep. + (sigpacket::process): Avoid handler if this is an exec stub. + (signal_exit): Use get_exit_lock rather than manipulating the exit_lock + critical section directly. + * pinfo.cc (pinfo::exit): Ditto. + * winsup.h (get_exit_lock): Declare. + (exit_lock): Delete declaration. + +2005-09-30 Corinna Vinschen + + * fhandler_disk_file.cc: Change calls to pc.set_attributes into + calls to pc.file_attributes throughout. + * path.h (class path_conv): Remove superfluous set_attributes method. + +2005-09-30 Corinna Vinschen + + * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Use + fhandler method to access major device number. Add comment to + explain floppy weirdness. + +2005-09-30 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Also use + attributes stored in this->pc if call to GetFileInformationByHandle + failed. + +2005-09-30 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Only write + attributes if call to GetFileInformationByHandle was successful. + +2005-09-29 Christopher Faylor + + * fork.cc (frok::parent): Simplify error messages. Don't issue an + error when child.remember fails. + (fork): When appropriate, build up an error message from grouped.error. + +2005-09-29 Corinna Vinschen + + * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Don't call + EX ioctls on floppy drives. + +2005-09-29 Corinna Vinschen + + * dir.cc (mkdir): Check for trailing /. or /.. component. + (rmdir): Ditto. + * path.cc (has_dot_last_component): New function. + * path.h (has_dot_last_component): Add declaration. + +2005-09-29 Corinna Vinschen + + * crt0.cc: Remove PPC considerations. + (WinMainCRTStartup): Add symbol as alias to mainCRTStartup. + +2005-09-28 Christopher Faylor + + Change name from commune_recv to commune_process throughout. + Change name from commune_send to commune_request throughout. + * pinfo.h (PICOM_EXTRASTR): New flag. + (PICOM_FIFO): Define with new flag. + (_pinfo::hello_pid): Delete. + (_pinfo::tothem): Delete. + (_pinfo::fromthem): Delete. + (_pinfo::commune_process): Rename from commune_recv. Add a siginfo_t + argument to declaration. + (_pinfo::commune_request): Rename from commune_send. Change DWORD to + __uint32_t in declaration. + * pinfo.cc (_pinfo::commune_process): Rename from commune_recv. Add + siginfo_t argument. Use information from argument rather than reading + from another pipe. Synchronize with other process's commune event. + (_pinfo::commune_request): Rename from commune_send. Change DWORD to + __uint32 in argument. Fill out information in new siginfo_t element + and rely on extended operation of sig_send rather than trying to deal + with synchronization issues here. Use process handle and read pipe + information filled out by sig_send to gather information from the other + process. + * sigproc.cc (sig_send): Take special action if "communing" to ensure + synchronization with the other process and to return information about + the other process to the caller. + (talktome): Accept a siginfo_t and handle arguments. Read additional + information from the signal pipe when _si_commune._si_code has the + PICOM_EXTRASTR flag set. + (wait_sig): Pass the transmitted siginfo_t struct and the pipe handle + to talktome. Close pipe read handle as soon as possible after we + detect that we're exiting. + +2005-09-28 Christopher Faylor + + * hookapi.cc (hook_or_detect_cygwin): Correct inverted test for whether + to allocate a buffer by always allocating a buffer. + +2005-09-28 Corinna Vinschen + + * fhandler.h (class fhandler_dev_raw): Delete current_position and + eof_detected status flag. Delete is_eom and is_eof methods. + Move drive_size, bytes_per_sector, eom_detected status flag, as well + as the methods read_file, write_file, raw_read and raw_write to ... + (class fhandler_dev_floppy): ... here. Remove is_eom and is_eof + methods. Add dup method. + * fhandler_floppy.cc (IS_EOM): New macro. + (fhandler_dev_floppy::is_eom): Remove. + (fhandler_dev_floppy::is_eof): Remove. + (fhandler_dev_floppy::fhandler_dev_floppy): Initialize status flags. + (fhandler_dev_floppy::get_drive_info): Only call EX functions on + systems supporting them and stop suffering strange delays. + (fhandler_dev_floppy::read_file): Move here, drop setting + current_position. + (fhandler_dev_floppy::write_file): Move here, drop setting + current_position. + (fhandler_dev_floppy::open): Rearrange comment. + (fhandler_dev_floppy::dup): New method. + (fhandler_dev_floppy::get_current_position): New inline method. Use + instead of former current_position were appropriate. + (fhandler_dev_floppy::raw_read): Move here. Drop EOF handling. + (fhandler_dev_floppy::raw_write): Move here. Drop EOF handling. + (fhandler_dev_floppy::lseek): Remove useless conditions. Convert + sector_aligned_offset to LARGE_INTEGER to improve SetFilePointer call. + (fhandler_dev_floppy::ioctl): Move blocksize check in RDSETBLK case + to here. + * fhandler_raw.cc (fhandler_dev_raw::is_eom): Remove. + (fhandler_dev_raw::is_eof): Remove. + (fhandler_dev_raw::write_file): Remove. + (fhandler_dev_raw::read_file): Remove. + (fhandler_dev_raw::raw_read): Remove. + (fhandler_dev_raw::raw_write): Remove. + (fhandler_dev_raw::dup): Drop copying removed members. + (fhandler_dev_raw::ioctl): Drop blocksize testing. + * wincap.h: Implement has_disk_ex_ioctls throughout. + * wincap.cc: Ditto. + (wincap_vista): Preliminary wincaps for Windows Vista/Longhorn. + (wincapc::init): Add Vista/Longhorn handling. + +2005-09-28 Christopher Faylor + + * dcrt0.cc (getstack): New function. + (alloc_stack): Use tls stuff for stack info rather than calling + VirtualQuery. + (dll_crt0_0): Initialize _impure_ptr stuff much earlier. Move + init_console_handler here. + * fork.cc (class frok): New class renamed from local fork() struct. + (stack_base): Change argument type. Use tls stuff to determine stack + info rather than calling VirtualQuery. + (frok::child): Rename from fork_child. Eliminate now unneeded + arguments. + (frok::parent): Rename from fork_parent and ditto. Set error and errno + as appropriate. Fixup impersonation in cleanup, if needed. Try harder + to set errno appropriately. + (fork): Define "grouped" as a frok type. Deal with errors from + fork_parent here. + * init.cc (dll_entry): Remove init_console_handler call. + +2005-09-28 Christopher Faylor + + * pinfo.cc (_pinfo::dup_proc_pipe): Ignore error if the child process + has just gone away. + +2005-09-27 Christopher Faylor + + * init.cc (prime_threads): Make this static, as it should be. + (dll_entry): Apply cosmetic changes to define closer to the way MSDN + suggests. + +2005-09-27 Corinna Vinschen + + * pthread.cc (mangle_sem_name): Use cygheap->shared_prefix instead + of fiddling with wincap.has_terminal_services manually. + +2005-09-27 Corinna Vinschen + + * cygheap.cc (cygheap_init): Add GLOBAL_PRIV to hProcToken explicitely + since hProcImpToken isn't initialized here. + * shared.cc (open_shared): Always print mapname instead of name in + debug output. + +2005-09-27 Christopher Faylor + + * strace.cc (strace::vsprntf): Avoid printing a zero pid. + +2005-09-27 Corinna Vinschen + + * init.cc (dll_entry): Call IsWow64Process with GetCurrentProcess + as process handle since hMainProc isn't initialized here. + +2005-09-27 Corinna Vinschen + + * fhandler_floppy.cc (fhandler_dev_floppy::get_drive_info): Always + try IOCTL_DISK_GET_DRIVE_GEOMETRY_EX and + IOCTL_DISK_GET_PARTITION_INFO_EX ioctls first, to allow access to GPT + partitioned disks. Fall back to old non-EX ioctls otherwise. + Add comment to explain NT4 weirdness. + +2005-09-26 Corinna Vinschen + + * errno.cc (errmap): Map ERROR_SEEK and ERROR_SECTOR_NOT_FOUND. + +2005-09-26 Christopher Faylor + + * exceptions.cc (_cygtls::call_signal_handler): Minor cleanup. + +2005-09-26 Corinna Vinschen + + * fhandler.h (class fhandler_dev_raw): Add drive information members + drive_size, current_position and bytes_per_sector. + (fhandler_dev_floppy::get_drive_info): Declare. + * fhandler_floppy.cc (fhandler_dev_floppy::is_eom): Define ERROR_SEEK + and ERROR_SECTOR_NOT_FOUND as end-of-medium conditions. + (fhandler_dev_floppy::get_drive_info): New method to have one function + retrieving drive info. + (fhandler_dev_floppy::open): Call get_drive_info to get drive + information right from the start. + (fhandler_dev_floppy::lseek): Use and set drive information members. + Especially keep track of current_position. + (fhandler_dev_floppy::ioctl): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::write_file): Keep track of + current_position. + (fhandler_dev_raw::read_file): Ditto. + (fhandler_dev_raw::raw_read): Never try to read beyond end-of-medium. + (fhandler_dev_raw::dup): Handle new drive information members. + +2005-09-26 Christopher Faylor + + * exceptions.cc (handle_exceptions): Just set si_code to SI_KERNEL + first and let it be overridden. + +2005-09-26 Yitzchak Scott-Thoennes + + * exceptions.cc (_cygtls::call_signal_handler): Call signal handler + with extra siginfo_t * and void * parameters when SA_SIGINFO flag is + set. + * signal.cc (signal): Clear SA_SIGINFO flag. + (sigqueue): Fix incorrect setting of si_code. + * sigproc.cc (signal_fixup_after_exec): Clear SA_SIGINFO flag when + setting handler to SIG_DFL. + +2005-09-26 Christopher Faylor + + * pinfo.cc (proc_waiter): Properly fill out si_code as according to SUSv3. + +2005-09-26 Christopher Faylor + + * exceptions.cc (handle_exceptions): Properly fill out si_code as + according to SUSv3. + +2005-09-25 Christopher Faylor + + * sigproc.cc (wait_sig): Cosmetic change. + * pinfo.cc (pinfo::exit): Don't explicitly remove myself since some + other thread may still be using it. + +2005-09-24 Christopher Faylor + + * sigproc.cc (sigproc_terminate): More reversion of + always-exit-from-sigthread change. + +2005-09-23 Christopher Faylor + + * shared.cc (open_shared): Add crucial bit of debugging info. + +2005-09-23 Christopher Faylor + + Semi-reversion of always-exit-from-sigthread change of 2005-09-15. + * exceptions.cc (sigpacket::process): Eliminate return after call to + reinstated noreturn function. + (signal_exit): Allow function to exit when a captive process has been + terminated. + * pinfo.cc (pinfo::exit): Enter exit_lock here. Once again exit here + under control of exit_lock. + * sigproc.cc (sig_send): Don't wait for completion if process is exiting. + Remove special __SIGEXIT accommodations. + (wait_sig): Just exit the thread when a __SIGEXIT has been detected. + Don't exit the process. + +2005-09-23 Christopher Faylor + + * net.cc (cygwin_gethostbyname): Remove debugging cruft. + +2005-09-23 Christopher Faylor + + * pinfo.cc (pinfo::exit): Call ExitProcess if called from signal + thread. + +2005-09-23 Christopher Faylor + + * pinfo.cc (pinfo::exit): Eliminate use of _my_tls.thread_handle. + * tlsoffsets.h: Regenerate. + +2005-09-23 Christopher Faylor + + * cygtls.h (struct _cygtls::thread_handle): Remove/revert. + * sigproc.h (struct sipacket::thread_handle): Put thread_handle here. + * sigproc.cc (sigproc_terminate): Move setting of thread_handle... + (sig_send): ...to here. Put it in packet being sent. Only close + pack.wakeup when we're waiting for completion. + (wait_sig): Use thread_handle directly from received packet. + +2005-09-22 Christopher Faylor + + * cygheap.cc (cygheap_fixup_in_child): It's not just for exec. + * cygtls.h (struct _cygtls::thread_handle): New field. + * dcrt0.cc (exit_lock): Remove declaration. + * winsup.h (exit_lock): Add declaration. + * exceptions.cc (sigpacket::process): Properly return after + signal_exit. + * pinfo.cc (pinfo::exit): Only exit the process if + _my_tls.thread_handle has not been filled out -- which should be an + impossible event. + * sigproc.cc (sigproc_terminate): Fillout _my_tls.thread_handle to + provide something for wait_sig to wait for. Use the siginfo_t version + of sig_send and fill out the tls argument with _my_tls. + (wait_sig): Wait for the thread specified in pack.tls or (for now) + complain bitterly if it doesn't exit. + * tlsoffsets.h: Regenerate. + +2005-09-22 Christopher Faylor + + * pinfo.cc (set_myself): Call strace.hello unconditionally when + DEBUGGING. + (pinfo::init): Sleep and issue debugging output before looping when a + PID_EXITED is found. + +2005-09-22 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix copy/paste + bug. + +2005-09-22 Christopher Faylor + + * strace.cc (strace::vsprntf): Avoid accessing myself->pid if !myself. + +2005-09-22 Christopher Faylor + + * include/sys/strace.h (_STRACE_ON): Remove semicolon from definition. + (_STRACE_OFF): Remove semicolon from definition. + +2005-09-22 Corinna Vinschen + + * fhandler.h (fhandler_base::fstat_helper): Declare with additional + file attributes argument. + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Use + file attributes evaluated from NtQueryFileInformation or + FileInformationByHandle in call to fstat_helper. + Set pc.fileattr from just evaluated file attributes here. + (fhandler_base::fstat_by_name): Use file attributes evaluated from + FindFileFirst or default attribute in call to fstat_helper. + Set pc.fileattr from just evaluated file attributes here. + (fhandler_base::fstat_helper): Use file attributes given as argument, + not file attributes stored in this fhandler, since this information + is potentially wrong. Add comment to explain this. + * path.h (has_attribute): New global inline function. + (path_conv::set_attributes): New method to change fileattr. + +2005-09-21 Christopher Faylor + + * cygthread.cc (cygthread::operator new): Just use getenv() to look for + CYGWIN_FREERANGE_NOCHECK since the Windows environment may be truncated + by being previously execed. + +2005-09-20 Christopher Faylor + + * spawn.cc (av::fixup): Just blindly run any file if it has a .bat or + .cmd extension. + +2005-09-19 Christopher Faylor + + * dcrt0.cc (do_exit): Only call sigproc_terminate from one location -- + pinfo::exit. + * pinfo.cc (pinfo::exit): Move sigproc_terminate later so that signals + can be processed while waiting for hExeced child. + (pinfo::maybe_set_exit_code_from_windows): Set exit code from sigExeced + if it is non-zero. Set exit_state to ES_EXEC_EXIT prior to waiting for + captive process exit code. + * exceptions.cc (sigExeced): New global variable. + (signal_exit): Remove noreturn attribute from declaration. + (signal_exit): Just terminate captive process and return if hExeced on + the theory that the exit will be subsequently handled in the main + thread. + * sigproc.cc (sigproc_terminate): Eliminate test for + ES_SIGPROCTERMINATE and use ES_FINAL instead. + (sig_send): Use no_signals_available instead of duplicate test. + * winsup.h (ES_EXEC_EXIT): New enum. + (ES_SIGPROCTERMINATE): Delete. + +2005-09-19 Christopher Faylor + + * sigproc.cc (talktome): Take siginfo_t argument. Don't scan all pids + trying to find one that's talking to me. Just use the pid from + siginfo_t. + (wait_pid): Pass siginfo_t argument to talktome. + +2005-09-17 Christopher Faylor + + * pipe.cc (fhandler_pipe::open): Use 'cfree' to free buffer since it is + now allocated by cmalloc. + +2005-09-17 Corinna Vinschen + + * net.cc (cygwin_inet_ntop): Change len argument to socklen_t to + follow SUSv3. + * include/arpa/inet.h (inet_ntop): Ditto. + * include/cygwin/in.h: Include cygwin/socket.h to get socklen_t. + +2005-09-16 Christopher Faylor + + * environ.cc (build_env): Use "kilo"bytes not "mega"bytes. Return + immediately on error. + * spawn.cc (spawn_guts): Set return value to -1 on error from + build_env. + +2005-09-16 Christopher Faylor + + * environ.cc (build_env): Clear envblock and return NULL on attempt to + use env var > 32K. + * spawn.cc (spawn_guts): Set E2BIG if build_env detects an error. + +2005-09-16 Christopher Faylor + + * environ.cc (environ_init): Protect with a 'myfault' in case + GetEnvironmentStrings misbehaves. + +2005-09-16 Christopher Faylor + + * environ.cc (environ_init): Add debugging output with value returned + from GetEnvironmentStrings. + +2005-09-16 Christopher Faylor + + * environ.cc (environ_init): Issue an error if GetEnvironmentStrings + fails and return. + +2005-09-15 Christopher Faylor + + * pinfo.h (EXITCODE_SET): Move out of range of Windows error. + (EXITCODE_NOSET): Ditto. + * sigproc.cc (no_signals_available): Remove check for hwait_sig. Just + rely on my_sendsig. Pass in an argument controlling when it is + appropriate to test EXITCODE_SET. + (proc_can_be_signalled): Remove checks for myself since this function + is never called in that context. + (sigproc_init): Pre-initialize my_sendsig to non-zero so that + proc_can_be_signalled will know that we expect to be signalable soon. + (sig_send): Change debugging output. + +2005-09-15 Christopher Faylor + + * sigproc.cc (no_signals_available): Return true if sending to self + from the signal thread. + (wait_sig): Correct so that WaitForSingleObject is called when + hMainThread is != 0, rather than the reverse. + + * cygheap.cc (cygheap_fixup_in_child): Clarify potential error message. + + * fork.cc (fork_copy): Cosmetic change. + +2005-09-15 Christopher Faylor + + * sigproc.cc (wait_sig): Reorganize exit case so that ExitProcess is + always called, since that is the intent of sending a __SIGEXIT. Wait + forever for main thread to go away since, presumably, the main thread + told us it was going away. + +2005-09-14 Christopher Faylor + + * spawn.cc (av::fixup): Avoid breaking out of the wrong "loop". + +2005-09-14 Christopher Faylor + + * hookapi.cc (hook_or_detect_cygwin): Simplify very slightly. + * spawn.cc (av::fixup): Guard against problems reading an executable + which does not match Microsoft's documentation about PE format. + +2005-09-14 Christopher Faylor + + * spawn.cc (av::error): Eliminate. + (av::av): Remove reference to error. + (av::replace0_maybe): Ditto. + (av::dup_maybe): Ditto. + (av::dup_all): Ditto. + (av::unshift): Ditto. + (spawn_guts): On a fault, return E2BIG only if ENOMEM has been set. + Otherwise return EFAULT. + +2005-09-14 Christopher Faylor + + * cygtls.h (san): New structure. + (cygtls::andreas): New element. Replaces _myfault and _myfault_errno. + (cygtls::fault_guarded): Use andreas. + (cygtls::return_from_fault): Ditto. + (cygtls::setup_fault): Add a parameter denoting where to store old + fault handler, if any and use it to "stack" faults. + (cygtls::reset_fault): Restore fault from parameter. + (myfault::sebastian): New variable. + (myfault::~myfault): Pass sebastian to reset_fault. + (myfault::myfault): Store old fault values in sebastian. + +2005-09-14 Christopher Faylor + + * heap.cc (heap_init): Revert 2005-09-11 patch as it seems to + inexplicably cause problems with emacs. + +2005-09-14 Christopher Faylor + + Remove some more unneeded 'return;'s throughout. + +2005-09-14 Christopher Faylor + + * sigproc.h: Protect declaration so that it only happens when + __INSIDE_CYGWIN__. + +2005-09-14 Christopher Faylor + + * exceptions.cc (sigtid): Remove declaration. + (handle_exceptions): Use _sig_tls rather than sigtid to determine if + this is the signal thread. + (set_signal_mask): Ditto for conditionalized CGF code. + * pinfo.cc (pinfo::exit): Exit the thread if we forcefully terminated + the main thread. + * sigproc.cc (sigtid): Delete. + (_sig_tls): Define. + (sig_clear): Use _sig_tls rather than sigtid to determine if this is + the signal thread. + (sig_dispatch_pending): Ditto. + (wait_sig): Set _sig_tls here. + +2005-09-13 Christopher Faylor + + * dcrt0.cc (do_exit): Move sigproc_terminate call later since signal + handling was still needed for subsequent stuff. Call sigproc_terminate + with new exit_state value. + * pinfo.cc (pinfo::exit): Call sigproc_terminate with new exit_state + value. + * sigproc.cc (proc_terminate): Remove unnecessary (void) parameter. + (sigproc_terminate): Ditto. Add new argument to accept exit state to + be set. + (wait_sig): Reorganize __SIGEXIT handling. Add more debugging output. + * winsup.h (sigproc_terminate): Declare with new exit_state argument. + (exit_states): Reorganize to reflect new exit ordering of + sigproc_terminate. + +2005-09-13 Christopher Faylor + + * dcrt0.cc (do_exit): Rely on sigproc_terminate to set exit_state + appropriately. + * pinfo.cc (pinfo::exit): Always call sigproc_terminate here. Rely on + sigproc_terminate to signal signal thread to handle eventual process + exit. + * sigproc.cc (no_signals_available): Change criteria for determining if + this process can handle signals to itself. + (my_sendsig): New variable. Copy of my sendsig handle. + (proc_can_be_signalled): Don't send signals if exit code is set. + (sigproc_terminate): Use and set exit_state appropriately to determine + when to do anything. Send __SIGEXIT to self to control process exit. + (sig_send): Use my_sendsig for sending signals. Don't call + proc_can_be_signalled for myself since the criteria is now different + for sending signals to myself. + (wait_sig): Copy myself->sendsig to my_sendsig for future use. Exit + signal loop when __SIGEXIT is received. Wait for main thread to exit + and use its exit status to actually exit process. + * sigproc.h (__SIGEXIT): New enum. + +2005-09-13 Christopher Faylor + + * dcrt0.cc (alloc_stack): Eliminate superfluous "return;". + * debug.cc (add_handle): Ditto. + * devices.in (device::parse): Ditto. + * dtable.cc (dtable::vfork_parent_restore): Ditto. + (dtable::vfork_child_fixup): Ditto. + * environ.cc (parse_options): Ditto. + * errno.cc (seterrno_from_win_error): Ditto. + * exceptions.cc (sig_handle_tty_stop): Ditto. + (set_signal_mask): Ditto. + * fhandler.cc (fhandler_base::read): Ditto. + (fhandler_base::operator delete): Ditto. + (fhandler_base::seekdir): Ditto. + (fhandler_base::rewinddir): Ditto. + * fhandler_console.cc (fhandler_console::read): Ditto. + (fhandler_console::fixup_after_exec): Ditto. + * sigproc.cc (sigproc_init): Ditto. + (sigproc_terminate): Ditto. + + * devices.cc: Regenerate. + +2005-09-13 Christopher Faylor + + * sigproc.cc (wait_sig): Be more defensive about detecting when we're + exiting. + +2005-09-12 Christopher Faylor + + * cygthread.cc (cygthread::cygthread): Add more info to fatal error. + + * fhandler_disk_file.cc (fhandler_disk_file::readdir): Temporarily + remove insertion of /dev into root directory. + * path.cc (path_conv::check): Ditto. + +2005-09-11 Christopher Faylor + + * heap.cc (heap_init): Allocate heap from top down as a hedge against + subsequent ERROR_INVALID_ADDRESS in forked processes when CTRL-C is + pressed. + +2005-09-09 Christopher Faylor + + * heap.cc (heap_init): Be slightly more aggressive when trying to + allocate heap. Change fatal error message to avoid confusion with + cygheap. + + * spawn.cc (linebuf::finish): New function. + (linebuf::add): Cosmetic change. + (spawn_guts): Only avoid building windows command line if the program + being executed was actually mounted with -X. Don't return E2BIG if we + hit the 32K size and we're executing a detected cygwin program. Just + silently truncate the windows command line, instead. + +2005-09-08 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::tcgetattr): Just zero c_cflag + here rather than clearing CBAUD after the fact. + * termios.cc (tcgetattr): Revert previous change. + +2005-09-08 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::ioctl): Always return 0 for + window size. + * termios.cc (tcgetattr): Clear out baud part of c_cflag since it is + always ignored. + +2005-09-08 Corinna Vinschen + + * exceptions.cc (ctrl_c_handler): Disable any special CTRL_LOGOFF_EVENT + handling and add longish comment about the reasons. + +2005-09-07 Christopher Faylor + + * hookapi.cc (rvadelta): Change argument to DWORD to eliminate a + compiler warning. + + * path.h (path_conv::set_cygexec): New function. + * spawn.cc (av::iscygwin): Eliminate. + (av::av): Don't initialize iscygwin. + (spawn_guts): Just use real_path.iscygexec for all tests. + (av::fixup): Short circuit test if .exe extension and known cygexec. + Set cygexec flag appropriately if we find that program uses cygwin1.dll. + +2005-09-06 Christopher Faylor + + * dcrt0.cc (initial_env): Don't attempt stracing if dynamically loaded. + (dll_crt0_0): Move console initialization earlier. + * init.cc (dll_entry): Move console initialization here. + * exceptions.cc (init_console_handler): Fully remove any old console + handler. + (handle_sigsuspend): Make cancelable when called from non-main thread. + + * spawn.cc (spawn_guts): Don't fill out windows argv if we've deduced + that this is a cygwin-using program. + (av::fixup): Always check executables to see if they are using + cygwin1.dll. Don't consider .com files to be scripts. + * hookapi.cc (rvadelta): New function. + (PEHeaderFromHModule): Simplify slightly. + (hook_or_detect_cygwin): Use passed in name argument for "HMODULE" + rather than incorrectly reading current program. Calculate delta + needed to read image data and file names if this isn't a real + "HMODULE". + +2005-09-06 Corinna Vinschen + + * thread.h: Revert patch from 2005-09-05. + * thread.cc (pthread_mutex::can_be_unlocked): Return true also if + mutex is owned by MUTEX_OWNER_ANONYMOUS. + +2005-09-05 Christopher Faylor + + * cygheap.cc (cygheap_init): Eliminate debugging #if. + + * fork.cc (fork_parent): Don't issue errors if "somebody" has set the + PID_EXITED flag on a child. Don't close process handle if it has + potentially already been closed. + * pinfo.cc (winpids::add): Eliminate PID_ALLPIDS handling which was + obsoleted by previous changes. + + * spawn.cc (av::fixup): Do win16 detection for .com files. Make sure + that buffer has been unmapped in all cases. + +2005-09-05 Corinna Vinschen + + * thread.h (pthread_mutex::get_pthread_self): Remove. + (pthread_mutex::lock): Use ::pthread_self as self parameter. + (pthread_mutex::trylock): Ditto. + (pthread_mutex::unlock): Ditto. + (pthread_mutex::destroy): Ditto. + +2005-09-02 Dave Korn + + * Makefile.in (CXXFLAGS): Use 'override' to correctly set flags to + generate dependencies when invoked from top-level make. + +2005-08-28 Christopher Faylor + + * exceptions.cc (set_process_mask_delta): Conditionalize debugging + output. + * sigproc.cc (proc_subproc): Make strace output a little more verbose. + +2005-08-28 Christopher Faylor + + * cygtls.h (__ljfault): Declare. + (_cygtls::return_from_fault): Use __ljfault. + * exceptions.cc (set_signal_mask): Revert previous checkin. + * gendef (__sjfault): Split out into a separate function which doesn't + bother with any special signal locking. + (_ljfault): Return from a __sjfault without bothering with signals. + +2005-08-28 Christopher Faylor + + * cygtls.h (_local_storage::strerror_buf): Allocate more space. + * errno.cc (strerror_worker): New function, adapted from strerror. + (strerror): Use strerror_worker. + * tlsoffsets.h: Regenerate. + + * exceptions.cc (set_signal_mask): Minimize time during which mask_sync + is held. + +2005-08-28 Christopher Faylor + + * cygwin.din: Correct readdir_r typo. + +2005-08-27 Bas van Gompel + + * dir.cc (readdir_r): Invert sense on error test. + +2005-08-25 Corinna Vinschen + + * path.cc (normalize_posix_path): Keep two leading slashes + intact throughout. + (normalize_win32_path): Revert to only checking for slash. + (realpath): Convert drive letters to cygdrive paths before + doing anything else. + * shared_info.h (mount_info::cygdrive_posix_path): Make public. + +2005-08-25 Corinna Vinschen + + * path.cc (realpath): Drop call to mount_info::conv_to_posix_path + in favor of calling path_conv with PC_POSIX flag. Align error + handling closer to POSIX. As on Linux, return user space allocated + memory if second parameter is NULL. + +2005-08-25 Corinna Vinschen + + * path.cc (normalize_win32_path): Honor network paths. Fold more + than two leading dir separators into one. Check for dir separator + instead of just slashes to handle incoming Win32 paths correctly. + +2005-08-25 Christopher Faylor + + * errno.cc (errmap): Translate ERROR_NO_MORE_ITEMS to ENMFILE. + +2005-08-24 Christopher Faylor + + * exceptions.cc (handle_sigsuspend): Just sleep forever if called from + non-main thread. + (sigpacket:process): Simplify logic which determines when and how a + signal is masked. Don't trigger sigwait if there is a signal handler. + * sigproc.cc (wait_sig): Update comment. Try to process a signal which + is in the queue if it isn't queued for the target thread (this is still + not right). + +2005-08-24 Christopher Faylor + + * spawn.cc (perhaps_suffix): Record errno-type error value in third + argument. + (find_exec): On error, set errno returned from perhaps_suffix. + (spawn_guts): Ditto. + +2005-08-24 Christopher Faylor + + * fhandler_virtual.cc (fhandler_virtual::close): Don't free filebuf if + it's NULL. + * pinfo.cc (_pinfo::commune_send): Fix test for incorrect number of + bytes read from pipe. + +2005-08-24 Corinna Vinschen + + * syscalls.cc (endusershell): Reset shell_fp to NULL to allow + subsequent getusershell calls. + +2005-08-24 Christopher Faylor + + * path.cc (path_conv::check): Fill in fileattr for /dev, defaulting to + directory if /dev doesn't actually exist. + (win32_device_name): Don't consider FH_DEV to be a device since it's + really a directory which should go through mount processing. + +2005-08-24 Christopher Faylor + + * cygheap.h (cygheap_types): Add HEAP_COMMUNE. + * fhandler_proc.cc: Use cygheap rather than user heap for allocation of + filebuf throughout. + * fhandler_registry.cc: Ditto. + * fhandler_virtual.cc: Ditto. + * fhandler_process.cc: Ditto. + (get_mem_values): Use malloc/realloc/free rather than new. + * pinfo.cc (_pinfo::commune_send): Allocate on cygwin heap rather than + user heap. Avoid calling ReadFile when correct number of characters + have been read or suffer buffer corruption. + (_pinfo::fd): Allocate on cygwin heap rather than user heap. + (_pinfo::fds): Ditto. + (_pinfo::root): Ditto. + (_pinfo::cwd): Ditto. + (_pinfo::cmdline): Ditto. + + * devices.h (FH_DEV): New define. + * devices.in: Detect lone /dev. + * devices.cc: Regenerate. + * path.cc (path_conv::check): Treat FH_DEV as a special case. + +2005-08-23 Christopher Faylor + + * sigproc.h (set_signal_mask): Remove default on second parameter and + make pass by reference. + * signal.cc (abort): Accommodate change to set_signal_mask. + * select.cc (pselect): Ditto. + * exceptions.cc (handle_sigsuspend): Ditto. + (ctrl_c_handler): Ditto. + (sighold): Ditto. + (sigrelse): Ditto. + (set_process_mask_delta): Ditto. + (_cygtls::call_signal_handler): Ditto. + + * fhandler_disk_file.cc (fhandler_disk_file::readdir): Return ENMFILE + if __handle is not set. Set __handle to NULL when out of files. + (fhandler_disk_file::rewinddir): Don't close handle if it's NULL. + (fhandler_disk_file::closedir): Ditto. + +2005-08-22 Christopher Faylor + + * dir.cc (readdir_worker): Make static. Only add '.' and '..' when + readdir fails due to ENMFILE. + * fhandler_disk_file.cc (fhandler_disk_file::readdir): Only close + handle on error != ENMFILE. + +2005-08-22 Corinna Vinschen + + * mtinfo.h (mtinfo_drive::error): Fix argument bug in debug_printf call. + +2005-08-20 Christopher Faylor + + * cygerrno.h (geterrno_from_win_error): Change declaration to default + to using GetLastError and EACCESS. + * cygwin.din: Export readdir_r. + * include/cygwin/version.h: Bump API version number to 138. + * syscalls.cc (readdir_worker): New function, renamed from old + readdir() function. + (readdir): Use readdir_worker. + (readdir_r): New function. + * fhandler.h (fhandler_base::readdir): Accommodate second argument + indicating dirent buffer. + (fhandler_disk_file::readdir): Ditto. + (fhandler_cygdrive::readdir): Ditto. + (fhandler_proc::readdir): Ditto. + (fhandler_netdrive::readdir): Ditto. + (fhandler_registry::readdir): Ditto. + (fhandler_process::readdir): Ditto. + * fhandler.cc (fhandler_base::readdir): Ditto. + * fhandler_disk_file.cc (fhandler_disk_file::readdir): Ditto. + * fhandler_cygdrive.cc (fhandler_cygdrive::readdir): Ditto. + * fhandler_proc.cc (fhandler_proc::readdir): Ditto. + * fhandler_netdrive.cc (fhandler_netdrive::readdir): Ditto. + * fhandler_registry.cc (fhandler_registry::readdir): Ditto. + * fhandler_process.cc (fhandler_process::readdir): Ditto. + * include/sys/dirent.h (readdir_r): Add declaration. + +2005-08-19 Christopher Faylor + + * fhandler.h (dirent_states): Add dirent_saw_proc. + * fhandler_disk_file.cc (fhandler_disk_file::readdir): Fill in "proc" + if it is the root dir and it is missing. + +2005-08-19 Christopher Faylor + + * fhandler.h (dirent_states): Add dirent_isroot, dirent_saw_cygdrive, + dirent_saw_dev. + * dir.cc (opendir): Don't zero __flags here. Push that responsibility + to opendir methods. + (seekdir): Preserve dirent_isroot in __flags. + (rewinddir): Ditto. + * fhandler_disk_file.cc (fhandler_disk_file::opendir): Set + dirent_isroot appropriately. + (fhandler_disk_file::readdir): Fill in "cygdrive" and "dev" if it is + the root dir and they are missing. + * fhandler_process.cc (fhandler_process::opendir): Set __flags here. + * fhandler_virtual.cc (fhandler_virtual::opendir): Set __flags here. + +2005-08-19 Christopher Faylor + + * winsup.h (create_pipe): Declare new function. + (CreatePipe): New define. + * miscfuncs.cc (create_pipe): Define new function. + +2005-08-18 Christopher Faylor + + * fhandler.h (fhandler_tty_common::lseek): Declare new method. + (fhandler_tty_slave::lseek): Delete old method. + (fhandler_tty_master::lseek): Delete old method. + * fhandler_tty.cc (fhandler_tty_common::lseek): Define new method. + +2005-08-18 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::recvfrom): Always initialize + ret to 0. + (fhandler_socket::recvmsg): Ditto. + +2005-08-18 Corinna Vinschen + + * errno.cc (strerror): Check errnum for underflow. + +2005-08-17 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Tweak debugging stuff. + +2005-08-17 Pavel Tsekov + + * fhandler_tty.cc (fhandler_tty_common::close): Rearrange the code so + that the master end of the input and output pipes is closed before + signalling an EOF event to the slave. + (fhandler_pty_master::close): Likewise. + +2005-08-14 Corinna Vinschen + + * init.cc (respawn_wow64_process): Make inline function. Remove + "noreturn" attribute. Add additional check if parent process is + actually a 64 bit process. + (dll_entry): Only test WOW64 processes with a stack in the usual + "dangerous" process space area. + +2005-08-11 Troy Curtiss + + * fhandler_serial.cc (fhandler_serial::tcgetattr): Return current baud + rate regardless of current DTR state. + +2005-08-11 Christopher Faylor + + * dcrt0.cc: Remove ld_preload declaration. + * winsup.h: Move ld_preload declaration here. + * fork.cc (fork_child): Call ld_preload() before returning. + +2005-08-11 Christopher Faylor + + * child_info. (CURR_CHILD_INFO_MAGIC): Refresh. + (child_info::child_info()): New constructor. + (child_info_spawn::child_info_spawn()): Ditto. + (child_info_spawn::operator new): New operator. + (child_info_spawn::set): New function. + * spawn.cc (av()): New constructor. + (av::operator new): New operator. + (av::set): New function. + (spawn_guts): Reorganize so that classes which allocate are defined + early in the function so that it can be properly cleaned up after an + efault. Set errno to E2BIG in the event of a SEGV situation. + +2005-08-08 Christopher Faylor + + * include/sys/cdefs.h: Remove extra line. + +2005-08-08 Corinna Vinschen + + * security.cc (get_reg_security): New static function. + (get_nt_object_security): Call get_reg_security for registry keys + to circumvent problems with predefined registry keys. + +2005-08-08 Corinna Vinschen + + * fhandler_process.cc (fhandler_process::open): Allow opening of + /proc//fd for reading. + * fhandler_registry.cc (fhandler_registry::open): Ditto for registry + keys. + +2005-08-08 Christopher Faylor + + * include/sys/cdefs.h (__CONCAT): Define. + * include/elf.h: New file. + * include/sys/elf32.h: Ditto. + * include/sys/elf64.h: Ditto. + * include/sys/elf_common.h: Ditto. + * include/sys/elf_generic.h: Ditto. + +2005-08-08 Christopher Faylor + + * cygwin.sc: Use simpler method to align .cygheap. + * dllfixdbg: Just copy .stab and .stabstr sections when making + cygwin1.dbg, rather than relying on objcopy to keep only the debug + sections since objcopy seems to get it wrong. + +2005-08-08 Corinna Vinschen + + * dtable.cc (build_fh_pc): Check setting fh to fhandler_nodevice for + NULL, too. + +2005-08-08 Corinna Vinschen + + * ftw.c: Include winsup.h. + * nftw.c: Ditto. + * include/ftw.h: Guard declarations appropriately. + +2005-08-08 Corinna Vinschen + + * Makefile.in (DLL_OFILES): Add fts.o, ftw.o, nftw.o. + * cygwin.din: Export fts_children, fts_close, fts_get_clientptr, + fts_get_stream, fts_open, fts_read, fts_set, fts_set_clientptr, + ftw, nftw. + * fts.c: New file, imported from FreeBSD. + * ftw.c: Ditto. + * nftw.c: Ditto. + * include/fts.h: Ditto. + * include/ftw.h: Ditto. + * include/cygwin/version.h: Bump API minor number. + +2005-08-07 Christopher Faylor + + * Makefile.in (dtable_CFLAGS): Use -fomit-frame-pointer and + -fcheck-new. + * cygheap.cc (cmalloc): Only emit system_printf warnings on failure if + DEBUGGING. + (crealloc): Ditto. + (ccalloc): Ditto. + * dtable.cc (build_fh_name): Treat NULL return from cnew as indicative + of EMFILE condition. + (build_fh_dev): Ditto. + (dtable::dup_worker): Handle NULL return from build_fh_pc. + (dtable::vfork_child_dup): Trust dup_worker to set errno. + * fhandler.h (fhandler_base::new): Mark as nothrow. + +2005-08-07 Christopher Faylor + + * dllfixdbg: New perl script. + * configure.in: Detect objcopy, objdump, strip. + * configure: Regenerate. + * Makefile.in: Pass target objcopy/objdump to new dllfixdbg script. + Remove previous perl check. + * cygwin.sc: Add .gnu_debuglink_overlay section for eventual + replacement with .gnu_debuglink section. Revert move of cygheap to end + of image. + +2005-08-06 Corinna Vinschen + + * Makefile.in: Allow previous patch to work in a 64 bit environment. + +2005-08-06 Christopher Faylor + + * Makefile.in: Warn when end of cygheap is not on 64k boundary. + * cygwin.sc: Try harder to ensure that cygheap is on a 64k boundary. + Move cygheap to end of image to stop interference from unstripped debug + regions. + +2005-08-06 Christopher Faylor + + * include/endian.h: Move everything into this file and define things + more like linux. + * include/cygwin/types.h: Include endian.h. + * include/sys/dirent.h: Define DT_* types and conversion macros. + + * pinfo.cc (pinfo::init): Remove special handling for PID_ALLPIDS and + execed code, even though it probably still isn't quite right. + +2005-08-05 Michael Gorse + + * thread.cc (pthread::create(3 args)): Make bool. + (pthread_null::create): Ditto. + (pthread::create(4 args)): Check return of inner create rather than + calling is_good_object(). + * thread.h: Ditto. + +2005-08-05 Vaclav Haisman + + * fhandler_tty.cc (fhandler_tty_slave::tcflush): Return either 0 or -1. + +2005-08-05 Corinna Vinschen + + * thread.cc (pthread_cond_timedwait): Check abstime for validity + according to SUSv3. Rewrite timeout check and waitlength calculation + to avoid overflow problems. + +2005-08-02 Yitzchak Scott-Thoennes + + * include/sys/termios.h: Define TIOCMBIS and TIOCMBIC. + * fhandler.h (class fhandler_serial): Declare switch_modem_lines. + * fhandler_serial.cc (fhandler_serial::switch_modem_lines): New + static function to set or clear DTR and/or RTS. + (fhandler_serial::ioctl): Use switch_modem_lines for TIOCMSET + and new TIOCMBIS and TIOCMBIC. + * include/cygwin/version.h: Bump API minor number. + +2005-07-29 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_base::pread): Don't move file offset + pointer after I/O. + (fhandler_base::pwrite): Ditto. + +2005-07-29 Christopher Faylor + + * fhandler.h (fhandler_base::pread): Declare new function. + (fhandler_base::pwrite): Ditto. + (fhandler_disk_file::pread): Ditto. + (fhandler_disk_file::pwrite): Ditto. + * fhandler.cc (fhandler_base::pread): Define new function. + (fhandler_base::pwrite): Ditto. + * fhandler_disk_file.cc (fhandler_base::pread): Ditto. + (fhandler_base::pwrite): Ditto. + * syscalls.cc (pread): Define new function. + (pwrite): Ditto. + * cygwin.din: Export pread, pwrite. + + * include/sys/ioctl.h: Guard some _IO* declarations to avoid conflict + with socket.h. + +2005-07-29 Christopher Faylor + + * include/sys/ioctl.h: Add some linux defines. + +2005-07-29 Christopher Faylor + + * pinfo.cc (pinfo::init): Put back accidentally removed debug_printf. + +2005-07-29 Arto Huusko + + * cygthread.cc (cygthread::simplestub): Wait for h to be filled out + by main thread before assigning it. + +2005-07-29 Arto Huusko + + * pinfo.cc (pinfo::init): Sleep before retrying open_shared(). + +2005-07-29 Arto Huusko + + * fork.cc (fork_parent): Fix null deref if pinfo creation fails. + +2005-07-28 Christopher Faylor + + * cygmalloc.h (MSPACES): Define. This dropped through the cracks after + the last malloc update. + * dcrt0.cc: Fix a comment. + * malloc.cc (internal_malloc): Fix definition so that it can be safely + coerced. + +2005-07-27 Christopher Faylor + + * include/cygwin/in.h (INET_ADDRSTRLEN): Add new definition. + +2005-07-27 Christopher Faylor + + * gendef: Use nocr to remove \r's from input. + gendef (nocr): New function. + +2005-07-27 Christopher Faylor + + * fhandler_clipboard.cc (fhandler_dev_clipboard::close): Set membuffer + to NULL. + (fhandler_dev_clipboard::fixup_after_exec): Don't call close here. + Just set variables directly. + +2005-07-25 Christopher Faylor + + * include/byteswap.h: New file. + +2005-07-25 Christopher Faylor + + * include/cygwin/types.h: Define loff_t. + +2005-07-16 Christopher Faylor + + * child_info.h (child_info::sync): Pass pid and HANDLE rather than + using pinfo. + (child_info::child_info): Accept an argument controlling whether to + create proc_subproc. + (child_info_spawn::child_info_spawn): Ditto. + * sigproc.cc (child_info::child_info): Ditto. + (child_info_spawn::child_info_spawn): Ditto. + (child_info::sync): Use passed in pid and HANDLE. + * fork.cc (fork_parent): Reflect additional arguments required for + child_info::sync. + * hookapi.cc (hook_or_detect_cygwin): Rename. Change so that NULL 'fn' + argument just returns "true", indicating that program uses cygwin1.dll. + * spawn.cc (av::win16_exe): New element. + * spawn.cc (av::iscygwin): New element. + (av::fixup): New function. + (spawn_guts): Protect against SEGV. Use fixup function to detect when + it is safe to wait for a spawned (as opposed to an execed) program. + Reflect changes in child_info::sync arguments. + * external.cc (cygwin_internal): Reflect function renaming to + hook_or_detect_cygwin. + + * cygheap.cc (cygheap_fixup_in_child): Close handle after debug fixup + has been done to prevent false positives in handle collision. + + * exceptions.cc (try_to_debug): Notify debugger if already being + debugged. + +2005-07-09 Christopher Faylor + + * path.cc (mount): Only check win32_path when we know we need it. + +2005-07-09 Nicholas Wourms + + * cygwin.din (getline): Export. + (getdelim): Export. + * include/sys/stdio.h (getline): Replace macro with function prototype. + (getdelim): Likewise. + * include/cygwin/version.h: Bump API minor number. + +2005-07-08 Corinna Vinschen + + * cygwin.din (__getline): Export. + (__getdelim): Export. + * include/sys/stdio.h (getline): Define as __getline. + (getdelim): Define as __getdelim. + * include/cygwin/version.h: Bump API minor number. + +2005-07-06 Christopher Faylor + + Eliminate (void) cast on standalone function calls throughout. + +2005-07-05 Christopher Faylor + + * dcrt0.cc (cygwin_exit): Mark as "noreturn". + * sigproc.cc (child_info::ready): Don't signal parent that we are a + cygwin process if we are dynamically loaded. + +2005-07-05 Christopher Faylor + + * malloc.cc: Update to version 2.8.2. + +2005-07-05 Corinna Vinschen + + * fhandler_tape.cc (fhandler_dev_tape::close): Don't do "extra stuff" + when we know we're execing. + +2005-07-04 Christopher Faylor + + Change foo (void) to foo () for all c++ functions throughout. + Remove all fhandler_*::dump functions throughout. + + * fhandler.h (fhandler_dev_mem::close): Remove pass-through function in + favor of virtual method. + (handler_dev_raw::close): Ditto. + (fhandler_dev_clipboard::fixup_after_exec): New method. + * fhandler_dev_mem.cc (fhandler_dev_mem::close): Eliminate pass through + function in favor of virtual method. + * fhandler_dev_raw.cc (fhandler_dev_raw::close): Ditto. + * fhandler_clipboard.cc (fhandler_dev_clipboard::close): Don't go to + extra effort when execing. + (fhandler_dev_clipboard::fixup_after_exec): New function. + * fhandler_console.cc (fhandler_console::close): Don't do "extra stuff" + when we know we're execing. + * fhandler_disk_file.cc (fhandler_disk_file::close): Ditto. + * fhandler_dsp.cc (fhandler_dev_dsp::close): Ditto. + * fhandler_fifo.cc (fhandler_fifo.cc::close): Ditto. function in favor + of base function. + * fhandler_random.cc (fhandler_dev_random::close): Ditto. + * fhandler_registry.cc (fhandler_registry::close): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::close): Ditto. + * fhandler_virtual.cc (fhandler_virtual::close): Ditto. + + * pinfo.cc (proc_waiter): Remove unneeded hExeced declaration. + * sigproc.cc: Ditto. + * winsup.h (hExeced): Define here. + + * fhandler_virtual.cc (fhandler_virtual::fixup_after_exec): Just call + close() to reinitialize things to known state. + +2005-07-04 Christopher Faylor + + * cygtls.h (_cygtls): Perform minor reformatting. + + * winsup.h (close_all_files): Reflect argument change. + * dtable.cc (close_all_files): Ditto. + * dtable.h: Ditto. + * fhandler.h: Ditto. + * spawn.cc (spawn_guts): Move close_all_files back to its original + location in first P_OVERLAY test but use argument denoting that handles + are only supposed to be closed, not released (more work to be done + here). + * syscalls.cc (close_all_files): Take an argument denoting whether to + release closed files or not. + + * path.cc (symlink): Change argument names to reflect linux man page. + (symlink_worker): Ditto. Also appropriately set ENOENT for empty + strings. + + +2005-07-04 Pierre Humblet + + * cygheap.h (struct init_cygheap): Delete cygwin_regname member. + * external.cc (cygwin_internal): Use cygpsid::get_id for + CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID. + Turn CW_SET_CYGWIN_REGISTRY_NAME and CW_GET_CYGWIN_REGISTRY_NAME + into noops. + +2005-07-03 Christopher Faylor + + * thread.cc (pthread_mutex::init): Remove unneeded efault/mutex check. + +2005-07-02 Christopher Faylor + + * thread.h (verifyable_object_state verifyable_object_isvalid): Delete + function declaration that should have been static. + * thread.cc (verifyable_object_state verifyable_object_isvalid): Make + inline static. + (pthread*::is_good_object): Move to directly after + verifyable_object_state verifyable_object_isvalid and make inline. + (check_valid_pointer): Delete function. + (pthread_cond_timedwait): Use myfault to detect valid pointer. + (pthread_mutex::init): Ditto. + +2005-07-02 Christopher Faylor + + Replace valid memory checks with new myfault class "exception + handling", almost everywhere. Leave some thread.cc stuff alone for + now. + * cygtls.h: Kludge some definitions to avoid including a problematic + windows header. + (_cygtls::_myfault): New entry. + (_cygtls::_myfault_errno): Ditto. + (_cygtls::fault_guarded): New function. + (_cygtls::setup_fault): Ditto. + (_cygtls::return_from_fault): Ditto. + (_cygtls::clear_fault): Ditto. + (myfault): New class. + * exceptions.cc (handle_exceptions): Handle case of guarded fault in + system routine. + * gendef: Add another entry point for setjmp that the compiler doesn't + know about and won't complain about. + * gentls_offsets: Just include windows.h rather than kludging a HANDLE + def. + * miscfuncs.cc (check_null_str): Delete. + (check_null_empty_str): Ditto. + (check_null_empty_str_errno): Ditto. + (check_null_str_errno): Ditto. + (__check_null_invalid_struct): Ditto. + (__check_null_invalid_struct_errno): Ditto. + (__check_invalid_read_ptr): Ditto. + (__check_invalid_read_ptr_errno): Ditto. + (dummytest): New function. + (check_iovec_for_read): Delete. + (chec_iovec): Rename from check_iovec_for_write. Take a read/write + parameter. + * tlsoffsets.h: Regenerate. + * winsup.h: Remove check_* declarations. + (check_iovec_for_read): Delete declaration. Turn into a define + instead. + (check_iovec_for_write): Ditto. + (check_iovec): New declaration. + + * thread.h: Use ifdef guard name consistent with other header files. + +2005-07-02 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number to 19. + +2005-06-30 Corinna Vinschen + + * fhandler.cc (fhandler_base::readv): Use malloc/free instead of alloca. + (fhandler_base::writev): Ditto. + +2005-06-29 Christopher Faylor + + * cygerrno.h: Make multi-inclusion safe. + * fhandler_termios.cc (fhandler_termios::tcsetpgrp): Deal with EINTR. + * dcrt0.cc (dll_crt0_0): Accommodate init_console_handler argument + change. + * winsup.h: Ditto. + * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. + * exceptions.cc (init_console_handler): Ditto. Ignore console events + if we're not attached to a terminal. + * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. + * wincap.cc: Implement has_null_console_handler_routine throughout. + * wincap.h: Ditto. + +2005-06-29 Christopher Faylor + + * autoload.cc (LoadDLLprime): Use a more descriptive name for autoload + text sections. + * cygwin.sc: Ditto. + +2005-06-27 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::facl): Add missing break. + +2005-06-24 Corinna Vinschen + + * path.cc (path_conv::check): Don't strip trailing dots and spaces + at the start of the path. + +2005-06-24 Corinna Vinschen + + * fhandler.cc (rootdir): Don't set errno. + * syscalls.cc (statvfs): Set errno to ENOTDIR if rootdir() failed. + +2005-06-22 Corinna Vinschen + + * fhandler.h (class fhandler_dev_tape): Add declaration for + fixup_after_fork and set_close_on_exec. + * fhandler_tape.cc (fhandler_dev_tape::open): Create mt_mtx mutex + inheritable. + (fhandler_dev_tape::close): Close mt_mtx. + (fhandler_dev_tape::dup): Duplicate mt_mtx and mt_evt as necessary. + (fhandler_dev_tape::fixup_after_fork): New method. + (fhandler_dev_tape::set_close_on_exec): New method. + +2005-06-21 Corinna Vinschen + + * security.cc (get_initgroups_sidlist): Drop special_pgrp parameter. + (get_setgroups_sidlist): Avoid duplicate groups in group list. + (create_token): Remove special_pgrp local variable. Accommodate + change to get_initgroups_sidlist call. + +2005-06-21 Corinna Vinschen + + * uinfo.cc (uinfo_init): Call reimpersonate to set the main thread's + impersonation token. + +2005-06-20 Corinna Vinschen + + * fhandler_proc.cc (format_proc_partitions): Only list recognized + partitions. Use partition number given by PartitionNumber member. + +2005-06-18 Corinna Vinschen + + * glob.c: (glob0): New local variable `limit`. Use in calls to glob1 + and globextend. + (glob1): Add `limit' parameter. + (glob2): Ditto. + (glob3): Ditto. + (globextend): Ditto. Implement GLOB_LIMIT handling. + * include/glob.h (GLOB_LIMIT): New define. + * include/cygwin/version.h: Bump API minor number. + +2005-06-17 Christopher Faylor + + * wincap.h (wincaps::detect_win16_exe): Declare. + (wincapc::detect_win16_exe): Implement. + * wincap.cc: Populate detect_win16_exe where appropriate. + * spawn.cc (spawn_guts): Only go out of the way to detect 16-bit apps + on systems which are flummoxed by them. + +2005-06-17 Christopher Faylor + + * spawn.cc (spawn_guts): Detect when executing a 16-bit application and + avoid setting the process pipe since this causes conniptions in Windows + 9x. + +2005-06-17 Corinna Vinschen + + * cygwin.din (inet_pton): Export. + (inet_ntop): Export. + * net.cc (cygwin_inet_pton): Implement inet_pton for AF_INET for now. + (cygwin_inet_ntop): Implement inet_ntop for AF_INET for now. + * include/arpa/inet.h (inet_pton): Declare. + (inet_ntop): Declare. + * include/cygwin/version.h: Bump API minor number. + +2005-06-17 Corinna Vinschen + + * fhandler.h (fhandler_union): Add missing members corresponding to + fhandler_fifo and fhandler_netdrive. + +2005-06-16 Corinna Vinschen + + * syscalls.cc (statvfs): Handle the case when GetDiskFreeSpaceEx + succeeds but GetDiskFreeSpace fails by faking bytes-per-sector and + sectors-per-cluster values. + +2005-06-15 Christopher Faylor + + * cygthread.cc (cygthread::detach): Fix debugging output. + * dcrt0.cc (dll_crt0_1): Create signal_arrived early -- before any + filename manipulation. + * sigproc.cc (sigproc_init): Don't create signal_arrived here. + * fork.cc (fork_child): Ditto. + * sigproc.h (create_signal_arrived): Declare. + +2005-06-14 Christopher Faylor + + * path.cc (path_conv::check): Always reset to FH_FS when component != 0 + and FH_NETDRIVE to fix problems with strict case checking. + +2005-06-12 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::recvmsg): Avoid SEGV in OpenSSH + when trying to pass file descriptor by setting msg->msg_accrightslen + to 0. + +2005-06-11 Christopher Faylor + + * Makefile.in: Avoid initial heap allocation since cygwin has its own + heap. + +2005-06-11 Christopher Faylor + + * fhandler_console.cc (fhandler_console::read): Fix a compiler warning. + +2005-06-10 Christopher Faylor + + * include/pthread.h: Change PTHREAD_MUTEX_DEFAULT to + PTHREAD_MUTEX_NORMAL. Revert PTHREAD_MUTEX_INITIALIZER to + PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP since that is actually closer + to what linux does. + * thread.h (cw_cancel_action): New enum. + (cancelable_wait): Use cw_cancel_action as third argument. + * thread.cc (cancelable_wait): Ditto. Don't wait for cancel if + cancel_action == cw_no_cancel. + (pthread::create): Don't wait for cancel event since that is racy. + (pthread_mutex::pthread_mutex): Set default to PTHREAD_MUTEX_ERRORCHECK. + (pthread_mutexattr::pthread_mutexattr): Ditto. + (pthread_mutex::_lock): Tell cancelable_wait not to wait for + cancellation event. + (semaphore::_timedwait): Accommodate change in cancelable_wait args. + (pthread::join): Ditto. + +2005-06-10 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::sendto): Always initialize + ret to 0. + (fhandler_socket::sendmsg): Ditto. + +2005-06-10 Corinna Vinschen + + * cygwin.din (imaxabs): Export. + (imaxdiv): Export. + (llabs): Export. + (lldiv): Export. + (strtoimax): Export. + (strtoumax): Export. + * include/inttypes.h (imaxabs): Activate declaration. + (imaxdiv): Ditto. + (strtoimax): Ditto. + (strtoumax): Ditto. + * include/cygwin/version.h: Bump API minor. + +2005-06-09 Christopher Faylor + + * cygthread.cc (cygthread::detach): Improve diagnostics for what should + be an impossible failure condition. + +2005-06-09 Christopher Faylor + + * cygtls.h (_local_storage::setmode_file): New element. + (_local_storage::setmode_mode): New element. + * tlsoffsets.h: Regenerate. + * cygwin.din (setmode): Define as cygwin_getmode. + * syscalls.cc (setmode_helper): Use setmode_* variables from tls rather + than using unthreadsafe static. + (setmode): Break out fwalk stuff. + (cygwin_setmode): New function. Put fwalk stdio stuff here. + +2005-06-09 Christopher Faylor + + * thread.cc (pthread_mutex::_lock): Use cancelable_wait rather than + WaitForSingleObject. + +2005-06-09 Christopher Faylor + + * cygwin.sc: Place .cygwin_dll_common in a more sensible spot. + +2005-06-09 Christopher Faylor + + * cygwin.sc: Place .cygwin_dll_common. + * init.cc (threadfunc_ix): Use a more common name for the section name. + +2005-06-09 Christopher Faylor + + * include/pthread.h (PTHREAD_MUTEX_INITIALIZER): Change to + PTHREAD_NORMAL_MUTEX_INITIALIZER_NP to be closer to linux default. + +2005-06-09 Christopher Faylor + + * thread.cc (cancelable_wait): No-op change to make sure that res is + always a valid WFMO return. + +2005-06-09 Christopher Faylor + + Change pthread::cancelable_wait to just cancelable_wait, throughout. + * thread.h (cw_sig_wait): New enum. + (fast_mutex::lock): Use cancelable_wait with resumable signal. + (cancelable_wait): Change fourth argument to cw_sig_wait enum. + * thread.cc (cancelable_wait): Ditto. Loop on signal detection if + fourth argument == cw_sig_resume. + +2005-06-08 Christopher Faylor + + * cygwin.sc: Apparently nonloading sections need to go last. + +2005-06-08 Christopher Faylor + + * cygwin.sc: Restore resource and reloc sections and use more modern + syntax for stabs sections. + +2005-06-08 Christopher Faylor + + * environ.cc (spenvs): Remove cut/paste error which associated + CYGWIN_DEBUG with HOME. + +2005-06-08 Corinna Vinschen + + * security.cc (cygwin_logon_user): Run LogonUser in the primary + process token context. Fix potential handle leak. + +2005-06-07 Corinna Vinschen + + * pinfo.cc (pinfo::init): Define sa_buf as PSECURITY_ATTRIBUTES and + allocate dynamically. + (pinfo::set_acl): Replace sa_buf by dynamically allocated acl_buf. + * sec_acl.cc (setacl): Allocate acl dynamically. + * sec_helper.cc (sec_acl): Add test for alignment of acl when + DEBUGGING is defined. + (__sec_user): Same for sa_buf. + * security.cc (verify_token): Define sd_buf as PSECURITY_DESCRIPTOR + and allocate dynamically. + (alloc_sd): Allocate acl dynamically. + security.h (sec_user_nih): Change first parameter to + SECURITY_ATTRIBUTES *. + (sec_user): Ditto. + * sigproc.cc (wait_sig): Define sa_buf as PSECURITY_ATTRIBUTES and + allocate dynamically. + * syscalls.cc (seteuid32): Define dacl_buf as PACL and allocate + dynamically. + * uinfo.cc (cygheap_user::init): Define sa_buf as PSECURITY_ATTRIBUTES + and allocate dynamically. + * winbase.h (ilockincr): Mark first argument of inline assembly as + earlyclobber. + (ilockdecr): Ditto. + +2005-06-07 Christopher Faylor + + * cygthread.cc (cygthread::detach): Make error message a little more + detailed. + * fhandler.cc (fhandler_base::raw_read): Ditto for debug message. + * dcrt0.cc (do_exit): Add some more synchronization tests. + * fhandler_fifo.cc (fhandler_fifo::dup): Don't duplicate a nonexistent + handle. Use derived return value rather than always retuning 0. + * fhandler_netdrive.cc (fhandler_netdrive::exists): Wnet -> WNet. + * winsup.h (exit_states): Add a couple of new exit states. + +2005-06-06 Corinna Vinschen + + * path.cc (symlink_info::check): If GetFileAttributes returns + with ERROR_SHARING_VIOLATION, the file exists. + +2005-06-06 Corinna Vinschen + + * uname.cc (uname): Change "amd64" to "x86_64" as on Linux. + +2005-06-06 Corinna Vinschen + + * uname.cc (uname): Add missing break. + +2005-06-05 Christopher Faylor + + * Makefile.in: Build sync.o with -fomit-frame-pointer and -O3. + +2005-06-05 Christopher Faylor + + * sync.cc (muto::acquire): Remove unneeded brackets and fix whitespace. + +2005-06-04 Christopher Faylor + + * malloc.cc: Update to Doug Lea's malloc v2.8.0. + +2005-06-03 Max Kaehn + + * dcrt0.cc (cygwin_dll_init): Initialize main_environ and cygtls. Add + comment to explain the caveats of this method. + * how-cygtls-works.txt: New file. + +2005-06-02 Christopher Faylor + + * dlfcn.cc (get_full_path_of_dll): Use a relative path when converting + so that the standard Windows rules for finding a library will be used + if no path is given. Stop explicitly searching /usr/bin since that is + now in effect. + +2005-06-01 Christopher Faylor + + Revert 2005-05-30 close_all_files changes. + * spawn.cc (spawn_guts): When execing, close all files after the child + has synced with us. + +2005-06-01 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fchown): Make sure that + disk open is called in case we're passed in a non-existent device. + +2005-06-01 Christopher Faylor + + * include/machine/stdlib.h: New file. + +2005-06-01 Christopher Faylor + + * thread.h (List_remove): Revert most of 2005-05-30 change. + +2005-06-01 Christopher Faylor + + * cygwin.sc: Don't output .reloc or .rsrc sections. Clean up stuff + around .cygheap and use a workaround to get things working with newer + (broken?) binutils. + +2005-05-31 Christopher Faylor + + * cygheap.cc (cygheap_end): Remove bogus section attribute. + * cygwin.sc: Make __cygheap_mid absolute. Remove unused _cygheap_foo. + +2005-05-30 Christopher Faylor + + * child_info.h (child_info::cygheap_h): Delete. + (child_info::dwProcessId): New field. + * cygheap.cc (init_cheap): Delete. + (dup_now): Ditto. + (cygheap_setup_for_child): Ditto. + (cygheap_setup_for_child_cleanup): Ditto. + (cygheap_fixup_in_child): Simplify. Use new "child_copy" function to + copy heap from parent. + (_csbrk): Don't attempt allocation if within cygheap section. Fix so + that more than one allocation will succeed. + (cygheap_init): Reset possibly-nonzero region to zero. + * cygheap.h (cygheap_setup_for_child): Delete declaration. + (cygheap_setup_for_child_cleanup): Ditto. + (cygheap_start): Define as an array. + * cygwin.sc: Modernize. Remove unneeded sections. Define cygheap + here. + * dcrt0.cc (do_exit): Reflect argument change to close_all_files. + * dtable.cc (dtable::vfork_parent_restore): Ditto. + * dtable.h: Ditto. + * fhandler.h: Ditto. + * fork.cc (fork_copy): Call ReadProcessMemory if there is no thread + (indicating that we're execing). + (fork_child): Don't mess with hParent. + (fork_parent): Remove hParent stuff. It happens earlier now. + Remove call to cygheap_setup_for_child* stuff. + (fork): Put child_info_stuff in grouped structure. Issue error if + parent handle is not set. + (child_copy): New function. + * sigproc.cc (child_info::child_info): Put cygheap settings here. Set + parent handle. + (child_info::~child_info): Close parent handle if it exists. + * spawn.cc (spawn_guts): Reorganize so that ciresrv is allocated at + only the last minute so that cygheap changes are reflected. Delete + cygheap_setup* calls. + * syscalls.cc (close_all_files): Add an argument to flag when the fd + entry should be released. + * winsup.h (close_all_files): Add an argument to close_all_files + declaration. Declare child_copy. + +2005-05-30 Vaclav Haisman + + * thread.h (List_remove): Make node parameter const. Use simple + comparison and assignment rather than InterlockedCompareExchangePointer + since access is already synchronized. + +2005-05-30 Christopher Faylor + + * dlfcn.cc (set_dl_error): Use UNIX error rather than Windows error. + +2005-05-29 Christopher Faylor + + * cygmagic: Remove debugging cruft missed on 2005-05-21. + +2005-05-29 Corinna Vinschen + + * path.cc (path_conv::check): Move component to function scope. Set + PATH_RO only on *real* FH_NETDRIVEs or on non-FH_NETDRIVE virtual + paths. Allow non-retrievable shares to be handled as files. + +2005-05-29 Eric Blake + + * include/limits.h (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Always define. + +2005-05-28 Christopher Faylor + + * thread.h (pthread_key::set): Inline. + (pthread_key::get): Ditto. + * thread.cc (pthread::set): Delete. + (pthread::get): Ditto. + +2005-05-28 Christopher Faylor + + * cygwin.din: Remove signal front end from pthread_[gs]etspecific. + +2005-05-28 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave:tcflush): Use signed comparison. + +2005-05-28 Christopher Faylor + + * times.cc (time_ms::usecs): Coerce comparison to signed or whole test + is a no-op. + +2005-05-27 Christopher Faylor + + * cygheap.h: Reference _cygheap_start via .cygheap section. + + * environ.cc: Fix force_into_environment typo throughout. + (spenvs): Export CYGWIN_DEBUG if DEBUGGING. + +2005-05-26 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number to 18. + +2005-05-25 Pierre Humblet + + * fhandler.h (fhandler_base::mkdir): New virtual method. + (fhandler_base::rmdir): Ditto. + (fhandler_disk_file:mkdir): New method. + (fhandler_disk_file:rmdir): Ditto. + * dir.cc (mkdir): Implement with fhandlers. + (rmdir): Ditto. + * fhandler.cc (fhandler_base::mkdir): New virtual method. + (fhandler_base::rmdir): Ditto. + (fhandler_disk_file::mkdir): New method. + (fhandler_disk_file::rmdir): Ditto. + +2005-05-24 Christopher Faylor + + * include/cygwin/version.h: Bump API minor number to 129. + +2005-05-24 Christopher Faylor + + * cygwin.din: Export mkdtemp. + * mktemp.cc: New file. + * Makefile.in (DLL_OFILES): Add mktemp.o + +2005-05-23 Eric Blake + + * include/stdint.h (INTMAX_C, UINTMAX_C): Fix definition. + +2005-05-21 Christopher Faylor + + * spawn.cc (find_exec): Accept a PATH-like string in place of an + environment variable. + * dlfcn.cc (get_full_path_of_dll): Search /usr/bin (for windows + compatibility) and /usr/lib (for UNIX compatibility) when looking for + shared libraries. + * environ.cc (conv_envvars): Put back LD_LIBRARY_PATH since it is used + by get_full_path_of_dll(). + * errno.cc (errmap): Map MOD_NOT_FOUND to ENOENT. + + * cygmagic: Remove debugging cruft. + +2005-05-19 Corinna Vinschen + + * include/cygwin/in.h: Add comment. + +2005-05-19 Corinna Vinschen + + * include/cygwin/in.h: Define IPPROTO_xxx values as macros to + accommodate SUSv3. + +2005-05-19 Christopher Faylor + + * include/limits.h: Include features.h, as on linux. + +2005-05-19 Christopher Faylor + + * include/endian.h: New file. + +2005-05-19 Corinna Vinschen + + * cygwin.sc: Add Dwarf-2 debug sections. + +2005-05-19 Corinna Vinschen + + * mmap.cc (mmap64): Make granularity an automatic variable. + +2005-05-19 Christopher Faylor + + * fhandler.h (fhandler_cygdrive::seekdir): Delete declaration. + (fhandler_cygdrive::seekdir): Delete. + +2005-05-19 Pierre Humblet + + * fhandler.h (fhandler_cygdrive::iscygdrive_root): Delete method. + (fhandler_cygdrive::telldir): Delete declaration. + * fhandler_disk_file.cc: Remove all uses of + fhandler_cygdrive::iscygdrive_root. + (fhandler_disk_file::mkdir): New method. + (fhandler_disk_file::rmdir): Ditto. + (fhandler_cygdrive::telldir): Delete. + +2005-05-18 Christopher Faylor + + * external.cc: Move pids declaration to file scope and use less + enthusiastic constructor. + * pinfo.h (winpids::winpids): Remove default setting. + * fhandler_fifo.cc (fhandler_fifo::open_not_mine): Accommodate removal + of default setting. + * fhandler_proc.cc (fhandler_proc::readdir): Ditto. + +2005-05-18 Christopher Faylor + + * cygtls.h (_local_storage::unknown_thread_name): New buffer. + * tlsoffsets.h: Regenerate. + * cygthread.cc (cygthread::name): Use new thread-local buffer. + * exceptions.cc (handle_exceptions): Avoid unnecessary initialization + of static variables to zero. + * fork.cc (slow_pid_reuse) Ditto. + +2005-05-18 Corinna Vinschen + + * mmap.cc (mmap64): Avoid compiler warning. + * ntea.cc (NTReadEA): Ditto. + * hires.h (hires_base): Remove useless usecs function. + +2005-05-18 Corinna Vinschen + + * fhandler_netdrive.cc (fhandler_netdrive::telldir): Remove since it's + equivalent to fhandler_virtual::telldir now anyway. + * fhandler.h (class fhandler_netdrive): Remove telldir. + +2005-05-18 Corinna Vinschen + + * fhandler_netdrive.cc (fhandler_netdrive::telldir): Implement. + (fhandler_netdrive::seekdir): Implement. + (fhandler_netdrive::closedir): Call rewinddir to have only one point + of calling WNetCloseEnum. + +2005-05-17 Corinna Vinschen + + * fhandler.h (class fhandler_netdrive): Add method rewinddir. + * fhandler_netdrive.cc (struct netdriveinf): New structure to + store thread arguments. + (thread_netdrive): Thread handling all potentially blocking + WNet... calls. + (create_thread_and_wait): Start and wait for above thread. + (fhandler_netdrive::exists): Change to call create_thread_and_wait + instead of calling WNet... function. + (fhandler_netdrive::readdir): Ditto. Fix error handling. + (fhandler_netdrive::rewinddir): New method. + +2005-05-17 Corinna Vinschen + + * external.cc (cygwin_internal): Avoid compiler warning. + +2005-05-16 Christopher Faylor + + * dcrt0.cc (dll_crt0_0): Don't do fixup_after_exec if dynamically + loaded since the state of fds is unknown at this point. + +2005-05-16 Christopher Faylor + + * include/sys/cygwin.h (enum cygwin_getinfo_types): Add CW_DEBUG_SELF. + * external.cc (cygwin_internal): Implement CW_DEBUG_SELF. + + * init.cc (dll_entry): Minor rearrangement of code. + +2005-05-16 Christopher Faylor + + * path.cc (path_conv::check): Remove embedded dots before slashes. + +2005-05-16 Corinna Vinschen + + * environ.cc (conv_envvars): Remove LD_LIBRARY_PATH entirely. + It doesn't belong here. + +2005-05-15 Corinna Vinschen + + * environ.cc (conv_envvars): Treat LD_LIBRARY_PATH as path list. + +2005-05-14 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Check + return code from GetFileSize and set file size to 0 if necessary. + * fhandler_netdrive.cc (fhandler_netdrive::fstat): Set permissions + to read/execute for all. + +2005-05-13 Christopher Faylor + + * path.cc (normalize_posix_path): Do normalization on . and .. after + a '//'. + +2005-05-13 Corinna Vinschen + + * fhandler.h (fhandler_netdrive::readdir): Remove useless comment. + +2005-05-13 Corinna Vinschen + + * autoload.cc (WNetGetResourceParentA): Import. + (WNetOpenEnumA): Import. + (WNetEnumResourceA): Import. + (WNetCloseEnum): Import. + * fhandler.h (fhandler_netdrive::telldir): Add declaration. + (fhandler_netdrive::seekdir): Ditto. + (fhandler_netdrive::closedir): Ditto. + * fhandler_netdrive.cc: Drop explicit including windows.h. Include + winnetwk.h instead of shlwapi.h. Include dirent.h. + (fhandler_netdrive::readdir): Implement. + (fhandler_netdrive::telldir): New method. + (fhandler_netdrive::seekdir): New method. + (fhandler_netdrive::closedir): Ditto. + +2005-05-13 Christopher Faylor + + Remove PC_FULL from path_conv usage throughout. + * path.h (enum pathconv_arg): Change PC_FULL to PC_NOFULL. + * path.cc (path_conv::check): Test for PC_NOFULL rather than !PC_FULL. + (cygwin_conv_to_win32_path): Use PC_NOFULL to force non-absolute path. + +2005-05-13 Christopher Faylor + + * fhandler_netdrive.cc (fhandler_netdrive::exists): Assert that "//" + exists. + +2005-05-12 Christopher Faylor + + * cygtls.cc (_cygtls::remove): Eliminate compiler warning. + + * dir.cc (mkdir): Check path for writability. + (rmdir): Ditto. Remove check for special directories. + * path.cc (path_conv::check): Set PATH_RO for virtual devices. Set + error if read-only and asked for writability. + * path.h (pathconv_arg): Add PC_WRITABLE. + (path_types): Add PATH_RO. + (path_conv::isro): Add (currently unused) check for read-only + filesystem. Return "ENOSHARE" when we know a share doesn't exist. + * include/sys/mount.h: Add MOUNT_RO flag. + * autoload.cc (WNetGetResourceInformationA): Import. + * fhandler_netdrive.cc (fhandler_netdrive::exists): Detect actual + existence of remote system rather than always assuming that it exists. + +2005-05-11 Christopher Faylor + + * dcrt0.cc (do_global_dtors): Don't call dll_global_dtors here. + (__main): Reinstate atexit of do_global_dtors. + (cygwin_exit): Call dll_global_dtors here. + (do_exit): And here. + + +2005-05-10 Christopher Faylor + + * cygtls.cc (_cygtls::remove): Clear exitsock after close. + * fhandler_console.cc (fhandler_console::write_normal): Store character + in a local variable for potential future inspection. + +2005-05-10 Corinna Vinschen + + * Makefile.in (DLL_OFILES): Add fhandler_mailslot.o. + * devices.h (FH_KMSG): Define new device. + * devices.in: Add "/dev/kmsg" entry. + * devices.cc: Regenerate. + * dtable.cc (build_fh_pc): Handle case FH_KMSG. + * fhandler.h (class fhandler_mailslot): New class. + (class select_stuff): Add device_specific_mailslot pointer. + * fhandler_mailslot.cc: New file. + * select.cc (peek_mailslot): New function. + (verify_mailslot): Ditto. + (struct mailslotinf): New stuct to handle select on mailslots. + (thread_mailslot): New function. + (start_thread_mailslot): Ditto. + (mailslot_cleanup): Ditto. + (fhandler_mailslot::select_read): New method. + * syslog.cc (klog_guard): New muto. + (dev_kmsg): Local mailslot for kernel message device. + (vklog): New function. + (klog): Ditto. + * winsup.h (vklog): Declare. + (klog): Ditto. + * include/sys/syslog.h: Define _PATH_KLOG. + +2005-05-10 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Call cygwin_exit to ensure that destructors + are handled correctly. + +2005-05-10 Corinna Vinschen + + * path.cc (path_conv::check): Set correct file attributes for socket + files. + +2005-05-09 Pierre Humblet + + * fhandler.h (class fhandler_netdrive): New class. + * fhandler_netdrive.cc (fhandler_netdrive::fhandler_netdrive): New constructor. + (fhandler_netdrive::exists): New method. + (fhandler_netdrive::fstat): Ditto. + (fhandler_netdrive::readdir): Ditto. + (fhandler_netdrive::open): Ditto. + * dtable.cc (build_fh_pc): Handle case FH_NETDRIVE. + * path.cc (isvirtual_dev): Add FH_NETDRIVE. + (mount_info::conv_to_win32_path): Detect netdrive device and bypass mount + search for network paths. + +2005-05-08 Christopher Faylor + + * dcrt0.cc (get_cygwin_startup_info): New function pulled from + dll_crt0_0. + (dll_crt0_0): Use get_cygwin_startup_info to retrieve cygwin-specific + startup pointer. + * external.cc (cygwin_internal): Implement CW_ARGV and CW_ENVP. + * include/sys/cygwin.h: Implement CW_ARGV and CW_ENVP. + +2005-05-07 Christopher Faylor + + * path.cc (normalize_posix_path): Don't treat '//' specially since + newer versions of bash now get this right. + +2005-05-07 Christopher Faylor + + * devices.cc: Regenerate with correct name for dev_netdrive_storage. + +2005-05-06 Christopher Faylor + + * Makefile.in (DLL_O_FILES): Add fhandler_netdrive.o. + * fhandler_netdrive.cc: Placeholder file for future development. + * devices.h (FH_NETDRIVE): Define new virtual device type. + (netdrive_dev): Define. + * devices.in (dev_netdrive_storage): Define. + * devices.cc: Regenerate. + +2005-05-04 Corinna Vinschen + + * cygerrno.h (__set_errno): Remove useless parentheses. + +2005-05-04 Corinna Vinschen + + * cygerrno.h (__set_errno): Define as inline function here. + (set_errno): Always define as call to __set_errno. + * debug.cc (__set_errno): Move to cygerrno.h. + +2005-05-03 Christopher Faylor + + * shared.cc (user_shared_initialize): Rework locking so that nothing is + checked until cb is non-zero. + +2005-05-03 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Don't treat + inability to open file as failure if only SetFileAttributes is + going to be called. Only call set_file_attribute if really necessary. + +2005-05-03 Corinna Vinschen + + * fhandler_socket.cc (get_inet_addr): Add missing __seterrno call. + +2005-05-01 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave::read): Actually read input when + vmin == vtime == 0. + +2005-04-30 Christopher Faylor + + * environ.cc (spenv::force_into_environment): Rename from add_always. + (spenv::add_if_exists): Rename from force. + (build_env): Accommodate name changes. Make sure that stuff that is + always supposed to be in the environment is actually added to the + environment. + + * shared.cc (open_shared): Restore VirtualFree eliminated by 2005-04-28 + change. + +2005-04-30 Christopher Faylor + + * errno.cc (errmap): Sort table. + +2005-04-29 Christopher Faylor + + * errno.cc (errmap): Map ERROR_NETNAME_DELETED to ENOSHARE. + +2005-04-28 Corinna Vinschen + + * shared_info.h (cygwin_shared_address): Bump to a higher value to avoid + collision with large data areas. + +2005-04-28 Christopher Faylor + + * fhandler_console.cc (fhandler_console::get_tty_stuff): Accommodate + changes to open_shared arguments. + * fhandler_tape.cc (mtinfo_init): Ditto. + * pinfo.cc (pinfo::init): Use open_shared rather than win32 mmap calls. + * shared.cc (user_shared_initialize): Ditto. + (memory_init): Ditto. + (open_shared): Change to allow use a smore general mmap handler. + * shared_info.h (shared_locations): Add SH_JUSTCREATE, SH_JUSTOPEN. + (open_shared): Change declaration to match new usage. + + * autoload.cc (LoadDLLfuncEx2): Define in terms of LoadDLLfuncEx3. + (LoadDLLfuncEx3): New macro. + +2005-04-27 Christopher Faylor + + * fhandler.cc (fhandler_base::open_9x): Remove (broken) check for + O_CREAT|O_EXCL. + * syscalls.cc (open): Do O_CREAT|O_EXCL check here first. + +2005-04-26 Christopher Faylor + + * environ.cc (build_env): Ensure that win32 array is properly filled in + when a missing value has to be generated. + +2005-04-26 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number to 17. + +2005-04-24 Pavel Tsekov + + * how-to-debug-cygwin.txt: Fix typo. + +2005-04-22 Christopher Faylor + + * shared.cc (user_shared_initialize): Implement locking similar to + shared_info when initializing shared region. + +2005-04-22 Christopher Faylor + + * fhandler.h (dev_console::set_color): Define new function. + (dev_console::set_default_attr): Ditto, moved from fhandler_console. + (dev_console::fillin_info): Ditto. Accommodate this change throughout + this file. + (fhandler_console::get_win32_attr): Eliminate. + * fhandler_console.cc (fhandler_console::get_tty_stuff): Properly set + default attributes on initialization. + (fhandler_console::open): Set current attributes rather than default + color on open. + (fhandler_console::get_win32_attr): Eliminate. + (dev_console::set_color): New function. Move get_win32_attr stuff + here. + (dev_console::set_default_attr): New function, moved from + fhandler_console. + (dev_console::fillin_info): Ditto. + (fhandler_console::char_command): Call set_color to set screen + characteristics. + +2005-04-22 Christopher Faylor + + * fhandler.cc (fhandler_base::read): Remove unused signal state tweaks. + * fhandler.h (fhandler_pipe::create_selectable): Declare. + (fhandler_fifo::close_one_end): Declare. + * fhandler_fifo.cc (fhandler_fifo::close_one_end): Define. + (fhandler_fifo::open_not_mine): Use close_one_end to close appropriate + end of pipe. + * pinfo.cc (_pinfo::commune_recv): Ditto. + * pipe.cc (fhandler_pipe::create_selectable): Rename from + create_selectable_pipe. Reorganize. + (fhandler_pipe::create): Use create_selectable. + +2005-04-21 Christopher Faylor + + * shared.cc (shared_info::initialize): Test previous version of shared + memory magic rather than current version when determining if there has + been a shared memory mismatch. + +2005-04-20 Christopher Faylor + + * sigproc.cc (proc_subproc): Fix handling of waiting for pids with zero + value. + + * strace.cc (strace::hello): Report parent pid of executing process. + +2005-04-20 Christopher Faylor + + * path.cc (path_conv::check): Fix problem reading symlinks introduced + in below change by reverting the change and adding an additional test + for nonexistent files in /proc. + +2005-04-20 Christopher Faylor + + * path.cc (path_conv::check): Punt when attempting to access a + nonexistent directory or file in /proc. + +2005-04-19 Corinna Vinschen + + * security.cc (alloc_sd): Remove DELETE bit from user's ACE if + allow_traverse is set. + +2005-04-19 Corinna Vinschen + + * cygwin.din (pselect): Export. + * select.cc (pselect): New function. + * include/cygwin/version.h: Bump API minor number. + * include/sys/select.h: Include signal.h. Declare pselect. + +2005-04-18 Corinna Vinschen + + * fhandler.h (enum conn_state): Add connect_failed state. + * fhandler_socket.cc (fhandler_socket::connect): Set connect_state to + connect_failed when connect failed. + * poll.cc (poll): Change errno to EINVAL if allocating memory fails, + according to SUSv3. Add socket descriptors always to except_fds. Test + for failed connect and set revents flags appropriately. + * select.cc (set_bits): Set connect_state to connect_failed when + select indicates failed nonblocking connect. + (fhandler_dev_null::select_except): Set except_ready to false so that + /dev/null is not always in except state. + (peek_socket): Fix bogus conditional. + (fhandler_socket::select_write): Treat all connect_states except + unconnected equivalent to return consistent results. + (fhandler_windows::select_except): Set except_ready to false so that + /dev/windows is not always in except state. + +2005-04-18 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number to 16. + +2005-04-18 Pierre Humblet + + * grp.cc (initgroups32): Return the correct value. + +2005-04-16 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::utimes_fs): Ignore + ERROR_NOT_SUPPORTED to workaround Win9x weirdness. + * path.cc (symlink_info::check): Remap ERROR_INVALID_FUNTION to + ERROR_FILE_NOT_FOUND for the same reason. + +2005-04-16 Corinna Vinschen + Pierre Humblet + + * security.h (cygsidlist::addfromgr): Allow duplicate entries. + (get_server_groups): Declare new function. + * security.cc (is_group_member): Simplify. + (get_server_groups): New function. + (get_initgroups_sidlist): Call get_server_groups. + (verify_token): Allow token when supplementary sids are not in + /etc/group but are in the token. + Streamline the code. + * grp.cc (initgroups32): New implementation. + (getgroups32): Handle case where the supplementary groups are set. + +2005-04-16 Corinna Vinschen + + * environ.cc (environ_init): Don't set traverse checking as default. + +2005-04-16 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::utimes_fs): Drop touching + ChangeTime. + +2005-04-16 Christopher Faylor + + * fhandler.cc (fhandler::dup): Duplicate flags, too. + * fhandler.h (fhandler_fifo::owner): Eliminate. + * fhandler_disk_file.cc (fhandler_base::fstat_fs): Handle on-disk + devices better. + (fhandler_base::fstat_helper): Ditto. + * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Don't initialize + obsolete "owner". + (fhandler_fifo::open_not_mine): Add some debugging. Duplicate correct + handle when we own it. + (fhandler_fifo::open): Set flags from input, not from first pipe. Flag + that fork fixup is needed. + (fhandler_fifo::dup): Set errno correctly when DuplicateHandle fails. + * pinfo.cc (commune_send): Add debugging for fifo. + + * cygwin/version.h: Bump API minor version to 127 to reflect exporting + of sigrelese. + +2005-04-14 Kazuhiro Fujieda + + * syscalls.cc (setuid32): Correct debugging output. + +2005-04-14 Christopher Faylor + + * dcrt0.cc (do_global_dtors): Run DLL dtors. + (__main): Don't rely on atexit to run dtors. + (do_exit): Specifically call do_global_dtors here. + (cygwin_exit): Ditto. + * dll_init.cc (dll_global_dtors): Make global. Only run dtors once. + (dll_list::init): Just set flag that dtors should be run. Don't rely on atexit. + * dll_init.h (dll_global_dtors): Declare. + + * exceptions.cc (sigrelse): Define. + + * path.h (is_fs_device): New method. + (is_lnk_special): Ditto. + * fhandler_disk_file.cc (fhandler_disk_file::link): Use + "is_lnk_special" rather than "is_lnk_symlink". + * syscalls.cc (rename): Ditto. + + * hookapi.cc (ld_preload): Use colon as a separator rather than space. + +2005-04-13 Corinna Vinschen + + * fhandler.h (class fhandler_socket): Remove utimes. + * fhandler_socket.cc (fhandler_socket::utimes): Remove. + +2005-04-13 Corinna Vinschen + + * cygerrno.h (__seterrno_from_nt_status): Define. Always set Win32 + error code as well as errno. Use throughout where errno is set from + NT status. + (set_errno): Evaluate val only once. + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fix typo in + debug output. + * fhandler_mem.cc (fhandler_dev_mem::open): Rely on + __seterrno_from_nt_status setting Win32 error code in debug output. + * fhandler_proc.cc (format_proc_uptime): Ditto. + (format_proc_stat): Ditto. + * fhandler_process.cc (format_process_stat): Ditto. + * sysconf.cc (sysconf): Ditto. + +2005-04-13 Christopher Faylor + + * fhandler.h (fhandler_base::utimes_fs): New method. + * fhandler.cc (fhandler_base::utimes): Call utimes_fs if on-disk + special file. + * fhandler_disk_file.cc (fhandler_disk_file::utimes): Use utimes_fs. + (fhandler_base::utimes_fs): Handle on-disk device files. + +2005-04-13 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::utimes): Don't set errno + if open fails, it has already been set by open. + +2005-04-12 Corinna Vinschen + + * autoload.cc (NtQueryVolumeInformationFile): Add. + * fhandler.cc (fhandler_base::raw_write): Don't touch has_changed flag. + * fhandler.h (enum change_state): Remove. + (fhandler_base::status): Revert has_changed to a simple bit. + (fhandler_base::fstat_helper): Add nAllocSize parameter. Rename + ftCreationTime to ftChangeTime. + * fhandler_disk_file.cc: Call fstat_helper with additional + allocation size throughout. + (fhandler_base::fstat_by_handle): Use NT native functions to get + full file information on NT. Call fstat_helper with LastWriteTime + as ctime, if ChangeTime is not available. + (fhandler_base::fstat_by_name): Call fstat_helper with LastWriteTime + as ctime. + (fhandler_base::fstat_helper): Add comment. Drop special FAT + handling since it's useless. Use nAllocSize for st_blocks if available. + (fhandler_disk_file::touch_ctime): Only touch LastWriteTime. + (fhandler_disk_file::fchmod): Set has_changed on 9x only. + (fhandler_disk_file::fchown): Don't set has_changed. + (fhandler_disk_file::facl): Ditto. + (fhandler_disk_file::ftruncate): Ditto. + (fhandler_disk_file::link): Set has_changed on 9x only and on original + file only. + (fhandler_base::open_fs): Don't set has_changed in O_TRUNC case. + * ntdll.h (FILE_BASIC_INFORMATION): Define. + (FILE_STANDARD_INFORMATION): Define. + (FILE_INTERNAL_INFORMATION): Define. + (FILE_EA_INFORMATION): Define. + (FILE_ACCESS_INFORMATION): Define. + (FILE_POSITION_INFORMATION): Define. + (FILE_MODE_INFORMATION): Define. + (FILE_ALIGNMENT_INFORMATION): Define. + (FILE_NAME_INFORMATION): Don't define with arbitrary FileName size. + (FILE_ALL_INFORMATION): Define. + (FILE_INFORMATION_CLASS): Add FileAllInformation. + (FILE_FS_VOLUME_INFORMATION): Define. + (FS_INFORMATION_CLASS): Define. + (NtQueryVolumeInformationFile): Define. + +2005-04-11 Corinna Vinschen + + Revert previous patch. + * autoload.cc (GetVolumePathNamesForVolumeNameA): Remove. + (GetVolumeNameForVolumeMountPointA): Add. + * syscalls.cc (sync): Rewrite guid case to skip floppies also on + Windows 2000. + +2005-04-11 Corinna Vinschen + + * syscalls.cc (sync): Use renamed has_get_volume_pathnames wincap. + * wincap.h (wincaps::has_get_volume_pathnames): Rename from + has_guid_volumes + * wincap.cc: Accommodate above rename throughout. Set to false on + Windows 2000. + +2005-04-08 Christopher Faylor + + * pipe.cc (fhandler_pipe::open): Remove O_CREAT limitation. + +2005-04-07 Corinna Vinschen + + * syslog.cc (try_connect_guard): Remove useless conditionalized code. + +2005-04-07 Corinna Vinschen + + * syslog.cc: Include sys/socket.h. + (try_connect_guard): New static variable. + (syslogd_inited): Ditto. + (syslogd_sock): Ditto. + (try_connect_syslogd): New function to connect and write syslog to + local syslogd. + (vsyslog): Log to stderr if LOG_PERROR flag has been given to openlog. + Try logging to syslogd. Use Event Log resp. log file as fallback. + (closelog): Close socket to syslogd. + * include/sys/syslog.h (_PATH_LOG): Define. + (INTERNAL_NOPRI): Define if SYSLOG_NAMES is defined. + (INTERNAL_MARK): Ditto. + (struct _code): Ditto. + (prioritynames): Ditto. + (facilitynames): Ditto. + +2005-04-06 Corinna Vinschen + + * fhandler_socket.cc (get_inet_addr): Add type parameter to return + unix socket type. Read socket type from unix socket file. + (fhandler_socket::bind): Write socket type to unix socket file. + (fhandler_socket::connect): Return with errno EPROTOTYPE if + socket type of socket doesn't match socket type of unix socket + trying to connect to. + +2005-04-06 Pierre Humblet + + * security.h (cygsidlist::addfromgr): Avoid duplicate entries. + * grp.cc (initgrousp): Add syscall_printf. + (setgroups): Add syscall_printf and make sure sids are added only once. + +2005-04-06 Christopher Faylor + + * net.cc (cygwin_getservbyname): Return (possibly NULL) return value of + dup_ent rather than assuming that tls buffer is valid. + (cygwin_getservbyport): Ditto. + (cygwin_gethostbyname): Ditto. + (cygwin_gethostbyaddr): Ditto. + +2005-04-05 Christopher Faylor + + * cygtls.cc (_cygtls::remove): Don't free or close stuff if we're being + called in a "non-standard" way. + +2005-04-05 Christopher Faylor + + * sync.h (muto::initforce): Delete flawed implementation. + * pwdgrp.h (pwdgrp::pglock): Make static. + * grp.cc (pwdgrp::pwdgrp): Eliminate use of initforce. + +2005-04-05 Christopher Faylor + + * sync.h (muto::initforce): Force initialization even when name != + NULL. + * grp.cc (pwdgrp::pwdgrp): Use initforce since the enclosing structure + is !NO_COPY. + +2005-04-05 Christopher Faylor + + * sync.h (muto::operator int): New operator. + (locker): Remove unused class. + (new_muto): Delete. + (new_muto1): Ditto. + (new_muto_name): Ditto. + * cygheap.cc (cygheap_setup_for_child): Reflect use of static storage + for muto rather than pointer. + (_csbrk): Ditto. + (_cmalloc): Ditto. + (_cmalloc): Ditto. + (_cfree): Ditto. + * cygheap.h (cwdstuff::cwd_lock): Ditto. + (cwdstuff::get_drive): Ditto. + * cygmalloc.h (__malloc_lock): Ditto. + (__malloc_unlock): Ditto. + * cygtls.cc (sentry::lock): Ditto. + (sentry::sentry): Ditto. + (~sentry): Ditto. + (_cygtls::init): Ditto. + * dcrt0.cc: Ditto. + (cygwin_atexit): Ditto. + (cygwin_exit): Ditto. + * debug.cc (lock_debug::locker): Ditto. + (lock_debug::lock_debug): Ditto. + (lock_debug::unlock): Ditto. + (debug_init): Ditto. + * dtable.cc (dtable::init_lock): Ditto. + * dtable.h (dtable::lock_cs): Ditto. + (dtable::lock): Ditto. + (dtable::unlock): Ditto. + * exceptions.cc (mask_sync): Ditto. + (sighold): Ditto. + (set_process_mask_delta): Ditto. + (set_signal_mask): Ditto. + (events_init): Ditto. + * grp.cc (pwdgrp::pwdgrp): Ditto. + * malloc_wrapper.cc (mallock): Ditto. + (malloc_init): Ditto. + * path.cc (cwdstuff::cwd_lock): Ditto. + (cwdstuff::get_hash): Ditto. + (cwdstuff::get_hash): Ditto. + (cwdstuff::init): Ditto. + (cwdstuff::set): Ditto. + (cwdstuff::get): Ditto. + * pwdgrp.h (pwdgrp::pglock): Ditto. + (pwdgrp::refresh): Ditto. + * sigproc.cc (sync_proc_subproc): Ditto. + (get_proc_lock): Ditto. + (proc_subproc): Ditto. + (_cygtls::remove_wq): Ditto. + (proc_terminate): Ditto. + (sigproc_init): Ditto. + * timer.cc (lock_timer_tracker::protect): Ditto. + (lock_timer_tracker::lock_timer_tracker): Ditto. + (lock_timer_tracker::~lock_timer_tracker): Ditto. + * wininfo.cc (wininfo::_lock;): Ditto. + (wininfo::winthread): Ditto. + (operator HWND): Ditto. + (wininfo::lock): Ditto. + (wininfo::release): Ditto. + * wininfo.h (wininfo::_lock;): Ditto. + +2005-04-04 Christopher Faylor + + * path.cc (path_conv::check): Only check for PC_NO_ACCESS_CHECK in end + component. + +2005-04-04 Corinna Vinschen + + * dcrt0.cc (dll_crt0_1): Don't call set_cygwin_privileges on 9x. + + * fhandler.h (enum change_state): Add. + (fhandler_base::status): Add a bit to has_changed flag. + (fhandler_base::has_changed): Implement with type change_state. + * fhandler.cc (fhandler_base::raw_write): Accommodate type change + of has_changed. + * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Also + touch modification time if has_changed == data_changed. + (fhandler_disk_file::fchmod): Also open on 9x, otherwise we can't + touch ctime. Accommodate type change of has_changed. + (fhandler_disk_file::fchown): Accommodate type change of has_changed. + (fhandler_disk_file::facl): Ditto. + (fhandler_disk_file::ftruncate): Ditto. + (fhandler_disk_file::link): Ditto. + (fhandler_base::open_fs): Ditto. + +2005-04-03 Corinna Vinschen + + * cygheap.cc (cygheap_init): Accommodate set_process_privilege change. + * cygheap.h (cygheap_user::curr_primary_token): New member. + (cygheap_user::primary_token): New method. + (cygheap_user::deimpersonate): Always revert to processes' + impersonation token. + (cygheap_user::reimpersonate): Set processes' or setuid token as + necessary. + (cygheap_user::has_impersonation_tokens): Look for curr_primary_token + value. + (cygheap_user::close_impersonation_tokens): Close curr_primary_token + here if necessary. Don't reset token values to NO_IMPERSONATION since + that's done in uinfo_init anyway. + (init_cygheap::luid): New LUID array keeping privilege LUIDs. + * cygtls.cc (_cygtls::init_thread): Call cygheap->user.reimpersonate. + * dcrt0.cc (hProcToken): New global variable to keep process token. + (hProcImpToken): Ditto for process impersonation token. + (dll_crt0_0): Open process token here once. Duplicate to create + hProcImpToken. + (dll_crt0_1): Call set_cygwin_privileges. + * environ.cc (allow_ntea): Drop duplicate declaration. + (allow_smbntsec): Ditto. + (set_traverse): Only set allow_traverse here. + (environ_init): Ditto. + * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Drop call to + enable_restore_privilege. + (fhandler_disk_file::fchown): Ditto. + (fhandler_disk_file::facl): Ditto. + * fork.cc (fork_child): Move call to cygheap->user.reimpersonate after + syn with parent. Call set_cygwin_privileges. + * grp.cc (internal_getgroups): Use hProcImpToken instead of opening + process token. + * path.cc (fs_info::update): Bypass traverse checking when retrieving + volume information using push/pop_thread_privileges. + * registry.cc (load_registry_hive): Drop setting restore privilege + since it's already set if available. + * sec_helper.cc: Include cygtls.h. + (cygpriv): Privilege string array. + (privilege_luid): New function, evaluate LUID from cygpriv_idx. + (privilege_luid_by_name): New function, evaluate LUID from privilege + string. + (privilege_name): New function, evaluate privilege string from + cygpriv_idx. + (set_privilege): New static function called by set_process_privilege + and set_thread_privilege. Call privilege_luid to get privilege LUID. + Fix bug in return value evaluation. Improve debug output. + (set_cygwin_privileges): New function. + (set_process_privilege): Remove. + (enable_restore_privilege): Remove. + * security.cc (allow_traverse): New global variable. + (sys_privs): Change type to cygpriv_idx and store privilege indices + instead of strings. + (SYSTEM_PRIVILEGES_COUNT): Renamed from SYSTEM_PERMISSION_COUNT. + (get_system_priv_list): Don't use numerical constant in malloc call. + Use privilege_luid to get privilege LUIDs. + (get_priv_list): Call privilege_luid_by_name to get LUIDs. Improve + inner privilege LUID comparison loop. + (create_token): Enable create token privilege using + push/pop_self_privileges. Use hProcToken instead of opening process + token. Use default DACL when duplicating token. + (subauth): Enable tcb privilege using push/pop_self_privileges. + Use sec_none instead of homw made security attributes when duplicating + token. + (check_file_access): Don't duplicate access token, use active + impersonation token as is. + * security.h (enum cygpriv_idx): New enumeration type enumerating + possible privileges. + (privilege_luid): Declare new function. + (privilege_luid_by_name): Ditto. + (privilege_name): Ditto. + (allow_traverse): Declare. + (set_privilege): Declare function. + (set_process_privilege): Define as macro. + (enable_restore_privilege): Remove declaration. + (_push_thread_privilege): Define macro. + (push_thread_privilege): Ditto. + (pop_thread_privilege): Ditto. + (pop_self_privilege): Ditto. + * spawn.cc (spawn_guts): Use cygheap->user.primary_token instead of + cygheap->user.token. + * syscalls.cc (statvfs): Bypass traverse checking when retrieving + volume information using push/pop_thread_privileges. Rearrange code + to simplify push/pop bracketing. + (seteuid32): Use hProcToken instead of opening process token. Call + cygheap->user.deimpersonate instead of RevertToSelf. Create + impersonation token from primary internal or external token. Set + cygheap->user.curr_primary_token and cygheap->user.current_token + privileges once here. Drop "failed" and "failed_ptok" labels. + Drop setting DefaultDacl of process token. + (setegid32): Use hProcToken and hProcImpToken instead of opening + process token. Always reimpersonate afterwards. + * uinfo.cc (cygheap_user::init): Use hProcToken instead of opening + process token. + (internal_getlogin): Ditto. Set hProcImpToken, too. + (uinfo_init): Initialize cygheap->user.curr_primary_token. + * winsup.h (hProcToken): Declare. + (hProcImpToken): Declare. + +2005-04-03 Corinna Vinschen + + Unify usage of CYG_MAX_PATH throughout. Change buffers from + size CYG_MAX_PATH + 1 to CYG_MAX_PATH. Change length tests + accordingly. + +2005-04-02 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number to 15. + +2005-04-01 Corinna Vinschen + + * fork.cc (fork_child): Add missing __stdcall. + +2005-04-01 Christopher Faylor + + * sigproc.cc (create_signal_arrive): New (temporary?) function to + create signal_arrived event. + (sigproc_init): Use create_signal_arrived. + * fork.cc (fork_child): Create signal_arrived early. + +2005-04-01 Corinna Vinschen + + * fork.cc (fork_child): Fixup SYSV IPC shared memory before fixing + up fdtab. + +2005-03-31 Corinna Vinschen + + * gentls_offsets: Add '-m32' flag to native compiler call to satisfy + cross platform builds. + +2005-03-31 Corinna Vinschen + + * errno.cc (NO_SYSTEM_RESOURCES): Map to EAGAIN. + (NONPAGED_SYSTEM_RESOURCES): Ditto. + (PAGED_SYSTEM_RESOURCES): Ditto. + (WORKING_SET_QUOTA): Ditto. + (PAGEFILE_QUOTA): Ditto. + (COMMITMENT_LIMIT): Ditto. + +2005-03-30 Christopher Faylor + + * environ.cc (spenvs): Re-force SYSTEMROOT to always be included in + environment. + (build_env): Ditto. + +2005-03-30 Christopher Faylor + + * environ.cc (spenv::retrieve): Revert most of previous change. + (build_env): Ditto. Rework to track environment variables which need + to always be in the windows environment in a separate array. + +2005-03-30 Igor Pechtchanski + + * path.cc (symlink_info::case_check): Ignore trailing characters + in paths when comparing case. + +2005-03-30 Christopher Faylor + + * environ.h (win_env::immediate): Declare new field. + (win_env::operator = ): Declare new operator. + (win_env::reset): Declare new function. + (win_env::~win_env): Declare new destructor. + (getwinenv): Add optional third argument to declaration. + * environ.cc (conv_envvars): Accommodate immediate field. + (win_env::operator =): Define new operator. + (win_env::~win_env): Define new destructor. + (win_env::add_cache): Add value to environment immediately if + "immediate" is set. + (getwinenv): Accept optional third argument which will be used to store + "cached" values to avoid overwriting real cache. + (spenv::force): Declare new field. + (spenvs): Accommodate force field. Add "PATH=" with force set to true. + (spenv::retrieve): Avoid duping anything if we're not building an + envblock. + (build_env): Ditto. Use size of potentially constructed new + environment block to determine if we need to create an environment + block. Pass getwinenv temporary storage to avoid inappropriately + overwriting the environment cache. + +2005-03-29 Eric Blake + + * include/limits.h (NAME_MAX): New define. + (PATH_MAX): POSIX allows PATH_MAX to include trailing NUL. + +2005-03-29 Corinna Vinschen + + * path.cc (is_floppy): Make externally available. + * path.h (is_floppy): Declare. + * syscalls.cc (sync): Check for floppies on A: and B: in guid case. + Don't call setmntent in non-guid case but evaluate drive bit mask + locally. + +2005-03-29 Corinna Vinschen + + * fhandler_process.cc: Re-add exename. + +2005-03-28 Christopher Faylor + + * include/ctype.h: Accommodate building in newlib. + +2005-03-28 Christopher Faylor + + * timer.cc (getitimer): Check that ovalue is a valid pointer, not just + NULL. + +2005-03-28 Christopher Faylor + + * timer.cc (timer_tracker::settime): Set times to zero when just + cancelling a timer. + +2005-03-28 Christopher Faylor + + * cygthread.cc (cygthread::detach): Revert to just waiting for thread + event since waiting for anything else is racy. + * timer.cc (timer_tracker::hcancel): Rename from cancel. + (timer_tracker::cancel): New method. + (timer_tracker::th): Remove. + (timer_tracker::~timer_tracker): Call cancel method. + (timer_tracker::timer_tracker): Ditto. + (timer_tracker::timer_tracker): Always, clear cancel, even though it is + probably not strictly necessary for ttstart. + (timer_thread): Accommodate cancel -> hcancel rename. + (timer_tracker::settime): Ditto. + (timer_tracker::gettime): Ditto. + (timer_delete): Ditto. + + * cygwin.din: Export _ctype_. + * include/ctype.h: Mark that _ctype_ is imported. + +2005-03-28 Christopher Faylor + + * timer.cc (timer_tracker::timer_tracker): Eliminate simple + constructor. + (ttstart): Fully initialize. + + * errno.cc: Fix typo introduced in previous change. + +2005-03-28 Eric Blake + + * errno.cc (FILENAME_EXCED_RANGE): Map to ENAMETOOLONG. + +2005-03-27 Christopher Faylor + + * signal.cc (nanosleep): Revert tv_sec < 0 check as it is fixed + properly in the below change to hires.h. + +2005-03-27 Pierre Humblet + + * times.cc (hires_ms::usecs): Compare the difference. + * hires.h: Add parentheses to HIRES_DELAY_MAX. + +2005-03-26 Christopher Faylor + + * timer.cc (nanosleep): Treat tv_sec < 0 as invalid. + + * include/search.h: Make declarations consistent with newlib. + +2005-03-26 Pierre Humblet + Christopher Faylor + + * wininfo.h (wininfo::timer_active): Delete. + (wininfo::itv): Ditto. + (wininfo::start_time): Ditto. + (wininfo::window_started): Ditto. + (wininfo::getitimer): Ditto. + (wininfo::setitimer): Ditto. + (wininfo::wininfo): Ditto. + (wininfo::lock): New method. + (wininfo::release): Ditto. + * window.cc: Use new lock/acquire wininfo methods throughout. + (wininfo::wininfo): Delete + (wininfo::getitimer): Ditto. + (wininfo::setitimer): Ditto. + (getitimer): Ditto. + (setitimer): Ditto. + (ualarm): Ditto. + (alarm): Ditto. + (wininfo::lock): Define new function. + (wininfo::release): Ditto. + (wininfo::process): Delete WM_TIMER handling. + * timer.cc (struct timetracker): Delete it, flags. Add it_interval, + interval_us, sleepto_us, running, init_muto(), syncthread, and + gettime(). + (ttstart): Make NO_COPY. + (lock_timer_tracker): New class. + (timer_tracker::timer_tracker): Distinguish ttstart case. + (timer_tracker::~timer_tracker): New destructor. Clean out events, and + reset magic. + (timer_tracker::init_muto): New method. + (to_us): Round up as per POSIX. + (timer_thread): Reorganize to match timer_tracker::settime and + timer_tracker::gettime. Call sig_send without wait. Call + auto_release. + (timer_tracker::settime): Reorganize logic to avoid race. Call gettime + to recover old value. + (timer_tracker::gettime): New method. + (timer_create): Properly set errno on invalid timerid. Use new + lock_timer_tracker method. + (timer_delete): Ditto. Simplify code slightly. + (timer_gettime): New function. + (fixup_timers_after_fork): Reinit ttstart. + (getitimer): New implementation. + (setitimer): Ditto. + (ualarm): Ditto. + (alarm): Ditto. + * cygwin.din: Export timer_gettime. + * winsup.h: Remove has has_visible_window_station declaration. + +2005-03-26 Christopher Faylor + + * Makefile.in (DLL_OFILES): Add lsearch.o. + * cygthread.h (cygthread::notify_detached): New element. + (cygthread::cygthread): Take optional fourth argument signifying event + to signal on thread completion. + * cygthread.cc (cygthread::stub): Signal notify_detached event, if it + exists. + (cygthread::cygthread): Initialize notify_detached from fourth argument. + (cygthread::detach): Wait for notify_detached field is present. + + * lsearch.cc: New file. + * search.h: Ditto. + * include/cygwin/version.h: Bump API minor number to 126. + * cygwin.din: Export lsearch, lfind. + +2005-03-23 Corinna Vinschen + + * fhandler.h (fhandler_socket::secret_event): Remove. + (fhandler_socket::af_local_set_secret): New function combining former + set_connect_secret and get_connect_secret into one function. + (fhandler_socket::af_local_setblocking): Rename from eid_setblocking. + (fhandler_socket::af_local_unsetblocking): Rename from + eid_unsetblocking. + (fhandler_socket::af_local_set_cred): New method. + (fhandler_socket::af_local_copy): New method. + (fhandler_socket::af_local_recv_secret): New method. + (fhandler_socket::af_local_send_secret): New method. + (fhandler_socket::af_local_recv_cred): Rename from eid_recv. + (fhandler_socket::af_local_send_cred): Rename from eid_send. + (fhandler_socket::af_local_accept): New method. + (fhandler_socket::af_local_set_sockpair_cred): Rename from + set_socketpair_eids. + (fhandler_socket::eid_accept): Remove. + (fhandler_socket::eid_connect): Remove. + (fhandler_socket::set_connect_secret): Remove. + (fhandler_socket::get_connect_secret): Remove. + (fhandler_socket::create_secret_event): Remove. + (fhandler_socket::check_peer_secret_event): Remove. + (fhandler_socket::signal_secret_event): Remove. + (fhandler_socket::close_secret_event): Remove. + (fhandler_socket::sec_event_accept): Remove. + (fhandler_socket::sec_event_connect): Remove. + * fhandler_socket.cc (secret_event_name): Remove. + (fhandler_socket::af_local_set_sockpair_cred): Rename from + set_socketpair_eids. + (fhandler_socket::af_local_setblocking): Rename from eid_setblocking. + (fhandler_socket::af_local_unsetblocking): Rename from + eid_unsetblocking. + (fhandler_socket::af_local_recv_secret): New function to receive + AF_LOCAL connect secret over socket itself. + (fhandler_socket::af_local_send_secret): New function to send AF_LOCAL + connect secret over socket itself. + (fhandler_socket::af_local_recv_cred): Rename from eid_recv. + (fhandler_socket::af_local_send_cred): Rename from eid_send. + (fhandler_socket::eid_connect): Remove. + (fhandler_socket::af_local_connect): Take over connect side handling + of AF_LOCAL secret and credential handshake. + (fhandler_socket::eid_accept): Remove. + (fhandler_socket::af_local_accept): New method, take over accept side + handling of AF_LOCAL secret and credential handshake. + (fhandler_socket::af_local_set_cred): New method, set eid credentials + to start values. + (fhandler_socket::af_local_copy): New method, copy secret and + credentials to another socket. + (fhandler_socket::af_local_set_secret): New function combining former + set_connect_secret and get_connect_secret into one function. + (fhandler_socket::create_secret_event): Remove. + (fhandler_socket::signal_secret_event): Remove. + (fhandler_socket::close_secret_event): Remove. + (fhandler_socket::check_peer_secret_event): Remove. + (fhandler_socket::sec_event_connect): Remove. + (fhandler_socket::sec_event_accept): Remove. + (fhandler_socket::fixup_after_fork): Drop secret_event handling. + (fhandler_socket::bind): Call af_local_set_secret. + (fhandler_socket::connect): Call af_local_set_cred and af_local_connect. + (fhandler_socket::listen): Call af_local_set_cred. + (fhandler_socket::accept): Call af_local_copy and af_local_accept on + accepted socket. + (fhandler_socket::close): Don't call close_secret_event. + (fhandler_socket::set_close_on_exec): Don't set secret_event + inheritance. + * net.cc (cygwin_getsockopt): Add debug output. + (socketpair): Call af_local_set_sockpair_cred instead of + set_socketpair_eids. + * select.cc (set_bits): Drop AF_LOCAL special handling in case + of except bit set. + +2005-03-23 Christopher Faylor + + * include/ctype.h: Always define macros when inside cygwin. + (isblank): New macro. + +2005-03-23 Corinna Vinschen + + * fhandler.h (fhandler_socket::eid_connect): Make private. + (fhandler_socket::set_connect_secret): Ditto. + (fhandler_socket::get_connect_secret): Ditto. + (fhandler_socket::create_secret_event): Ditto. Remove secret argument. + (fhandler_socket::check_peer_secret_event): Ditto. + (fhandler_socket::signal_secret_event): Make private. + (fhandler_socket::close_secret_event): Ditto. + (fhandler_socket::sec_event_accept): New private method. + (fhandler_socket::sec_event_connect): Ditto. + (fhandler_socket::af_local_connect): New public method. + * fhandler_socket.cc: Use 'struct sockaddr' and 'struct sockaddr_in' + rather than just 'sockaddr' and 'sockaddr_in' throughout. + (fhandler_socket::eid_connect): Drop AF_LOCAL/SOCK_STREAM test. + (fhandler_socket::create_secret_event): Remove secret argument. + Always use connect_secret instead. + (fhandler_socket::check_peer_secret_event): Ditto. + (fhandler_socket::sec_event_connect): New method, combining entire + secret event handshake on connect side. + (fhandler_socket::af_local_connect): New method, combining secret + event handshake and eid credential transaction on connect side, to + be called from select. + (fhandler_socket::sec_event_accept): New method, combining entire + secret event handshake on accept side. + (fhandler_socket::connect): Drop secret, use connect_secret instead. + Move entire secret event handshake to sec_event_connect. + (fhandler_socket::accept): Move entire secret event handshake to + sec_event_accept. + * select.cc (set_bits): Just call af_local_connect here. + +2005-03-23 Christopher Faylor + + * include/cygwin/version.h: Change comment for most recent API version + bump to reflect new additions to the DLL and to remove change obsoleted + by the previous checkin. + +2005-03-23 Christopher Faylor + + * include/ctype.h: New file. + * ctype.cc: Ditto. + * Makefile.in: Add ctype.o to DLL_OFILES. + * cygwin.din: Remove _ctype_ptr (for now?). + +2005-03-22 Christopher Faylor + + * Makefile.in (DLL_OFILES): Add hookapi.o. Eliminate some cruft. + * cygheap.h (cygheap_types): Add new enum: HEAP_1_HOOK. + (hook_chain): New struct. + (init_cygheap::hooks): Define new element. + * cygheap.cc (cygheap_fixup_in_child): Zero hook chain on exec. + * dcrt0.cc (dll_crt0_1): Call ld_preload just before calling main function. + * external.cc (cygwin_internal): Implement CW_HOOK. + * fork.cc (fork_child): Call fixup_hooks_after_fork. + * init.cc (cygwin_hmodule): Reinstate after a long absence. + * include/sys/cygwin.h: Define CW_HOOK. + * hookapi.cc: New file. + + * select.cc (start_thread_socket): Add debugging output. + + * fhandler_disk_file.cc (fhandler_disk_file::fchmod): gcc 4.x + accommodation. + + * fhandler_socket.cc (fhandler_socket::connect): Make sure that err is + initialized. + +2005-03-22 Corinna Vinschen + + * cygwin.din (__ctype_ptr): Export. + * include/cygwin/version.h: Bump API minor version. + +2005-03-21 Corinna Vinschen + + * fhandler.h (class cygthread): Remove forward declaration. + +2005-03-21 Corinna Vinschen + + * fhandler.h (class cygthread): Forward declare. + (fhandler_socket::sec_pipe): Remove. + (fhandler_socket::eid_pipe_name): Remove. + (fhandler_socket::eid_setblocking): New private method. + (fhandler_socket::eid_unsetblocking): Ditto + (fhandler_socket::eid_recv): Ditto + (fhandler_socket::eid_send): Ditto + (fhandler_socket::eid_accept): Ditto + (fhandler_socket::eid_connect): New public method. + * fhandler_socket.cc (ASYNC_MASK): Move to beginning of file. + (fhandler_socket::eid_pipe_name): Remove. + (fhandler_socket::set_socketpair_eids): Move down to fhandler_socket + methods. + (fhandler_socket::fhandler_socket): Drop initializing sec_pipe. + (fhandler_socket::~fhandler_socket): Drop closing sec_pipe. + (fhandler_socket::eid_setblocking): New method. + (fhandler_socket::eid_unsetblocking): New method. + (fhandler_socket::eid_recv): New method. + (fhandler_socket::eid_send): New method. + (fhandler_socket::eid_connect): New method. + (fhandler_socket::eid_accept): New method. + (fhandler_socket::dup): Drop sec_pipe handling. + (fhandler_socket::connect): Fix WinSock error handling. Prepare + eid credential transaction. Call eid_connect on successful connect. + (fhandler_socket::listen): Drop creating sec_pipe. + (fhandler_socket::accept): Slightly simplify code. Call eid_accept + on accepted socket. + (fhandler_socket::getpeereid): Reshuffle code for readability. Fix + test for invalid pid. + * select.cc (set_bits): Call eid_connect on successfully connected + socket. + +2005-03-19 Christopher Faylor + + * child_info.h (fork_info): Use different method to alias variable. + (spawn_info): Ditto. + * cxx.cc (__cxa_guard_acquire): New function (needed for gcc 4.x). + (__cxa_guard_release): Ditto. + * devices.in: Make sure stuff is correctly bracketed (for gcc 4.x). + * devices.cc: Regenerate. + * fhandler.h (fhandler_disk_file::fchmod): Avoid left coercion (for gcc + 4.x). + * smallprint.c (__rn): Declare as __fastcall since gcc 4.x complains + about use of regparm, for some reason. + * sync.h (sync::init_lock): Remove. + * sync.cc (sync::init_lock): Ditto. + +2005-03-18 Christopher Faylor + + * net.cc (cygwin_getprotobyname): Don't try to be fancy with return + values. + (cygwin_getprotobynumber): Ditto. + +2005-03-17 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::utimes): Handle opening + directories under 9x gracefully. + +2005-03-17 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::connect): Always set sun_path + in case of a successful or pending connect. + (fhandler_socket::accept): Don't run secret event and eid credential + transactions if OS accept returned WSAEWOULDBLOCK. + +2005-03-16 Christopher Faylor + + * fhandler_tape.cc (get_ll): This is a generally useful function so + move it + * winsup.h (get_ll): to here. + * security.cc (get_token_group_sidlist): Use get_ll to figure out the + long long version of the luid since QuadPart is not part of the + standard Windows API. + +2005-03-16 Christopher Faylor + + * dir.cc: Rename opendir_* to dirent_* throughout. + (opendir_states): Move and rename. + * fhandler.h (dirent_states): to here. + * fhandler_disk_file.cc (fhandler_disk_file::readdir): Use raw readdir + when skipping through entries since it is keeping track of "." and + "..". + (fhandler_cygdrive::seekdir): Use fhandler_disk_file::readdir to do + everything. + * fhandler_virtual.cc (fhandler_virtual::opendir): Set flag indicating + that we provide . and .. + (fhandler_virtual::seekdir): Ditto. + (fhandler_virtual::rewinddir): Ditto. + * fhandler_registry.cc (fhandler_registry::rewinddir): Ditto. + +2005-03-16 Christopher Faylor + + * cygtls.cc (free_local): New macro. + (_cygtls::remove): Use free_local to free known-malloced local + variables. + * cygtls.h: Mark some variables as "malloced". + * net.cc (enum struct_type): Rename from is_* to t_* for clarity. + (dump_protoent): Delete. + (dup_ent): New macro. + (__dup_ent): Renamed from dup_ent. Change arguments for convenience. + Replace first argument with newly alloced value. Allocate a rounded + number of bytes in an attempt to try to reuse space. Subsume + "dump_protent". + (cygwin_getprotobyname): Simplify using new dup_ent functionality. + (cygwin_getprotobynumber): Ditto. + (cygwin_getservbyname): Ditto. + (cygwin_getservbyport): Ditto. + (cygwin_gethostname): Ditto. + (cygwin_gethostbyname): Ditto. + * tlsoffsets.h: Regenerate. + + * syslog.cc (openlog): Use NULL rather than 0, for consistency with the + rest of cygwin. + (pass_handler::initialize): Use unbuffered I/O in pass one. + +2005-03-15 Christopher Faylor + + * errno.cc (errmap): Correct typo in previous change. + +2005-03-15 Christopher Faylor + + * cygtls.cc (_cygtls::remove): Free process_ident, if it exists. + + * errno.cc (errmap): ERROR_DISK_CORRUPT -> EIO. + +2005-03-11 Christopher Faylor + + * path.h (pathconv_arg): Define PC_NO_ACCESS_CHECK. + (path_types): Define PATH_NO_ACCESS_CHECK == PC_NO_ACCESS_CHECK. + * path.cc (symlink_info::check_sysfile): Move to symlink_info class and + eliminate arguments that are part of class. Use set_error. + (symlink_info::check_shortcut): Ditto. + (symlink_info::set_error): New function. + (path_conv::check): Pass PC_NO_ACCESS_CHECK to symlink_info::check. + (symlink_info::check): Preserve PC_NO_ACCESS_CHECK in pflags. Use + set_error. + +2005-03-10 Corinna Vinschen + + * path.cc (is_floppy): New function. + (setmntent): Drop floppy drives on A: and B: from logical drive DWORD. + * syscalls.cc (sync): Don't sync floppies on A: and B:. + +2005-03-10 Christopher Faylor + + * autoload.cc (LoadDLLprime): Use nocopy segment or forked processes + will not initialize properly. + +2005-03-10 Christopher Faylor + + * autoload.cc (LoadDLLprime): Scrap use of .linkonce and just use an + ifdef guard to load .foo_init into data segment. + + * dcrt0.cc (initial_env): Allow colon or space as CYGWIN_DEBUG + separator for consistency. + +2005-03-09 Christopher Faylor + + * pinfo.h (pinfo::pinfo): Clear more elements in the constructor. + +2005-03-09 Christopher Faylor + + * net.cc (dup_ent): Revert older stupid test for null. Don't copy name + if it is NULL. + +2005-03-09 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::eid_pipe_name): Fix format + string. + (fhandler_socket::connect): Set sun_path before running eid credential + transaction. Run transaction only if OS connect was successful. + (fhandler_socket::accept): Run transaction only if OS accept was + successful. + +2005-03-09 Corinna Vinschen + + * signal.cc (sigprocmask): Rename first parameter to "how". + (handle_sigprocmask): Ditto. Check "how" for being a valid "how" value. + Fix call order in case of wrong "how" value. + +2005-03-09 Christopher Faylor + + * net.cc (dup_ent): Revert previous stupid change. + +2005-03-09 Christopher Faylor + + * net.cc (dup_ent): Avoid dereferencing a null pointer in a debug_printf. + +2005-03-09 Christopher Faylor + + * path.cc (path_conv::check): Treat ENOSHARE similarly to ENOENT when + determining if there was a problem with a symlink. + +2005-03-08 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::listen): Don't limit the number + of pipe instances. + +2005-03-08 Christopher Faylor + + * pinfo.cc (pinfo::exit): Right shift exit value by eight when not + started in a cygwin environment. + +2005-03-07 Corinna Vinschen + + * mmap.cc (mmap64): Handle MAP_AUTOGROW flag. + (fhandler_disk_file::mmap): Ditto. Clean conditional for readability. + * include/sys/mman.h: Add MAP_AUTOGROW flag. + * include/cygwin/version.h: Bump API minor version. + +2005-03-08 Christopher Faylor + + * dcrt0.cc (dll_crt0_0): Eliminate muto::init call. + * sync.h (locker): New, currently unused class. + (muto::init): Eliminate. + * sync.cc (muto::init): Ditto. + (muto::init): Eliminate critical section lock and instead use name as a + guard to prevent against multiple attempts to initialize the same muto. + + * pinfo.cc (pinfo::init): Set myself procinfo when not execing and pid + matches windows pid or cygwin pid. + +2005-03-06 Pavel Tsekov + + * path.cc (mount_info::read_cygdrive_info_from_registry): Use the user + prefix if it exists. + +2005-03-06 Christopher Faylor + + * sync.h (sync::init_lock): Declare new static member. + (sync::init()): Declare new static function. + * sync.cc (sync::init): Define. + (sync::init): Lock attempt to initialize a muto to stop multiple + threads from colliding. + * dcrt0.cc (dll_crt0_0): Initialize muto environment. + +2005-03-06 Christopher Faylor + + * path.cc (special_name): Reorganize to always detect the use of + special names first, before detecting special characters. + +2005-03-04 Christopher Faylor + + * fhandler_clipboard.cc: Use int for cygnativeformat rather than UINT + as that is what is returned by GetPriorityClipboardFormat. + (fhandler_dev_clipboard::read): Ditto for the format variable. + +2005-03-04 Corinna Vinschen + + * fhandler.cc (fhandler_base::open_9x): Satisfy query_open values. + +2005-03-04 Pierre Humblet + + * fhandler_socket.cc (fhandler_socket::ioctl): Only cancel + WSAAsyncSelect when async mode is on. + +2005-03-03 Corinna Vinschen + + * cygwin.din (utmpxname): Export. + * syscalls.cc (utmpxname): Create export alias to utmpname. + * include/utmpx.h: Define ut_name and ut_xtime if not already defined. + (utmpxname): Add prototype. + * include/sys/utmp.h: Only define ut_name if not already defined. + * include/cygwin/version.h: Bump API minor version. + +2005-03-03 Christopher Faylor + + * cygthread.cc (cygthread::detach): Use a slightly higher priority when + waiting for thread signalling. + +2005-03-02 Christopher Faylor + + * autoload.cc (std_dll_init): Save and restore fpu control register + around LoadAddress to prevent loaded dlls (like msvcrt.dll) from + setting unwanted stuff. + +2005-03-02 Christopher Faylor + + * cygtls.cc (_cygtls::remove): Don't attempt any removal activities if + exitsock is zero. + +2005-03-02 Christopher Faylor + + * cygtls.cc (_cygtls::init_thread): Move exitsock setting later. It + should always be set. + (_cygtls::remove): Detect zero exitsock. Not quite sure why this is needed. + +2005-03-02 Christopher Faylor + + * autoload.cc (LoadDLLprime): Mask error code to low-order 16 bits. + (noload): Preserve sign when returning error code. + +2005-03-02 Christopher Faylor + + * spawn.cc (do_cleanup): Properly restore SIGINT/SIGQUIT even if they + had previously been SIG_DFL. + +2005-03-01 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Replace + GetSystemTime/SystemTimeToFileTime with GetSystemTimeAsFileTime. + * times.cc (time_as_timestruc_t): Ditto. + (time): Ditto. + +2005-03-01 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number to 14. + +2005-03-01 Corinna Vinschen + + * fhandler_clipboard.cc (fhandler_dev_clipboard::write): Never set + errno to 0. + (fhandler_dev_clipboard::read): Ditto. + * fhandler_windows.cc (fhandler_windows::read): Ditto. + * scandir.cc (scandir): Ditto. + * syscalls.cc (_fstat64_r): Ditto. + (_fstat_r): Ditto. + (_stat64_r): Ditto. + (_stat_r): Ditto. + + * mmap.cc (mmap64): Fix /dev/zero mapping. + +2005-02-28 Corinna Vinschen + + * fhandler.h (class fhandler_socket): Declare new method + set_socketpair_eids. + * fhandler_socket.cc (fhandler_socket::set_socketpair_eids): New method. + (fhandler_socket::dup): Duplicate sec_pipe if necessary. + (fhandler_socket::listen): Only create sec_pipe if named pipes are + available. Initialized sec_peer_pid to 0 as on Linux. + (fhandler_socket::connect): Only run eid credential transaction if + named pipes are available. Fake otherwise. Initialized sec_peer_pid + to 0 as on Linux. + (fhandler_socket::accept): Ditto. + (fhandler_socket::close): Move closing sec_pipe handle from here... + (fhandler_socket::~fhandler_socket): ... to here. + * net.cc (socketpair): Set eid credentials by calling + fhandler_socket::set_socketpair_eids() on both socket ends. + * wincap.h (wincaps::has_named_pipes): New element. + * wincap.cc: Implement above element throughout. + +2005-02-26 Christopher Faylor + + * sigproc.cc (_pinfo::set_ctty): Move function + * pinfo.cc (_pinfo::set_ctty): to here. + + * fhandler_mem.cc (fhandler_dev_mem::fstat): Don't fill out structure + if this is an on-disk device rather than an "auto" device. + * fhandler_raw.cc (fhandler_dev_raw::fstat): Ditto. + + * path.cc (normalize_posix_path): Don't treat a standalone '//' as + introducing a UNC path. + (normalize_win32_path): Ditto. + +2005-02-26 Christopher Faylor + + * debug.cc (delete_handle): Report on handle value in debugging output. + + * pinfo.h (_pinfo::exists): Declare "new" function. + (_pinfo::kill): Ditto. + * fhandler_termios.cc (tty_min::kill_pgrp): Use _pinfo::exists rather + than proc_exists. + * pinfo.cc (pinfo::init): Ditto. Don't do a low_priority_sleep(0) when + looping to find exec'ed procinfo. + (pinfo::release): Be more careful about unmapping and closing. + * signal.cc (_pinfo::kill): Rename from kill_worker. Accommodate entry + into _pinfo class. + (kill0): Use _pinfo::kill rather than kill_worker. + (kill_pgrp): Ditto. Use _pinfo::exists rather than proc_exists. + * sigproc.cc (_pinfo::exists): Rename from proc_exists. + (pid_exists): Use _pinfo::exists rather than proc_exists. + (remove_proc): Ditto. + * sigproc.h (proc_exists): Delete declaration. + +2005-02-25 Corinna Vinschen + + * fhandler.h (class fhandler_base): Declare fixup_mmap_after_fork + with additional flags parameter. Change offset parameter to _off64_t. + (class fhandler_disk_file): Ditto. + (class fhandler_dev_mem): Ditto. + * fhandler_mem.cc (fhandler_dev_mem::fixup_mmap_after_fork): + Accommodate new parameters. + * mmap.cc: Include ntdll.h. + (class mmap_record): Add flags member. + (mmap_record::mmap_record): Add flags parameter. + (mmap_record::get_flags): New method. + (class map): Add next_anon_addr member to store next anonymous mapping + address suggestion. + (map::get_next_anon_addr): New method. + (map::set_next_anon_addr): New method. + (mmap64): Don't align offset and length to granularity in case of + MAP_ANONYMOUS on NT. Check for already existing mapping only on 9x. + Call mmap_record::mmap_record with additional flags argument. + (fhandler_base::fixup_mmap_after_fork): Accommodate new parameters. + (fhandler_disk_file::mmap): Use NtMapViewOfSection with + AT_ROUND_TO_PAGE flag for anonymous mappings on NT. If addr is NULL, + try to map adjacent to previous mapping. + (fhandler_disk_file::fixup_mmap_after_fork): Add flags argument. + Change offset parameter to _off64_t. Use NtMapViewOfSection to + re-create anonymous mappings on NT. + (fixup_mmaps_after_fork): Accommodate new parameters when calling + fhandler's fixup_mmaps_after_fork function. + * ntdll.h (AT_ROUND_TO_PAGE): New define. + +2005-02-25 Corinna Vinschen + + * mmap.cc (mmap64): Handle anonymous MAP_FIXED request on + non-granulation boundary. + +2005-02-25 Corinna Vinschen + + * mmap.cc (class mmap_record): Declare new map_pages method with + address parameter. + (mmap_record::map_pages): New method with address parameter. + (mmap64): Evaluate access mode before checking if already existing + mapping can be used. + Only use existing mapping if requested access mode matches the one + in the existing mapping. + Add check for existing mapping for anonymous MAP_FIXED case. + +2005-02-23 Corinna Vinschen + + * localtime.cc: Implement setting __tzrule's offset member using + newlib's __gettzinfo () interface. + (__tzrule): Remove. + (timezone): Define as long according to POSIX. + +2005-02-23 Eric Blake + + * devices.in (parsedisk): Fix typo. + * devices.cc: Regenerate. + +2005-02-23 Corinna Vinschen + + * cygwin.din (getpeereid): Export. + * fhandler.h (class fhandler_socket): Add pipe and id members to + exchange eid credentials for AF_LOCAL sockets. + (eid_pipe_name): Declare new method. + (getpeereid): Ditto. + * fhandler_socket.cc (fhandler_socket::eid_pipe_name): New method. + (fhandler_socket::fhandler_socket): Initialize sec_pipe. + (fhandler_socket::connect): Exchange eid credentials with accepting + socket process. + (fhandler_socket::listen): Prepare eid credential transaction. + (fhandler_socket::accept): Exchange eid credentials with connecting + socket process. + (fhandler_socket::close): Close eid credentials pipe if open. + (fhandler_socket::getpeereid): New method. + * net.cc (cygwin_getsockopt): Add SO_PEERCRED handling. + (getpeereid): New function. + * include/asm/socket.h (SO_PEERCRED): Define. + * include/cygwin/socket.h (struct ucred): Define new type. + * include/cygwin/version.h: Bump API minor version. + +2005-02-23 Corinna Vinschen + + * include/sys/statvfs.h (ST_RDONLY): Define. + (ST_NOSUID): Define. + +2005-02-23 Corinna Vinschen + + * cygwin.din (fstatvfs): Export. + (statvfs): Export. + * syscalls.cc: Include sys/statvfs.h. + (statvfs): New function. Move statfs functionality here. + (fstatvfs): New function. + (statfs): Just call statvfs and copy structure. Check validity of + incoming struct statfs pointer. + * include/cygwin/types.h (fsblkcnt_t): Define. + (fsfilcnt_t): Define. + * include/cygwin/version.h: Bump API minor version. + * include/sys/statvfs.h: New file. + +2005-02-23 Corinna Vinschen + + * devices.h: Switch FH_ZERO and FH_PORT as on Linux. Add FH_FULL. + * devices.in: Add /dev/full. + * devices.cc: Regenerate. + * dtable.cc (build_fh_pc): Add FH_FULL. + * fhandler.cc (fhandler_base::fstat): Set FH_FULL permission bits + correctly. + * fhandler_zero.cc (fhandler_dev_zero::write): Set errno to ENOSPC + and return -1 if device is FH_FULL. + +2005-02-22 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_cygdrive::closedir): Return 0 when + closing cygdrive_root. + +2005-02-22 Corinna Vinschen + + * cygwin.din (basename): Export. + (dirname): Export. + * path.cc (basename): New function. + (dirname): New function. + * include/libgen.h: New file. + * include/cygwin/version.h: Bump API minor version. + +2005-02-22 Corinna Vinschen + + * select.cc (peek_pipe): Disable new pipe code until there's + a working substitute. + +2005-02-22 Corinna Vinschen + + * cygwin.din (fdatasync): Export. + * fhandler.cc (fhandler_base::fsync): Return with EINVAL if no + handle is available. + * syscalls.cc (fdatasync): Create export alias to fsync. + * include/cygwin/version.h: Bump API minor version. + +2005-02-20 Corinna Vinschen + + * fhandler.h (fhandler_base::fstat_helper): Declare with additional + dwVolumeSerialNumber argument. Drop default values for last three + arguments. + * fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Pass + dwVolumeSerialNumber from GetFileInformationByHandle to fstat_helper. + (fhandler_base::fstat_by_name): Pass pc.volser () to fstat_helper. + Accommodate dropping default values for last three arguments of + fstat_helper. + (fhandler_base::fstat_helper): Add dwVolumeSerialNumber argument. + Use for st_dev member unless 0 in which case pc.volser () is used. + +2005-02-20 Corinna Vinschen + + * autoload.cc (FindFirstVolumeA): Add. + (FindNextVolumeA): Add. + (FindVolumeClose): Add. + (GetVolumePathNamesForVolumeNameA): Add. + * fhandler.h (class fhandler_base): Declare new method fsync. + * fhandler.cc (fhandler_base::fsync): New method. + * syscalls.cc (fsync): Move functionality into fhandler method fsync. + Just call this method from here. + (sync_worker): New static function. + (sync): Fill with life for NT systems. + * wincap.h (wincaps::has_guid_volumes): New element. + * wincap.cc: Implement above element throughout. + +2005-02-20 Corinna Vinschen + + * fhandler.h (enum query_state): Add query_write_attributes state. + (fhandler_base::status.query_open): Add a bit to make room for more + states. + (class fhandler_base): Declare new method utimes. + (class fhandler_socket): Ditto. + (class fhandler_disk_file): Ditto. + (fhandler_disk_file::fhandler_disk_file): Add constructor with + path_conv parameter. + * fhandler.cc (fhandler_base::open): Add query_write_attributes + handling. + (fhandler_base::utimes): New method. + * fhandler_disk_file.cc (fhandler_disk_file::link): Simplify. + Open file with query_write_attributes instead of query_write_control. + (fhandler_disk_file::utimes): New method. + (fhandler_disk_file::fhandler_disk_file): Add constructor with + path_conv parameter setting pc member immediately. + * fhandler_socket.cc (fhandler_socket::fchmod): Use new + fhandler_disk_file constructor. + (fhandler_socket::fchown): Ditto. + (fhandler_socket::facl): Ditto. + (fhandler_socket::link): Ditto. + (fhandler_socket::utimes): New method. + * times.cc: Include dtable.h. + (timeval_to_filetime): Make non-static. + (utimes): Move functionality into fhandler method utimes. Just call + this method from here. + * winsup.h: Simplify declarations of time helper functions. + (timeval_to_filetime): Add extern declaration. + +2005-02-19 Corinna Vinschen + + * fhandler.h (class fhandler_base): Declare new method link. + (class fhandler_socket): Ditto. + (class fhandler_disk_file): Ditto. + * fhandler.cc (fhandler_base::open): Add FILE_WRITE_ATTRIBUTES + to query_write_control access flags. + (fhandler_base::link): New method. + * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Don't try to + open with O_WRONLY since query_write_control includes + FILE_WRITE_ATTRIBUTES. + (fhandler_disk_file::fchown): Ditto. + (fhandler_disk_file::facl): Ditto. + (fhandler_disk_file::link): New method. Touch st_ctime on successful + link. + * fhandler_socket.cc (fhandler_socket::link): New method. + * syscalls.cc (link): Move functionality into fhandler method link. + Just call this method from here. + +2005-02-19 Corinna Vinschen + + * fhandler.h (class fhandler_socket): Declare new methods fchown, + fchmod and facl. + * fhandler_socket.cc (fhandler_socket::fstat): Handle AF_LOCAL + sockets. + (fhandler_socket::fchmod): New method. + (fhandler_socket::fchown): New method. + (fhandler_socket::facl): New method. + +2005-02-19 Corinna Vinschen + + * localtime.cc: Temporary implementation of setting __tzrule's offset + member to be used by strftime. + (__tzrule): New global variable. + (tzparse): Set __tzrule's offset member appropriately. + +2005-02-17 Christopher Faylor + + * path.cc (path_conv::check): Set fs flag when a unix-domain socket + is detected. + +2005-02-17 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::fstat): Set st_ctime if + has_changed flag is set. + (fhandler_disk_file::touch_ctime): Reset has_changed flag on success. + +2005-02-17 Corinna Vinschen + + * times.cc (utimes): Open files with FILE_WRITE_ATTRIBUTES first, + if that fails, try opeing with GENERIC_WRITE. Fix comments. + +2005-02-15 Christopher Faylor + + * path.h (path_conv::issocket): Return true if device == FH_UNIX rather + than expecting path_conv to set a flag. + +2005-02-11 Corinna Vinschen + + * fhandler.cc (fhandler_base::raw_write): Mark as changed on + successful write. + * fhandler.h (fhandler_base::status_flags): Add 'has_changed' flag. + * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Call + fhandler_disk_file's own open and close instead of open_fs and + close_fs. Mark as changed on success. + (fhandler_disk_file::fchown): Ditto. + (fhandler_disk_file::facl): Ditto. + (fhandler_disk_file::ftruncate): Ditto. + (fhandler_base::open_fs): Mark as changed when O_TRUNC flag on existing + file is set. + (fhandler_disk_file::close): Set st_ctime if has_changed flag is set. + +2005-02-11 Christopher Faylor + + * cygthread.cc (cygthread::release): Reset ev here if it exists. + (cygthread::terminate_thread): Eliminate racy code which reset ev and + thread_sync. Remove a few nonsensical inuse checks. Exit at the + bottom. + (cygthread::detach): Rewrite to again try to ensure that we don't say + we're signalled when we are not signalled. + * fhandler.cc (fhandler_base::raw_read): Revert to signalling read + success quickly. + * pipe.cc (fhandler_pipe::close): Use base method to close handle. + * sigproc.h (WAIT_SIG_PRIORITY): Just trundle along at normal priority + to allow the pipe thread to do its thing if possible. + + * pinfo.h (pinfo::zap_cwd): Declare new function. + (pinfo::zap_cwd): Move 'cd out of the way code' here. + (pinfo::exit): Use it here. + * spawn.cc (spawn_guts): And here. + +2005-02-11 Corinna Vinschen + + * times.cc (utimes): Open files with GENERIC_WRITE on file systems + not supporting ACLs. + +2005-02-09 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Fix checking + lseek return code. + +2005-02-08 Corinna Vinschen + + * times.cc (timeval_to_filetime): Define first parameter const. + (utimes): Define second parameter to const according to SUSv3. + (utime): Ditto. + * include/sys/utime.h (utime) : Change declaration accordingly. + +2005-02-08 Corinna Vinschen + + * cygthread.cc (cygthread::detach): Just test thread handle after + signal arrived, don't wait infinitely for it. + +2005-02-08 Christopher Faylor + + * pipe.cc (fhandler_pipe::read): Remove hold over from old read_state + implementation. + +2005-02-06 Yitzchak Scott-Thoennes + + * net.cc (cygwin_gethostbyname): Be more picky about what's a numeric + address string, and use tls in that case too. + +2005-02-07 Christopher Faylor + + * exceptions.cc: Make windows_system_directory non-static. + * pinfo.cc (pinfo::exit): Change innocuous cd'ed location to one that + is more likely to exist. + +2005-02-06 Corinna Vinschen + + * path.cc (path_conv::check): Leave symlink expansion loop in case + a not-ENOENT error happens. + + * cygheap.h (cygheap_fdmanip::fhandler_pipe *): New cast operator. + * pinfo.cc (_pinfo::commune_recv): Add PICOM_PIPE_FHANDLER handling. + (_pinfo::commune_send): Ditto. + (_pinfo::pipe_fhandler): New method. + * pinfo.h (enum picom): Add PICOM_PIPE_FHANDLER. + (_pinfo::pipe_fhandler): Declare. + * pipe.cc (fhandler_pipe::open): Rewrite. Allow to open foreign + pipe handles. + +2005-02-03 Christopher Faylor + + * cygthread.h (cygthread::terminate_thread): Reflect return value. + * cygthread.cc (cygthread::detach): Be more careful about ensuring that + sigwait is properly waited for to avoid later missynchronization. + (cygthread::terminate_thread): Return true if thread was actually + terminated and all handles were closed. + * fhandler_base.cc (fhandler_base::raw_read): Use signal_read_state + rather than raw calls to win32 api. + (fhandler_base::read): Ditto. + * fhandler.h (fhandler_pipe::fixup_after_exec): Use method to create + read_state signalling. + (fhandler_pipe::create): Ditto. + + * Makefile.in: Make some more files -fomit-frame-pointer. + +2005-02-02 Corinna Vinschen + + * fhandler.h (fhandler_base::ftruncate): Define new virtual method. + (fhandler_disk_file::ftruncate): Ditto. + * fhandler.cc (fhandler_base::ftruncate): New method. + * fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Ditto. + * syscalls.cc (ftruncate64): Move functionality into fhandlers. + Call fhandler method from here. + +2005-02-02 Corinna Vinschen + + * pipe.cc (fhandler_pipe::dup): Fix conditionals in case of error. + +2005-02-02 Corinna Vinschen + + * times.cc (utimes): Mark st_ctime for update according to SUSv3. + +2005-02-01 Christopher Faylor + + * fhandler_proc.cc (format_proc_partitions): Remove PartitionType check + since it could skip over partitions that are actually interesting. + +2005-02-01 Christopher Faylor + + * cygthread.cc (cygthread::terminate_thread): Wait briefly for + notification event in the event that the thread was actually in the + process of exiting. + + * pipe.cc (fhandler_pipe::dup): read_state is not supposed to be + inheritable. Fix that. + + * path.cc (path_conv::check): Set symlen = 0 to avoid a compiler + warning. + + * devices.h (devices::parsedisk): Declare new function. + * devices.in (devices::parsedisk): Define new function. + * dtable.cc (dtable::init_std_file_from_handle): Use device numbers + rather than name. + * fhandler_proc.cc (format_proc_partitions): Use parsedisk to generate + disk names from numeric codes. (This was broken on two of my + systems previously and is still broken now) + +2005-02-01 Corinna Vinschen + + * pipe.cc (fhandler_pipe::open): Allow re-opening of /proc//fd + pipes of the current process. + +2005-02-01 Corinna Vinschen + + * fhandler.cc (fhandler_base::get_proc_fd_name): Don't generate + "device:" entry. + * fhandler.h (fhandler_socket::open): New method. + (fhandler_pipe::open): New method. + * fhandler_proc.cc (fhandler_proc::exists): Return -2 in case of + /proc/self. + * fhandler_process.cc (fhandler_process::exists): Return -2 in + case of symlinks, -3 for pipes and -4 for sockets. + (fhandler_process::fstat): Handle pipes and sockets. + (fhandler_process::open): Handle opening /proc//fd. + (fhandler_process::fill_filebuf): Generate empty names for + non exisiting file descriptors. + * fhandler_socket.cc (fhandler_socket::get_proc_fd_name): Always + generate "socket:[number]" strings as on Linux. + (fhandler_socket::open): New method. + (fhandler_socket::fstat): Always return socket type. + * path.cc (symlink_info::set): Remove unused second parameter. + (path_conv::check): Handle pipes and sockets in /proc. + Set correct device type for AF_LOCAL sockets. + * pinfo.cc (_pinfo::commune_recv): Generate empty names for + non exisiting file descriptors. + (_pinfo::fd): Ditto. + * pipe.cc (fhandler_pipe::open): New method. + +2005-01-31 Christopher Faylor + + * path.h (path_conv::set_name): Declare new function. + * path.cc (path_conv::set_name): Define new function. + * fhandler.h (fhandler_dev_null::open): Declare new function. + * fhandler.cc (fhandler_dev_null::open): Define new function. + +2005-01-31 Christopher Faylor + + * smallprint.c (rnarg): Use long rather than unsigned long so that we + get proper sign extension. + +2005-01-31 Corinna Vinschen + + * environ.cc (set_traverse): New function. + (parse_thing): Add "traverse" option. Sort options alphabetically. + (environ_init): On NT, switch on traverse checking by default. + +2005-01-31 Christopher Faylor + + * smallprint.c (__rn): Regparmize. + +2005-01-31 Christopher Faylor + + * smallprint.c (rnarg): New macro. + (rnargLL): Ditto. + (__rn): Rename from 'rn', add a mask argument, and use the mask + argument to control how many significant digits to care about. + (__small_vsprintf): Use __rn, rnarg, rnargLL, as appropriate. + +2005-01-31 Christopher Faylor + + * pinfo.cc (pinfo::exit): Only return low-order 16 bits when exiting. + +2005-01-31 Corinna Vinschen + + * fhandler_process.cc (format_process_maps): Get destbuf argument by + reference. Allow resizing of destbuf as necessary. Fix string + handling. + +2005-01-31 Corinna Vinschen + + * cygheap.h (class cygheap_fdenum): New class to enumerate used + fhandlers. + * dtable.h (class dtable): Add cygheap_fdenum as friend class. + * fhandler.h (fhandler_base::get_proc_fd_name): New virtual method + to return a name for /proc//fd. + (fhandler_socket::get_proc_fd_name): Ditto. + (fhandler_pipe::get_proc_fd_name): Ditto. + (fhandler_virtual::opendir): Make virtual method. + (fhandler_process::opendir): New method. + * fhandler.cc (fhandler_base::get_proc_fd_name): New method. + * fhandler_process.cc: Include ctype.h. + (PROCESS_FD): Define. + (process_listing): Add "fd". + (fhandler_process::exists): Fix comment. Return 1 in case of "fd" + directory. Handle files below "fd". + (fhandler_process::fstat): Drop "self" handling. Set correct link + count for directories. + (fhandler_process::opendir): New method to handle "fd" directory. + (fhandler_process::readdir): Add "fd" handling. + (fhandler_process::open): Drop "self" handling. + (fhandler_process::fill_filebuf): Ditto. Add "fd" handling. Fix + "maps" output string. + * fhandler_registry.cc (fhandler_registry::fstat): Set correct link + count for directories. + * fhandler_socket.cc (fhandler_socket::get_proc_fd_name): New method. + * path.cc (symlink_info::set): Fix thinko. + * pinfo.cc (_pinfo::commune_recv): Rename pathbuf to path throughout. + Drop local path variable in PICOM_FIFO case. Fix debug output. + Close handles as early as possible. Add PICOM_FDS and PICOM_FD + handling. + (_pinfo::commune_send): Add PICOM_FDS and PICOM_FD handling. + (_pinfo::fd): New method. + (_pinfo::fds): New method. + * pinfo.h (enum picom): Add PICOM_FDS and PICOM_FD. + (_pinfo::fd): Declare. + (_pinfo::fds): Declare. + * pipe.cc (fhandler_pipe::get_proc_fd_name): New method. + +2005-01-29 Corinna Vinschen + + * smallprint.c (rn): Change uval to unsigned long long to fix 64 bit + handling. + * fhandler_process.cc (format_process_maps): Print major, minor and + inode numbers correctly. + +2005-01-29 Corinna Vinschen + + * autoload.cc (GetModuleFileNameExA): Add. + (GetModuleInformation): Add. + (QueryWorkingSet): Add. + * fhandler.h (fhandler_virtual::get_filebuf): New method. + * fhandler_proc.cc (PROC_SELF): Define. + (proc_fhandlers): Change type of self to FH_PROC. + (fhandler_proc::exists): Return -3 if self. + (fhandler_proc::fstat): Handle self as symlink. + (fhandler_proc::fill_filebuf): Handle self. + * fhandler_process.cc: Include psapi.h. + (PROCESS_EXENAME): Remove. + (PROCESS_MAPS): Define. + (PROCESS_ROOT): Define. + (PROCESS_EXE): Define. + (PROCESS_CWD): Define. + (process_listing): Remove "exename", add "maps, "root", "exe" and + "cwd" elements. + (fhandler_process::exists): Return -2 for symlinks. + (fhandler_process::fstat): Handle symlinks. + (fill_filebuf): Evaluate pid if pid is 0. Use exename handling for + exe. Handle maps, root and cwd. + (format_process_maps): New function evaluating "maps". + * path.cc (symlink_info::set): New method to fill symlink_info + with data matching virtual symlinks. + (path_conv::check): Handle virtual symlinks. + * pinfo.cc (_pinfo::commune_recv): Add PICOM_CWD and PICOM_ROOT + handling. + (_pinfo::commune_send): Ditto. + (_pinfo::root): New function. + (_pinfo::cwd): New function. + * pinfo.h (enum picom): Add PICOM_CWD and PICOM_ROOT. + (_pinfo::root): Declare. + (_pinfo::cwd): Declare. + +2005-01-29 Christopher Faylor + + * cygthread.cc (new): Add a little more debugging. + * thread.cc (pthread_null::exit): Add a _my_tls.remove() for safety. + +2005-01-28 Christopher Faylor + + * cygtls.cc (cygtls::call2): Move socket cleanup. + (cygtls::remove): Move socket cleanup here. Don't use _my_tls to + reference it. + +2005-01-26 Christopher Faylor + + * pinfo.cc (pinfo::init): Avoid a compiler warning. + +2005-01-25 Corinna Vinschen + + * syscalls.cc (setpriority): Implement PRIO_PGRP, PRIO_USER and + setting priority in other Cygwin processes. + (getpriority): Implement PRIO_PGRP, PRIO_USER and getting nice value + from other processes. + +2005-01-26 Pierre Humblet + + * path.cc (path_conv::check): Return ENOTDIR rather than ENOENT + when a component is not a directory. Remove unreachable code. + (digits): Delete. + +2005-01-25 Christopher Faylor + + * pinfo.h (pinfo::init): Make third parameter non-optional and + propagate change throughout. + * pinfo.cc (set_myself): Pass INVALID_HANDLE_POINTER if h is NULL. + (pinfo::init): Make third parameter non-optional. Eliminate use of + PID_EXECED as an argument. Put setting of handle back inside loop but + reorganize to try to open it only when necessary. + +2005-01-25 Corinna Vinschen + + * cygwin.din: Export getpriority and setpriority. + * fork.cc (fork_parent): Copy parent's nice value into child. + * spawn.cc (spawn_guts): Ditto. + * miscfuncs.cc (winprio_to_nice): New function. + (nice_to_winprio): Ditto. + * pinfo.cc (pinfo_init): If parent is not a Cygwin process, set + default nice value according to current Win32 priority class. + * pinfo.h (class _pinfo): Add nice member. + * syscalls.cc (setpriority): New function, only implementing + PRIO_PROCESS for now. + (getpriority): Ditto. + (nice): Just call setpriority. + * wincap.h (wincaps::has_extended_priority_class): New element. + * wincap.cc: Implement above element throughout. + * winsup.h: Add prototypes for winprio_to_nice and nice_to_winprio. + * include/limits.h (NZERO): New define. + * include/cygwin/types.h (id_t): New datatype. + * include/cygwin/version.h: Bump API minor version. + * include/sys/resource.h: Add PRIO_XXX defines and prototypes for + getpriority and setpriority. + +2005-01-25 Corinna Vinschen + + * path.cc (realpath): Allow to expand with .exe suffix. + +2005-01-22 Christopher Faylor + + * spawn.cc (spawn_guts): Perform same "cd" as in pinfo::exit below to + make sure that a stub process does not keep the current working + directory busy after the "execed" process has exited. + +2005-01-22 Christopher Faylor + + * pinfo.cc (pinfo::init): Move everything but the MapViewOfFileEx out + of the loop since trying multiple times to call CreateFileMapping + doesn't make much sense. Try to structure the loop a little better so + that exiting with a break does the right thing. + (pinfo::release): Release shared memory area if it exists and close + handle if it exists. + +2005-01-22 Christopher Faylor + + * pinfo.cc (pinfo::maybe_set_exit_code_from_windows): Make sure that + process has exited before getting an error code. + (pinfo::exit): "cd" to innocuous location before exiting to make sure + that process does not keep the current working directory busy while it + is in the process of really exiting. + +2005-01-18 Corinna Vinschen + + * autoload.cc (CoInitialize): Remove. + (CoUninitialize): Remove. + (CoCreateInstance): Remove. + (CoTaskMemFree): Add. + (SHGetDesktopFolder): Add. + * path.cc (shortcut_header): Remove. + (shortcut_initalized): Remove. + (GUID_shortcut): New static GUID. + (struct win_shortcut_hdr): New struct describing Windows shortcut + header structure. + (symlink_worker): Rewrite creating Windows shortcuts. Create + ITEMIDLIST if target exists. Only write once. + (cmp_shortcut_header): Use win_shortcut_hdr structure for comparison. + (check_shortcut): Rewrite to read only once from file. Allow skipping + an ITIMIDLIST in the file. + +2005-01-16 Christopher Faylor + + * pinfo.h (maybe_set_exit_code_from_windows): Renamed from + set_exit_state. + * pinfo.cc (pinfo::exit): Use renamed function. + (proc_waiter): Ditto. Make a copy of input argument to avoid problems + when procs array is shuffled. Flag when copy is made so that + remove_proc knows when it is safe to reshuffle. + * sigproc.cc (proc_terminate): Don't flag process_state as PID_EXITED. + (remove_proc): Wait for waiter to finish copying pinfo element before + moving it (an actual wait should be an extremely rare event). + +2005-01-15 Christopher Faylor + + * init.cc (dll_entry): Remove unused extern. + + * include/sys/cygwin.h: Remove PID_ZOMBIE. + * pinfo.h: Rename EXITCODE_* defines. + (pinfo::set_exit_state): Remove parameter. + * pinfo.cc (set_exit_state): Remove parameter. Reverse sense of test + so that exitcode is checked for having been set rather than not having + been set. Set flag when exitcode has been established. Don't set + PID_STATE here. + (pinfo::init): Remove exitcode initialization. + (pinfo::exit): Reflect change in EXITCODE_* naming. Set flag when + exitcode has been established. Reflect change in arguments to + set_process_state. + (proc_waiter): Reflect change in arguments to set_process_state. Set + process_state here and only here. + * fhandler_process.cc (fhandler_process::fill_filebuf): Reflect removal + of PID_ZOMBIE define. + (format_process_stat): Ditto. + (format_process_status): Ditto. + * sigproc.cc (pid_exists): Ditto. + (stopped_or_terminated): Ditto. Make sure that only low-order 16 bits of + exitcode are used. + * spawn.cc (spawn_guts): Reflect change in EXITCODE_* naming. + +2005-01-15 Christopher Faylor + + * sigproc.cc (sig_send): Don't complain if attempt to send signal to + myself fails after I've "execed". + +2005-01-14 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_disk_file::facl): Pretend successful + SETACL if no acls are available. + * fhandler.cc (fhandler_base::facl): Implement to return sensible + values on GETACL and GETACLCNT. Pretend successful SETACL. + * fhandler_virtual.cc (fhandler_virtual::facl): Ditto. + +2005-01-13 Corinna Vinschen + + * fhandler.h (fhandler_disk_file::touch_ctime): Declare. + * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): New method + to set file's ctime. + (fhandler_disk_file::fchmod): Try opening file for writing first. + Set file's ctime on success. + (fhandler_disk_file::fchown): Ditto. + (fhandler_disk_file::facl): Ditto. + +2005-01-13 Corinna Vinschen + + * pinfo.cc (pinfo::exit): Don't access self after releasing it. + * path.h (path_conv::path_conv): Fill path with native device + name in case of device argument. + +2005-01-13 Corinna Vinschen + + * fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup + for child, not for parent. + +2005-01-13 Christopher Faylor + + * init.cc (dll_entry): Nuke attempt to set exit code since parent will + use windows exit code if needed. + * pinfo.cc (pinfo::exit): Move release() here to minimize pid creation + race (suggested by Pierre Humblet). + +2005-01-12 Christopher Faylor + + Reorganize header file inclusion throughout so that cygerrno.h comes + first. + * fhandler.h (select_record::thread_errno): Save any encountered errno + here. + (select_record::set_select_errno): New function. + (select_record::saw_error): New function. + (select_record::select_record): Initialize thread_errno to zero. + * select.cc (set_handle_or_return_if_not_open): Set thread_errno on + failure. + (select_stuff::wait): Record errno for later resurrection in calling + thread. + (peek_serial): Ditto. + +2005-01-12 Christopher Faylor + + * syscalls.cc (system): Use "/bin/sh" as per linux and (sorta) SUSv3. + +2005-01-12 Christopher Faylor + + * pinfo.cc (pinfo::exit): Don't assume that this == myself. + +2005-01-11 Christopher Faylor + + * pinfo.cc (pinfo::init): Don't close input handle on temporary (?) + failure. + +2005-01-11 Christopher Faylor + + * pinfo.h (_pinfo::set_exit_state): Declare new function. + (pinfo::exit): Move here from _pinfo::exit. + * sigproc.cc (child_info::sync): Use new function to set exitcode and + process_state. + * pinfo.cc (_pinfo::exit): Ditto. + (proc_waiter): Ditto. + (_pinfo::set_exit_state): Define new function. + (_pinfo::dup_proc_pipe): Close handle when there is no parent process + around to care about the exit value. + * dcrt0.cc (dll_crt0_0): Move subproc_ready synchronization later to + make sure that myself is still mapped in parent. + (do_exit): Reflect movement to pinfo::exit. + (__api_fatal): Ditto. + * exceptions.cc (signal_exit): Ditto. + * errno.cc (errmap): Map PROC_NOT_FOUND. + * init.cc (dll_entry): Release myself before exiting. + * sigproc.cc (proc_can_be_signalled): Set errno appropriately. + (sig_send): Ditto. Also remove ill-advised test for !myself->sendsig + since this is an indication of a process which is still initializating + -- it is not an error. + (child_info::sync): Don't set exitcode here. Assume that will happen + in proc_waiter, if necessary. + * spawn.cc (spawn_guts): Delay "wait_for_myself" logic until later. + Don't wait at all if the process has already exited. Reflect movement + to pinfo::exit. + +2005-01-11 Corinna Vinschen + + * environ.cc (build_env): Disallow empty strings and strings starting + with '=' in Win32 environment. + +2005-01-08 Pierre Humblet + + * syscalls.cc (seteuid32): Only change the default dacl when + seteuid succeeds. Do not close HKCU. + +2005-01-06 Corinna Vinschen + + * fhandler_process.cc: Use strcasematch instead of strcasecmp + throughout. + +2005-01-06 Corinna Vinschen + + * syscalls.cc (rename): Fix behaviour in case of renaming directories + according to SUSv3. + +2005-01-06 Corinna Vinschen + + * fhandler_disk_file.cc (fhandler_base::open_fs): Don't allow + opening directories for writing. + +2005-01-06 Christopher Faylor + + * timer.cc (timer_thread): Pass sigev pointer value as per SuSv3 rather + than pointer to sigev. + +2005-01-05 Christopher Faylor + + * dcrt0.cc (multiple_cygwin_problem): Reorganize error message to not + always talk about a "version" when it's not a version. + (dll_crt0_0): Change info passed to multiple_cygwin_problem to be a + little more precise. + * shared.cc (user_shared_initialize): Ditto. + (shared_info::initialize): Ditto. + +2005-01-03 Christopher Faylor + + * pinfo.cc (_pinfo::dup_proc_pipe): Can't close proc pipe when execing + or we will suffer an exit code race. + +2005-01-03 Corinna Vinschen + + * signal.cc (abort): Call _GLOBAL_REENT's __cleanup. + +2005-01-03 Corinna Vinschen + + * syscalls.cc (setmode): Call _fwalk with _GLOBAL_REENT. + +2005-01-01 Christopher Faylor + + * cygthread.cc (cygthread::stub): Set inuse to false when exiting. + (cygthread::cygthread): Actually pass name as argument to debugging + output to avoid SEGV when strace'ing. + (cygthread::release): Don't set stack_ptr to NULL, since it is only set + once on first entry to a stub not on each stub iteration. + (cygthead::exit_thread): Remove obsolete function. + * cygthread.h (cygthread::exit_thread): Ditto. + +2005-01-01 Christopher Faylor + + * shared.cc (open_shared): Don't attempt VirtualAlloc magic if first + attempt to map memory fails. diff --git a/winsup/cygwin/syslog.cc b/winsup/cygwin/syslog.cc index b8bd669e2..ea59ba812 100644 --- a/winsup/cygwin/syslog.cc +++ b/winsup/cygwin/syslog.cc @@ -1,6 +1,7 @@ /* syslog.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006 Red Hat, Inc. This file is part of Cygwin. @@ -498,8 +499,6 @@ vklog (int priority, const char *message, va_list ap) dev_kmsg->open (O_WRONLY, 0); if (dev_kmsg && dev_kmsg->get_handle ()) dev_kmsg->write (buf, strlen (buf) + 1); - else - vsyslog (priority, message, ap); klog_guard.release (); }