From ef2e38676d056c5c25b801c32a7be17a940968a6 Mon Sep 17 00:00:00 2001 From: corinna Date: Fri, 10 Jan 2003 12:32:45 +0000 Subject: [PATCH] Split ChangeLog, create ChangeLog-2002. Fix copyright dates. --- winsup/cygwin/ChangeLog | 6655 -------------------------------- winsup/cygwin/ChangeLog-2002 | 6655 ++++++++++++++++++++++++++++++++ winsup/cygwin/cygthread.cc | 2 +- winsup/cygwin/dcrt0.cc | 2 +- winsup/cygwin/dtable.cc | 2 +- winsup/cygwin/dtable.h | 2 +- winsup/cygwin/exceptions.cc | 2 +- winsup/cygwin/fhandler.h | 2 +- winsup/cygwin/fhandler_console.cc | 2 +- winsup/cygwin/fhandler_disk_file.cc | 2 +- winsup/cygwin/fhandler_proc.cc | 2 +- winsup/cygwin/fhandler_process.cc | 2 +- winsup/cygwin/fhandler_registry.cc | 2 +- winsup/cygwin/fhandler_serial.cc | 2 +- winsup/cygwin/fhandler_termios.cc | 2 +- winsup/cygwin/fhandler_tty.cc | 2 +- winsup/cygwin/include/cygwin/types.h | 2 +- winsup/cygwin/include/cygwin/version.h | 2 +- winsup/cygwin/include/pthread.h | 2 +- winsup/cygwin/include/semaphore.h | 2 +- winsup/cygwin/include/sys/termios.h | 2 +- winsup/cygwin/miscfuncs.cc | 2 +- winsup/cygwin/passwd.cc | 2 +- winsup/cygwin/path.cc | 2 +- winsup/cygwin/pinfo.cc | 2 +- winsup/cygwin/pipe.cc | 2 +- winsup/cygwin/pthread.cc | 2 +- winsup/cygwin/sysconf.cc | 2 +- winsup/cygwin/thread.cc | 2 +- winsup/cygwin/thread.h | 2 +- winsup/cygwin/window.cc | 2 +- winsup/cygwin/winsup.h | 2 +- 32 files changed, 6685 insertions(+), 6685 deletions(-) create mode 100644 winsup/cygwin/ChangeLog-2002 diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 11d22121cd..9172cc0b31 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -137,6658 +137,3 @@ * passwd.cc (getpwuid_r32): Add uid/gid fields to size check calculation. -2002-12-30 Christopher Faylor - - * exceptions.cc (events_init): Display name of mutex on failure. - -2002-12-30 Christopher Faylor - - * windows.cc (setitimer): Return ENOSYS on invalid argument. - -2002-12-28 Christopher Faylor - - * fhandler_termios.cc (fhandler_termios::line_edit): Perform echo - before input is accepted or suffer a "race". - -2002-12-27 Christopher Faylor - - * fhandler.h (fhandler_tty_master::set_winsize): Declare new function. - * fhandler_console.cc (fhandler_console::send_winch_maybe): If - appropriate, call tty master function to handle screen size change. - * fhandler_tty.cc (fhandler_tty_master::set_winsize): New function. - (fhandler_tty_master::init): Call set_winsize to set initial screen - size. - -2002-12-26 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_master::init): Set initial size of tty - to that of console in which tty is operating. - (process_input): Semi-revert previous change. Need to just use current - terminfo settings since this function is running in a thread, blocked - when the terminfo changes. - -2002-12-26 Christopher Faylor - - * fhandler.h (fhandler_termios::line_edit): Replace third argument with - passed-in termios struct. - * fhandler_console.cc (fhandler_console::read): Prior to loop, make a - copy of current termios for passing to line_edit prior so that all - characters are processed consistently. - * fhandler_tty.cc (fhandler_pty_master::write): Ditto. - (process_input): Make a copy of curent termios prior to read for use in - subsequent line_edit. - * fhandler_termios.cc (fhandler_termios::line_edit): Replace third - parameter with passed-in termios struct and use it throughout rather - than the data from the current fhandler_termios class. - -2002-12-25 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-12-25 Christopher Faylor - - * exceptions.cc (events_init): Initialize critical section to control - exiting via signal. - (signal_exit): Enter critical section early to avoid exit races with - main thread. - * dcrt0.cc (do_exit): Use exit_lock critical section to avoid races. - -2002-12-25 Christopher Faylor - - * cygthread.cc (cygthread::detach): Set errno with set_sig_errno so - that EINTR is properly restored after signal. - -2002-12-21 Christopher Faylor - - * Makefile.in: Default fhandler objects to -fomit-frame-pointer. - Eliminate redundant CFLAGS settings. - -2002-12-20 Christopher Faylor - - * fhandler.h (line_edit_status): Reorganize so that tests for error - condition can be < or >. - * fhandler_tty.cc (fhandler_pty_master::write): Don't return after - sending a signal. - - * fhandler_termios.cc (fhandler_termios::line_edit): Trivial change to - use built-in bool types. - -2002-12-19 Pierre Humblet - - * localtime.cc (tzsetwall): Set lcl_is_set and lcl_TZname - in the Cygwin specific part of the routine. - -2002-12-19 Pierre Humblet - - * fhandler.cc (fhandler_base::open): Use "flags" rather than "mode" - in Win9X directory code. - -2002-12-19 Steve Osborn - - * fhandler.h (line_edit_status): Add a new element. - * fhandler_termios.cc (fhandler_termios::line_edit): After - accept_input, handle both potential error condition and pipe full - conditions. - * fhandler_tty.cc (fhandler_pty_master::accept_input): Return -1 on - error. - (fhandler_pty_master::write): Handle pipe full condition. - -2002-12-16 Steve Osborn - Christopher Faylor - - * fhandler_termios.cc (fhandler_termios::line_edit): Return - line_edit_error and remove last char from readahead buffer if - accept_input() fails. - * fhandler_tty.cc (fhandler_pty_master::accept_input): Return 0 and - restore readahead buffer when tty slave pipe is full. - -2002-12-16 Christopher Faylor - - * pinfo.cc (_pinfo::cmdline): Allocate sufficient space for myself - command line args. - -2002-12-14 Steve Osborn - - * fhandler_termios.cc (fhandler_termios::line_edit): Call - accept_input() in character processing loop. Set return value - independently of input_done. - -2002-12-14 Christopher Faylor - - * fhandler.cc (fhandler_base::read): Signal event, if necessary, and - raw_read hasn't done so. - -2002-12-14 Christopher Faylor - - * fhandler.cc (fhandler_base::raw_read): Reset priorities to minimize - window where thread termination may cause data loss. - (fhandler_base::read): Always return at end of function. Just set len - to copied_chars when len is zero. Return immediately after raw_read if - len <= 0. Remove in_len setting and just check end instead. Fix CRLF - handling at end of buffer. - -2002-12-14 Corinna Vinschen - - * dcrt0.cc (dll_crt0_1): Call well known SID initializer function. - * security.h (cygsid::init): Declare new static method. - * sec_helper.cc (cygsid::init): New method for initializing well - known SIDs. - -2002-12-14 Pierre Humblet - - * security.h: Declare well_known_creator_group_sid. - * sec_helper.cc: Define and initialize well_known_creator_group_sid. - -2002-12-14 Corinna Vinschen - - * netdb.cc: Remove strtok_r comment. - -2002-12-14 Pierre Humblet - - * security.cc (get_user_local_groups): Use LookupAccountSid to find the - local equivalent of BUILTIN. - -2002-12-14 Christopher Faylor - - * pipe.cc (make_pipe): Set fork fixup flag for read pipe. - -2002-12-14 Christopher Faylor - - * winbase.h: Turn on inline versions of Interlocked* by default. - -2002-12-14 Gary R. Van Sickle - - * winbase.h: Fixup inline asm functions. Add ilockcmpexch. - -2002-12-13 Christopher Faylor - - Throughout, change fhandler_*::read and fhandler_*::raw_read to void - functions whose second arguments are both the length and the return - value. - * fhandler.cc (fhandler_base::read): Rework slightly to use second - argument as input/output. Tweak CRLF stuff. - (fhandler_base::readv): Accommodate fhandler_*::read changes. - * cygthread.h (cygthread::detach): Declare as taking optional handle - argument. - (cygthread::detach): When given a handle argument, wait for the handle - to be signalled before waiting for thread to detach. Return true when - signal detected. - -2002-12-12 Corinna Vinschen - - * Makefile.in: Add MINGW_LDFLAGS when linking cygrun.exe. - -2002-12-10 Christopher Faylor - - * cygthread.h (cygthread::stack_ptr): New element. - (cygthread::detach): Accept a "wait_for_signal" argument. - (cygthread::terminate_thread): New function. - * cygthread.cc (cygthread::stub): Set stack pointer argument. - (cygthread::terminate_thread): New function. Forcibly terminate - thread. - (cygthread::detach): Optionally wait for signals and kill thread when - signal arrives. - * exceptions.cc (signal_exit): Set signal_arrived prior to exiting to - wake up anything blocking on signals. - * fhandler.h (fhandler_base::set_r_no_interrupt): Change to accept bool - argument. - (fhandler_pipe::ready_for_read): Declare. - * pipe.cc (pipeargs): New structure. - (read_pipe): New thread stub wrapper for normal pipe read. - (fhandler_pipe::read): Modify to call reader in a cygthread, - terminating on signal, as appropriate. - * select.cc (fhandler_pipe::ready_for_read): Define new function. - -2002-12-10 Corinna Vinschen - - * net.cc (free_protoent_ptr): Add missing free() for base structure. - (free_servent_pt): Ditto. - (free_hostent_pt): Ditto. - -2002-12-10 Craig McGeachie - - * netdb.cc (parse_alias_list): Change strtok calls to strtok_r. - (parse_services_line): Ditto. - (parse_protocol_line): Ditto. - -2002-12-10 Pierre Humblet - - * pwdgrp.h (pwdgrp_check::pwdgrp_state): Replace by - pwdgrp_check::isinitializing (). - (pwdgrp_check::isinitializing): Create. - * passwd.cc (grab_int): Change type to unsigned, use strtoul and set - the pointer content to 0 if the field is invalid. - (parse_pwd): Move validity test after getting pw_gid. - (read_etc_passwd): Replace "passwd_state <= " by - passwd_state::isinitializing (). - (internal_getpwuid): Ditto. - (internal_getpwnam): Ditto. - (getpwent): Ditto. - (getpass): Ditto. - * grp.cc (parse_grp): Use strtoul for gr_gid and verify the validity. - (read_etc_group): Replace "group_state <= " by - group_state::isinitializing (). - (internal_getgrgid): Ditto. - (getgrent32): Ditto. - (internal_getgrent): Ditto. - -2002-12-10 Pierre Humblet - - * security.h: Move declarations of internal_getgrent, - internal_getpwsid and internal_getgrsid to pwdgrp.h. - * pwdgrp.h: Declare internal_getpwsid, internal_getpwnam, - internal_getpwuid, internal_getgrsid, internal_getgrgid, - internal_getgrnam, internal_getgrent and internal_getgroups. - Delete "emulated" from enum pwdgrp_state. - (pwdgrp_check::isuninitialized): Create. - (pwdgrp_check::pwdgrp_state): Change state to initializing - rather than to uninitialized. - (pwdgrp_read::gets): Remove trailing CRs. - * passwd.cc (grab_string): Don't look for NLs. - (grab_int): Ditto. - (parse_pwd): Don't look for CRs. Return 0 if entry is too short. - (search_for): Delete. - (read_etc_passwd): Simplify tests to actually read the file. - Set state to loaded before making internal_getpwXX calls. - Replace search_for calls by equivalent internal_pwgetXX calls. - (internal_getpwsid): Use passwd_state.isuninitialized to decide - to call read_etc_passwd. - (internal_getpwuid): Create. - (internal_getpwnam): Create. - (getpwuid32): Simply call internal_getpwuid. - (getpwuid_r32): Call internal_getpwuid. - (getpwnam): Simply call internal_getpwnam. - (getpwnam_r): Call internal_getpwnam. - * grp.cc (parse_grp): Don't look for CRs. Adjust blank space. - (add_grp_line): Adjust blank space. - (class group_lock): Ditto. - (read_etc_group): Simplify tests to actually read the file. - Set state to loaded before making internal_getgrXX calls. - Replace getgrXX calls by equivalent internal calls. - (internal_getgrsid): Use group_state.isuninitialized to decide - to call read_etc_group. - (internal_getgrgid): Create. - (internal_getgrnam): Create. - (getgroups32): Simply call internal_getgrgid. - (getgrnam32): Simply call internal_getgrnam. - (internal_getgrent): Call group_state.isuninitialized. - (internal_getgroups): Create from the former getgroups32, using - two of the four arguments. Set gid to myself->gid and username - to cygheap->user.name (). - (getgroups32): Simply call internal_getgroup. - (getgroups): Call internal_getgroup instead of getgroups32. - (setgroups32): Call internal versions of get{pw,gr}XX. - * sec_helper.cc: Include pwdgrp.h. - (is_grp_member): Call internal versions of get{pw,gr}XX. - * security.cc: Include pwdgrp.h. - (alloc_sd): Call internal versions of get{pw,gr}XX. - * syscalls.cc: Include pwdgrp.h. - (seteuid32): Call internal versions of get{pw,gr}XX. - (setegid32): Ditto. - * uinfo.cc: Include pwdgrp.h. - (internal_getlogin): Call internal versions of get{pw,gr}XX. - (cygheap_user::ontherange): Ditto. - * sec_acl.cc: Include pwdgrp.h. - (setacl): Call internal versions of get{pw,gr}XX. - (acl_access): Ditto and simplify logic. - (aclfromtext): Ditto. - -2002-12-09 2002-12-02 Egor Duda - - * lib/pseudo-reloc.c: New file. - * lib/_cygwin_crt0_common.cc: Perform pseudo-relocs during - initialization of cygwin binary (.exe or .dll). - -2002-12-06 Christopher Faylor - - * cygwin.din: Reflect name change from strtodf to strtof. Export - strtof. - * include/cygwin/version.h: Bump API minor number. - -2002-12-04 Steve Osborn - - * fhandler.h (fhandler_termios::line_edit): Change return from an int - to an enum to allow the function to return an error. - * fhandler_console.cc (fhandler_console::read): Update the line_edit - call to use the new enum. - * fhandler_termios.cc (fhandler_termios::line_edit): Change return from - an int to an enum to allow the function to return an error. Put - put_readahead call before doecho for future patch. - * fhandler_tty.cc (fhandler_pty_master::write): Change to call - line_edit one character at a time, and stop if an error occurs. - -2002-12-04 Craig McGeachie - - * netdb.cc: New file. - * Makeile.in (DLL_OFILES): Add reference to the new netdb.cc file. - * cygwin.din : Add new aliased exports for service and protocol - enumerations in netdb.cc. - -2002-12-04 Thomas Pfaff - - * cxx.cc: New file. Implement new, new[], delete and delete[] - operators and __cxa_pure_virtual if compiled by gcc >=3. - * Makefile.in (DLL_OFILES): Add cxx.o. - Remove libstdc++.a from cygwin1.dll link step. - -2002-11-29 Steve Osborn - - * fhandler_tty.cc (fhandler_pty_master::accept_input): Move - read_retval assignment to prevent race condition. Remove read_retval - from return statement. - -2002-11-29 Christopher Faylor - - * pinfo.h (winpids::set): Renamed from init. - (winpids::init): New declaration. - (winpids::cs): Ditto. - (winpids::winpids): Use set rather than init. - * external.cc (fillout_pinfo): Ditto. - * dcrt0.cc (dll_crt0_1): Call winpids::init. - * pinfo.cc (winpids::set): Renamed from init. Wrap calls in critical - section. - (winpids::init): New function. - (winpids::cs): Define. - -2002-11-28 Christopher Faylor - - * sigproc.cc (sig_dispatch_pending): Remove assertion. - -2002-11-27 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-11-27 Mikael Ylikoski - - * fhandler_socket.cc (fhandler_socket::sendto): Fix potential - unitialized value return. - -2002-11-27 Christopher Faylor - - * cygwin.din: Export pthread_getsequence_np. - * include/cygwin/version.h: Bump API minor version. - -2002-11-26 Jason Tishler - - * cygwin.din: Export nl_langinfo(). - * include/cygwin/version.h: Bump API minor version. - -2002-11-26 Christopher Faylor - - * fhandler_tty.cc (fhandler_pty_master::accept_input): Just use a - normal Sleep or suffer amazing pauses when other tty apps are running. - (fhandler_pty_master::process_slave_output): Ditto. - -2002-11-25 Pierre Humblet - - * passwd.cc (read_etc_passwd): Never add an entry when starting - on Win95/98/ME if a default entry is present. - * uinfo.cc (internal_getlogin): Look for the default uid if needed. - Always call user.set_name (). - -2002-11-25 Corinna Vinschen - - * sec_acl.cc (getacl): Set errno to ENOSPC if command is GETACL and - nentries is less than the number of entries in the file's ACL. - -2002-11-24 Corinna Vinschen - - * sec_acl.cc: Fix some formatting. Only set and check `other' bits in - a_perm throughout. Use ILLEGAL_GID id for all entries having no id. - (setacl): Fix inheritance condition. - (getacl): Set all permission bits in CLASS_OBJ and DEF_CLASS_OBJ - entries. Remove DENY bits before returning to calling function. - (acltomode): Fix usage of searchace(). If available, use CLASS_OBJ - to mask GROUP_OBJ permissions. - (aclfrommode): Fix usage of searchace(). If available, set CLASS_OBJ - permissions to same value as GROUP_OBJ permissions. - -2002-11-24 Pierre Humblet - - * sec_acl.cc (getace): Fix the behavior when allow and - deny entries are present in arbitrary order. - (getacl): Report the actual number of entries when - aclbufp is NULL, even if nentries is zero. Fix the mask - reporting, handle the case where the owner and group sids - are equal and streamline the code. - (acl_worker): Take allow_ntsec into account. - -2002-11-05 Thomas Pfaff - - * dcrt0.cc (dll_crt0_1): Add call to pthread::initMainThread to - initialize mainthread when it is safe to call new. - * init.cc (dll_entry): Change call to store reents in tls key. - * thread.cc (_reent_clib) : Change call to get reents from tls - key. - (_reent_winsup): Ditto. - (MTinterface::Init): Key handling changed. Remove initialization - of member variables. - (MTinterface::fixup_after_fork): Reinitialize mainthread object - after fork. Reset threadount to 1. - (pthread::initMainThread): Create mainthread object dynamically. - and initialize with valid handles. - (pthread::self): Remove calls to create thread objects. - (pthread::setTlsSelfPointer): Change call to store thread self - handle in tls key. - (pthread::getTlsSelfPointer): New static method. - (pthread::exit): Remove setTlsSelfPointer call. - (pthread::initCurrentThread): New method. - (pthread::thread_init_wrapper): Change call to store thread self - handle in tls key. - (pthread::join): Check for a valid joiner. - (pthreadNull::pthreadNull): Mark Null object as detached. - (pthreadNull::exit): Terminate thread via ExitThread. - * thread.h (pthread::initMainThread): Change parameter in function - call. - (pthread::getTlsSelfPointer): New static method. - (pthread::initCurrentThread): New method. - (MTinterface::reent_key): Remove. - (MTinterface::thread_self_dwTlsIndex): Ditto.. - (MTinterface::indexallocated): Ditto. - (MTinterface::mainthread): Ditto. - (MTinterface::reent_key): New member. - (MTinterface::thread_self_key): Ditto. - (MTinterface::MTinterface): Initialize all members. - -2002-11-23 Christopher Faylor - - * wait.cc (wait4): Force pending signal delivery before waiting for - process completion. - -2002-11-23 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-11-22 Christopher Faylor - - * exceptions.cc (handle_sigsuspend): Force pending signal delivery - before waiting for signals to happen. - * signal.cc (sleep): Force pending signal delivery before sleeping. - (usleep): Ditto. - (signal): Force pending signal delivery before manipulating signal - stuff. - (sigprocmask): Ditto. - (kill_worker): Ditto. - (abort): Ditto. - (sigaction): Ditto. - * syscalls.cc (readv): Force pending signal delivery before I/O. - (writev): Ditto. - (open): Ditto. - * net.cc: Ditto, throughout. - * sigproc.cc (sig_dispatch_pending): Deliver any pending signals prior - to returning. - - * tty.cc (tty::make_pipes): Increase pipe buffer size. - -2002-11-22 Christopher Faylor - - * include/cygwin/version.h: Fix comment. - -2002-11-21 Igor Pechtchanski - - * external.cc (cygwin_internal): Fix va_arg references. - -2002-11-21 Christopher Faylor - - * exceptions.cc (sigthread::get_winapi_lock): Just do standard 'give up - timeslice' wait. - (setup_handler): Revamp YA to attempt to deliver signal multiple times - on failure rather than punting to wait_sig. - * miscfuncs.cc (low_priority_sleep): Accept INFINITE sleep to mean - "don't reset the priority after setting it to idle". Return previous - priority. - * winsup.h (SLEEP_0_STAY_LOW): Define. - (low_priority_sleep): Return an int. - * sigproc.h: Define WAIT_SIG_PRIORITY here. - * sigproc.cc: Remove WAIT_SIG_PRIORITY definition. - -2002-11-20 Pierre Humblet - - * security.h: Declare internal_getpwsid and internal_getgrsid. - Undeclare internal_getpwent. Define DEFAULT_UID_NT. Change - DEFAULT_GID. - * passwd.cc (internal_getpwsid): New function. - (internal_getpwent): Suppress. - (read_etc_passwd): Make static. Rewrite the code for the completion - line. Set curr_lines to 0. - (parse_pwd): Change type to static int. Return 0 for short lines. - (add_pwd_line): Pay attention to the value of parse_pwd. - (search_for): Do not look for nor return the DEFAULT_UID. - * grp.cc (read_etc_group): Make static. Free gr_mem and set - curr_lines to 0. Always call add_pwd_line. Rewrite the code for the - completion line. - (internal_getgrsid): New function. - (parse_grp): If grp.gr_mem is empty, set it to &null_ptr. - Never NULL gr_passwd. - (getgrgid32): Only return the default if ntsec is off and the gid is - ILLEGAL_GID. - * sec_helper.cc (cygsid::get_id): Use getpwsid and getgrsid. - (cygsid_getfrompw): Clean up last line. - (cygsid_getfromgr): Ditto. - (is_grp_member): Use getpwuid32 and getgrgid32. - * uinfo.cc (internal_getlogin): Set DEFAULT_GID at start. - Use getpwsid. Move the read of /etc/group after the second access - to /etc/passwd. Change some debug_printf. - -2002-11-20 Steven O'Brien - - * poll.cc (poll): ...but set POLLIN instead. - -2002-11-20 Pierre Humblet - - * security.cc (get_attribute_from_acl): Always test "anti", - just in case an access_denied ACE follows an access_allowed. - Handle the case owner_sid == group_sid, with a FIXME. - Remove unnecessary tests for non-NULL PSIDs. - (alloc_sd): Use existing owner and group sids if {ug}id == -1. - Handle case where owner_sid == group_sid. - Do not call is_grp_member. Try to preserve canonical ACE order. - Remove unnecessary tests for non-NULL PSIDs. Reorganize - debug_printf's. - (get_initgroups_sidlist): Put well_known_system_sid on left - side of ==. - (add_access_denied_ace): Only call GetAce if inherit != 0. - (add_access_allowed_ace): Ditto. Use appropriate sizeof. - * syscalls.cc (chown_worker): Pass {ug}id equal to -1 to - alloc_sd, which removes the need to obtain old_{ug}id. - (chmod): Remove call to get_file_attribute (), simply pass - {ug}id equal to -1 to alloc_sd. - -2002-11-20 Corinna Vinschen - - * poll.cc (poll): Don't set POLLERR if a listening socket has a - pending connect. Don't use errno value from call to - fhandler_socket::recvfrom(). - -2002-11-19 Christopher Faylor - - * net.cc: Sprinkle sigframes throughout. - -2002-11-16 Christopher Faylor - - * tty.cc (tty::make_pipes): Make pipe buffer larger. - -2002-11-15 Pierre Humblet - - * grp.cc (getgroups32): Protect against closing cygheap->user.token. - -2002-11-15 Christopher Faylor - - * include/cygwin/version.h: Bump API_MINOR to accommodate below - changes. - -002-11-14 Sergey Okhapkin - - * cygwin.din (siginterrupt): New export. - * signal.cc (siginterrupt): New. - -2002-11-15 Sergey Okhapkin - - * select.cc (peek_serial): Don't call PurgeComm() to avoid characters - loss. - -2002-11-14 Christopher Faylor - - * exceptions.cc (setup_handler): Add debugging output. Set thread - priority to idle if pending signals to allow other threads to get into - interruptible state. - * miscfuncs.cc (sys_mbstowcs): Save current thread in variable to avoid - an OS call. - * wait.cc (wait_sig): Reset thread priority each time through loop - since the priority may have been set down to deal with pending signals. - -2002-11-14 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::tcgetattr): Don't take any - special action when vmin_ == 0. - -2002-11-14 Corinna Vinschen - - * grp.cc (getgroups32): Revert previous patch. Use impersonation - token if process is in impersonated state. - * sec_helper.cc (is_grp_member): Rewrite. Call getgroups32 only - for current user. Scan passwd and group info otherwise. - -2002-11-14 Christopher Faylor - - * fhandler_console.cc (fhandler_console::write): Allow characters >= - 0177 to be displayed in the title bar. - -2002-11-14 Corinna Vinschen - - * grp.cc (getgroups32): Don't use access token of current user when - retrieving group info for another user. - -2002-11-13 Christopher Faylor - - * dll_init.cc (dll_list::detach): Eliminate reliance on passed in dll - address. Infer from module of caller instead. - (cygwin_detach_dll): Ignore dll_index argument. - * dll_init.h (dll_list::detach): Reflect argument change above. - -2002-11-13 Christopher Faylor - - * ioctl.cc (ioctl): Always print ioctl results, even when it's a tty. - -2002-11-13 Christopher Faylor - - * winsup.h (low_priority_sleep): Declare. - -2002-11-13 Christopher Faylor - - * miscfuncs.cc (low_priority_sleep): New function. Use throughout - where code is supposed to be giving up time slice. - - * fhandler_console.cc (fhandler_console::read): Switch button 2/3 - output escape sequences to be consistent with xterm. - -2002-11-12 Pierre Humblet - - * syscalls.cc (chmod): Simplify conditional. - * sec_helper (cygsid::getfromstr): Reorganize to remove - calls to strcpy and strtok_r. - (cygsid::getfromgr): Change type to __uid32_t instead of int. - Keep only the allow_ntsec branch. Never call LookupAccountSid - which calls PDCs, simply return -1 in case of failure. - Use cygsid == instead of calling EqualSid and remove test - for NULL psid. - * security.h: Declare cygsid::getfromgr as __uid32_t. - -2002-11-10 Corinna Vinschen - - * net.cc: Run indent. - -2002-11-10 Alexander Gottwald - - * autoload.cc (GetIfEntry): Add symbol. - * net.cc (get_2k_ifconf): Get the interface entries with the GetIfEntry - call intead of the GetIfTable call. Clean-up multiple IP address naming. - -2002-11-09 Sergey Okhapkin - - * fhandler.h (class fhandler_pipe): New ioctl() method. - * pipe.cc (fhandler_pipe::ioctl): New. - -2002-11-07 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::ioctl): Fix typo. - -2002-11-07 Christopher January - - * include/cygwin/fs.h: New file. - * include/cygwin/hdreg.h: New file. - * fhandler_floppy.cc (fhandler_floppy::ioctl): Add implementation for - HDIO_GETGEO, BLKGETSIZE, BLKGETSIZE64, BLKRRPART and BLKSSZGET ioctls. - -2002-11-07 Gilles Courcoux - - * fhandler_socket.cc (fhandler_socket::ioctl): Return correct flags - for loopback interface when name is given on input instead of address. - -2002-11-07 Jason Tishler - - * cygwin.din: Export fseeko() and ftello(). - * include/cygwin/version.h: Bump API minor version. - -2002-11-06 Christopher Faylor - - * fhandler_console.cc (keytable[]): Revert previous change. It would - break too many things. - -2002-11-06 Christopher Faylor - - * fhandler_console.cc (keytable[]): Redefine F1 - F5 to something a - little more sensical. - -2002-11-06 Sergey Okhapkin - - * syscalls.cc (getutid): Use UT_IDLEN where appropriate. - -2002-11-06 Christopher Faylor - - * include/cygwin/version.h: Bump API minor number for below export. - -2002-11-06 Sergey Okhapkin - - * cygwin.din (pututline): New exported function. - * syscalls.cc (login): Use pututiline(). - (setutent): Open utmp as read/write. - (endutent): Check if utmp file is open. - (utmpname): call endutent() to close current utmp file. - (getutid): Enable all cases, use strncmp() to compare ut_id fields. - (pututline): New. - * tty.cc (create_tty_master): Set ut_pid to current pid. - -2002-11-05 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::ioctl): Don't try to figure out - if OS has the capability to retrieve RTS/CTS. Just set default values - if DeviceIoControl fails. (suggested by Sergey Okhapkin) - -2002-11-05 Sergey Okhapkin - - * fhandler_serial.cc (fhandler_serial::raw_read): Use correct type for - minchars. - (fhandler_serial::ioctl): Set errno if the ClearCommError fails. - (fhandler_serial::tcsetattr): Use correct value for vmin_. - (fhandler_serial::tcgetattr): Ditto. - -2002-11-05 Thomas Pfaff - - * fhandler_socket.cc (fhandler_socket::recvmsg): Call if from == NULL - WSARecvFrom with fromlen = NULL. - -2002-11-04 Christopher Faylor - - * pinfo.cc (_pinfo::commune_send): Fix thinko in previous checkin. - -2002-11-04 Christopher Faylor - - * pinfo.cc (_pinfo::commune_send): Set priority low when sleeping, - waiting for commune completion so that we don't spin waiting for lower - priority processes. - -2002-11-04 Christopher Faylor - - * sigproc.cc (WAIT_SIG_PRIORITY): Bump to THREAD_PRIORITY_TIME_CRITICAL. - -2002-11-04 Christopher Faylor - - * pinfo.cc (_pinfo::commune_send): Initialize buffer or suffer random - crashes. - -2002-11-04 Christopher Faylor - - * fhandler_process.cc (fhandler_process::fill_filebuf): Deal with error - condition from cmdline retrieval. - -2002-11-04 Christopher Faylor - - * sigproc.cc (WAIT_SIG_PRIORITY): Bump to highest priority. - -2002-11-04 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-11-03 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::ioctl): Reformat. Set errno - appropriately. Exit from the bottom. Correctly deal with third - argument for TCFLSH. (Suggested by Sergey Okhapkin) - -2003-11-03 Sergey Okhapkin - - * fhandler_tty.cc (fhandler_tty_slave::ioctl): Do nothing if the new - window size is equal to the old one. Send SIGWINCH if slave connected - to a pseudo tty. - (fhandler_pty_master::ioctl): Do nothing if the new window size is - equal to the old one. - -2002-10-31 Pierre Humblet - - * fhandler.cc (fhandler_base::open): Verify pc isn't NULL. - -2002-10-30 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-10-30 Christopher Faylor - - * external.cc (cygwin_internal): Implement CW_CMDLINE. - * pinfo.h (SIGCOMMUNE): New signal type. - (commune_result): New structure for commune functions. - (picom): New enum for commune functions. - (_pinfo::hello_pid): New. Pid who's communicating with me. - (_pinfo::tothem): New. Handle of communicating pipe. - (_pinfo::fromthem): Ditto. - (_pinfo::commune_recv): Declare. - (_pinfo::commune_send): Declare. - (_pinfo::alive): Declare. - (_pinfo::cmdline): Declare. - (_pinfo::lock): Declare. - * pinfo.cc (set_myself): Initialize new _pinfo lock. - (_pinfo::alive): Define. Determines if process still exists. - (_pinfo::commune_recv): Define. Receive info from another cooperating process. - (_pinfo::commune_send): Define. Send info to another cooperating process. - (_pinfo::cmdline): Define. Determine command line of a given process. - * include/sys/cygwin.h (CW_CMDLINE): Define. - - *sigproc.cc (talktome): Communicate with any processes who want to talk - to me. - (wait_sig): Honor __SIGCOMMUNE. - - * fhandler.cc (fhandler_virtual::fixup_after_exec): Declare. - * fhandler_proc.cc: Use malloc/free/realloc throughout rather than - cmalloc since buffers don't need to be propagated to subprocesses. - * fhandler_registry.cc: Ditto. - * fhandler_virtual.cc: Ditto. - (fhandler_virtual::fixup_after_exec): Define. - * fhandler_process.cc: Ditto for malloc/free/realloc. - (process_listin): Add "cmdline". - (fhandler_process::fill_filebuf): Implement PROCESS_CMDLINE. - - * miscfuncs.cc (isalpha_array): New array populated with xor values for - alpha characters to switch from one case to another. - * string.h (cygwin_strcasematch): New asm implementation of case match. - * string.h (cygwin_nstrcasematch): New asm implementation of counted - case match. - -2002-10-24 Pierre Humblet - - * pwdgrp.h (pwdgrp_read::open): Compare fh to INVALID_HANDLE_VALUE. - -2002-10-22 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Nevermind. - Revert everything to previous state wrt ntsec and exec bits. - -2002-10-22 Christopher Faylor - - * shared.cc (shared_info::initialize): Use correct value for version - comparison. - * include/cygwin/version.h (CYGWIN_VERSION_MAGIC): Use all of a DWORD - for magic calculation. - -2002-10-22 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Oops. Only - do the executable thing for #! scripts since .exe files wouldn't be - executable in ntsec case regardless. - -2002-10-22 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Always - consider .exe files and '#!' shell scripts to be executable. - -2002-10-22 Christopher Faylor - - * cygthread.cc (cygthread::exiting): New variable. - (cygthread::initialized): Delete. - (cygthread::stub): Use exiting variable to determine when to exit. - (cygthread::runner): Delete. - (cygthread_protect): New variable. - (cygthread::init): Don't start runner thread. Initialize muto for list - protection. - (cygthread::freerange): Return pointer to cygthread. - (cygthread::operator new): Change logic to start threads on an - as-needed basis. - (cygthread::detach): Don't zero id. - (cygthread::terminate): Don't kill any executing threads. Just set - exiting flag. - * cygthread.h (cygthread): Reflect above changes. - * dcrt0.cc (dll_crt0_1): Move cygthread initialization later. - - * fork.cc (fork_child): Do fdtab fixup after dll fixup or (apparently) - winsock may allocate memory in dll load address. - -2002-10-22 Pierre Humblet - - * sec_helper.cc (cygsid::get_id): If the sid matches a sid stored in - cygheap->user, return the uid or gid from myself. - * security.cc (alloc_sd): If gid == myself->gid, return the group sid - from cygheap->user. Remove the test for uid == original_uid, which is - counter-productive. - -2002-10-22 Christopher Faylor - - * cygheap.cc (cygheap_fixup_in_child): Use user_heap element in - cygheap. - (init_cheap): Ditto for declaration. - * fork.cc (fork_parent): Use user_heap element in cygheap. - * heap.h (inheap): Ditto. - * heap.cc (sbrk): Ditto. - (heap_init): Ditto. Reorganize to shrink heap chunk as required and - record new value in cygheap. - * dcrt0.cc (dll_crt0_1): More "move the cygthread init" games. - * shared.cc (open_shared): Rework memory protection to properly deal - with relocated shared segment. - (shared_info::heap_chunk_size): Rename element to 'heap_chunk'. - * shared_info.h (shared_info): Ditto for declaration. - * strace.cc (strace::hello): Report on heap chunk size from cygheap - since it may shrink. - -2002-10-20 Christopher Faylor - - Change _function() to function() throughout. - * cygwin.din: Remove last vestiges (?) of newlib wrappers. - -2002-10-20 Christopher Faylor - - * cygthread.cc (cygthread::detach): Always wait for event or suffer an - apparently inavoidable race. - * dcrt0.cc (dll_crt0_1): Allocate threads after stack has been - relocated. - * debub.cc (lock_debug): Don't acquire lock on exit. - * fork.cc (fork_child): Recreate mmaps before doing anything else since - Windows has a habit of using blocks of memory in the child that could - previously have been occupied by shared memory in the parent. - * mmap.cc (fhandler_disk_file::fixup_mmap_after_fork): Issue error here - and provide some details about what went wrong. - (fixup_mmaps_after_fork): Remove error message. - * shared.cc (open_shared): Move warning message so that more detail is - possible. - * sigproc.cc (sigproc_init): Initialize sync_proc_subproc to avoid a - race. - (sigproc_terminate): Specifically wait for process thread to terminate. - -2002-10-20 Christopher Faylor - - * cygthread.cc (cygthread::stub): Fix typo. - (cygthread::terminate): Don't zero thread handle prior to using it. - -2002-10-20 Christopher Faylor - - * sigproc.cc (wait_sig): Remove obsolete sigchld logic. - -2002-10-20 Christopher Faylor - - Rename _kill() to kill() throughout. Rename _raise() to raise() - throughout. Rename _pid() to pid() throughout. - * Makefile.in: Compile some objects with -fomit-frame-pointer. - * cygwin.din: Reverse aliasing for _kill. - * syscalls.cc (_getpid_r): New function, implemented for newlib - compatibility. - - * shared.cc (open_shared): Remove reserving of memory since previous - change eliminate the need for this hack. - -2002-10-19 Christopher Faylor - - * fork.cc (fork_child): Move pinfo fixup later to attempt some minor - gains from concurrency with cythread::init. - -2002-10-18 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Initialize cygwin threads here only when not - forking. - * fork.cc (fork_child): Initialize cygwin thread later in process to - avoid allocating memory for thread stacks. - * shared.cc (open_shared): Issue warning if NT and shared segment is - relocated. - -2002-10-18 Christopher Faylor - - * cygthread.cc: Bump number of cygthreads up to accommodate - applications which use ttys. - -2002-10-18 Christopher Faylor - - * fork.cc (fork_child): Move mmap initialization. - * shared.cc (shared_info::heap_chunk_size): Store info as megabytes. - Search HKEY_LOCAL_MACHINE as well as HKEY_CURRENT_USER. - * shared_info.h (shared_info::initial_heap_size): Change element name - to reflect new functionality. - * strace.cc (strace::hello): Report on initial heap size. - -2002-10-18 Thomas Pfaff - - * thread.cc (verifyable_object_isvalid): Test for a valid object - pointer before testing for static ptr. - -2002-10-17 Christopher Faylor - - * dtable.cc (dtable::init_std_file_from_handle): Force "devices" to - always be in binary mode. Temporary fix until ssh is rebuilt? - -2002-10-17 Christopher Faylor - - * dtable.cc (dtable::set_file_pointers_for_exec): New function. - * dtable.h (dtable::set_file_pointers_for_exec): Declare new function. - * spawn.cc (spawn_guts): Call dtable::set_file_pointers_for_exec to set - pointers to EOF when execing non-cygwin applications. - -2002-10-17 Robert Collins - - * thread.h (pthread_mutex::isGoodInitializerOrBadObject): Declare. - * thread.cc (pthread_mutex::isGoodInitializerOrBadObject): Implement. - (pthread_mutex::init): Use isGoodInitializerOrBadObject to avoid - unneeded SEGV's during debugging. - -2002-10-17 Thomas Pfaff - - * thread.cc (verifyable_object_isvalid): Test for static object first. - -2002-10-16 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave::read): Attempt #527 to properly - implement VMIN/VTIME. - -2002-10-15 Christopher Faylor - - * shared.cc (open_shared): Revert to "old" method for shared memory - location if !wincap.needs_memory_protection. - * wincap.cc: Implement needs_memory_protection throughout. - * wincap.h: Ditto. - -2002-10-15 Christopher Faylor - - * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. - (child_info_fork::mount_table): Remove. - (child_info_fork::myself_addr): Remove. - * fork.cc (fork_child): Don't set either of the above. - * dcrt0.cc (dll_crt0_1): Call memory_init as early as possible. - * fhandler_console.cc (console_state): Move to shared_info.h. - (fhandler_console::get_tty_stuff): Reflect open_shared arg change. - * pinfo.cc (myself_addr): Remove definition. - (pinfo::init): Get myself address from open_shared. - * pinfo.h (myself_addr): Remove declaration. - * shared.cc (open_shared): Rework so that known shared memory locations - are protected. Take shared memory type as fifth argument. - (memory_init): Reflect open_shared arg change. - * shared_info.h (shared_locations): New enum. - (console_state): Move here. - (open_shared): Reflect open_shared arg change in declaration. - -2002-10-14 Christopher Faylor - - * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. - (child_info_fork::heaptop): Remove obsolete element. - (child_info_fork::heabbase): Ditto. - (child_info_fork::heapptr): Ditto. - (child_info_fork::mount_table): New element. - (child_info_fork::myself_addr): Ditto. - * dcrt0.cc (dll_crt0_1): Set mount_table and myself_addr when forking. - (initial_env): Add newline to "sleeping" message. - * dll_init.cc (reserve_upto): Accommodate cygwin heap when freeing - memory. Make debugging output a little more descriptive. - * fork.cc (fork_parent): Save mount_table and myself_addr. - * pinfo.cc (myself_addr): New variable. - (set_myself): Pass PID_MYSELF flag to init. - (pinfo::init): Honor PID_MYSELF. Save address where myself shared - memory resides in myself_addr, for fork. - * pinfo.h (myself_addr): Declare. - * shared.cc (memory_init): On fork, use previously saved address for - location of mount table. - * include/sys/cygwin.h (PID_MYSELF): New value. - - * dtable.cc (dtable::stdio_init): Don't pass access type to - init_std_file_from_handle. It's always the same. - (dtable::init_std_file_from_handle): Remove access type argument. - Assume read/write. - * dtable.h (dtable::init_std_file_from_handle): Ditto for declaration. - - * exceptions.cc (try_to_debug): Don't try to debug if already being - debugged. - - * fhandler_console.cc (shared_console_info_save): New variable. - (fhandler_console::get_tty_stuff): Save address of shared console stuff - for fork. - -2002-10-13 Christopher Faylor - - * cygthread.cc (cygthread::stub): Reintroduce clearing of __name but do - it before SetEvent to eliminate a race. - (cygthread::terminate): Accumulate list of threads to check for - termination and call WaitForMultipleObjects on list rather than waiting - for each thread individually. - * sigproc.cc (subproc_init): Zap hwait_subproc thread handle since it - is no longer used. - -2002-10-13 Christopher Faylor - - * spawn.cc (spawn_guts): Fix so that cygthread::terminate is *really* - called only for exec. - -2002-10-13 Christopher Faylor - - * cygthread.cc (cygthread::stub): Don't zero __name here. That - introduces a race. - -2002-10-13 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-10-13 Christopher Faylor - - * cygthread.cc (cygthread::stub): Don't create event for long-running - threads. Initialize thread_sync event here which is used to Suspend - using an event rather than relying on SuspendThread/ResumeThread. - (cygthread::init): Save handle to runner thread for future termination. - (cygthread::cygthread): Only resume thread when it is actually - suspended. Otherwise signal thread completion event. - (cygthread::terminate): Forcibly terminate runner thread and any helper - threads. Call DisableThreadLibrary calls if execing. - * cygthread.h (cygthread::thread_sync): Declare. - * dcrt0.cc (do_exit): Eliminate calls to obsolete window_terminate and - shared_terminate. - * exceptions.cc (events_terminate): Don't bother closing title_mutex - since it is going away anyway. - * pinfo.cc (_pinfo::exit): Call cygthread::terminate to ensure that - threads are shut down before process exit or otherwise strange races - seem to occur. - * shared.cc (shared_terminate): Eliminate. - * shared.h (shared_terminate): Eliminate declaration. - * winsup.h (window_terminate): Eliminate declaration. - * spawn.cc (spawn_guts): Call cygthread::terminate early in process if - execing. Call DisableThreadLibrary calls if execing. - * window.cc (Winmain): Call ExitThread to force exit. - (window_terminate): Eliminate. - - * dcrt0.cc (do_exit): Track exit state more closely. - -2002-10-10 Christopher Faylor - - * window.cc (gethwnd): Use SetThreadPriority method. - -2002-10-10 Christopher Faylor - - * Makefile.in (new-cygwin1.dll): Reorganize library order. - - * dcrt0.cc (do_exit): Move thread stuff after vfork stuff or threads - are terminated during vfork. - * sigproc.cc (proc_terminate): Grab proc lock prior to signalling - subproc thread exit to avoid an extra "wait-for-thread-to-exit". - -2002-10-09 Christopher Faylor - - * cygthread.cc (cygthread::stub): Don't create an event for "cygself" - threads. Assume that they exit via an ExitThread call. - * cygthread.h (cygthread::SetThreadPriority): New function. - (cygthread::zap_h): New function. - * dcrt0.cc (do_exit): Move cygthread::terminate earlier and establish - exit_state guard. - * fhandler.h (fhandler_tty_master::output_thread): Delete. - * fhandler_tty.cc (fhandler_tty_master::init): Set priority for threads - via method. Zap handles when done. Don't treat process_output - specially. - (process_output): Call ExitThread directly. - (fhandler_tty_master::fixup_after_fork): Don't worry about - output_thread. - (fhandler_tty_master::fixup_after_exec): Ditto. - * sigproc.cc (proc_terminate): Don't detach from hwait_subproc. Just - let it exit. - (sigproc_init): Close thread handle after initialization. - (wait_sig): Use GetCurrentThread() as SetThreadPriority call rather - than *event* handle. Call ExitThread directly on termination. - (wait_subproc): Call ExitThread directly on termination. - * tty.cc (tty_list::terminate): Don't attempt to detach from - output_thread. - -2002-10-08 Christopher Faylor - - * cygheap.cc (dup_now): Make fatal error a little more informative. - (cygheap_setup_for_child): Detect when default size of shared region is - less than the current size and allocate that much. - (_cbrk): Just return NULL on inability to allocate. - (_cmalloc): Ditto. - * cygheap.h (CYGHEAPSIZE): Change size to reflect newer, tinier - fhandler sizes. - * spawn.cc (av::error): New element, reflects potential errno from cmalloc. - (av::~av): Don't free NULL pointers. - (av::replace0_maybe): Detect out-of-memory conditions. - (av::dup_maybe): Ditto. - (av::dup_all): Ditto. - (av::unshift): Ditto. - (spawn_guts): Set errno and return if argv creation ran into problems. - - * fhandler.h (fhandler_union): Change member names to something safer. - - * fhandler_console.cc (fhandler_console::get_tty_stuff): Always set - fhandler_console::dev_state regardless of whether shared region is - initialized. - - * cygthread.cc (cygthread::runner): Use ExitThread rather than return - (planning for future). - -2002-10-08 Christopher Faylor - - * fhandler.h (dev_console): New class. - (fhandler_console::dev_state): New class element. - (fhandler_console::mouse_aware): Use dev_state element. - (fhandler_console::get_tty_stuff): Declare new function. - * fhandler_console.cc: Use dev_state fhandler_console element, - throughout. - (fhandler_console::get_tty_stuff): Move to fhandler_console class. - Incorporate dev_console information. Move constructor stuff here. - -2002-10-07 Christopher Faylor - - * dtable.cc (dtable::init_std_file_from_handle): Try to mimic standard - open behavior with files redirected from stdin/stdout/stderr, i.e., - fmode settings take precedence over mount settings. - -2002-10-07 Christopher Faylor - - * dtable.cc (unknown_file): New variable. - (dtable::init_std_file_from_handle): Don't set binmode if we couldn't - determine the actual file name on stdin/stdout/stderr. - (handle_to_fn): Return unknown_file when can't determine filename. - -2002-10-07 Christopher Faylor - - * dcrt0.cc (do_exit): Call DisableThreadLibraryCalls since we don't - need to track thread detaches. - * init.cc (dll_entry): Reorganize slightly. Fix api_fatal message. - -2002-10-05 Christopher Faylor - - * cygthread.cc (cygthread::stub): Very minor cleanup. - (cygthread::stub): Report overflows in cygwin thread pool when - DEBUGGING is on and special environment variable is not set. - (cygthread::terminate): Set event only when event actually exists. - * exceptions.cc (signal_exit): Set priority of main thread to low - before setting current thread to high. - -2002-10-01 Robert Collins - - * thread.cc (pthread_key::keys): Copy on fork. Add a comment explaining - why. - (pthreadNull::_instance): Copy on fork. Absolutely no state exists - in pthreadNull. - -2002-09-30 Conrad Scott - - * cygserver_transport_pipes.cc (transport_layer_pipes::accept): - Remove trailing \n from debug_printf. - -2002-09-30 Christopher Faylor - - * thread.cc (pthread_mutex::initMutex): Remove \n from api_fatal. - -2002-09-30 Christopher Faylor - - * thread.cc (pthread::precreate): Use explicit "no inherit" option when - creating mutex. - (pthread_mutex::nativeMutex::init): Ditto. - -2002-09-30 Christopher Faylor - - * thread.cc (pthread_key::keys): Do not copy on fork. - (pthread_mutex::mutexInitializationLock): Ditto. - (pthreadNull::_instance): Ditto. - -2002-09-30 Christopher Faylor - - * exceptions.cc (unused_sig_wrapper): Still need additional level of - indirection when setting errno. - -2002-09-30 Robert Collins - - * thread.cc (pthread_mutex::initMutex): Use the wrapper init call. - (pthread_mutex::nativeMutex::init): Implement. - (pthread_mutex::nativeMutex::lock): Ditto. - (pthread_mutex::nativeMutex::unlock): Ditto. - (pthread_mutex::init): Use the wrapper lock and unlockcalls. - * thread.h (pthread_mutex): Move mutexInitializationLock into a - nativeMutex wrapper class. - -2002-09-30 Christopher Faylor - - Remove \n from calls to strace class printfs throughout. - -2002-09-30 Christopher Faylor - - * exceptions.cc (unused_sig_wrapper): Accommodate newer compilers. - -2002-09-29 Christopher Faylor - - * security.cc (allow_ntsec): Default to zero. - * environ.cc (environ_init): Set allow_ntsec to TRUE by default, - assuming OS allows it. - -2002-09-29 Christopher Faylor - - * environ.cc (environ_init): Avoid a compiler warning. - * path.cc (path_conv::check): Ditto. - * path.h (path_conv::operator int): Ditto. - * regex/engine.c: Ditto throughout. - * regex/regcomp.c: Ditto throughout. - * regex/regexec.c: Ditto throughout. - -2002-09-29 Christopher Faylor - - * thread.cc: Use "%E" in *_printf throughout rather than calling - GetLastError. GNUify comments. - (__pthread_mutex_lock): Don't return error on EBUSY since that just - means that the mutex has already been initialized. - -2002-09-30 Robert Collins - - * pthread.cc (pthread_mutex_init): Use new pthread_mutex::init. - * thread.cc: Change __pthread_mutex_init to pthread_mutex::init - throughout. - (MTinterface::Init): Initialise pthread_mutex support. - (pthread_mutex::mutexInitializationLock): Instantiate. - (pthread_mutex::initMutex): New method. - (__pthread_cond_dowait): Don't dereference untrusted pointers. - Use the new pthread_mutex::init method. - (__pthread_condattr_init): Don't dereference untrusted pointers. - (__pthread_mutex_init): Rename to pthread_mutex::init. - Lock and release mutexInitializationLock to prevent races on - mutex initialisation. - * thread.h (pthread_mutex::initMutex): New method, initialise - pthread_mutex supporting state on process initialisation. - (pthread_mutex::init): Initialise a single mutex. - (pthread_mutex::mutexInitializationLock): A win32 mutex for - syncronising pthread mutex initialisation. - (__pthread_mutex_init): Remove this. - -2002-09-28 Christopher Faylor - - * thread.h (verifyable_object:~verifyable_object): Make virtual. - -2002-09-28 Christopher Faylor - - * cygthread.h (cygthread::terminate): Declare new function. - (cygthread::initialized): Change to 'int'. - * cygthread.cc (cygthread::stub): Exit thread if initialized < 0. - (cygthread::new): Ditto. - (cygthread::runner): Ditto. Set initialized using xor to preserve - sign. - (cygthread::terminate): New function. - * dcrt0.cc (do_exit): Call cygthread::terminate. - -2002-09-27 Robert Collins - - * thread.cc (pthread_key::run_destructor): Run_destructor is not - const as it needs to set the key value. - * thread.h (pthread_key::run_destructor): Ditto. - -2002-09-27 Robert Collins - - * thread.cc (pthread_key::run_destructor): Follow opengroup algorithm. - I.e. only run the destructor NON-NULL key values, and reset the key - to NULL before running the destructor. Reported by Thomas Pfaff. - -2002-09-25 Christopher Faylor - - * cygrun.c (main): Fix setting of CYGWIN environment variable. - - * Makefile.in: Remove linking of unnecessary libraries. - -2002-09-24 Christopher January - - * fhandler_proc.cc (format_process_stat): make ctty a real device - number. - (format_process_status): use effective uid/gid as real and saved - uid/gid. - -2002-09-24 Corinna Vinschen - - * errno.cc (errmap): Map ERROR_INVALID_ADDRESS to new errno code - EOVERFLOW. - (_sys_errlist): Add entries for EILSEQ and EOVERFLOW. - (strerror): Ditto. - * mmap.cc (map_map): Set errno in case of error. - (mmap64): Remove setting errno explicitely to ENOMEM. - -2002-09-24 Corinna Vinschen - - * mmap.cc (map_map): Add debug output. - (mmap64): Evaluate gran_len correctly even if offset isn't 0. - -2002-09-22 Christopher Faylor - - More GNUify non-GNU formatted functions calls throughout. - -2002-09-22 Christopher Faylor - - * Makefile.in (DLL_O_FILES): Restore formatting. - -2002-09-22 Conrad Scott - - GNUify non-GNU formatted functions calls throughout. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (with_strerr): Remove macro. - (server_shmmgr::segment_t::~segment_t): Remove calls to with_strerr. - (server_shmmgr::segment_t::attach): Ditto. - (server_shmmgr::new_segment): Ditto. - * shm.cc (with_strerr): Remove macro. - (client_shmmgr::shmdt): Remove calls to with_strerr. - (client_shmmgr::attach): Ditto. - -2002-09-22 Conrad Scott - - * include/sys/ipc.h: Move to "include/cygwin/ipc.h". - * include/sys/msg.h: Move to "include/cygwin/msg.h". - * include/sys/sem.h: Move to "include/cygwin/sem.h". - * include/sys/shm.h: Move to "include/cygwin/shm.h". - * include/cygwin/ipc.h: New file. - * include/cygwin/msg.h: Ditto. - * include/cygwin/sem.h: Ditto. - * include/cygwin/shm.h: Ditto. - * cygserver_shm.h: Update includes. - * msg.cc: Ditto. - * sem.cc: Ditto. - -2002-09-22 Conrad Scott - - * safe_memory.h (safe_delete): Make a templated function. - * cygserver.cc (~server_request): Update use of safe_delete. - (main): Ditto. - * cygserver_client.cc (client_request::handle_request): Ditto. - (client_request::make_request): Ditto. - * cygserver_process.cc (~process_cleanup): Ditto. - (process::remove): Ditto. - (process::cleanup): Ditto. - (process_cache::process): Ditto. - * cygserver_shm.cc (server_shmmgr::segment_t::detach): Ditto. - (server_shmmgr::delete_segment): Ditto. - * shm.cc (client_shmmgr::shmdt): Ditto. - * threaded_queue.cc (~threaded_queue): Ditto. - (threaded_queue::worker_loop): Ditto. - -2002-09-22 Conrad Scott - - * safe_memory.h: Replace #include with an explicit - definition of the placement new operator. - (safe_delete): Remove unnecessary ## operator. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (class server_shmmgr): Remove `cleanup_t' - friend declaration. - (cleanup_t::cleanup_t): Use the segment's shmid as the key rather - than the segment pointer itself. - (cleanup_t::segptr): Remove method. - (cleanup_t::shmid): New method. - (cleanup_t::cleanup): Update for new key value. - (server_shmmgr::find (segment_t *)): Remove method. - * include/cygwin/cygserver_process.h (cleanup_routine::key): Make - method const. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver_process.h - (cleanup_routine::_key): New field. - (cleanup_routine::cleanup_routine): Initialise new field with new - argument. - (cleanup_routine::operator==): New method. - (cleanup_routine::key): New method. - (cleanup_routine::cleanup): Make argument non-const. - (process::is_active): New method. - (process::remove): Ditto. - (process::check_exit_code): Rename method. - * cygserver_process.cc (process::add): Reorganize code. - (process::remove): New method. - (process::check_exit_code): Rename method. - (process::cleanup): Use new `process::is_active' method. - (process_cache::process): Ditto. - (process_cache::sync_wait_array): Ditto. - (process_cache::check_and_remove_process): Ditto. - * cygserver_shm.cc (server_shmmgr): Make `cleanup_t' a friend. - (segment_t::detach): Make argument non-const. Remove cleanup - object from client if appropriate. - (cleanup_t::_segptr): Remove field. - (cleanup_t::cleanup_t): Initialise parent explicitly. Remove - field. - (cleanup_t::segptr): New method. - (cleanup_t::cleanup): Add error checking and reporting. - (server_shmmgr::shmdt): Make argument non-const. - (server_shmmgr::find (segment_t *)): New method. - -2002-09-22 Conrad Scott - - * cygserver.cc (client_request_shutdown::client_request_shutdown): - Comment out verbose tracing statement. - * cygserver_client.cc - (client_request_get_version::client_request_get_version): Ditto. - (client_request_attach_tty::client_request_attach_tty): Ditto. - * cygserver_shm.cc (client_request_shm::client_request_shm): - Ditto. - -2002-09-22 Conrad Scott - - * cygserver_transport_pipes.cc (transport_layer_pipes::listen): - Set `_is_listening_endpoint' appropriately. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver_transport.h - (transport_layer_base::listen): Change return type. - (transport_layer_base::connect): Ditto. - * include/cygwin/cygserver_transport_pipes.h - (transport_layer_pipes::listen): Change return type. - (transport_layer_pipes::connect): Ditto. - (transport_layer_pipes::_sec_none_nih): Remove unused field. - (transport_layer_pipes::_is_listening_endpoint): New field. - * cygserver_transport_pipes.cc: Synchronize with sockets code. - (transport_layer_pipes::transport_layer_pipes): Initialise new - field. Separate out asserts. - (transport_layer_pipes::listen): Change return type. Add asserts. - (transport_layer_pipes::accept): Add asserts. - (transport_layer_pipes::read): Change conditional to an assert. - Add assert. - (transport_layer_pipes::write): Ditto. - (transport_layer_pipes::connect): Change return type. Change - conditional to an assert. Add asserts. Rationalize error code - slightly. - (transport_layer_pipes::impersonate_client): Add asserts. - * include/cygwin/cygserver_transport_sockets.h - (transport_layer_sockets::listen): Change return type. - (transport_layer_sockets::connect): Ditto. - (transport_layer_sockets::_addr): Change type of field. - (transport_layer_sockets::_addr_len): Ditto. - (transport_layer_sockets::_is_accepted_endpoint): New field. - (transport_layer_sockets::_is_listening_endpoint): Ditto. - * cygserver_transport_sockets.cc - (MAX_CONNECT_RETRY): New constant. - (transport_layer_sockets::transport_layer_sockets): Initialise new - fields. Only initialise the socket address where necessary. - (transport_layer_sockets::listen): Change return type. Rewrite. - (transport_layer_sockets::accept): Add asserts. Add tracing - statements. Use a local variable to hold the accepted address. - (transport_layer_sockets::close): Add tracing statements. Unlink - the UNIX domain socket file as appropriate. Close the socket - cleanly. - (transport_layer_sockets::read): Rewrite method. - (transport_layer_sockets::write): Ditto. - (transport_layer_sockets::connect): Change return type. Rewrite. - * cygserver.cc (server_submission_loop::request_loop): Run the - listening thread at high priority with special handling for - shutdown. - (main): Print the request error code rather than errno in shutdown - request code. Install signal handlers with sigaction(2) to avoid - setting SA_RESTART. Check value of the listen method call, now it - has one. - * cygserver_client.cc (client_request::make_request): Check new - return value on connect method call. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver_transport_pipes.h - (cygserver_transport_pipes::_sd): Rename field. - (cygserver_transport_pipes::_sec_none_nih): Ditto. - (cygserver_transport_pipes::_sec_all_nih): Ditto. - (cygserver_transport_pipes::_pipe_name): Ditto. - (cygserver_transport_pipes::_hPipe): Ditto. - (cygserver_transport_pipes::_is_accepted_endpoint): Ditto. - * cygserver_transport_pipes.cc - (transport_layer_pipes::transport_layer_pipes): Rename fields. - (transport_layer_pipes::init_security): Ditto. - (transport_layer_pipes::listen): Ditto. - (transport_layer_pipes::accept): Ditto. - (transport_layer_pipes::close): Ditto. - (transport_layer_pipes::read): Ditto. - (transport_layer_pipes::write): Ditto. - (transport_layer_pipes::connect): Ditto. - (transport_layer_pipes::impersonate_client): Ditto. - (transport_layer_pipes::revert_to_self): Ditto. - * include/cygwin/cygserver_transport_sockets.h - (cygserver_transport_sockets::_fd): Rename field. - (cygserver_transport_sockets::_addr): Ditto. - (cygserver_transport_sockets::_addr_len): Ditto. - * cygserver_transport_sockets.cc - (transport_layer_sockets::transport_layer_sockets): Rename fields. - (transport_layer_sockets::listen): Ditto. - (transport_layer_sockets::accept): Ditto. - (transport_layer_sockets::close): Ditto. - (transport_layer_sockets::read): Ditto. - (transport_layer_sockets::write): Ditto. - (transport_layer_sockets::connect): Ditto. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (with_strerr): Fix use of %p format. - * shm.cc (client_shmmgr::shmat): Ditto. - (client_shmmgr::shmctl): Ditto. - (client_shmmgr::shmdt): Ditto. - (client_shmmgr::attach): Ditto. - -2002-09-22 Christopher Faylor - - * woutsup.h (system_printf): Remove extraneous semicolon from macro - definition. - -2002-09-22 Conrad Scott - - * cygserver_transport_pipes.cc - (transport_layer_pipes::connect): Use ProtectHandle in DLL code. - (transport_layer_pipes::close): Use ForceCloseHandle in DLL code. - -2002-09-22 Nicholas Wourms - - * threaded_queue.h (class queue_submission_loop): Correct friend - declaration for GCC 3.1.1. - * include/cygwin/cygserver_process.h (class process): Ditto. - (class process_cache): Ditto. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (server_shmmgr::shmdt): Only call - delete_segment if the segment exists [sic]. - -2002-09-22 Conrad Scott - - * safe_memory.h: Include rather than for gcc 3. - -2002-09-22 Conrad Scott - - * safe_memory.h: New file extracted from "woutsup.h". - * woutsup.h: Move the "safe" new/delete macros into the new - "safe_memory.h" header file and include that here. - * cygserver_client.cc: Explicitly include "safe_memory.h" for - client-side code. - (client_request::make_request): Use the "safe" new/delete macros - unconditionally, i.e. use them on the client side as well as on - the server side. - * cygserver_transport.cc: Explicitly include "safe_memory.h" for - client-side code. - (create_server_transport): Use the "safe" new/delete macros - unconditionally, i.e. use them on the client side as well as on - the server side. - * shm.cc: Include "safe_memory.h". - (client_shmmgr::instance): Use the "safe" new/delete macros. - (client_shmmgr::shmdt): Ditto. - (client_shmmgr::new_segment): Ditto. - -2002-09-22 Conrad Scott - - * cygserver_process (process::process): Add the client's cygpid - and winpid to all tracing statements as appropriate. - (process::exit_code): Ditto. - (process_cache::check_and_remove_process): Ditto. - * cygserver_shm.cc (server_shmmgr::shmat): Ditto. - (server_shmmgr::shmdt): Ditto. - (server_shmmgr::shmctl): Add a process object argument and remove - the explicit cygpid argument. Add the client's cygpid and winpid - to all tracing statements as appropriate. - (server_shmmgr::shmget): Ditto. - (client_request_shm::serve): Update for the new signature of the - shmctl and shmget methods. - -2002-09-22 Conrad Scott - - * cygserver.cc (client_request_shutdown::serve): Don't set the - shutdown flag directly, but send a SIGINT, as the signal handler - sets the flag and the signal breaks the pause(2) in the main loop. - (print_usage): Add new options. - (main): Add new --cleanup-threads and --request-threads options to - set the number of threads used by the daemon. Use pause(2) rather - the win32 Sleep in the main loop. - * shm.cc (shmat): Add sigframe. - (shmctl): Ditto. - (shmdt): Ditto. - (shmget): Ditto. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc: Automatically detach processes from any - segments they are attached to at exit. - (class server_shmmgr::attach_t): New class. - (server_shmmgr::segment_t::IS_DELETED): Rename and make private. - (server_shmmgr::segment_t::_sequence): Make private. - (server_shmmgr::segment_t::_flg): Ditto. - (server_shmmgr::segment_t::_hFileMap): Ditto. - (server_shmmgr::segment_t::_attach_head): New private field. - (server_shmmgr::segment_t::segment_t): Initialise new fields. - Make non-inline. - (server_shmmgr::segment_t::~segment_t): New method. - (server_shmmgr::segment_t::is_deleted): Ditto. - (server_shmmgr::segment_t::is_pending_delete): Ditto. - (server_shmmgr::segment_t::mark_deleted): Ditto. - (server_shmmgr::segment_t::attach): Ditto. - (server_shmmgr::segment_t::detach): Ditto. - (server_shmmgr::segment_t::find): Ditto. - (class server_shmmgr::cleanup_t): New class. - (server_shmmgr::_shm_atts): New private field. - (server_shmmgr::shmat): Add a process object argument to replace - the removed process_cache, cygpid and winpid arguments. Remove - the process_cache manipulations. Move body of code to the - segment_t::attach method. Increment _shm_atts when required. - Update tracing statements. - (server_shmmgr::shmdt): Add a process object argument to replace - the removed cygpid argument. Move body of code to the - segment_t::detach method. Decrement _shm_atts when required. - Update tracing statements. - (server_shmmgr::shmget): Use the new segment_t::is_deleted method. - (server_shmmgr::server_shmmgr): Initialise the new _shm_atts - field. - (server_shmmgr::delete_segment): Remove the CloseHandle code, as - this is now done in the segment_t destructor. - (client_request_shm::serve): Look up the client's process object - and pass to the server_shmmgr::shmat and server_shmmgr::shmdt - methods rather than passing the cache, winpid and cygpid. - * cygserver_process.h: Add a cygpid to the process object to make - it more useful and then pass process objects rather than winpids - where possible. - (cleanup_routine::cleanup): Change argument to be a pointer to a - process object. - (class process): Re-order fields for no discernible reason. - (process::_cygpid): New field. - (process::process): Add a cygpid argument. - (process::winpid): New method. - (process::cygpid): Ditto. - (process::add): Make public, as it always should have been. - (process_cache::process): Add a cygpid argument. - * cygserver_process.cc (process::process): Add a cygpid argument - and use it to initialise the `_cygpid' field. Re-order - initialisers to match new field order. - (process::cleanup): Pass `this' rather than just the winpid to - cleanup_routine::cleanup. - (process_cache::process): Add a cygpid argument and pass it to the - process object constructor. - * include/sys/shm.h (shmatt_t): Make unsigned as per SUSv3. - (shm_info::shm_atts): New field. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (class server_shmmgr::segment_t): Add `_' - prefix to the names of all fields. - -2002-09-22 Conrad Scott - - * msg.cc: New file of stub functions, no functionality. - * sem.cc: Ditto. - * shm.cc (client_shmmgr::shmctl): Add support for an out shm_info - buffer for the SHM_INFO command. - (client_shmmgr::shmget): Use %X to print keys. - * include/sys/ipc.h: Comment all fields and values. - (IPC_PRIVATE): Change to be non-negative. - * include/sys/msg.h: New file with SUSv3 and ipcs(8) interfaces. - * include/sys/sem.h: Ditto. - * include/sys/shm.h: Comment all fields and values. - (struct shm_info): New struct. - * cygserver_shm.h (client_request_shm::shminfo): Rename. - (client_request_shm::shm_info): New method. - (client_request_shm::_parameters.out.hFileMap): Move into union. - (client_request_shm::_parameters.out.shminfo): Rename. - (client_request_shm::_parameters.out.shm_info): New field. - * cygserver_shm.cc (server_shmmgr::_shm_ids): Rename. - (server_shmmgr::_shm_tot): New field. - (server_shmmgr::shmctl): Rename `out_shminfo' argument. Add - `out_shm_info' argument. Fill in the `out_shm_info' argument in - the SHM_INFO command. - (server_shmmgr::shmget): Check `shmflg' against the mode of - existing segments as per Stevens 1990, p. 123. - (server_shmmgr::server_shmmgr): Initialise the new `_shm_tot' - field. - (server_shmmgr::new_segment): Set ENOMEM if CreateFileMapping - fails. Pass `size' to new_segment. - (server_shmmgr::new_segment): Add size argument and use it to - check against and update the new `_shm_tot' field. - (server_shmmgr::delete_segment): Update the new `_shm_tot' field. - * Makefile.in (DLL_OFILES): Add new DLL object files. - -2002-09-22 Conrad Scott - - * cygserver_transport_pipes.cc: The main change is to make the - client try harder to connect to the server if it's previously - connected, and so has good grounds for believing that the server - is running. - (MAX_WAIT_NAMED_PIPE_RETRY): Change to be an enumerator. - (WAIT_NAMED_PIPE_TIMEOUT): Ditto. - (transport_layer_pipes::accept): Use interlocked operators on - `pipe_instance'. - (transport_layer_pipes::close): Rearrange so that FlushFileBuffers - and DisconnectNamedPipe are only called for accepted endpoints. - Use interlocked operators on `pipe_instance'. - (transport_layer_pipes::read): Use set_errno where required. - (transport_layer_pipes::write): Ditto. - (transport_layer_pipes::connect): Add local static variable - `assume_cygserver'. Set it if a connection is made to cygserver, - clear it if a connection is not made even after retrying. If set, - ignore all errors from CreateFile and retry the connection. Catch - the situation where WaitNamedPipe fails to wait [sic] and add a - `Sleep (0)' so that the server gets a chance to run. - -2002-09-22 Conrad Scott - - * dcrt0.cc: Only check for cygserver if and when required. - (dll_crt0_1): Remove call to `cygserver_init ()'. - * fhandler_tty.cc (fhandler_tty_slave::open): Change the cygserver - logic to allow for the fact that `cygserver_init ()' may not yet - have been called. - (fhandler_tty_slave::cygserver_attach_tty): Tweak the cygserver - request logic to conform to the practice elsewhere in the code. - * tty.cc (tty::common_init): Add an explicit call to - `cygserver_init ()' if it hasn't already been called. - * include/cygwin/cygserver.h (CYGSERVER_UNAVAIL): Rename from - `CYGSERVER_DEAD'. - (client_request_get_version::check_version): Make available in - cygserver as well the DLL. - (check_cygserver_available): Ditto. Remove `check_version_too' - argument. - (cygserver_init): Ditto. And likewise. - * cygserver_client.cc (client_request_get_version::check_version): - Make available in cygserver as well the DLL. - (client_request::make_request): This may now be called without - `cygserver_init ()' having been called first. Detect this and - call it as required. Add tracing. - (check_cygserver_available): Make available in cygserver as well - the DLL. Remove `check_version_too' argument and always check the - version information. And since this is called from within - `cygserver_init ()', force `cygserver_running' before calling - `client_request::make_request ()'. - (cygserver_init): Make available in cygserver as well the DLL. - Remove `check_version_too' argument. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc: Implement the ipcs(8) interfaces, IPC_INFO, - SHM_STAT and SHM_INFO. - (server_shmmgr::segment_t::sequence): New static field. - (server_shmmgr::segment_t::key): Remove field, use the new - ds.shm_perm.key field instead. - (server_shmmgr::segment_t::shmid): Remove field. - (server_shmmgr::segment_t::intid): New field. - (server_shmmgr::segment_t::segment_t): Use the `key' argument to - initialise `ds.shm_perm.key'. Change from using `shmid' to - `intid'. - (server_shmmgr::_shmseg_cnt): Renamed from `_shmid_cnt'. - (server_shmmgr::_intid_max): Renamed from `_shmid_max. - (server_shmmgr::shmat): Move the out arguments to the start of the - argument list. Rename the `pid' argument as `cygpid'. Add - tracing. Pass an intid to `find ()', not a shmid. - (server_shmmgr::shmctl): Add separate out arguments. Rename the - `pid' argument as `cygpid'. Add support for the ipcs(8) - interfaces. Add tracing. Pass an intid to `find ()', not a - shmid. - (server_shmmgr::shmdt): Rename the `pid' argument as `cygpid'. - Add tracing. Pass an intid to `find ()', not a shmid. - (server_shmmgr::shmget): Add a separate out arguments. Rename the - `pid' argument as `cygpid'. Add tracing. - (server_shmmgr::server_shmmgr): Update for new field names. - (server_shmmgr::find_by_key): Update for the new `ds.shm_perm.key' - field. - (server_shmmgr::find): Update to use the new `segment_t::intid' - field. - (server_shmmgr::new_segment): Rename the `pid' argument as - `cygpid'. Check that the requested size is within bounds. Handle - new error result from `new_segment (key, HANDLE)'. - (server_shmmgr::new_segment): Work with intids, not shmids. Check - that the new intid is within bounds. Update for new field names. - (server_shmmgr::delete_segment): Pass an intid to `find ()', not a - shmid. Update for new field names. - (client_request_shm::serve): Check that the incoming message - length is the size of the `_parameters.in' struct, not of the - whole in/out parameter union. Likewise, set the outgoing message - length to the size of the `_parameters.out' struct. Update for - the new server_shmmgr interfaces. - * include/sys/ipc.h (ipc_perm::key): New field. - * include/sys/shm.h (SHM_INFO): New constant. - * cygserver_ipc.h (IPCMNI): New constant. - (ipc_int2ext): Add `sequence' argument and munge this into the - external ipc id. - (ipc_ext2int_subsys): Unmunge the sequence number from the - external ipc id. - (ipc_ext2int): Ditto. - (ipc_inc_id): Remove. - (ipc_dec_id): Remove. - * cygserver_shm.h (SHMMAX): New constant. - (SHMMIN): Ditto. - (SHMMNI): Ditto. - (SHMSEG): Ditto. - (SHMALL): Ditto. - (client_request_shm::_parameters): Re-arrange as a union of two - separate structs, one for in arguments, the other for out. - (client_request_shm::shmid): Update for the new parameter layout. - (client_request_shm::ds): Ditto. - (client_request_shm::info): New method. - * shm.cc (client_shmmgr::_shmat_cnt): New static field. - (client_shmmgr::shmat): Add locking. Add tracing. - (client_shmmgr::shmctl): Update for ipcs(8) commands. Add - tracing. Add more argument checking. - (client_shmmgr::shmdt): Add locking. Add tracing. Update the new - `_shmat_cnt' field. - (client_shmmgr::shmget): Add tracing. - (client_shmmgr::fixup_shms_after_fork): Add tracing. Add - consistency checking. - (client_shmmgr::attach): Add more tracing. - (client_shmmgr::new_segment): Update the new `_shmat_cnt' field. - (client_request_shm::client_request_shm): Update for the new - parameter layout. Set the outgoing message length to the size of - the `_parameters.in' struct, not of the whole in/out parameter - union. - -2002-09-22 Conrad Scott - - * shm.cc: Remove the use of a static client_shmmgr object. - (client_shmmgr::_instance): New static variable. - (client_shmmgr::instance): Allocate a new shmmgr on the heap, - rather than using a local static object. - -2002-09-22 Conrad Scott - - * cygserver_transport.cc (create_server_transport): Fix - cut-and-paste error. - -2002-09-22 Conrad Scott - - * cygserver_client.cc (client_request::handle_request): Don't - bother with the client request activity marker when compiled with - debugging output. - -2002-09-22 Conrad Scott - - * cygserver_transport_pipes.cc - (MAX_WAIT_NAMED_PIPE_RETRY): New constant. - (WAIT_NAMED_PIPE_TIMEOUT): Ditto. - (transport_layer_pipes::close): The `pipe' field is now either - NULL or a valid handle, and it should never have the value - `INVALID_HANDLE_VALUE'. - (transport_layer_pipes::read): Ditto. - (transport_layer_pipes::write): Ditto. - (transport_layer_pipes::connect): Ditto. - (transport_layer_pipes::impersonate_client): Ditto. - (transport_layer_pipes::connect): Ditto. New, but still bogus, - retry logic. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (server_shmmgr::server_shmmgr): All fields have - to be initialized now that the singleton is no longer static. - -2002-09-22 Conrad Scott - - * cygserver_shm.cc (server_shmmgr::_instance): New static field. - (server_shmmgr::_instance_once): Ditto. - (server_shmmgr::initialise_instance): New static method. - (server_shmmgr::instance): Use a pthread_once_t rather than - relying on a local static variable. - -2002-09-22 Conrad Scott - - * woutsup.h: Remove all uses of the C++ new and delete operators - throughout cygserver until they are fully thread-safe. - (safe_new0): New macro to replace the C++ new operator. - (safe_new): Ditto. - (safe_delete): New macro to replace the C++ delete operator. - * cygserver_client.cc (client_request::handle_request): Replace - all uses of the C++ new and delete operators with the new macros - from "woutsup.h". - (client_request::make_request): Ditto. - * cygserver_process.cc (~process_cleanup): Ditto. - (process::cleanup): Ditto. - (process_cache::process): Ditto. - (process_cache::check_and_remove_process): Ditto. - * cygserver_shm.cc (server_shmmgr::new_segment): Ditto. - (server_shmmgr::delete_segment): Ditto. - * cygserver_transport.cc (create_server_transport): Ditto. - * cygserver_transport_pipes.cc - (transport_layer_pipes::accept): Ditto. - * cygserver_transport_sockets.cc - (transport_layer_sockets::accept): Ditto. - * threaded_queue.cc (~threaded_queue): Ditto. - (threaded_queue::worker_loop): Ditto. - (threaded_queue::stop): Replace sleep(3) with win32 Sleep. - * cygserver.cc (~server_request): Replace all uses of the C++ new - and delete operators with the new macros from "woutsup.h". - (server_submission_loop::request_loop): Ditto. - (main): Ditto. Replace sleep(3) with win32 Sleep. Replace - iostreams with FILEs. - (print_usage): Replace iostreams with FILEs. - (print_version): Ditto. - -2002-09-22 Conrad Scott - - * cygserver_transport_sockets.cc - (transport_layer_sockets::accept): Rename local variable - `accept_fd' to avoid shadowing the `fd' field. - -2002-09-22 Conrad Scott - - * cygwin_ipc.h: Moved (back) to "include/sys/ipc.h". - * cygwin_shm.h: Moved (back) to "include/sys/shm.h". - * include/sys/ipc.h: New file. - * include/sys/shm.h: New file. - * cygserver_shm.h: Update for new header file locations. - * ipc.cc: Ditto. - -2002-09-22 Conrad Scott - - * cygserver_client.cc (client_request::make_request): Comment out - a verbose tracing statement. - * cygserver_process.cc (process_cache::sync_wait_array): Fix - broken assert. - * include/cygwin/cygserver.h (class client_request): Remove excess - use of `class' qualifier in declarations. - (class client_request_get_version): Ditto. - (class client_request_shutdown): Ditto. - (class client_request_attach_tty): Ditto. - -2002-09-22 Conrad Scott - - * cygserver_ipc.h: New file. - * cygserver_shm.h: Re-written from scratch. - * cygserver_shm.cc: Ditto. - * shm.cc: Ditto. - -2002-09-22 Conrad Scott - - * threaded_queue.h (class queue_request): Re-write. - (threaded_queue_thread_function): Remove. - (class queue_process_param): Remove. - (class threaded_queue): Re-write. - (class queue_submission_loop): New version of the old - `queue_process_param' class. - (TInterlockedExchangePointer): New templated function. - (TInterlockedCompareExchangePointer): Ditto. - * threaded_queue.cc (worker_function): Remove. - (class threaded_queue): Re-write. - (class queue_process_param): Remove. - (class queue_submission_loop): New version of the old - `queue_process_param' class. - * include/cygwin/cygserver_process.h (process_cleanup): Re-write. - (class process_process_param): Remove. - (class cleanup_routine): Re-write. - (class process): Re-write. - (class process_cache): Re-write. - * cygserver_process.cc (process_cleanup): Re-write. - (class process_process_param): Remove. - (class cleanup_routine): Re-write. - (class process): Re-write. - (class process_cache): Re-write. - * cygserver.cc (request_count): Remove unused variable. - (class server_request): Move methods inline. - (class server_process_param): Remove. - (class server_request_queue): Remove. - (request_queue): Move into `main ()' and change type to - `threaded_queue'. - (request_loop): Remove. - (class server_submission_loop): New version of the old - `server_process_param' class. - (shutdown_server): New variable. - (client_request_shutdown::serve): Set `shutdown_server' to trigger - shutdown. - (handle_signal): Ditto. - (main): Install signal handler for SIGINT rather than SIGQUIT. - Use new interfaces for the `request_queue' and the `cache'. - Create a `server_submission_loop' and add to the `request_queue'. - Add check for the `shutdown_server' variable to the main loop. - * cygserver_shm.cc (client_request_shm::serve): Release the - process object after use. - -2002-09-22 Conrad Scott - - * cygserver_client.cc (client_request::handle_request): Correct - tracing statement. - * cygserver_transport_pipes.cc: Remove local definition of - FILE_FLAG_FIRST_PIPE_INSTANCE constant. - * cygwin_ipc.h: Update copyright notice. - * cygwin_shm.h: Ditto. - * woutsup.h: Add definition of _WIN32_WINNT. - -2002-09-22 Conrad Scott - - * cygserver_client (client_request::make_request): Replace my - inappropriate use of set_errno () with error_code () throughout. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver.h: Add forward declarations of class - transport_layer_base and class process_cache to reduce - dependencies between header files. - * include/cygwin/cygserver_process.h: Add include of - "threaded_queue.h". - * cygserver.cc: Remove unnecessary cygserver header files. - * cygserver_client.cc: Ditto. - * cygserver_process.cc: Ditto. - * cygserver_shm.cc: Ditto. - * cygserver_shm.h: Ditto. - * cygserver_transport_pipes.cc: Ditto. - * dcrt0.cc: Ditto. - * fhandler_tty.cc: Ditto. - * tty.cc: Ditto. - -2002-09-22 Conrad Scott - - * cygserver_shm.h: Replace with "cygwin_shm.h" after - merge from HEAD. - * cygwin_ipc.h: Update with changes to include/sys/ipc.h lost in - merge from HEAD. - * cygwin_shm.h: Ditto. - -2002-09-22 Conrad Scott - - * cygserver.cc: The tests for a duplicate server instance are now - the responsibility of the transport layer. - (request_loop): Use new `recoverable' flag in call to - `cygserver_transport::accept ()' and shutdown on an unrecoverable - error. - (main): Never call `cygserver_init ()'. Fake `cygserver_running' - just for sending a shutdown request. - * cygserver_client.cc (client_request::send): Comment out - message-size tracing statements as verbose. - (client_request::handle): Ditto. - (client_request_get_version::check_version): #ifdef as DLL-only. - (check_cygserver_available): Ditto. - (cygserver_init): Ditto. - * include/cygwin/cygserver.h - (client_request_get_version::check_version): #ifdef as DLL-only. - (check_cygserver_available): Ditto. - (cygserver_init): Ditto. - * include/cygwin/cygserver_transport.h - (transport_layer_base::impersonate_client): #ifdef as - cygserver-only. - (transport_layer_base::revert_to_self): Ditto. - (transport_layer_base::listen): Ditto. - (transport_layer_base::accept): Ditto. Add a `recoverable' out - flag for error handling. - * include/cygwin/cygserver_transport_sockets.h: Ditto. - * include/cygwin/cygserver_transport_pipes.h: Ditto. - (transport_layer_pipes): Change type of the `pipe_name' field. - Remove the `inited' field, as unnecessary. Add new - `is_accepted_endpoint' field. - * include/cygwin/cygserver_transport.cc - (transport_layer_base::impersonate_client): #ifdef as - cygserver-only. - (transport_layer_base::revert_to_self): Ditto. - * include/cygwin/cygserver_transport_sockets.cc - (transport_layer_sockets::listen): #ifdef as cygserver-only. - (transport_layer_sockets::accept): #ifdef as cygserver-only. - Analyse any errno from `accept ()' and set `recoverable' as - appropriate. - * cygserver_transport_pipes.cc: Add local #define of - `FILE_FLAG_FIRST_PIPE_INSTANCE'. - (pipe_instance_lock_once): New variable. - (pipe_instance_lock): Ditto. - (pipe_instance): Ditto. - (initialise_pipe_instance_lock): New function. - (transport_layer_pipes::transport_layer_pipes): Change - initialization of `pipe_name'. Initialize `is_accepted_endpoint' - as appropriate. Remove use of `inited'. - (transport_layer_pipes::impersonate_client): #ifdef as - cygserver-only. - (transport_layer_pipes::revert_to_self): Ditto. - (transport_layer_pipes::listen): Ditto. - (transport_layer_pipes::accept): Ditto. Keep track of how often - many named pipes have been created, in the `pipe_instance' - variable, and pass the `FILE_FLAG_FIRST_PIPE_INSTANCE' flag on the - open of the first instance. Analyse the error code from - `CreateNamedPipe ()' and set the `recoverable' flag as - appropriate. - (transport_layer_pipes::close): Update the `pipe_instance' count. - -2002-09-22 Conrad Scott - - * woutsup.h (cygserver_running): Add declaration. - (api_fatal): Eliminate. - * include/cygwin/cygserver.h - (client_request_get_version::check_version): Change return type to - bool. - (check_cygserver_available): New function. - (cygserver_init): Add check_version_too argument. - * cygserver_client.cc (allow_daemon): Make a bool. - (client_request_get_version::make_request): See errno on error. - Remove special case for CYGSERVER_REQUEST_GET_VERSION; this is now - handled in cygserver_init(). - (client_request_get_version::check_version): Use syscall_printf() - instead of api_fatal(). Return true if cygserver version is - compatible. - (check_cygserver_available): New function; code moved here from - cygserver_init(). - (cygserver_init): Move some code into check_cygserver_available(). - * cygserver.cc (__set_errno): Copy from debug.cc so that - set_errno() can be used when __OUTSIDE_CYGWIN__. - (main): Call cygserver_init() to set up cygserver_running and add - checks against this to (try and) prevent multiple copies of - cygserver running simultaneously. Remember to delete all - transport connections so that (one day) the transport classes can - tidy up on cygserver shutdown. - -2002-09-22 Conrad Scott - - * cygserver.cc (main): Adjust tracing output for a cleaner display - when compiled without --enable-debugging. - * threaded_queue.cc (threaded_queue::cleanup): Ditto. - (queue_process_param::stop): Ditto. - * include/cygwin/cygserver.h - (client_request::make_request): Make non-virtual. - (client_request::send): Make virtual and protected, not private. - (client_request_attach_tty::send): New virtual method. - * cygserver_client.cc: Use the `msglen()' accessor rather than - `_header.msglen' throughout. - (client_request_attach_tty::send): New method. - (client_request::make_request): Remove the explicit close of - `transport' as it is closed on deletion. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver.h: Change the client_request classes to - give greater encapsulation and to allow variable length requests - and replies. - (enum cygserver_request_code): Now client_request::request_code_t. - (class request_header): Now client_request::header_t. Make a - union of the request_code and the error_code. The `cb' field, - which was the buffer length, is now the `size_t msglen' field. - (struct request_get_version): Now - client_request_get_version::request_get_version. - (struct request_shutdown): Remove unused type. - (struct request_attach_tty): Now - client_request_attach_tty::request_attach_tty. - (client_request::_buf): Make field const. - (client_request::_buflen): New const private field. - (client_request::request_code): New accessor. - (client_request::error_code): Ditto. - (client_request::msglen): Ditto. - (client_request::handle_request): New static method. - (client_request::make_request): New virtual method. - (client_request::handle): New method. - (client_request::send): Make private. - (client_request_get_version::check_version): New method. - (client_request_get_version::serve): Make private. - (client_request_get_version::version): Ditto. - (client_request_shutdown::serve): Ditto. - (client_request_attach_tty::req): Ditto. - (client_request_attach_tty::serve): Ditto. - (client_request_attach_tty::from_master): Make method const. - (client_request_attach_tty::from_master): Ditto. - * cygserver_client.cc - (client_request_get_version::client_request_get_version): Track - changes to the client_request classes. - (client_request_attach_tty::client_request_attach_tty): Ditto. - (client_request_get_version::check_version): New method to - encapsulate code from cygserver_init(). - (client_request_shutdown::client_request_shutdown): Move into - "cygserver.cc". - (client_request::send): Track changes to the client_request - classes. Add more error checking. - (client_request::handle_request): New static method containing the - first half of the old server_request::process() code. - (client_request::make_request): New method to replace the old - cygserver_request() function. - (client_request::handle): New method containing the second half of - the old server_request::process() code. - (cygserver_init): Track changes to the client_request classes. In - particular, some code moved into the - client_request_get_version::check_version() method. - * cygserver.cc (client_request_attach_tty::serve): Track changes - to the client_request classes. In particular, only return a reply - body if some handles are successfully duplicated for the client. - And remove goto's. - (client_request_get_version::serve): Track changes to the - client_request classes. - (client_request_shutdown::serve): Ditto. - (class client_request_invalid): Dead, and so young too. - (server_request::request_buffer): Remove unnecessary field. - (client_request_shutdown::client_request_shutdown): Moved here - from "cygserver_client.cc". - (server_request::process): Implementation moved into the new - client_request::handle_request() and client_request::handle() - methods. - * cygserver_shm.h (class client_request_shm): Put client- and - server-specific interfaces inside #ifdef/#ifndef __INSIDE_CYGWIN__ - guards. - (client_request_shm::serve): Make private. - * cygserver_shm.cc - (client_request_shm::client_request_shm): Track changes to the - client_request classes. - (client_request_shm::serve): Ditto - * shm.cc (client_request_shm::client_request_shm): Ditto. Use - alloc_sd() rather than set_security_attribute() to get access to - the SECURITY_DESCRIPTOR length, so that we can use it to set the - request body length. - (shmat): Track changes to the client_request classes. In - particular, allocate client_request objects on the stack rather - than on the heap, and use the client_request::make_request() - method rather than the old cygserver_request() function. - (shmdt): Ditto. - (shmctl): Ditto. - (shmget): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::cygserver_attach_tty): Ditto. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver_transport.h - (cygserver_transport::read): Change buffer type to void *. - (cygserver_transport::write): Ditto. - * include/cygwin/cygserver_transport_sockets.h - (cygserver_transport_sockets::read): Ditto. - (cygserver_transport_sockets::write): Ditto. - * include/cygwin/cygserver_transport_pipes.h - (cygserver_transport_pipes::read): Ditto. - (cygserver_transport_pipes::write): Ditto. - * cygserver_transport_sockets.cc - (cygserver_transport_sockets::read): Ditto. - (cygserver_transport_sockets::write): Ditto. - * cygserver_transport_pipes.cc - (cygserver_transport_pipes::read): Ditto. Set errno on error, to - match behaviour of cygserver_transport_sockets class. - (cygserver_transport_pipes::write): Ditto. - -2002-09-22 Conrad Scott - - * cygserver.cc (version): New static variable. - (server_request_queue::add_connection): Remove my gratuitous use - of studly caps. - (setup_privileges): Declare static. - (handle_signal): Ditto. - (longopts): Make a local variable of main(). - (opts): Ditto. - (print_usage): New function. - (print_version): Ditto (tip of the hat to Joshua Daniel Franklin - for inspiration here). - (main): More argument checking. Add --help and --version options. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver.h (client_request::serve): Make pure - virtual. - * cygserver.cc (client_request::serve): Remove definition of pure - virtual method. - (class client_request_invalid): New class. - (server_request::process): Use new client_request_invalid - class. And remove goto's. - -2002-09-22 Conrad Scott - - * cygserver.cc (class server_request): Add virtual destructor. - (server_request_queue::addConnection): New method to replace bad - virtual add() method. - (request_loop): Replace call to queue->add() with call to - queue->addConnection(). - (server_request::server_request): Use field initialization. - (server_request::~server_request): New virtual destructor. - (server_request::process): Remove close and delete of - transport_layer_base object. It is deleted by the server_request's - own destructor and closed by its own destructor. - * include/cygwin/cygserver.h - (client_request::operator request_header): Remove unused method. - * cygserver_client.cc: Ditto. - * include/cygwin/cygserver_process.h - (class cleanup_routine): Add virtual destructor. - (cleanup_routine::cleanup): Make pure virtual. - (class process_cache): Make destructor non-virtual. - (process_cache::add): Ditto. - * cygserver_process.cc - (cleanup_routine::~cleanup_routine): New virtual destructor. - * include/cygwin/cygserver_transport.h - (class transport_layer_base): Add virtual destructor. - * cygserver_transport.cc - (transport_layer_base::~transport_layer_base): New virtual - destructor. - * include/cygwin/cygserver_transport_pipes.h - (class transport_layer_pipes): Add virtual destructor. - * cygserver_transport_pipes.cc - (transport_layer_pipes::~transport_layer_pipes): New virtual - destructor. - (transport_layer_pipes::close): Null out handle after closing. - * include/cygwin/cygserver_transport_sockets.h - (class transport_layer_sockets): Add virtual destructor. - * cygserver_transport_sockets.cc - (transport_layer_sockets::~transport_layer_sockets): New virtual - destructor. - (transport_layer_sockets::close): Null out fd after closing. - * threaded_queue.h (class queue_request): Add virtual destructor. - (queue_request::process): Make pure virtual. - * threaded_queue.cc (~queue_request): New virtual destructor. - (queue_request::process): Remove definition of pure virtual - method. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver.h (client_request::send): Make - non-virtual. - (class client_request_attach_tty): Put client- and server-specific - interfaces inside #ifdef/#ifndef __INSIDE_CYGWIN__ guards. - * cygserver_client.cc: Ditto. - (cygserver_init): Fix error handling. - -2002-09-22 Conrad Scott - - * cygserver.cc: Throughout the code, check and correct level of - the XXX_printf() functions used. Comment out several of the - debug_printf() calls with "// verbose:". Reformat and correct - typos of some of the XXX_printf() formats. - * cygserver_process.cc: Ditto. - * cygserver_shm.cc: Ditto. - * cygserver_transport_pipes.cc: Ditto. - * cygserver_transport_sockets.cc: Ditto. - * shm.cc (hi_ulong): New function to allow printing of a 64-bit - key with current small_printf implementation. - (lo_ulong): Ditto. - (client_request_shm::client_request_shm): Use hi_ulong() and - lo_ulong() in call to debug_printf(). - -2002-09-22 Conrad Scott - - * cygserver_shm.cc: Remove #define __INSIDE_CYGWIN__ from around - as it no longer contains any internal code. - -2002-09-22 Conrad Scott - - * include/sys/ipc.h (IPC_PRIVATE): Add cast to key_t. - (IPC_INFO): New flag for ipcs(8). - (IPC_RMID IPC_SET IPC_STAT): Renumber. - * include/sys/shm.h (SHM_RDONLY SHM_RND): Renumber with distinct - values [sic]. - (class _shmattach): Internal type moved to "cygserver_shm.h". - (class shmnode): Ditto. - (class shmid_ds): Ditto. - (struct shmid_ds): Add spare fields. - (struct shminfo): New type for IPC_INFO interface. - * cygserver_shm.h: Remove obsolete #if 0 ... #endif block. - (class shm_cleanup): Remove unused class. - (struct _shmattach): Internal type moved from . - (struct shmnode): Ditto. - (struct int_shmid_ds): Ditto. Renamed to avoid name clash with - public interface struct shmid_ds. Use the shmid_bs structure as a - field. - * cygserver_shm.cc: Remove obsolete #if 0 ... #endif block. - (client_request_shm::serve): Update for redefinition of - int_shmid_ds structure. - * shm.cc (build_inprocess_shmds): Ditto. - (fixup_shms_after_fork): Ditto. - (shmctl): Ditto. - (shmget): Ditto. Remove obsolete #if 0 ... #endif code. - -2002-09-22 Conrad Scott - - * include/cygwin/cygserver_transport.h - (transport_layer_base::transport_layer_base): Remove since it is - now redundant. - (transport_layer_base::listen): Make a pure virtual method. - (transport_layer_base::accept): Ditto. - (transport_layer_base::close): Ditto. - (transport_layer_base::read): Ditto. - (transport_layer_base::write): Ditto. - (transport_layer_base::connect): Ditto. - * cygserver_transport.cc - (transport_layer_base::transport_layer_base): Remove since it is - now redundant. - (transport_layer_base::listen): Remove since it is now a pure - virtual method. - (transport_layer_base::accept): Ditto. - (transport_layer_base::close): Ditto. - (transport_layer_base::read): Ditto. - (transport_layer_base::write): Ditto. - (transport_layer_base::connect): Ditto. - -2002-09-22 Conrad Scott - - * cygserver.cc (check_and_dup_handle): Only use security code if - running on NT, i.e. if wincap.has_security(). - (client_request_attach_tty::serve): Add check for has_security(). - * cygserver_process.cc (process_cache::process): Use DWORD winpid - throughout to avoid win32 vs. cygwin pid confusion. - (process::process): Ditto. - * cygserver_shm.cc (client_request_shm::serve): Only use security - code if running on NT, i.e. if wincap.has_security(). - * cygserver_shm.h (client_request_shm::parameters.in): Replace the - ambiguous pid field with cygpid and winpid fields. - (client_request_shm::client_request_shm): Reduce to only two - client-side constructors: one for SHM_CREATE, another for all the - other requests. - * shm.cc (client_request_shm::client_request_shm): - Ditto. Initialize cygpid and winpid fields here. On NT initialize - sd_buf here using set_security_attribute() to make use of the euid - and egid. - (shmat): Use new client_request_shm constructor. - (shmdt): Ditto. - (shmctl): Ditto. - (shmget): Ditto. Remove security code, now performed in the - relevant client_request_shm constructor. - * include/cygwin/cygserver_process.h: (class cleanup_routine): - Change winpid type to DWORD. - (class process): Ditto. - -2002-09-22 Conrad Scott - - * woutsup.h: New file. - * cygserver.cc: Use "woutsup.h" and new XXX_printf macros. - (getfunc): New function, copied verbatim from "strace.cc". - (__cygserver__printf): New function. - * cygserver_client.cc: Use "woutsup.h" and new XXX_printf macros. - * cygserver_process.cc: Ditto. - * cygserver_shm.cc: Ditto. - * cygserver_transport.cc: Ditto. - * cygserver_transport_pipes.cc: Ditto. - * cygserver_transport_sockets.cc: Ditto. - * threaded_queue.cc: Ditto. - * shm.cc: Remove trailing \n from XXX_printf format strings. - * Makefile.in: Remove special __OUTSIDE_CYGWIN__ case for - cygserver_shm.cc. - -2002-09-21 Christopher Faylor - - * init.cc (dll_entry): Temporarily disable thread detach code. - -2002-09-21 Christopher Faylor - - * fhandler.cc (fhandler_base::dup): Don't set handle on failure. - Caller has already taken care of that. - * fhandler_console.cc (fhandler_console::open): Initialize handles to - NULL. - (fhandler_console::close): Ditto. - -2002-09-21 Christopher Faylor - - GNUify non-GNU formatted functions calls throughout. - -2002-09-21 Conrad Scott - - * cygwin_ipc.h: Move to "include/cygwin/ipc.h". - * cygwin_shm.h: Move to "include/cygwin/shm.h". - * include/cygwin/ipc.h: New file. - * include/cygwin/shm.h: New file. - * ipc.c:c Update include. - * cygserver_shm.cc: Update include. - * shm.cc: Ditto. - -2002-09-21 Robert Collins - - * pthread.cc: Use class::call for converted pthread and semaphore - calls. - * thread.cc: Convert various __pthread_call and __sem_call to - pthread::call and sem::call throughout. - * pthread.h (__pthread_cancel): Convert to pthread::cancel. - (__pthread_join): Convert to pthread::join. - (__pthread_detach): Convert to pthread::detach. - (__pthread_create): Convert to pthread::create. - (__pthread_once): Convert to pthread::once. - (__pthread_atfork): Convert to pthread::atfork. - (__pthread_suspend): Convert to pthread::suspend. - (__pthread_continue): Convert to pthread::resume. - (__sem_init): Convert to semaphore::init. - (__sem_destroy): Convert to semaphore::destroy. - (__sem_wait): Convert to semaphore::wait. - (__sem_trywait): Convert to semaphore::trywait. - (__sem_post): Convert to semaphore::post. - -2002-09-21 Robert Collins - - * thread.cc: Finish the removal of the separate pthread_key - destructor list. - Remove all pthread_key_destructor and pthread_key_destructor_list - references throughout. - (pthread::exit): Call the new pthread_key interface to activate - destructors. - (pthread_key::keys): Change into a list. - (pthread_key::saveAKey): New method, used via forEach. - (pthread_key::restoreAKey): Ditto. - (pthread_key::destroyAKey): Ditto. - (pthread_key::fixup_before_fork): Use the List::forEach functionality. - (pthread_key::fixup_after_fork): Ditto. - (pthread_key::runAllDestructors): New method implementation. - (pthread_key::pthread_key): Use List::Insert rather than custom list - code. - (pthread_key::~pthread_key): Use List::Remove for the same reason. - * thread.h: Remove all pthread_key_destructor and - pthread_key_destructor_list references throughout. - (List): Move the interface above pthread_key in the header. - Use atomic operations during insert and delete. - (List::forEach): A generic interface for doing something on each node. - (pthread_key::runAllDestructors): New method, run all destructors. - (pthread_key::fork_buf): Make private. - (pthread_key::run_destructor): Ditto. - (pthread_key::saveAKey): New method for clearer source. - (pthread_key::restoreAKey): Ditto. - (pthread_key::destroyAKey): Ditto. - (MTinterface::destructors): Remove. - -2002-09-21 Robert Collins - - * thread.cc: Partial refactoring of pthread_key destructor - handling. Loosely based on Thomas Pfaff's work. - (pthread_key_destructor_list::Insert): Remove. - (pthread_key_destructor_list::Pop): Remove. - (pthread_key_destructor_list::IterateNull): Call the key's - run_destructor method. - (pthread_key::pthread_key): Initialize new member. - (pthread_key::get): Mark as const for correctness. - (pthread_key::run_destructor): Implement. - * thread.h (pthread_key::get): Mark as const for correctness. - (pthread_key::run_destructor): Declare. - (List): New template class that implements a generic list. - (pthread_key_destructor_list): Inherit from List, and remove - now duplicate functions. - -2002-09-21 Robert Collins - - * thread.cc: Change verifyable_object_isvalid calls with - PTHREAD_CONDATTR_MAGIC, PTHREAD_MUTEXATTR_MAGIC, PTHREAD_COND_MAGIC, - SEM_MAGIC to objecttype::isGoodObject() calls throughout. - (pthread_condattr::isGoodObject): Implement. - (pthread_mutex::isGoodInitializer): Implement. - (pthread_mutex::isGoodInitializerOrObject): Minor bugfix in the - check for verifyable_object_isvalid result. - (pthread_mutexattr::isGoodObject): Implement. - (pthread_cond::isGoodObject): Ditto. - (pthread_cond::isGoodInitializer): Ditto. - (pthread_cond::isGoodInitializerOrObject): Ditto. - (semaphore::isGoodObject): Ditto. - * thread.h (pthread_mutex::isGoodInitializer): Declare. - (pthread_condattr::isGoodObject): Ditto. - (pthread_cond::isGoodObject): Const correctness. - (pthread_cond::isGoodInitializer): Declare. - (pthread_cond::isGoodInitializerOrObject): Ditto. - (semaphore::isGoodObject): Const correctness. - -2002-09-21 Robert Collins - - * thread.cc: Change verifyable_object_isvalid calls with - PTHREAD_MUTEX_MAGIC and PTHREAD_KEY_MAGIC and PTHREAD_ATTR_MAGIC to - ::isGoodObject() calls throughout. - (MTinterface::Init): Remove dead code. - (pthread_attr::isGoodObject): Implement. - (pthread_key::isGoodObject): Implement. - (pthread_mutex::isGoodObject): Implement. - (pthread_mutex::isGoodInitializerOrObject): Implement. - (pthread::isGoodObject): Update signature. - * thread.h (pthread_key::isGoodObject): Declare. - (pthread_attr::isGoodObject): Ditto. - (pthread_mutex::isGoodObject): Ditto. - (pthread_mutex::isGoodInitializerOrObject): Ditto. - (pthread::isGoodObject): Change to a const parameter for const - correctness. - (pthread_mutexattr::isGoodObject): Declare. - (pthread_condattr::isGoodObject): Ditto. - (pthread_cond::isGoodObject): Ditto. - (semaphore::isGoodObject): Ditto. - -2002-09-19 Christopher Faylor - - Cleanup calls to CreateFile throughout. - * dcrt0.cc (__api_fatal): Correctly check for failing return from CreateFile. - * assert.cc (__assert): Don't check return value from CreateFile for NULL. - * fhandler_console.cc (set_console_state_for_spawn): Ditto. - * fork.cc (fork_parent): Ditto. - -2002-09-18 Christopher Faylor - - * cygthread.cc (cygthread::initialized): Avoid copying on fork or some - threads may not end up in the pool. - (cygthread::new): Avoid race when checking for initialized. Add - debugging code. - -2002-09-18 Pierre Humblet - - * fhandler.cc (fhandler_base::raw_read): Add case for - ERROR_INVALID_HANDLE due to Win95 directories. - (fhandler_base::open): Handle errors due to Win95 directories. - (fhandler_base::close): Add get_nohandle () test. - (fhandler_base::set_close_on_exec): Ditto. - (fhandler_base::fork_fixup): Ditto. - (fhandler_base::lock): Change error code to Posix EINVAL. - (fhandler_base::dup): If get_nohandle (), set new value to - INVALID_HANDLE_VALUE instead of NULL. - * fhandler_disk_file.cc (fhandler_disk_file::fstat): Call fstat_by_name - if get_nohandle (). Remove extraneous element from strpbrk. - (fhandler_disk_file::open): Remove test for Win95 directory. - - * fhandler_random.cc (fhandler_dev_random::open): Add set_nohandle (). - * fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto. - * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. - (fhandler_dev_zero::close): Delete. - * fhandler.h (class fhandler_dev_zero): Ditto. - -2002-09-17 Robert Collins - - * thread.cc (pthread_key::set): Preserve GetLastError(). Reported - by Thomas Pffaf. - -2002-09-17 Robert Collins - - This work inspires by Thomas Pfaff's pthread_fork patch (1). - * fork.cc (fork_child): Remove MTinterface fixup call, it's - adsorbed by pthread::atforkchild. - Rename __pthread_atforkchild to pthread::atforkchild to give - access to private members. - (fork_parent): Rename __pthread_atforkparent to - pthread::atforkparent to give it access to private members. - Ditto for __pthread_atforkprepare. - * thread.cc: Fix some formatting problems throughout. - (MTinterface::fixup_before_fork): Implement. - (MTinterface::fixup_after_fork): Fix pthread_keys. - (pthread_key::keys): Implement. - (pthread_key::fixup_before_fork): Ditto. - (pthread_key::fixup_after_fork): Ditto. - (pthread_key::pthread_key): Add to pthread_key::keys. - (pthread_key::~pthread_key): Remove from pthread_key::keys. - (pthread_key::saveKeyToBuffer): Implement. - (pthread_key::recreateKeyFromBuffer): Ditto. - (pthread::atforkprepare): Prepare all MT classes for fork. - (pthread::atforkchild): And fix them up afterwards. - * thread.h (pthread_key): Buffer the key value during - fork in fork_buf. - List the keys needing to be fixed up in a linked list with - head pthread_key::keys. - (pthread): Move atfork cygwin internal calls into the class. - (MTInterface): Provide a fixup_before_fork for objecst that - need to save state. - (__pthread_atforkprepare): Remove. - (__pthread_atforkparent): Remove. - (__pthread_atforkchild): Remove. - -2002-09-16 Christopher Faylor - - * init.cc: Cleanup slightly and remove obsolete code. - -2002-09-11 Robert Collins - - * init.cc (dll_entry): On thread detach, if the thread hasn't - exit()ed, do so. - * pthread.cc (pthread_getsequence_np): Remove the - __pthread_getsequence_np wrapper. This requires errno.h. - * thread.cc (pthread::self): Instantiate a new pthread object - when called and none exists. return a NULL object if instantiation - fails. - (pthread::precreate): Factor out common code. - (pthread::postcreate): Ditto. - (pthread::create): Ditto. - (pthread::exit): Remove the TLS value when we exit to prevent - double exits. - (MTinterface::Init): Bugfix - don't mark the TLS index as created - if one was not allocated. - Apply Extract Method to move pthread specific initialisation into - pthread. - (pthread::initMainThread): Extracted method from MTinterface::Init. - (pthread::setTlsSelfPointer): Extracted method from various pthread - calls, to make reading those functions easier. - (pthread::setThreadIdtoCurrent): Ditto. - (pthread::cancel_self): Bring into the .cc file, it's only used - within the class. - (pthread::getThreadId): Ditto. - (pthread::thread_init_wrapper): Apply Extract Method to the TLS - setting logic. - (pthread::isGoodObject): Extracted method from various pthread - wrapper calls, for clarity of reading. - (pthread::getsequence_np): Converted from __pthread_getsquence_np. - (__pthread_create): Apply Extract Method to the object validation. - (__pthread_cancel): Ditto. - (__pthread_join): Ditto. - (__pthread_detach): Ditto. - (__pthread_suspend): Ditto. - (__pthread_continue): Ditto. - (__pthread_getschedparam): Ditto. - (__pthread_getsequence_np): Remove. - (__pthread_setschedparam): Apply Extract Method to the object - validation. - (pthreadNull::getNullpthread): New method, return the pthreadNull - object. - (pthreadNull::pthreadNull): Private constructor to prevent accidental - use. - (pthreadNull::~pthreadNull): Prevent compile warnings. - (pthreadNull::create): Override pthread behaviour. - (pthreadNull::exit): Ditto. - (pthreadNull::cancel): Ditto. - (pthreadNull::testcancel): Ditto. - (pthreadNull::setcancelstate): Ditto. - (pthreadNull::setcanceltype): Ditto. - (pthreadNull::push_cleanup_handler): Ditto. - (pthreadNull::pop_cleanup_handler): Ditto. - (pthreadNull::getsequence_np): Ditto. - (pthreadNull::_instance): Ditto. - * thread.h (pthread): Declare pre- and post-create. - Move GetThreadId to private scope and rename to getThreadId. - Move setThreadIdtoCurrent to private scope. - Make create virtual. - Make ~pthread virtual. - Declare initMainThread. - Declare isGoodObject. - Make exit virtual. - Make cancel virtual. - Make testcancel virtual. - Make setcancelstate virtual. - Make setcanceltype virtual. - Make push_cleanup_handler virtual. - Make pop_cleanup_handler virtual. - Declare getsequence_np. - Declare setTlsSelfPointer. - (pthreadNull): New null object class for pthread. - (__pthread_getsequence_np): Remove. - -2002-09-13 Corinna Vinschen - - * syscalls.cc (seteuid32): Treat ILLEGAL_UID invalid. - (setegid32): Treat ILLEGAL_GID invalid. - -2002-09-10 Pierre Humblet - - * grp.cc (initgroups): Call groups::clear_supp to free the - supplementary group sids that may have been set by setgroups. - * security.cc (cygsidlist::free_sids): Also zero the class members. - * security.h (groups::clear_supp): New. - Rename cygsidlist_unknown to cygsidlist_empty. - -2002-09-08 Christopher Faylor - - * fhandler_tty.cc (fhandler_tty_slave::open): Don't protect - input/output handles since they are not properly manipulated later. - * tty.cc (tty::make_pipes): Ditto. - -2002-09-06 Christopher Faylor - - * winsup.h (_WIN32_WINNT): Protect. - -2002-09-06 Christopher Faylor - - * winsup.h (_WIN32_WINNT): Define. - -2002-09-03 Corinna Vinschen - - * Makefile.in (DLL_OFILES): Drop shortcut.o. - * path.cc: Move all shortcut functions from shortcut.c to here. - (check_shortcut): Implement without using COM interface. - * path.h: Move definition of SHORTCUT_HDR_SIZE to here. - * shortcut.c: Remove. - * shortcut.h: Ditto. - -2002-09-03 Conrad Scott - - * fhandler.h (fhandler_socket::read): Remove method. - (fhandler_socket::write): Ditto. - (fhandler_socket::readv): New method. - (fhandler_socket::writev): Ditto. - (fhandler_socket::recvmsg): Add new optional argument. - (fhandler_socket::sendmsg): Ditto. - * fhandler.cc (fhandler_socket::read): Remove method. - (fhandler_socket::write): Ditto. - (fhandler_socket::readv): New method. - (fhandler_socket::writev): Ditto. - (fhandler_socket::recvmsg): Use win32's scatter/gather IO where - possible. - (fhandler_socket::sendmsg): Ditto. - * net.cc (cygwin_recvmsg): Check the msghdr's iovec fields. - (cygwin_sendmsg): Ditto. Add omitted sigframe. - -2002-09-02 Kazuhiro Fujieda - - * cygwin.din: Revert exporting new wchar functions. - * include/cygwin/version.h: Change comment for API minor 62. - -2002-09-02 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Remove getpagesize() call. - * shared.cc (memory_init): Move it here. - -2002-08-31 Christopher January - - * fhandler_proc.cc: Add include. - (format_proc_uptime): Use KernelTime and UserTime only as they include - the other counters. - (format_proc_stat): KernelTime includes IdleTime, so subtract IdleTime - from KernelTime. Make number of 'jiffies' per second same as HZ define. - * fhandler_process.cc: Add include. - (format_process_stat): Make number of 'jiffies' per second same as - HZ define. Use KernelTime and UserTime only to calculate start_time. - -2002-08-30 Christopher Faylor - - (inspired by a patch from Egor Duda) - * select.cc (fhandler_tty_slave::ready_for_read): Remove. - * fhandler.h (fhandler_tty_slave::ready_for_read): Remove declaration. - * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Set "don't - need ready for read" flag. - (fhandler_tty_slave::read): Don't do anything special with vtime when - vmin == 0. - -2002-08-30 Egor Duda - - * autoload.cc (GetConsoleWindow): Correct parameter count. - -2002-08-30 Christopher January - Christopher Faylor - - * tty.cc (tty_list::allocate_tty): Use GetConsoleWindow, if available. - Call FindWindow in a loop. - * autoload.cc (GetConsoleWindow): Export - -2002-08-30 Christopher Faylor - - * miscfuncs.cc (check_iovec_for_read): Don't check buffer when zero - length iov_len. - (check_iovec_for_write): Ditto. - -2002-08-27 Conrad Scott - - * fhandler.h (fhandler_base::readv): New method. - (fhandler_base::writev): Ditto. - * fhandler.cc (fhandler_base::readv): New method. - (fhandler_base::writev): Ditto. - * syscalls.cc (_read): Delegate to readv(2). - (_write): Ditto, mutatis mutandi. - (readv): Rewrite, based on the old _read code, to use the new - fhandler_base::readv method. Improve access mode handling and ensure - all calls reach the final strace statement. - (writev): Ditto, mutatis mutandi. - * include/sys/uio.h (struct iovec): Change field types to match SUSv3. - * winsup.h (check_iovec_for_read): New function. - (check_iovec_for_write): Ditto. - * miscfuncs.cc (check_iovec_for_read): Ditto. - (check_iovec_for_write): Ditto. - -2002-08-30 Corinna Vinschen - - * cygwin.din: Add more prototypes for new wchar functions in newlib. - -2002-08-30 Corinna Vinschen - - * cygwin.din: Add prototypes for new wchar functions in newlib. - * include/cygwin/version.h: Bump API minor number. - -2002-08-29 Boris Schaeling - Corinna Vinschen - - * poll.cc (poll): Peek sockets ready for read to see if there's - actually data. - -2002-08-28 Christopher Faylor - - * cygthread.cc (hthreads): Remove unneeded global. - (cygthread::simplestub): New static member function. - (cygthread::runner): Don't set hthreads. - (cygthread::freerange): New member function. - (cygthread::operator new): Call freerange if all cygwin slots are used - up. - (cygthread::exit_thread): Don't mess with event if freerange thread. - (cygthread::detach): Ditto. - * cygthread.h (class cygthread): Declare new member functions and - variables. - -2002-08-28 Christopher Faylor - - * malloc.cc: Protect some definitions to avoid a compile time warning. - -2002-08-27 Nicholas Wourms - - * cygwin.din: Export getc_unlocked, getchar_unlocked, - putc_unlocked, putchar_unlocked functions. - * include/cygwin/version.h: Bump api minor. - -2002-08-28 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::recvfrom): Eliminate flags - not understood by WinSock. - (fhandler_socket::sendto): Ditto. If WinSock sendto() returns - WSAESHUTDOWN, change errno to EPIPE and raise SIGPIPE if MSG_NOSIGNAL - isn't set in flags. - * include/cygwin/socket.h: Define MSG_WINMASK and MSG_NOSIGNAL. - * include/cygwin/version.h: Bump API minor number. - -2002-08-28 Corinna Vinschen - - * poll.cc (poll): Eliminate erroneous POLLERR conditional. - -2002-08-26 Conrad Scott - - * fhandler_socket.cc (fhandler_socket::check_peer_secret_event): - Fix strace message. - (fhandler_socket::connect): Remove sigframe. - (fhandler_socket::accept): Ditto. - (fhandler_socket::getsockname): Ditto. - (fhandler_socket::getpeername): Ditto. - (fhandler_socket::recvfrom): Ditto. - (fhandler_socket::recvmsg): Ditto. - (fhandler_socket::sendto): Ditto. - (fhandler_socket::sendmsg): Ditto. - (fhandler_socket::close): Ditto. - (fhandler_socket::ioctl): Ditto. - * ioctl.cc (ioctl): Add sigframe. - * net.cc (cygwin_sendto): Ditto. - (cygwin_recvfrom): Ditto. - (cygwin_recvfrom): Ditto. - (cygwin_connect): Ditto. - (cygwin_shutdown): Ditto. - (cygwin_getpeername): Ditto. - (cygwin_accept): Ditto. Improve strace message. - (cygwin_getsockname): Ditto. Ditto. - (cygwin_recvmsg): Ditto. Ditto. - (cygwin_sendmsg): Fix strace message. - -2002-08-27 Christopher Faylor - - * child_info.h: Add _PROC_WHOOPS enum value. - (CURR_CHILD_INFO_MAGIC): Update. - (child_info::magic): Make 'long'. - * cygheap.h: Export _cygheap_start. - * cygheap.cc: Don't declare _cygheap_start. - * cygmagic: Use cksum to produce checksums. Append 'U' to end of - checksum. - * dcrt0.cc (initial_env): Calculate sleep ms before reusing buffer. - (_dll_crt0): Detect cygheap mismatch as indicative of different cygwin - version. Set child_proc_info to NULL when _PROC_WHOOPS. - (multiple_cygwin_problem): If child_info specific problem, then set - child_proc_info type to _PROC_WHOOPS. - * shared_info.h (CURR_MOUNT_MAGIC): Update. - (CURR_SHARED_MAGIC): Ditto. - -2002-08-25 Conrad Scott - - * fhandler.h (fhandler_socket::recvfrom): Fix prototype. - (fhandler_socket::sendto): Ditto. - * fhandler_socket.cc (fhandler_socket::recvfrom): Ditto. - (fhandler_socket::sendto): Ditto. - * include/sys/socket.h (recv): Fix prototype. - (recvfrom): Ditto. - (send): Ditto. - (sendto): Ditto. - * net.cc (cygwin_sendto): Ditto. Improve strace message - (cygwin_recvfrom): Ditto. Ditto. - (cygwin_setsockopt): Improve strace message. - (cygwin_getsockopt): Ditto. - (cygwin_connect): Ditto. - (cygwin_accept): Ditto. - (cygwin_bind): Ditto. - (cygwin_getsockname): Ditto. - (cygwin_getpeername): Ditto. - (cygwin_recv): Fix prototype. - (cygwin_send): Ditto. - (cygwin_recvmsg): Improve strace message. - (cygwin_sendmsg): Ditto. - -2002-08-25 Pierre Humblet - - * sec_acl.cc (getacl): Check ace_sid == well_known_world_sid - before owner_sid and group_sid so that well_known_world_sid - means "other" even when owner_sid and/or group_sid are Everyone. - * security.cc (get_attribute_from_acl): Created from code common - to get_nt_attribute() and get_nt_object_attribute(), with same - reordering as in getacl() above. - (get_nt_attribute): Call get_attribute_from_acl(). - (get_nt_object_attribute): Ditto. - -2002-08-26 Christopher Faylor - - * Makefile.in (cygrunk.exe): Make a -mno-cygwin program. - * cygrun.c (main): Export CYGWIN=ntsec unless otherwise set. - - * shared.cc (shared_name): Only add build date to shared name when - *testing*. - -2002-08-24 Christopher Faylor - - * Makefile.in (DLL_IMPORTS): Move libuuid.a and libshell32.a to list - rather than referring to them via -l. Add DLL imports last in link - line for new-cygwin.dll and cygrun.exe. - -2002-08-19 Christopher Faylor - - * pinfo.h (pinfo::remember): Arrange for destructor call if - proc_subproc returns error. - * sigproc.cc (zombies): Store 1 + total zombies since proc_subproc uses - NZOMBIES element. - -2002-08-19 Corinna Vinschen - - * pwdgrp.h (pwdgrp_read::pwdgrp_read): Remove. - (pwdgrp_read::~pwdgrp_read): Ditto. - (pwdgrp_read::open): Reset fh to NULL instead of INVALID_HANDLE_VALUE. - (pwdgrp_read::close): Ditto. - -2002-08-19 Christopher Faylor - - * fhandler.h (fhandler_console::send_winch_maybe): New method. - * fhandler_console.cc (set_console_state_for_spawn): Remove if 0'ed - code. - (fhandler_console::send_winch_maybe): Define new method. - (fhandler_console::read): Use send_winch_maybe where appropriate. - (fhandler_console::init): Just call all tcsetattr rather than - output_tcsetattr. - * select.cc (peek_console): Reorganize so that send_winch_maybe is - called for everything but keyboard input. - -2002-08-18 Christopher Faylor - - * perthread.h (vfork_save): Add ctty, sid, pgid, exitval fields. - (vfork_save::restore_pid): New method. - (vfork_save::restore_exit): New method. - * fork.cc (vfork): Save ctty, sid, pgid and restore them when returning - to "parent". Use exitval field if exiting but never created a new - process. - * syscalls.cc (setsid): Detect when in "vfork" and force an actual fork - so that pid will be allocated (UGLY!). - (getsid): New function. - * dcrt0.cc (do_exit): Use vfork_save::restore_exit method for returning - from a vfork. - * spawn.cc (spawnve): Use vfork_save::{restore_pid,restore_exit} - methods for returning from vfork. - * cygwin.din: Export getsid. - * include/cygwin/version.h: Bump api minor number. - - * malloc.cc: #ifdef sYSTRIm for when MORECORE_CANNOT_TRIM is true. - -2002-08-18 Christopher Faylor - - * cygmalloc.h (MORECORE_CANNOT_TRIM): Define. - -2002-08-18 Christopher Faylor - - * sigproc.cc (sigCONT): Define. - * sigproc.h (sigCONT): Declare. - (wait_sig): Create sigCONT event here. - * exceptions.cc (sig_handle_tty_stop): Wait for sigCONT event rather - than stopping thread. - (sig_handle): Set sigCONT event as appropriate on SIGCONT rather than - calling ResumeThread. - -2002-08-17 Christopher Faylor - - * malloc.cc: Update to 2.7.2. - * malloc_wrapper.cc (malloc_init): Call user level mallocs to determine - if the malloc routines have been overridden. - -2002-08-16 Christopher Faylor - - * winsup.h: Remove malloc_*lock functions. - -2002-08-16 Christopher Faylor - - * Makefile.in: Add support for new malloc.o and renamed - malloc_wrapper.o. Use -fomit-frame-pointer for malloc.o compilation. - * malloc_wrapper.cc: New file. Rename from malloc.cc. Add support for - more malloc functions. Eliminate export_* calls. Just use straight - malloc names. Remove unused argument from malloc lock functions. - * cygwin.din: Just export straight malloc names. Add malloc_stats, - malloc_trim, malloc_usable_size, mallopt, memalign, valloc. - * dcrt0.cc (__cygwin_user): Eliminate export_* malloc entries. - * fork.cc (fork_parent): Remove unused argument from malloc_lock - argument. - * malloc.cc: New file. Doug Lea's malloc v2.7.1. - * cygmalloc.h: New file. - * include/cygwin/version.h: Bump API_MINOR. - - * sync.h (muto::acquire): Use appropriate number for regparm attribute. - (muto::reset): Ditto. - (muto::release): Ditto. - -2002-08-16 Pavel Tsekov - - * exceptions.cc (interrupt_setup): Ensure that the previous signal mask - is properly saved. - -2002-08-15 Thomas Pfaff - - * dcrt0.cc: Modify define for CYGWIN_GUARD. - (alloc_stack_hard_way): Just use CYGWIN_GUARD in VirtualAlloc call. - -2002-08-11 Conrad Scott - - * fhandler.h (fhandler_socket::recv): Remove method. - (fhandler_socket::send): Ditto. - * fhandler_socket.cc (fhandler_socket::recv): Ditto. - (fhandler_socket::send): Ditto. - (fhandler_socket::read): Delegate to fhandler_socket::recvfrom. - (fhandler_socket::write): Delegate to fhandler_socket::sendto. - (fhandler_socket::sendto): Check for null `to' address. - * net.cc (cygwin_sendto): Check for zero request length. - (cygwin_recvfrom): Ditto. Fix signature, use void *buf. - (cygwin_recv): Delegate to cygwin_recvfrom. - (cygwin_send): Delegate to cygwin_sendto. - -2002-08-11 Christopher Faylor - - * cygthread.cc (cygthread::cygthread): Close another race. - -2002-08-11 Christopher Faylor - - * assert.cc (__assert): Call debugger on assertion failure if - debugging. - * dcrt0.cc (dll_crt0_1): Just wait for signal thread to go live rather - than going through the overhead of invoking it. - * fork.cc (fork_child): Ditto. - * exceptions.cc (signal_fixup_after_fork): Call sigproc_init here. - * sigproc.cc (proc_can_be_signalled): Assume that the signal thread is - live. - (sig_dispatch): Ditto. - (sig_send): Ditto. - (wait_for_sigthread): Rename from "wait_for_me". Assume that - wait_sig_inited has been set and that this function is only called from - the main thread. - * sigproc.h (wait_for_sigthread): Declare new function. - -2002-08-08 Christopher Faylor - - * environ.cc (parse_options): Remember the "no" part of any options for - later export. - -2002-08-07 Conrad Scott - - * winsup.h (__check_null_invalid_struct): Make ptr argument non-const. - (__check_null_invalid_struct_errno): Ditto. - * miscfuncs.cc (__check_null_invalid_struct): Ditto. - (__check_null_invalid_struct_errno): Ditto. - (__check_invalid_read_ptr_errno): Remove superfluous cast. - * net.cc (get): Set appropriate errno if fd is not a socket. - (cygwin_sendto): Fix parameter checking. - (cygwin_recvfrom): Ditto. - (cygwin_setsockopt): Ditto. - (cygwin_getsockopt): Ditto. - (cygwin_connect): Ditto. - (cygwin_gethostbyaddr): Ditto. - (cygwin_accept): Ditto. - (cygwin_bind): Ditto. - (cygwin_getsockname): Ditto. - (cygwin_listen): Ditto. - (cygwin_getpeername): Ditto. - (cygwin_send): Ditto. - (cygwin_shutdown): Ditto. Move sigframe to fhandler_socket. - (cygwin_recvmsg): Fix parameter checking. Add tracing. - (cygwin_sendmsg): Ditto. - * fhandler_socket.cc (fhandler_socket::shutdown): Add sigframe. - * resource.cc (setrlimit): Fix parameter checking. - -2002-08-08 Joe Buehler - - * fhandler_socket.cc (fhandler_socket::accept): Fix FIONBIO call. - -2002-08-06 Christopher Faylor - - * cygheap.cc (_csbrk): Avoid !cygheap considerations. - (cygheap_init): Deal with unintialized cygheap issues here. - (cheap_init): Move cygheap_max setting here. - -2002-08-06 Christopher Faylor - Conrad Scott - - * spawn.cc (spawn_guts): Don't set mount_h here. - * sigproc.cc (init_child_info): Set it here instead. - * shared.cc (cygwin_mount_h): Make NO_COPY. - -2002-08-06 Christopher Faylor - - * cygthread.cc (cygthread::stub): Accept flag to pass info structure to - thread function. - (cygthread::operator new): Add defensive debugging output. - (cygthread::cygthread): Add debugging output. Set name after thread - has been awakened to avoid a race. - (cygthread::exit_thread): Use handle operator rather than using ev - directly. - (cygthread::exit_thread): Reorganize to provide debugging. Set __name - to NULL. - * cygthread.h (cygself): Define. - * fhandler_tty.cc (fhandler_tty_master::init): Use cygself as argument - so that invoked thread can access its own info. - (process_output): Derive cygthread info of thread from thread argument. - * sigproc.cc (sigproc_init): Use cygself as argument so that invoked - thread can access its own info. - (wait_sig): Derive cygthread info of thread from thread argument. - -2002-08-06 Conrad Scott - - * debug.h (handle_list::allocated): Remove field. - * debug.cc (newh): Don't malloc extra entries. - (add_handle): Downgrade strace message level. - (delete_handle): Remove case for `allocated' entries. - -2002-08-05 Christopher Faylor - - * cygthread.cc (cygthread::stub): Change event creation to manual - reset. Set __name after calling SetEvent to prevent races. - (cygthread::detach): Always reset event here to prevent races. - -2002-08-03 Conrad Scott - - * debug.h (WaitForMultipleObjects): Correct typo. - -2002-08-01 Pierre Humblet - - * security.cc (verify_token): Do not reject a token just because - the supplementary group list is missing Everyone or a groupsid - equal to usersid, or because the primary group is not in the token, - as long as it is equal to the usersid. - * syscalls.cc (seteuid32): Use common code for all successful returns. - * grp.cc (getgroups32): Never includes Everyone in the output. - -2002-08-01 Christopher Faylor - - * cygthread.cc (cygthread::exit_thread): Define new method. - * cygthread.h (cygthread::exit_thread): Declare new method. - * fhandler.h (fhandler_tty_master::hThread): Delete. - (fhandler_tty_master::output_thread): Define. - * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Adjust - constructor. - (fhandler_tty_master::init): Use cygthread rather than handle. - (process_output): Use cygthread method to exit. - (fhandler_tty_master::fixup_after_fork): Set output_thread to NULL - after fork. - (fhandler_tty_master::fixup_after_exec): Set output_thread to NULL - after spawn/exec. - * tty.cc (tty_list::terminate): Detach from output_thread using - cygthread method. - -2002-08-01 Christopher Faylor - - * syscalls.cc (_link): Revert previous change and just always - dereference the oldpath. - -2002-08-01 Christopher Faylor - - * syscalls.cc (link): Properly deal with a link to a symlink. - -2002-08-01 Christopher Faylor - - * cygthread.cc: Remove cruft. - -2002-08-01 Christopher Faylor - - * Makefile.in (DLL_OFILES): Add cygthread.o. - * dcrt0.cc (dll_crt0_1): Eliminate various thread initialization - functions in favor of new cygthread class. - * debug.cc: Remove thread manipulation functions. - * debug.h: Ditto. - * external.cc (cygwin_internal): Use cygthread method for determining - thread name. Remove capability for setting thread name. - * fhandler_console.cc (fhandler_console::read): Use cygthread method - rather than iscygthread function. - * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Use - cygthread methods to create threads. - (fhandler_tty_common::__acquire_output_mutex): Use cygthread method to - retrieve thread name. - * select.cc (pipeinf): Use cygthread pointer rather than handle. - (start_thread_pipe): Ditto. - (pipe_cleanup): Ditto. - (serialinf): Ditto. - (start_thread_serial): Ditto. - (serial_cleanup): Ditto. - (socketinf): Ditto. - (start_thread_socket): Ditto. - (socket_cleanup): Ditto. - * sigproc.cc (hwait_sig): Ditto. - (hwait_subproc): Ditto. - (proc_terminate): Ditto. - (sigproc_terminate): Ditto. - (sigproc_init): Initialize cygthread hwait_sig pointer. - (subproc_init): Initialize cygthread hwait_subproc pointer. - (wait_sig): Rely on cygthread HANDLE operator. - * strace.cc (strace::vsprntf): Use cygthread::name rather than threadname. - * window.cc (gethwnd): Use cygthread method to initialize thread. - -2002-07-31 Conrad Scott - - * fhandler.h (fhandler_base::get_r_no_interrupt): Make non-virtual. - * net.cc (fdsock): Call set_r_no_interrupt. - -2002-07-30 Christopher Faylor - - * syscalls.cc (_read): Clarify debugging output. - -2002-07-30 Christopher Faylor - - * fhandler.h (fhandler_base::get_r_no_interrupt): Make virtual. - -2002-07-30 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Incorporate . - and .. processing here. - (fhandler_cygdrive::readdir): Assume . and .. are already in pdrive. - (fhandler_cygdrive::seekdir): Ditto. - -2002-07-29 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Move debug_fixup_after_fork_exec. - * cygheap.cc (cygheap_fixup_in_child): Call debug_fixup_after_fork_exec - immediately after cygheap has been set up. - -2002-07-29 Corinna Vinschen - - * security.cc: Change some formatting. - * include/cygwin/version.h: Bump API minor version. - -2002-07-28 Pierre Humblet - - * cygheap.h (class cygheap_user): Add member groups. - * security.h (class cygsidlist): Add members type and maxcount, methods - position, addfromgr, alloc_sids and free_sids and operator+= (const - PSID psid). Modify contains () to call position () and optimize add () - to use maxcount. - (class user_groups): Create. Update declarations of verify_token and - create_token. - * security.cc (cygsidlist::alloc_sids): New. - (cygsidlist::free_sids): New. - (get_token_group_sidlist): Create from get_group_sidlist. - (get_initgroups_sidlist): Create from get_group_sidlist. - (get_group_sidlist): Suppress. - (get_setgroups_sidlist): Create. - (verify_token): Modify arguments. Add setgroups case. - (create_token): Modify arguments. Call get_initgroups_sidlist and - get_setgroups_sidlist as needed. Set SE_GROUP_LOGON_ID from auth_pos - outside of the loop. Rename the various group sid lists consistently. - * syscalls.cc (seteuid32): Modify to use cygheap->user.groups. - (setegid32): Call cygheap->user.groups.update_pgrp. - * grp.cc (setgroups): Create. - (setgroups32): Create. - * uinfo.cc (internal_getlogin): Initialize and update - user.groups.pgsid. - * cygwin.din: Add setgroups and setgroups32. - -2002-07-28 Christopher Faylor - - * fhandler_console.cc (fhandler_console::read): Use appropriate - kill_pgrp method. - * select.cc (peek_console): Ditto. - * fhandler_termios.cc (fhandler_termios::bg_check): Send "stopped" - signal to entire process group as dictated by SUSv3. - * termios.cc (tcsetattr): Detect when stopped signal sent and force a - stop before setting anything. - -2002-07-26 Christopher Faylor - - * include/cygwin/version.h: Bump API version to indicate that ntsec is - on by default now. - -2002-07-26 Conrad Scott - - * fhandler_registry.cc (fhandler_registry::close): Return any error - result to the caller. - * syscalls.cc (_close): Return result of fhandler::close to the caller. - -2002-07-25 Christopher Faylor - - * security.cc (allow_ntsec): Default to on. - (allow_smbntsec): Default to off. - -2002-07-24 David MacMahon - - * times.cc (to_time_t): Always round time_t down to nearest second. - -2002-07-25 Egor Duda - - * Makefile.in: Check if API version is updated when exports are - changed and stop if not so. - -2002-07-24 Egor Duda - - * include/cygwin/version.h: Bump minor API version. - -2002-07-24 Corinna Vinschen - - * fhandler_serial.cc: Change 'must_init_serial_line capability' - to 'supports_reading_modem_output_lines' throughout (negated meaning). - * wincap.cc: Ditto. - * wincap.h: Ditto. - -2002-07-23 Nicholas Wourms - - * cygwin.din (fcloseall): Add symbol for export. - (fcloseall_r): Ditto. - -2002-07-24 Christopher Faylor - - * path.cc (path_conv::check): Always set fileattr when component == 0. - (readlink): Use path_conv method rather than field. - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Ditto, - throughout. - * path.h (path_conv): Make fileattr private. - * exceptions.cc (try_to_debug): Default to idle priority when looping. - -2002-07-23 Corinna Vinschen - - * fhandler_serial.cc: Use must_init_serial_line capability throughout. - * wincap.cc: Set flag must_init_serial_line appropriately. - * wincap.h: Add flag must_init_serial_line. - -2002-07-23 Corinna Vinschen - - * security.cc (get_group_sidlist): Create group list from /etc files - even if DC is available but access fails. - -2002-07-22 Christopher Faylor - - * fhandler_serial.cc: Fix formatting problems introduced by below - changes. - -2002-07-22 Jacek Trzcinski - - * fhandler.h (class fhandler_serial): Add new members of the class - - rts,dtr and method ioctl(). Variables rts and dtr important for Win 9x - only. - * fhandler_serial.cc (fhandler_serial::open): Add initial setting of - dtr and rts. Important for Win 9x only. - (fhandler_serial::ioctl): New function. Implements commands TIOCMGET, - TIOCMSET and TIOCINQ. - (fhandler_serial::tcflush): Fix found error. - (fhandler_serial::tcsetattr): Add settings of rts and dtr. Important - for Win 9x only. - * termios.h: Add new defines as a support for ioctl() function on - serial device. - -2002-07-20 Christopher Faylor - - * autoload.cc (LoadDLLprime): Add jmp call to allow streamlining of - later jmp rewrite. - (doit): Avoid use of cx register. Just change one word to avoid races. - -2002-07-18 Pierre Humblet - - * security.cc (get_unix_group_sidlist): Create. - (get_supplementary_group_sidlist): Evolve into get_unix_group_sidlist. - (get_user_local_groups): Add check for duplicates. - (get_user_primary_group): Suppress. - (get_group_sidlist): Silently ignore PDC unavailability. - Call get_unix_group_sidlist() before get_user_local_groups(). - Remove call to get_supplementary_group_sidlist(). Never call - get_user_primary_group() as the passwd group is always included. - Add well_known_authenticated_users_sid in only one statement. - -2002-07-19 Christopher Faylor - - * fhandler_serial.cc (fhandler_serial::tcflush): Fix typo. - -2002-07-15 Corinna Vinschen - - * security.cc (get_group_sidlist): Fix formatting. - -2002-07-14 Christopher Faylor - - * dcrt0.cc (initial_env): Force path and CYGWIN_DEBUG contents to lower - case. - * exceptions.cc (error_start_init): Use the name derived from - GetModuleName rather than myself->progname. - -2002-07-14 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Move debug_init call back to here. Avoid a - compiler warning. - * shared.cc (memory_init): Remove debug_init call. - * debug.h (handle_list): Change "clexec" to "inherited". - * debug.cc: Remove a spurious declaration. - (setclexec): Conditionalize away since it is currently unused. - (add_handle): Use inherited field rather than clexec. - (debug_fixup_after_fork_exec): Ditto. Move debugging output to - delete_handle. - (delete_handle): Add debugging output. - * fhandler.cc (fhandler_base::set_inheritance): Don't bother setting - inheritance in debugging table since the handle was never protected - anyway. - (fhandler_base::fork_fixup): Ditto. - - * exceptions.cc (debugger_command): Revert. - -2002-07-14 Conrad Scott - - * debug.cc (clexec): Add missing `hl = hl->next'. - -2002-07-14 Christopher Faylor - - * Makefile.in (cygrun.exe): Add a -lcygwin on the end. - -2002-07-14 Christopher Faylor - - * Makefile.in (cygserver.exe): Add -lstdc++. - (cygrun.exe): Move -lgcc last. - -2002-07-13 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Delay closing of some handles until cygheap - has been set up. - (break_here): New function, for debugging. - (initial_env): Add program name to "Sleeping" message. Implement new - "CYGWIN_DEBUG" environment variable option. - * exceptions.cc (debugger_command): Add argument to dumper call. - * strace.cc (strace::hello): Use winpid if cygwin pid is unavailable. - (strace::vsprntf): Ditto. - -2002-07-13 Christopher Faylor - - * debug.h (handle_list): Move here from debug.cc. Add "inherit" flag - functionality. - * cygheap.cc (init_cheap): Move cygheap_max calculation to _csbrk. - (_csbrk): Reorganize to not assume first allocation is <= 1 page. - (cygheap_setup_for_child): Mark protected handle as inheritable. - * cygheap.h (cygheap_debug): New struct. - (init_cygheap): Add new structure when debugging. - * dcrt0.cc (dll_crt0_1): Remove call to debug_init. Close ppid_handle - here, if appropriate. Don't protect subproc_ready, since it is already - protected in the parent. Call memory_init prior to ProtectHandle to - ensure that cygheap is set up. Call debug_fixup_after_fork_exec when - appropriate. - (_dll_crt0): Don't close ppid_handle here. - * debug.cc: Use cygheap debug structure rather than static elements - throughout. - (add_handle): Don't issue a warning if attempt to protect handle in - exactly the same way from exactly the same place. Add pid info to - warning output. Accept additional argument controlling whether handle - is to be inherited. Add pid to stored information. - (debug_fixup_after_fork_exec): Renamed from debug_fixup_after_fork. - Reorganize to avoid erroneously skipping handles. - (mark_closed): Add pid info to warning output. - (setclexec): Rename from setclexec_pid. - * fhandler.cc (fhandler_base::get_default_fmode): Minor reorg. - (fhandler_base::fstat): Add debugging output. - (fhandler_base::set_inheritance): Call setclexec rather than - setclexec_pid. - (fhandler_base::fork_fixup): Ditto. - * fhandler_console.cc (get_tty_stuff): Mark protected handle as - inheritable. - * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. - * tty.cc (tty::make_pipes): Ditto. - (tty::common_init): Ditto. - * fork.cc (fork_parent): Ditto. - (fork_child): Close protected handles with correct name. Remove - debug_fixup_after_fork call. - * fhandler_socket.cc (fhandler_socket::create_secret_event): Mark - protected handle as inheritable/non-inheritable, as appropriate. - * shared.cc (memory_init): Mark protected handle as inheritable. - Call debug_init here. - * sigproc.cc (wait_sig): Close protected handle with correct name. - * spawn.cc (spawn_guts): Rename spr to subproc_ready and mark it as - inheritable. - - * exceptions.cc (debugger_command): Try to run dumper.exe, if found. - - * syscalls.cc (fstat64): Don't follow symlinks for path_conv lookup - since path is already resolved. - -2002-07-12 Christopher Faylor - - * cygwin.din: Change erroneous entries. - -2002-07-11 Pavel Tsekov - - * fhandler_disk_file.cc (fhandler_disk_file::open): Don't - move the file pointer to the end of file if O_APPEND is - specified in the open flags. - -2002-07-09 Christopher Faylor - - * debug.cc: Avoid explicit zeroing of globals. - (lock_debug): Make locker a static member. Avoid unlocking when - already unlocked (from Conrad Scott). - (debug_init): Initialize lock_debug::locker here. - * fork.cc (fork_child): Fix up fdtab earlier to avoid some (but not - all) confusion with close-on-exec craziness. - -2002-07-05 Corinna Vinschen - - * fhandler.h (fhandler_socket::is_unconnected): Constify. - (fhandler_socket::is_connect_pending): Ditto. - (fhandler_socket::is_connected): Ditto. - (fhandler_socket::set_connect_state): New method. - (struct select_record): Add member `except_on_write'. - (select_record::select_record): Initialize all bool values to `false'. - * fhandler_socket.cc: Use set_connect_state() method throughout. - (fhandler_socket::connect): Set state always to connected if connection - isn't pending. - * net.cc (cygwin_getsockopt): Revert erroneous previous patch. - * select.cc (set_bits): Check for `except_on_write'. Set fd in - write_fds if set. Set connect state to connected if fd has been - returned by WINSOCK_SELECT. - (peek_socket): Check for `except_on_write'. - (start_thread_socket): Ditto. - (fhandler_socket::select_write): Don't set `write_ready' if connect - is pending. Set `except_on_write' if connect is pending. - -2002-07-05 Christopher Faylor - - * ntdll.h (_SYSTEM_PROCESSOR_TIMES): Force eight byte alignment. - (_SYSTEM_TIME_OF_DAY_INFORMATION): Ditto. - - * path.cc (suffix_scan::has): Reorganize to eliminate double scanning - for for .exe (in the typical case). - -2002-07-05 Corinna Vinschen - - * fhandler.h (UNCONNECTED): New define. - (CONNECT_PENDING): Ditto. - (CONNECTED): Ditto. - (class fhandler_socket): Add member `had_connect_or_listen'. - Add member functions `is_unconnected', `is_connect_pending' and - `is_connected'. - * fhandler_socket.cc (fhandler_socket::connect): Set member - `had_connect_or_listen' according to return code of WinSock - call. - (fhandler_socket::listen): Ditto. - * net.cc (cygwin_getsockopt): Modify SO_ERROR return value in - case of socket with pending connect(). - * select.cc (peek_socket): Only add socket to matching fd_set - if it's not "ready". Call WINSOCK_SELECT only if at least one - socket is in one of the fd_sets. - (start_thread_socket): Only add socket to matching fd_set - if it's not "ready". - (fhandler_socket::select_write): Set write_ready to true also - if socket isn't connected or listening. - -2002-07-04 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::set_sun_path): Don't free - memory here. Allow NULL parameter. - -2002-07-04 Corinna Vinschen - - * fhandler_socket.cc (fhandler_socket::dup): Add missing copy operation - on sun_path. - -2002-07-03 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-07-03 Christopher Faylor - - * include/sys/statfs.h: New header file. - -2002-07-03 Christopher Faylor - - * dtable.cc (cygwin_attach_handle_to_fd): Default to implicit bin mode - if none specified. - * fhandler.cc (fhandler_base::init): Make bin argument a guarantee - rather than a suggestion. - * path.cc (path_conv::check): Load flag returned from - cygwin_conv_to_win32_path into path_flags. - -2002-07-03 Conrad Scott - - * tty.cc (tty::common_init): Reverse logic of cygserver check in - call to SetKernelObjectSecurity. - -2002-07-03 Thomas Pfaff - - * autoload.cc (WSAEventSelect): Define new autoload function. - (WSAEnumNetworkEvents): Ditto. - * fhandler_socket.cc (fhandler_socket::accept): If socket is - in blocking mode wait for incoming connection and signal. - -2002-07-02 Christopher Faylor - - * cygheap.cc (init_cheap): Rearrange error message. - (cygheap_fixup_in_child): Ditto. - * dtable.cc: Remove if 0'ed code. - * fhandler_dsp.cc (fhandler_dev_dsp::open): Force binmode. - * sec_helper.cc (cygsid::get_id): Use system_printf for error message. - * tty.cc (tty::common_init): Ditto. - -2002-07-02 Christopher Faylor - - * net.cc (cygwin_getpeername): Defend against NULL pointer dereference. - -2002-07-02 Egor Duda - - * include/cygwin/version.h: Bump API minor version. - -2002-07-01 Pierre Humblet - - * security.cc (get_logon_server): Interpret a zero length - domain as the local domain. - (get_group_sidlist): Add authenticated users SID to SYSTEM's group - list instead of SYSTEM itself. - (verify_token): Accept the primary group sid if it equals - the token user sid. - -2002-07-02 Corinna Vinschen - - * cygwin.din (__fpclassifyd): Add symbol. - (__fpclassifyf): Ditto. - (__signbitd): Ditto. - (__signbitf): Ditto. - -2002-07-02 Corinna Vinschen - - * security.h (DONT_INHERIT): Eliminate definition. - (INHERIT_ALL): Ditto. - (INHERIT_ONLY): Ditto. - * sec_acl.cc: Use appropriate defines from accctrl.h instead of the - above throughout. - * security.cc: Ditto. - -2002-07-01 Pierre Humblet - - * syscalls.c (seteuid32): Return immediately if the program is not - impersonated and both uid and gid are original. - (setegid32): Return immediately if the new gid is the current egid. - -2002-07-01 Christopher Faylor - - * syscalls.cc (seteuid32): Fix incorrect placement of Pierre's patch - below. - -2002-07-01 Christopher Faylor - - * syscalls.cc (seteuid32): Fix incorrect use of system_printf. - -2002-07-02 Christopher January - - * autoload.cc (GetSecurityInfo): Define new autoload function. - (RegQueryInfoKeyA): Ditto. - * fhandler.h (fhandler_virtual::fill_filebuf): Change return type to - bool. - (fhandler_proc::fill_filebuf): Ditto. - (fhandler_registry::fill_filebuf): Ditto. - (fhandler_process::fill_filebuf): Ditto. - (fhandler_registry::value_name): Add new member. - (fhandler_registry::close): Add new method. - (fhandler_process::p): Remove member. - * fhandler_proc.cc (fhandler_proc::open): Add set_nohandle after - calling superclass method. Check return value of fill_filebuf. - (fhandler_proc::fill_filebuf): Change return type to bool. Add return - statement. - * fhandler_process.cc (fhandler_process::open): Add set_nohandle after - calling superclass method. Remove references to p. Check return value - of fill_filebuf. - (fhandler_process::fill_filebuf): Change return type to bool. Don't - use dereference operator on p. Add return statement. - (fhandler_process::format_process_stat): Fix typo. - * fhandler_registry.cc: Add static open_key declaration. - (fhandler_registry::exists): Assume path is already normalised. Try - opening the path as a key in its own right first, before reverting to - enumerating subkeys and values of the parent key. - (fhandler_registry::fstat): Add additional code to return more relevant - information about the registry key/value. - (fhandler_registry::readdir): Explicitly set desired access when - opening registry key. Remove output of buf from debug_printf format - string. - (fhandler_registry::open): Use set_io_handle to store registry key - handle. Set value_name member. Move code to read a value from the - registry to fill_filebuf. Add call to fill_filebuf. - (fhandler_registry::close): New method. - (fhandler_registry::fill_filebuf): Change return type to bool. Add - code to read a value from registry. - (fhandler_registry::open_key): Make function static. Use KEY_READ as - desired access unless this is the last path component. Check the - return value of RegOpenKeyEx for an error instead of hKey. - * fhandler_virtual.cc (fhandler_virtual::lseek): Check the return value - of fill_filebuf. - (fhandler_virtual::open): Remove call to set_nohandle. - (fhandler_virtual::fill_filebuf): Change return type to bool. Add - return statement. - * security.cc (get_nt_object_attribute): New function. - (get_object_attribute): New function. - * security.h (get_object_attribute): New function declaration. - -2002-07-01 Pierre Humblet - - * syscalls.c (seteuid32): Do not return an error when the token cannot - be created only because of a problem with the gid. - -2002-07-01 Christopher Faylor - - * fhandler_clipboard.c (fhandler_dev_clipboard::open): Force text mode. - * fhandler_console.cc (fhandler_console::open): *Really* force binary - mode rather than make it optional. - * fhandler_proc.cc (fhandler_proc::open): Ditto. - * fhandler_process.cc (fhandler_process::open): Ditto. - * fhandler_random.cc (fhandler_dev_random::fhandler_dev_random): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::open): Ditto. - * fhandler_registry.cc (fhandler_registry::open): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. - * fhandler_virtual.cc (fhandler_virtual::open): Ditto. - * fhandler_windows.cc (fhandler_windows::open): Ditto. - * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. - * net.cc (fdsock): Ditto. - * path.cc (set_flags): Add more debugging. - -2002-07-01 Christopher Faylor - - * debug.cc (threads): Avoid initialization. - * uinfo.cc (cygheap_user::ontherange): (from Corinna Vinschen) Actually - make below changes work. - -2002-07-01 Christopher Faylor - - * uinfo.cc (cygheap_user::ontherange): Make cygwin root the last resort - for HOMEPATH/HOMEDRIVE for consistency with HOME. - -2002-07-01 Corinna Vinschen - - * shared.cc (sec_none): Move to sec_helper.cc. - (sec_none_nih): Ditto. - (sec_all): Ditto. - (sec_all_nih): Ditto. - (get_null_sd): Ditto. - (sec_acl): Ditto. - (__sec_user): Ditto. - * sec_helper.cc (sec_none): Move from shared.cc to here. - (sec_none_nih): Ditto. - (sec_all): Ditto. - (sec_all_nih): Ditto. - (get_null_sd): Ditto. - (sec_acl): Ditto. - (__sec_user): Ditto. - -2002-06-30 Christopher Faylor - - * uinfo.cc (cygheap_user::ontherange): Potentially set HOME from - existing homepath and homedrive cygheap_user fields (not currently used - yet). Set HOME to / if no other alternative. - (cygheap_user::test_uid): Simplify. - -2002-06-30 Christopher Faylor - - * environ.cc (parse_options): Use setenv to potentially replace CYGWIN - value on export. Fixes broken behavior since November 2000 changes. - (regopt): Return indication of whether or not something has been parsed - from the registry. - (environ_init): Only attempt to export CYGWIN variable when values were - set from the registry. It is exported automatically otherwise. - -2002-06-30 Christopher Faylor - - * fhandler.h (fhandler_process::pid): New field. - (fhandler_process::fstat): Remove unneeded array. Set pid element. - (fhandler_process::open): Ditto. - (fhandler_process::fill_filebuf): Handle case where 'p' field is NULL. - -2002-06-30 Christopher Faylor - - * fhandler.h (fhandler_process::p): New field. - (fhandler_process:fill_filebuf): Revert to same definition as virtual - in parent class. - (fhandler_process::open): Fill out p field rather than passing as an - argument. - (fhandler_process::fill_filebuf): Use p pointer rather than argument. - -2002-06-29 Pierre Humblet - - * security.cc (extract_nt_dom_user): Check for all buffer overflows. - Call LookupAccountSid after trying to get domain & user from passwd. - (get_group_sidlist): Obtain the domain and user by calling - extract_nt_dom_user instead of LookupAccountSid. - -2002-06-29 Christopher Faylor - - * uinfo.cc (cygheap_user::test_uid): Use standard issetuid test. - -2002-06-29 Christopher Faylor - - * autoload.cc (NetGetDCName): Change to make this an optional load - function. - * cygheap.h (cygheap_user::logsrv): Return NULL when operation fails. - (cygheap_user::winname): Ditto. - (cygheap_user::domain): Ditto. - * uinfo.cc (cygheap_user::env_logsrv): Save results in temp variable. - (cygheap_user::env_userprofile): Ditto. - -2002-06-29 Christopher Faylor - - * environ.cc (spenv::retrieve): Detect return of env_dontadd from - cygheap_user methods. - (build_env): Avoid incrementing environment pointer if not actually - adding to the environment. That could result in garbage in the - environment table. Be more defensive when reallocing envblock. - -2002-06-29 Christopher Faylor - - * uinfo.cc (cygheap_user::test_uid): Return NULL or further tests are - sorta useless. - (cygheap_user::env_domain): Recalculate if name is missing. - -2002-06-29 Christopher Faylor - - * environ.cc (spenv::from_cygheap): Still need to take setuid into - consideration. - -2002-06-28 Christopher Faylor - - * uinfo.cc (cygheap_user::env_logsrv): Return "almost_null" in case - where no domain or username is "SYSTEM". - -2002-06-28 Christopher Faylor - - * cygheap.h (cygheap_user): Reorg to accommodate environment caching. - (cygheap_user::logsrv): New method. - (cygheap_user::winname): Ditto. - (cygheap_user::domain): Ditto. - (cygheap_user::test_uid): Ditto. - * cygheap.cc (cygheap_user::set_name): Reflect name "pwinname" name - change. - * environ.cc (getwinenveq): New function. - (penv::from_cygheap): penv::from_cygheap): Change arguments. - (spenv::retrieve): Ditto for call. Use getwinenveq to retrieve info - from environment. Always return value from cygwin environment, if it - exists. - * environ.h (getwinenveq): Declare. - * uinfo.cc (cygheap_user::ontherange): Use logsrv() rather than - env_logsrv(). - (cygheap_user::test_uid): Define new method. - (cygheap_user::env_logsrv): Accept environment arguments. Use test_uid - to find info. - (cygheap_user::env_domain): Ditto. - (cygheap_user::env_userprofile): Ditto. - (cygheap_user::env_homepath): Ditto. - (cygheap_user::env_homedrive): Ditto. - (cygheap_user::env_name): Ditto. - -2002-06-27 Christopher Faylor - - * cygheap.cc (cfree_and_set): New function. - (cygheap_user::set_name): Use cfree_and_set to reset members. - * cygheap.h (cygheap_user): Delete static members. - (cygheap_user::puserprof): New member. - (cfree_and_set): Declare. - * dcrt0.cc (almost_null): Define. - * environ.cc (env_dontadd): Redefine as "almost_null". - * winsup.h (almost_null): Declare. - * syscalls.cc (cfree_and_set): Remove unused variable. - * uinfo.cc (cygheap_user::homepath_env_buf): Eliminate. - (cygheap_user::homedrive_env_buf): Ditto. - (cygheap_user::userprofile_env_buf): Ditto. - (cygheap_user::ontherange): YA change to try to preserve existing - HOMEPATH and HOMEDRIVE. Return almost_null values when variables - should not actually exist. - (cygheap_user::env_logsrv): Ditto. - (cygheap_user::env_domain): Ditto. - (cygheap_user::env_userprofile): Ditto. - -2002-06-27 Corinna Vinschen - - * dcrt0.cc (dll_crt0_1): Let __progname point to the applications - basename. Move eliminating ".exe" suffix from argv[0] so that it - always also affects __progname. - -2002-06-27 Thomas Pfaff - - * thread.cc (pthread::create): Add trace printf to get CreateThread - LastError. - -2002-06-27 Corinna Vinschen - - * mmap.cc (list::match): Check using pagesize aligned size. - -2002-06-26 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Force - FindFirstFile on first file of directory when asking for x:\ . - -2002-06-26 Christopher Faylor - - * cygheap.cc (cygheap_user::set_name): Correct thinko in below change. - -2002-06-26 Christopher Faylor - - * cygheap.cc (cygheap_user::set_name): Avoid clearing things when just - setting name to itself or during first time initialization. - - * environ.cc (check_case_init): Make case insensitive. - -2002-06-26 Corinna Vinschen - - * fhandler.h (fhandler_socket::bind): Add method definition. - (fhandler_socket::connect): Ditto. - (fhandler_socket::listen): Ditto. - (fhandler_socket::accept): Ditto. - (fhandler_socket::getsockname): Ditto. - (fhandler_socket::getpeername): Ditto. - (fhandler_socket::recvfrom): Ditto. - (fhandler_socket::recvmsg): Ditto. - (fhandler_socket::sendto): Ditto. - (fhandler_socket::sendmsg): Ditto. - (fhandler_socket::shutdown): Ditto. - * fhandler_socket.cc (get_inet_addr): Move here from net.cc. - (fhandler_socket::bind): New method. - (fhandler_socket::connect): Ditto. - (fhandler_socket::listen): Ditto. - (fhandler_socket::accept): Ditto. - (fhandler_socket::getsockname): Ditto. - (fhandler_socket::getpeername): Ditto. - (fhandler_socket::recvfrom): Ditto. - (fhandler_socket::recvmsg): Ditto. - (fhandler_socket::sendto): Ditto. - (fhandler_socket::sendmsg): Ditto. - (fhandler_socket::shutdown): Ditto. - * net.cc: Various formatting cleanups throughout. - (get_inet_addr): Move to fhandler_socket.cc. - (cygwin_bind): Move base functionality to appropriate fhandler_socket - method. - (cygwin_connect): Ditto. - (cygwin_listen): Ditto. - (cygwin_accept): Ditto. - (cygwin_getsockname): Ditto. - (cygwin_getpeername): Ditto. - (cygwin_recvfrom): Ditto. - (cygwin_recvmsg): Ditto. - (cygwin_sendto): Ditto. - (cygwin_sendmsg): Ditto. - (cygwin_shutdown): Ditto. - -2002-06-26 Corinna Vinschen - - * pwdgrp.h (pwdgrp_read::~pwdgrp_read): Avoid compiler warning. - -2002-06-26 Christopher Faylor - - * dcrt0.cc (_dcrt0): Be more defensive when reserved block is used and - it's not cygwin info. - -2002-06-26 Christopher Faylor - - * autoload (noload): Avoid clobbering bx register. - - * environ.cc (codepage_init): Use case insensitive match. - - * fhandler_console.cc (cp_get_internal): Delete. - (con_to_str): Use get_cp to derive code page. - (str_to_con): Ditto. - * miscfuncs.cc (get_cp): New function. - (sys_wcstombs): New function. Converted from macro. - (sys_mbstowcs): Ditto. - * winsup.h: Reflect above changes. - -2002-06-26 Christopher Faylor - - * winsup.h: Minor cleanup. - * path.h (path_conv::[]): New operator. - * syscalls.cc (_link): Use path_conv operators rather than methods, - where appropriate. Minor white space cleanup. - -2002-06-26 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-06-25 Thomas Pfaff - - * include/pthread.h (PTHREAD_CANCELED): Define a reasonable value. - * pthread.cc (pthread_exit): Call method instead of function. - (pthread_setcancelstate): Ditto. - (pthread_setcanceltype): Ditto. - (pthread_testcancel): Ditto. - * thread.h (pthread::cancel_event): New member. - (__pthread_cancel_self): New prototype. - (pthread::exit): New Method. - (pthread::cancel): Ditto. - (pthread::testcancel): Ditto. - (pthread::cancel_self): Ditto. - (pthread::static_cancel_self): Ditto. - (pthread::setcancelstate): Ditto. - (pthread::setcanceltype): Ditto. - (__pthread_cancel): Give c++ linkage. - (__pthread_exit): Remove. - (__pthread_setcancelstate): Ditto. - (__pthread_setcanceltype): Ditto. - (__pthread_testcancel): Ditto. - * thread.cc (pthread::pthread): Inititialize cancel_event. - (pthread::~pthread): Close cancel_event if needed. - (pthread::create): Create cancel_event. - (pthread::exit): New method. Replacement for __pthread_exit. - (pthread::cancel): New method. - (pthread::testcancel): Ditto. - (pthread::static_cancel_self); New static method. - (pthread::setcancelstate): New method. Replacement for - __pthread_setcancelstate. - (pthread::setcanceltype): New method. Replacement for - __pthread_setcanceltype. - (pthread::pop_cleanup_handler): Add lock for async cancel safe - cancellation. - (pthread::thread_init_wrapper): Change __pthread_exit to - thread->exit(). - (__pthread_cancel): Call method thread->cancel(). - (__pthread_exit): Remove. - (__pthread_setcancelstate): Ditto. - (__pthread_setcanceltype): Ditto. - (__pthread_testcancel): Ditto. - -2002-06-25 Christopher Faylor - - * dcrt0.cc (sm): Make NO_COPY. - -2002-06-25 Corinna Vinschen - - * syscalls.cc (chown): Convert uid to 32 bit. - (lchown): Ditto. - (fchown): Ditto. - -2002-06-24 Christopher Faylor - - * dtable.cc (dtable::find_unused_handle): Avoid coercion. - -2002-06-24 Christopher Faylor - - * dtable.cc (fhandler_base::dup2): Cleanup. Ensure that lock is turned - off in error condition. - -2002-06-24 Corinna Vinschen - - * uinfo.cc (internal_getlogin): Set myself->uid and myself->gid instead - of user.real_uid and user.real_gid. - (uinfo_init): Evaluate orig_uid and real_uid from myself->uid. Ditto - for gid. - -2002-06-23 Pierre Humblet - - * security.cc (get_group_sidlist): Add pw argument and use pw->pw_name - in call to get_supplementary_group_sidlist. - (create_token): Add pw argument and use it in call to - get_group_sidlist. - * security.h: Add pw argument in declaration of create_token. - * syscalls.cc (seteuid32): Add pw argument in call to create_token. - -2002-06-23 Conrad Scott - - * fhandler.cc (fhandler_base::fstat): Set S_IFIFO for pipes. - * fhandler_socket.cc (fhandler_socket.cc::fstat): Set S_IFSOCK. - -2002-06-23 Christopher Faylor - - * lib/_cygwin_S_IEXEC.cc: Remove obsolete file. - -2002-06-23 Christopher Faylor - - Use cygwin_{shm,ipc}.h instead of /sys/{shm,ipc}.h throughout. - * sys/ipc.h: Remove. - * sys/shm.h: Remove. - * cygwin_ipc.h: New file. - * cygwin_shm.h: New file. - -2002-06-23 Christopher Faylor - - * cygwin.sc: Add recent changes from ld sources. - -2002-06-23 Conrad Scott - - * winsup.h: Move #ifdef EXPCGF code into "winbase.h". - * winbase.h: #ifdef EXPCGF code moved here from "winsup.h". - -2002-06-12 Thomas Pfaff - - * thread.h (pthread::cleanup_stack): Rename cleanup_handlers to - cleanup_stack. - * thread.cc (pthread::pthread): Ditto. - (pthread::create): Fix mutex verification. - (pthread::push_cleanup_handler): Renam cleanup_handlers to - cleanup_stack. Remvoe Mutex calls, use InterlockedExchangePointer - instead. - (pthread::pop_cleanup_handler): Rename cleanup_handlers to - cleanup_stack. - (pthread::pop_all_cleanup_handlers): Ditto. - (__pthread_once): Check state first and return if already done. - (__pthread_join): Revert DEADLOCK test to __pthread_equal call. - (__pthread_detach): Unlock mutex before deletion. - -2002-06-21 Christopher Faylor - - * Makefile.in (cygrun.exe): Move -lgcc where it will do some good. - -2002-06-21 Corinna Vinschen - - * syscalls.cc (stat64_to_stat32): Correctly evaluate st_rdev. - (fstat64): Set st_rdev to same value as st_dev. - (stat_worker): Ditto. - -2002-06-21 Corinna Vinschen - - * security.cc (alloc_sd): Carefully check owner_sid again after trying - SIDs from cygheap. - -2002-06-21 Corinna Vinschen - - * security.cc (alloc_sd): Remove unnecessary retrieval of owner name. - Check uid for current user first and use SIDs from cygheap if so. - Set errno to EINVAL if user SID isn't retrievable. Just print user SID - as debug output. - Don't bail out if group SID isn't retrievable. Change debug output - appropriately. - -2002-06-21 Christopher Faylor - - * errno.cc: Change text description for EBADF throughout. - -2002-06-20 Pierre Humblet - - * uinfo.cc (cygheap_user::ontherange): Use env_name for NetUserGetInfo. - (cygheap_user::env_logsrv): Verify env_domain is valid. - * environ.cc: Include child_info.h and keep spenvs[] sorted. - (environ_init): Check child_proc_info instead of myself->ppid_handle. - -2002-06-19 Christopher Faylor - - * fhandler.cc (fhandler_base::set_flags): Change priority of "linked - in" default binmode setting so that it has priority over optional - setting. - -2002-06-19 Christopher Faylor - - Use hMainProc where appropriate, throughout. - * environ.cc (spenv::retrieve): Add debugging statements. - - * pinfo.cc (set_myself): Don't call strace.hello if already stracing. - * strace.cc (strace): Move NO_COPY keyword so that it will actually - take effect. - -2002-06-19 Corinna Vinschen - - * uinfo.cc (cygheap_user::ontherange): Call NetUserGetInfo() only with - non-NULL logserver parameter. - -2002-06-16 Christopher Faylor - - * cygheap.h (cygheap_user::issetuid): New method. - * dtable.cc (dtable::vfork_child_dup): Use new method to determine if - we are in "setuid mode." - * fork.cc (fork_parent): Ditto. - * spawn.cc (spawn_guts): Ditto. - * syscalls.cc (seteuid32): Ditto. - (setegid32): Ditto. - * environ.cc (spenv::retrieve): (Suggested by Pierre Humblet) Do - potential recalculation of cygheap_user stuff when in setuid mode. - Return special value when environment variable should be calculated but - not added. - (build_env): Don't add retrieved value to dstp if it is 'dont_add'. - -2002-06-16 Christopher Faylor - - Changes suggested by Pierre Humblet. - * environ.cc (NL): New macro. - (conv_envvars): Use NL macro to fill in name and namelen. - (spenv::namelen): New field. - (spenvs): Use NL to fill in name and namelen. - (spenv::retrieve): Eliminate length argument. Instead, use namelen - throughout. - (build_env): Don't calculate length of initial FOO= part of - environment. Accommodate spenv::retrive argument change. - -2002-06-16 Christopher Faylor - - * cygheap.h (cygheap_user::winname): New field. - * cygheap.cc (cygheap_user::set_name): Clear winname when name changes. - * uinfo.cc (cygheap_user::env_logsrv): Avoid calculating server when - Windows user == SYSTEM. - (cygheap_user::env_domain): Set winname here too. - (cygheap_user::env_userprofile): Eliminate superfluous tests. - (cygheap_user::env_name): Seed winname by calling env_domain(). - -2002-06-12 Pierre Humblet - - * spawn.cc (spawn_guts): Revert removal of ciresrv.moreinfo->uid = - ILLEGAL_UID. - -2002-06-15 Christopher Faylor - - * child_info.h (child_proc_info): Declare as base class. - (spawn_info): Declare as alias of child_proc_info to aid debugging. - (fork_info): Ditto. - * cygheap.cc (cygheap_fixup_in_child): Use child_proc_info global - rather than parameter. - * cygheap.h (cygheap_fixup_in_child): Reflect above change in - declaration. - * dcrt0.cc (_dll_crt0): Move 'si' definition here. Assign - child_proc_info. - (dll_crt0_1): Accommodate cygheap_fixup_in_child and *_info changes. - * environ.cc (spenv::retrieve): Make regparm. - * environ.h (environ_init): Ditto. - (win_env::add_cache): Ditto. - (build_env): Ditto. - (getwinenv): Ditto. - * fork.cc (sync_with_parent): Use fork_info global. - (fork_child): Ditto. - -2002-06-14 Christopher Faylor - - * uinfo.cc (cygheap_user::ontherange): Don't set HOMEDRIVE or HOMEPATH - unless one or the other is specified. - -2002-06-14 Christopher Faylor - - * cygheap.h (cygheap_user::userprofile_env_buf): New static member. - * environ.cc (build_env): Add debugging statement. - (spenvs): Switch functions for USERDOMAIN and USERNAME. - * spawn.cc (spawn_guts): Move environment initialization prior to - cygheap_setup_for_child or environment info will never be copied to - child. - -2002-06-14 Christopher Faylor - - * cygheap.h (cygheap_user): Add static members to hold home{drive,path} - info. - * uinfo.cc (cygheap_user::ontherange): Use static class members for - local HOME* storage. - -2002-06-14 Christopher Faylor - - * cygheap.cc (cygheap_user::set_logsrv): Remove. - (cygheap_user::set_domain): Ditto. - * cygheap.h (cygheap_user::set_logsrv): Remove declaration. - (cygheap_user::set_domain): Ditto. - (cygheap_user::env_domain): Declare new method. - (cygheap_user::env_name): Ditto. - * environ.cc (spenvs): Add two environment variables. - * spawn.cc (spawn_guts): Call build_env after RevertToSelf. Always set - ciresrv.mount_h. - (cygheap_user::ontherange): Recalculate homedrive/homepath if they are - empty. Use env_logsrv to get logon server. - (cygheap_user::env_logsrv): Calculate server name here rather than - relying on it having been previously calculated. - (cygheap_user::env_domain): Ditto for domain name. - (cygheap-user::env_name): New method. - -2002-06-12 Pierre Humblet - - * syscalls.cc (seteuid32): Do not get or set the environment. Do not - call LookupAccountSid nor internal_getlogin. Set cygheap->user name - and sid from the passwd entry. - * uinfo.cc (uinfo_init): Only call internal_getlogin when starting from - a non Cygwin process and use the values returned in user. - (internal_getlogin): Simplify to case where starting from a non Cygwin - process. Store return values in user and return void. Do not set the - Windows default environment. - * dcrt0.cc (dll_crt0_1): Call uinfo_init only when needed. Do not set - myself->uid nor reset user.sid. - * spawn.cc (spawn_guts): Get the sid from cygheap->user. Always - RevertToSelf(). Don't set uid in impersonated case. - * cygheap.cc (cygheap_user::set_sid): Do not set orig_sig. - (cygheap_user::set_orig_sid): New. - * cygheap.h: Declare cygheap_user::set_sid. - * winsup.h: Add argument to uinfo_init(). - -2002-06-14 Corinna Vinschen - - * environ.cc (build_env): If realloc moves envblock, move s with it. - -2002-06-13 Nicholas S. Wourms - - * winver.rc: Add more words to copyright. - -2002-06-13 Corinna Vinschen - - * cygheap.cc (cygheap_user::set_name): Revert previous change. - * environ.cc (spenv::retrieve): Check return value of call to - cygheap->user.*from_cygheap(). - -2002-06-13 Corinna Vinschen - - * cygheap.cc (cygheap_user::set_name): Remove setting homedrive and - homepath to NULL. - (cygheap_user::set_logsrv): Fix free'ing of plogsrv. - * cygheap.h (cygheap_user::cygheap_user): Initialize homedrive and - homepath to NULL. - -2002-06-13 Christopher Faylor - - * security.cc (get_logon_server): Use strcasematch rather than - strcasecmp. - -2002-06-12 Christopher Faylor - - * path.cc (chdir): Minor cleanup. - -2002-06-12 Christopher Faylor - - * environ.cc (build_env): Correctly fill out windows environment block - with win32 paths rather than posix paths. - -2002-06-12 Christopher Faylor - - * cygheap.cc (cygheap_user::set_name): Set homedrive and homepath to - NULL on user name change. - (cygheap_user::set_logsrv): Allocate enough space for leading \\ so - that we can put this in the environment, if needed. - * cygheap.h (homebodies): New enum. - (cygheap_user::homedrive): New field. - (cygheap_user::homepath): Ditto. - (cygheap_user::env_logsrv): New method. - (cygheap_user::env_homepath): New method. - (cygheap_user::env_homedrive): New method. - (cygheap_user::env_userprofile): New method. - (cygheap_user::ontherange): New method. - * environ.cc (envsize): Eliminate debugging argument. - (environ_init): Assume that envc counts number of elments not total - size. - (spenv): New class. - (spenvs): New array, rename from forced_winenv_vars, using spenv. - (spenv::retrieve): New method. - (build_env): Rename from 'winenv' -- one stop shopping for building new - environment blocks for both windows and "unix". - * environ.h (build_env: Declare. - (winenv): Delete declaration. - (envsize): Ditto. - * spawn.cc (spawn_guts): Use build_env to build windows and cygwin - environment blocks. - * uinfo.cc (internal_getlogin): Eliminate environment manipulation. - Default to info from GetUserName if it exists. Move HOMEPATH and - HOMEDRIVE stuff elsewhere. Move HOME setting elsewhere. Only set HOME - environment variable in processes that are not parented by a cygwin - process. - (cygheap_user::ontherange): Define new method. - (cygheap_user::env_logsrv): Ditto. - (cygheap_user::env_homepath): Ditto. - (cygheap_user::env_homedrive): Ditto. - (cygheap_user::env_userprofile): Ditto. - -2002-06-11 Christopher Faylor - - * spawn.cc (spawn_guts): More hToken removal cleanup. - -2002-06-09 Pierre Humblet - - * spawn.cc (spawn_guts): Define sec_attribs and call sec_user_nih() - only once. - -2002-06-10 Christopher Faylor - - * Makefile.in: Ensure that -MD gets added to CFLAGS regardless of - CFLAGS command-line setting. - - * cygwin.din: Export sexec* functions as function which returns ENOSYS - (i.e., sexec* is deprecated). - * dtable.cc (dtable::vfork_child_dup): Ensure that impersonation is - restored even on failure. - * exec.cc: Throughout, remove references to sexec* and _spawnve. - * pinfo.h: Remove _spawnve declaration. - * spawn.cc: Rename _spawnve to spawnve and use throughout. - (spawn_guts): Eliminate hToken argument and processing of same. Just - perform special actions if impersonating. - (spawnve): Rename from _spawnve. - -2002-06-10 Christopher Faylor - - * include/sys/strace.h (strace): Avoid use of constructor. - -2002-06-10 Christopher Faylor - - * dcrt0.cc (dll_crt0_1): Initialize wincap and check for sanity before - running global ctors. - * wincap.h (wincap): Eliminate constructor. Default is to zero memory, - anyway. - * wincap.cc (wincap): Copy this on fork to avoid initialization in - forked processes. - -2002-06-10 Corinna Vinschen - - * fhandler.h (fhandler_socket::fixup_after_fork): Revert patch from - 2002-06-04. - * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Ditto. - (fhandler_socket::dup): Ditto. - * net.cc (fdsock): Make sockets explicitely noninheritable on NT. - -2002-06-09 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Correctly - set number of links for directory, if appropriate. - -2002-06-10 Robert Collins - - * thread.cc: Variation of a patch from Thomas Pffaf. - (__pthread_detach): Cleanup thread object if the thread has terminated. - (__pthread_join): Change order of error checks, and lock against - join/detach/exit races. - (__pthread_exit): Lock object against join/detach/exit races. - (pthread::thread_init_wrapper): Ditto. - (thread_init_wrapper): Rename to pthread::thread_init_wrapper. - (pthread::create): Check that the mutex initialized correctly. - (pthread::push_cleanup_handler): Lock against potential cancellation - race. NB: this may not be required if pthread_cleanup_push is non- - cancelable. - * thread.h (pthread::mutex): New member. - (thread_init_wrapper): Rename to pthread::thread_init_wrapper. - (pthread::thread_init_wrapper_: New static member. - -2002-06-10 Robert Collins - - * cygwin.din: Add _pthread_cleanup_push and _pthread_cleanup_pop. - * pthread.cc: Change __pthread_self to pthread::self() thruoghout. - (_pthread_cleanup_push): New function. - (_pthread_cleanup_pop): Ditto. - * thread.cc: Thanks to Thomas Pfaff for the pthread cleanup_push,_pop - patch, this work is derived from that. - Change __pthread_self to pthread::self() thruoghout. - (__pthread_self): Rename to pthread::self. - (pthread::self): New method. - (pthread::pthread): Initialize new member. - (pthread::push_cleanup_handler): New method. - (pthread::pop_cleanup_handler): New method. - (pthread::pop_all_cleanup_handlers): New method. - (__pthread_exit): Pop all cleanup handlers. - * thread.h (pthread::push_cleanup_handler): Declare. - (pthread::pop_cleanup_handler): Ditto. - (pthread::pop_all_cleanup_handlers): Ditto. - (pthread::self): New static method. - (__pthread_exit): Give C++ linkage. - (__pthread_join): Ditto. - (__pthread_detach): Ditto. - (__pthread_self): Remove. - -2002-04-24 Thomas Pfaff - - * include/pthread.h (__pthread_cleanup_handler): New structure. - (pthread_cleanup_push): Rewritten. - (pthread_cleanup_pop): Ditto. - (_pthread_cleanup_push): New prototype. - (_pthread_cleanup_pop): Ditto. - -2002-04-24 Thomas Pfaff - - * thread.cc (thread_init_wrapper): Check if thread is already joined. - (__pthread_join): Set joiner first. - (__pthread_detach): Ditto. - -2002-06-10 Robert Collins - - * cygserver_transport.cc (create_server_transport): Finish the split - out of sockets code from transport_layer_base. Thanks to Nicholas - Wourms and Conrad Scott for catching this. - -2002-06-08 Christopher Faylor - - * pinfo.cc (pinfo_dummy): Initialize to correct size. - -2002-06-08 Christopher Faylor - - * path.cc: Change MOUNT_AUTO to MOUNT_CYGDRIVE throughout. - * shared_info.h (CURR_MOUNT_MAGIC): Update. - -2002-06-08 Christopher Faylor - - * external.cc (cygwin_internal): Make v1 mount table access invalid. - * path.cc (mount_info::init): Remove had_to_create_mount_areas initialization. - (mount_info::from_registry): Remove v1 table import. - (mount_info::read_v1_mounts): Eliminate. - (mount_info::import_v1_mounts): Ditto. - * shared_info.h (mount_info): Ditto for both of above. - * sys/mount.h (MOUNT_DEVFS): New enum. - (MOUNT_PROC): Ditto. - -2002-06-08 Christopher Faylor - - * include/wchar.h: Define __need_size_t. - -2002-06-07 Christopher Faylor - - * fhandler_socket.cc (fhandler_socket::fstat): Don't assume that socket - is unix-domain socket. - -2002-06-07 Christopher Faylor - - * times.cc (hires_ms::prime): Set init flag. - -2002-06-07 Conrad Scott - - * times.cc (hires_ms::prime): Adjust epoch of initime_us from 1601 to - 1970. - -2002-06-06 Christopher Faylor - - * autoload.cc (timeGetDevCaps): Define new autoload function. - (timeGetTime): Ditto. - (timeBeginPeriod): Ditto. - (timeEndPeriod): Ditto. - * hires.h (hires_base): New class. Rename from hires. - (hires_us): New class. - (hires_ms): New class. - * strace.cc (strace::microseconds): Use hires_us class. - * times.cc (gettimeofday): Use hires-ms class. - (hires_us::prime): Rename from hires::prime. - (hires_us::usecs): Rename from hires:usecs. - (hires_ms::prime): New method. - (hires_ms::usecs): New method. - (hires_ms::~hires_ms): New destructor. - -2002-06-06 Christopher Faylor - - * autoload.cc (noload): Correctly save argument count register. - -2002-06-05 Conrad Scott - - * fhandler.cc (fhandler_base::fstat): Initialise tv_nsec member of - st_atim, st_mtim, and st_ctim fields. - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Ditto. - * fhandler_process.cc (fhandler_process::fstat): Ditto. - * glob.c (stat32_to_STAT): Copy across the whole st_atim, st_mtime, and - st_ctim fields. - * syscalls.cc (stat64_to_stat32): Ditto. - * times.cc (to_timestruc_t): New function. - (time_as_timestruc_t): New function. - * winsup.h: Add to_timestruc_t and time_as_timestruc_t functions. - * include/cygwin/stat.h: Replace time_t with timestruc_t throughout for - all file times, removing the st_spare1, st_spare2, and st_spare3 fields - in the process. Add macros to access tv_sec fields by old names. - * include/cygwin/types.h: Typedef timespec_t and timestruc_t as struct - timespec. - -2002-06-03 Pierre Humblet - - * sec_helper.cc (lookup_name): Suppress. - * security.cc (alloc_sd): Remove logsrv argument. - Remove two calls to lookup_name. - (set_security_attribute): Remove logsrv argument. - Remove logsrv argument in call to alloc_sd. - (set_nt_attribute): Remove logsrv argument. - Remove logsrv argument in call to set_security_attribute. - (set_file_attribute): Remove logsrv argument. - Remove logsrv argument in call to set_nt_attribute. - (set_file_attribute): Remove logsrv argument. - Remove logsrv argument in call to set_file_attribute. - * syscalls.cc (chown_worker): Remove logserver argument in - call to set_file_attribute. - (chmod): Ditto. - * shm.cc (shmget): Remove logsrv argument in call to alloc_sd. - * uinfo.cc (internal_getlogin): Replace calls to - lookup_name by call to LookupAccountName. - * security.h: Remove logsrv in declarations of set_file_attribute - and alloc_sd. Remove declaration of lookup_name. - -2002-06-05 Christopher Faylor - - * child_info.h (CHILD_INFO_MAGIC): Oops. Revert previous change. gcc - 3.1 bug? - -2002-06-05 Christopher Faylor - - * child_info.h (CHILD_INFO_MAGIC): Update. - -2002-06-05 Christopher Faylor - - * strace.cc (strace::hello): Set inited, when appropriate. - -2002-06-05 Christopher Faylor - - * cygwin.din: Eliminate some newlib wrappers. - * path.cc (get_devn): Only consider first 99 potential com devices. - (get_device_number): Ditto. - * times.cc (_times): Eliminate. - (_times): Rename from times(). - -2002-06-05 Christopher Faylor - - * dir.cc (rmdir): Streamline. Detect attempts to remove directories - from "read-only" virtual devices. (Suggested by Pavel Tsekov) - * syscalls.cc (unlink): Detect attempts to remove directories from - "read-only" virtual devices. (From Pavel Tsekov) - -2002-06-05 Christopher Faylor - - * dtable.cc (handle_to_fn): Check error return value from NtQueryObject - first before seeing if name buffer is NULL. - - * grp.cc (read_etc_group): Fix gcc warning regarding snprintf format. - * passwd.cc (read_etc_passwd): Ditto. - -2002-04-18 Thomas Pfaff - - * thread.h (pthread::joiner): New member. - * thread.cc (pthread::pthread): Initialize joiner to NULL - (pthread::create): Increment of thread counter moved from - __pthread_create to this location. - (__pthread_create): Increment thread counter removed. - (thread_init_wrapper): Set joiner to self when thread was created - detached. - (__pthread_exit): delete thread when it is detached and not - joined. - (__pthread_join): Check for deadlock and delete thread when it has - terminated. - (__pthread_detach): Set joiner to self when thread state - changed to detached. - -2002-06-05 Corinna Vinschen - - * grp.cc (read_etc_group): When emulating nonexisting group file on - NT systems, read primary group SID from process token. Use that info - to create correct group entry. On error or on 9x systems fallback - to emulating Administrators group as before. - * passwd.cc (read_etc_passwd): When emulating nonexisting passwd file - on NT systems, read user and primary group SID from process token. - Use that info to create correct passwd entry. On error or on 9x - systems fallback to emulating user with Administrator user id and - Administrators group as before. - -2002-06-05 Corinna Vinschen - - * grp.cc (etc_group): Removed. - (parse_grp): Make line parameter nonconst. Don't copy data into new - allocated memory. Check for CR instead of LF to accomodate new - read method. - (add_grp_line): Make line parameter nonconst. - (read_etc_group): Rearrange using new pwdgrp_read class. - * passwd.cc (parse_pwd): Don't copy data into new allocated memory. - Check for CR instead of LF to accomodate new read method. - (read_etc_passwd): Rearrange using new pwdgrp_read class. - * pwdgrp.h (pwdgrp_check::set_last_modified): Use different - parameters. - (class pwdgrp_read): New class for opening and reading passwd and - group files. - -2002-06-04 Christopher Faylor - - * dtable.cc (handle_to_fn): Attempt to handle "raw" accesses to remote - shares. - * path.cc (mount_info::conv_to_win32_path): Set flags to binary when - mount entry is not found. - (mount_info::set_flags_from_win32_path): Ditto. - -2002-06-04 Christopher Faylor - - * dtable.cc (handle_to_fn): Correct placement and length of name - buffer. (Suggested by Pavel Tsekov) - -2002-06-04 Christopher Faylor - - Remove fcntl.h includes throughout. - * fhandler.h: Move fcntl.h include here. - (fhandler_base::set_flags): Accept supplied_bin argument. Make - non-inlined. - * dtable.cc (dtable::init_std_file_from_handle): Just use binmode from - pc. - (reset_to_open_binmode): Use set_flags. - * cygwin.din (open): Avoid newlib wrapper. - (read): Ditto. - (unlink): Ditto. - (write): Ditto. - * fhandler.cc (fhandler_base::set_flags): Accept supplied_bin argument. - Make binmode decisions here. - (fhandler_base::open): Avoid using pc if it is NULL. Eliminate binmode - logic. Just call set_flags with binmode argument. - (fhandler_base::init): Call set_flags with binmode argument. - * fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto. - * fhandler_console.cc (fhandler_console::open): Ditto. - (fhandler_console::init): Force binary on open. - * fhandler_disk_file.cc (fhandler_disk_file::open): Don't set binmode - here. Let it happen in base class. - * fhandler_dsp.cc (fhandler_dev_dsp::open): Force binmode open. Set - return value appropriately if unable to open. - * fhandler_proc.cc (fhandler_proc::open): Make sure flags are set - before open_status. - * fhandler_process.cc (fhandler_process::open): Ditto. - * fhandler_registry.cc (fhandler_registry::open): Ditto. - * fhandler_random.cc (fhandler_dev_random::fhandler_dev_random): Ditto. - * fhandler_raw.cc (fhandler_dev_raw::open): Force O_BINARY by default. - * fhandler_serial.cc (fhandler_serial::init): Ditto. - * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. - (fhandler_pty_master::open): Ditto. - * fhandler_virtual.cc (fhandler_virtual::open): Ditto. - * fhandler_windows.cc (fhandler_windows::open): Ditto. - * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. - * net.cc (fdsock): Ditto. - * path.cc (path_conv::check): Avoid checking for executable extension - when directory. (Suggested by Pavel Tsekov) - (set_flags): Set PATH_TEXT explicitly, when appropriate. - (mount_info::conv_to_win32_path): Use set_flags() to set path flags. - * path.h (PATH_TEXT): New enum. - (path_conv::binmode): Return appropriate constant based on binmode. - * pipe.cc (make_pipe): Set binmode to O_TEXT xor O_BINARY. - * syscalls.cc (setmode_helper): Make debugging message a little - clearer. - (setmode): Set binmode via set_flags. - -2002-06-04 Corinna Vinschen - - * fhandler.h (class fhandler_socket): Add private method - fixup_after_fork (bool, HANDLE). - * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Move - functionality to new private method. Add closing parent socket - if not called from dup(). Create method new calling private method - with appropriate parameter. - (fhandler_socket::fixup_after_exec): Call private method - fixup_after_fork with appropriate parameter. - (fhandler_socket::dup): Ditto. - -2002-06-04 Corinna Vinschen - - * fhandler_dsp.cc (fhandler_dev_dsp::open): Set errno to EACCES if - requested mode isn't supported. - -2002-06-03 Christopher Faylor - - * fhandler.cc (fhandler_base::open): Don't set binmode if already set. - Don't check for file. Files should already be set. Report on binary - mode for debugging. - (fhandler_base::fhandler_base): Don't set default binmode here. That's - for later. - * fhandler_console.cc (fhandler_console::output_tcsetattr): Don't set - binmode, ever, for console. - * fhandler_disk_file.cc (fhandler_disk_file::open): Always set the - binary mode to the value derived from mount table. - * path.cc (mount_info::conv_to_win32_path): Default to binmode if path - does not translate into anything in the mount table. - -2002-06-03 Corinna Vinschen - - * external.cc (cygwin_internal): Add CW_EXTRACT_DOMAIN_AND_USER - handling to call extract_nt_dom_user() from applications. - * include/sys/cygwin.h (cygwin_getinfo_types): Add - CW_EXTRACT_DOMAIN_AND_USER. - -2002-06-03 Corinna Vinschen - - * syscalls.cc (stat64_to_stat32): Transform st_dev correctly. - (fstat64): Add evaluating st_ino and st_dev. - (stat_worker): Evaluate st_dev as 32 bit value. - * include/cygwin/stat.h: Use new dev_t definition throughout. - * include/cygwin/types.h: Define __dev16_t and __dev32_t. Define - dev_t according to __CYGWIN_USE_BIG_TYPES__ setting. - * include/sys/sysmacros.h: Define major, minor and makedev - according to __CYGWIN_USE_BIG_TYPES__ setting. - -2002-06-03 Pierre Humblet - - * syscalls.cc (setegid32): Verify the correctness of the gid - of the group returned by getgrgid32. - -2002-06-03 Pierre Humblet - - * security.cc (lsa2wchar): Suppressed. - (get_lsa_srv_inf): Suppressed. - (get_logon_server_and_user_domain): Suppressed. - (get_logon_server): Essentially new. - (get_user_groups): Add "domain" argument. Only lookup the - designated server and use "domain" in LookupAccountName. - (is_group_member): Simplify the arguments. - (get_user_local_groups): Simplify the arguments. Do only a - local lookup. Use "BUILTIN" and local domain in LookupAccountName. - (get_user_primary_group). Only lookup the designated server. - (get_group_sidlist): Remove logonserver argument. Do not lookup - any server for the SYSTEM account. - (create_token): Delete logonserver and call to get_logon_server. - Adjust arguments of get_group_sidlist, see above. - * security.h: Delete declaration of get_logon_server_and_user_domain - and add declaration of get_logon_server. - * uinfo.cc (internal_get_login): Call get_logon_server instead of - get_logon_server_and_user_domain. - -2002-06-02 Christopher Faylor - - * dtable.cc (handle_to_fn): Use largest match for device. Correctly - (?) deal with remote drive weirdness. - -2002-06-02 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Check - specifically for non-existent file, first. - (fhandler_disk_file::fstat): Perform fd open on files with funny - characters. - -2002-06-02 Christopher January - - * fhandler_process.cc (fhandler_process::open): Set fileid. - -2002-06-02 Christopher Faylor - - Remove unneeded sigproc.h includes throughout. - * fhandler.h (fhandler_proc::fill_filebuf): Take a pinfo argument. - * fhandler_proc.cc (fhandler_proc::get_proc_fhandler): Simplify search - for given pid. - (fhandler_proc::readdir): Assume that pid exists if it shows up in the - winpid list. - * fhandler_process.cc (fhandler_process::open): Simplify search for - given pid. Call fill_filebuf with pinfo argument. - (fhandler_process::fill_filebuf): Pass pinfo here and assume that it - exists. - * pinfo.h (pinfo::remember): Define differently if sigproc.h is not - included. - -2002-06-02 Christopher Faylor - - * dll_init.cc (dll_list::detach): Don't run destructor on exit. - -2002-06-01 Christopher Faylor - - * fhandler.cc (fhandler_base::fstat): Move dev and ino calculation into - caller. - * syscalls.cc (stat_worker): Calculate dev and ino calculation here, if - zero. - * fhandler_proc.cc (fhandler_proc::fhandler_proc): Minor reorg for - debugging. - * fhandler_process.cc (fhandler_process::exists): Return 0 on - nonexistence. - (fhandler_process::fstat): Simplify pid logic. - * fhandler_tape.cc (fhandler_dev_tape::fstat): Minor reformatting. - -2002-06-01 Christopher Faylor - - * path.cc (chdir): Don't allow cd'ing to a non-directory virtual path. - -2002-05-31 Christopher Faylor - - * fhandler_disk_file.cc (readdir): Move inode calculation into caller. - (fhandler_cygdrive::readdir): Add "." and "..". - * dir.cc (readdir): Move inode calculation here so that fhandler - readdirs can benefit. - -2002-05-31 Christopher Faylor - - * fhandler_console.cc (fhandler_console::open): Reinstate setting of - flags. - - * dtable.cc (dtable::init_std_file_from_handle): Default to using - binmode derived from path_conv, when required. - * fhandler.h (fhandler_base::get_w_binary): Default to binmode if - nothing else is specified. - * fhandler.h (fhandler_base::get_r_binary): Ditto. - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_handle): Work - around g++ warning. - - * path.cc (path_conv::check): Remove a debugging statement. - -2002-05-31 Christopher Faylor - - * fhandler_console.cc (fhandler_console::open): Always default to - binmode. - (fhandler_console::write_normal): Don't honor binmode setting. There - is already a termios setting for this. - (fhandler_console::init): Correct argument order in init call. - -2002-05-31 Christopher Faylor - - * fhandler.cc (fhandler_base::open): Make default open mode == binmode. - (fhandler_base::init): Set open flags based on derived binmode argument. - -2002-05-31 Christopher Faylor - - * dll_init.cc (dll_list::init): Eliminate unneeded debugging statement. - -2002-05-31 Christopher Faylor - - * fhandler_proc.cc (fhandler_proc::readdir): Set errno when no more - files. - * fhandler_process.cc (fhandler_process::readdir): Ditto. - * fhandler_registry.cc (fhandler_registry::readdir): Ditto. - -2002-05-30 Christopher Faylor - - * path.cc (path_conv::check): Set fileattr to INVALID_FILE_ATTRIBUTES - for nonexistent virtual device path. - (chdir): Set correct errno when attempt is made to cd to nonexistent - virtual device path. - -2002-05-30 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat): Always call - fstat_by_name if fd is not opened to allow fstat_by_name to properly - set errno. - -2002-05-30 Corinna Vinschen - - * autoload.cc: Replace autoload statments for ZwXXX by NtXXX. - Drop ZwQuerySystemInformation since NtQuerySystemInformation was - already available. - * fhandler_proc.cc (format_proc_uptime): Replace call to - ZwQuerySystemInformation by call to NtQuerySystemInformation. - (format_proc_stat): Ditto. - * fhandler_process.cc (format_process_stat): Replace call to - ZwQueryInformationProcess by call to NtQueryInformationProcess. - (get_process_state): Ditto. - (get_mem_values): Ditto. Replace call to ZwQueryVirtualMemory by - call to NtQueryVirtualMemory. - * ntdll.h: Cleanup. Drop ZwQuerySystemInformation since - NtQuerySystemInformation was already available. Replace declarations - of ZwXXX functions by declarations of NtXXX. - * pinfo.cc (winpids::enumNT): Replace call to ZwQuerySystemInformation - by call to NtQuerySystemInformation. - -2002-05-29 Christopher Faylor - - * fhandler.cc (binmode): Default to binmode when mode is not known. - -2002-05-29 Christopher Faylor - - * include/sys/cygwin.h (EXTERNAL_PINFO_VERSION): Reinstate. - * external.cc (fillout_pinfo): Use it. - -2002-05-29 Corinna Vinschen - - * external.cc (fillout_pinfo): Use new version define. - * include/sys/cygwin.h (external_pinfo): Define - EXTERNAL_PINFO_VERSION_16_BIT and EXTERNAL_PINFO_VERSION_32_BIT - instead of just EXTERNAL_PINFO_VERSION. - -2002-05-29 Christopher Faylor - - * external.cc (fillout_pinfo): Set new version field in external_pinfo - structure. - * include/sys/cygwin.h (external_pinfo): Replace strace_file with - version field. - -2002-05-29 Corinna Vinschen - - Change internal uid datatype from __uid16_t to __uid32_t - throughout. - * cygwin.din: Export new symbols getpwuid32, getpwuid_r32, getuid32, - geteuid32, setuid32, seteuid32. - * passwd.cc (getpwuid32): New function. - (getpwuid_r32): Ditto. - * syscalls.cc (seteuid32): Ditto. - (setuid32): Ditto. - * uinfo.cc (getuid32): Ditto. - (geteuid32): Ditto. - * winsup.h (uid16touid32): New macro, correct casting from __uid16_t - to __uid32_t. - (gid16togid32): Ditto fir gids. - (getuid32): Declare. - (geteuid32): Ditto. - (getpwuid32): Ditto. - * include/sys/cygwin.h (struct external_pinfo): Add members uid32 and - gid32. - -2002-05-29 Corinna Vinschen - - * include/cygwin/socket.h: Protect some symbols against multiple - definition. - * include/netinet/ip.h: Ditto. - * include/netinet/tcp.h: Ditto. - -2002-05-29 Wu Yongwei - - * include/netinet/ip.h: Replace by BSD derived version of the file. - * include/netinet/tcp.h: Ditto. - * include/netinet/udp.h: New file. - * include/cygwin/ip.h: Remove. - -2002-05-29 Christopher Faylor - - * dtable.cc (dtable::init_std_file_from_handle): Attempt stronger - detection of invalid handle. - (handle_to_fn): Detect pathological condition where NT resets the - buffer pointer to NULL on an invalid handle. - -2002-05-28 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Properly - check for whether we should be opening the file to search for #! - characters. Set path_conv structure execability, too, when - appropriate. - -2002-05-28 Corinna Vinschen - - * security.cc (set_security_attribute): Call getegid32() instead of - getegid(). - * include/cygwin/grp.h: Declare getegid32(). - -2002-05-28 Corinna Vinschen - - Change internal gid datatype from __gid16_t to __gid32_t - throughout. - * cygwin.din: Export new symbols chown32, fchown32, getegid32, - getgid32, getgrgid32, getgrnam32, getgroups32, initgroups32, lchown32, - setgid32, setegid32, getgrent32. - * grp.cc (grp32togrp16): New static function. - (getgrgid32): New function. - (getgrnam32): Ditto. - (getgrent32): Ditto. - (getgroups32): Change name of internal function from getgroups. - (getgroups32): New function. - (initgroups32): Ditto. - * syscalls.cc (chown32): Ditto. - (lchown32): Ditto. - (fchown32): Ditto. - (setegid32): Ditto. - (setgid32): Ditto. - * uinfo.cc (getgid32): Ditto. - (getegid32): Ditto. - * include/cygwin/grp.h: Remove declaration of getgrgid() and getgrnam(). - Declare getgrgid32() and getgrnam32() instead. Declare getgid32(). - -2002-05-27 Christopher Faylor - - * autoload.cc (noload): Properly mask low order word for determining - number of bytes to pop. - -2002-05-27 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat): Minor logic - cleanup. - -2002-05-27 Christopher Faylor - - * autoload.cc (LoadFuncEx): Define via new LoadFuncEx2 macro. - (LoadFuncEx2): Adapt from LoadFuncEx. Provides control of return - value for nonexistent function. - (NtQueryObject): Declare. - (IsDebuggerPresent): Declare via LoadFuncEx2 and always return true if - not available. - * debug.h (being_debugged): Just rely on IsDebuggerPresent return - value. - * dtable.cc (handle_to_fn): New function. - (dtable::init_std_file_from_handle): Attempt to derive std handle's - name via handle_to_fn. - (dtable::build_fhandler_from_name): Fill in what we can in path_conv - structure when given a handle and path doesn't exist. - * fhandler.cc (fhandler_base::open): Don't set the file pointer here. - Use pc->exists () to determine if file exists rather than calling - GetFileAttributes again. - * fhandler.h (fhandler_base::exec_state_isknown): New method. - (fhandler_base::fstat_helper): Add extra arguments to declaration. - (fhandler_base::fstat_by_handle): Declare new method. - (fhandler_base::fstat_by_name): Declare new method. - * fhandler_disk_file (num_entries): Make __stdcall. - (fhandler_base::fstat_by_handle): Define new method. - (fhandler_base::fstat_by_name): Define new method. - (fhandler_base:fstat): Call fstat_by_{handle,name} as appropriate. - (fhandler_disk_file::fstat_helper): Accept extra arguments for filling - out stat structure. Move handle or name specific stuff to new methods - above. - (fhandler_disk_file::open): Use real_path->exists rather than calling - GetFileAttributes again. - * ntdll.h (FILE_NAME_INFORMATION): Define new structure. - (OBJECT_INFORMATION_CLASS): Partially define new enum. - (OBJECT_NAME_INFORMATION): Define new structure. - (NtQueryInformationFile): New declaration. - (NtQueryObject): New declaration. - * path.cc (path_conv::fillin): Define new method. - * path.h (path_conv::fillin): Declare new method. - (path_conv::drive_thpe): Rename from 'get_drive_type'. - (path_conv::volser): Declare new method. - (path_conv::volname): Declare new method. - (path_conv::root_dir): Declare new method. - * syscalls.cc (fstat64): Send real path_conv to fstat as second - argument. - -2002-05-24 Pierre Humblet - - * security.cc (lsa2str): New function. - (get_priv_list): Call lsa2str instead of sys_wcstombs. - -2002-05-22 Pierre Humblet - - * syscalls.cc (seteuid): Do not take allow_ntsec into account. - Attempt to use an existing or new token even when the uid - matches orig_uid, but the gid is not in the process token. - Major reorganization after several incremental changes. - (setegid): Do not take allow_ntsec into account. Minor - reorganization after several incremental changes. - -2002-05-26 Christopher Faylor - - * debug.h (being_debugged): New macro. - * dtable.cc (dtable::extend): Use new macro. - * exceptions.cc (try_to_debug): Ditto. - * strace.cc (strace::hello): Only output debugging info when we think - we're being debugged. - -2002-05-25 Robert Collins - - * winsup.h: Remove duplicate declarations of malloc_lock and - malloc_unlock. - -2002-05-24 Christopher Faylor - - Remove unneeded sync.h, where appropriate, throughout. - Remove unneeded heap.h, where appropriate, throughout. - Remove unneeded exceptions.h, where appropriate, throughout. - Remove unneeded perprocess.h, where appropriate, throughout. - -2002-05-22 Pierre Humblet - - * security.cc (create_token): Call __sec_user() instead of - sec_user() to remove dependence on allow_ntsec. Verify that - the returned sd is non-null. - -2002-05-25 Robert Collins - - * gmon.c (fake_sbrk): Correctly return -1 on failed malloc's. - -2002-05-24 Christopher Faylor - - * dtable.cc (dtable::build_fhandler_from_name): Just pass posix path - along to set_name via return_and_clear_normalized_path. - (dtable::build_fhandler): New method with const char * argument. - (dtable::reset_unix_path_name): Eliminate. - (dtable::dup_worker): Use correct build_fhandler method. - * mmap.cc (mmap_record::alloc_fh): Ditto. - * dtable.h (dtable::build_fhandler): New method. - (dtable::reset_unix_path_name): Eliminate. - * fhandler.cc (fhandler_base::set_name): Assume that unix_name has - already been cmalloced. - (fhandler_base::reset_unix_path_name): Eliminate. - (fhandler_base::~fhandler_base): Coercion for cfree. - * fhandler.h (fhandler_base::unix_path_name): Make const char *. - (fhandler_base::win32_path_name): Ditto. - (fhandler_base::reset_unix_path_name): Eliminate. - * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Accommodate - const char *ness of win32_path_name. - * fhandler_socket.cc (fhandler_socket::fstat): Accommodate new set_name - requirements. - * path.cc (path_conv::return_and_clear_normalized_path): New method. - (path_conv::clear_normalized_path): Eliminate. - (path_conv::~path_conv): Ditto. - (path_conv::check): Accommodate new build_fhandler method. - * path.h (path_conv::~path_conv): Eliminate. - (path_conv::clear_normalized_path): Ditto. - (path_conv::return_and_clear_normalized_path): Declare new method. - -2002-05-23 Christopher Faylor - - * path.cc (path_conv::check): Make sure any trailing path component is - part of potential normalized posix path. - -2002-05-23 Christopher Faylor - - * smallprint.c (__small_vsprintf): Implement '%o' after all these - years. - -2002-05-22 Christopher Faylor - - * fhandler.h (fhandler_virtual::exists): Eliminate path argument. - (fhandler_proc::exists): Ditto. - (fhandler_registry::exists): Ditto. - (fhandler_process::exists): Ditto. - * fhandler_proc.cc (fhandler_proc::exists): Ditto. Use built-in name. - * fhandler_process.cc (fhandler_process::exists): Ditto. - (fstat): Ditto. - * fhandler_registry.cc (fhandler_registry::exists): Ditto. - (fhandler_registry::fstat): Ditto. - * fhandler_virtual.cc (fhandler_virtual::opendir): Ditto. - * path.cc (path_conv::check): Ditto. Add debugging. - -2002-05-22 Christopher Faylor - - * syscalls.cc (dup): Always call dup2 for error handling. - -2002-05-22 Corinna Vinschen - - * include/cygwin/types.h: Revert previous patch. - -2002-05-22 Corinna Vinschen - - * include/cygwin/types.h: Define pthread stuff only if _POSIX_THREADS - is defined. - -2002-05-19 Pierre Humblet - - * security.cc (open_local_policy): Initialize lsa to - INVALID_HANDLE_VALUE instead of NULL. - (get_logon_server_and_user_domain): Test for INVALID_HANDLE_VALUE - instead of NULL. - (create_token): Both of the above. - -2002-05-18 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat): Make handling of - nlink consistent for remote files. - -2002-05-18 Christopher Faylor - - * path.cc (path_conv::check): Always set executable bit for executable - extension. - -2002-05-17 Christopher Faylor - - * fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with - high order part of 64 bit address on OS's which do not support that - kind of operation. Otherwise Windows 95 will become confused. - -2002-05-16 Pierre Humblet - - * fhandler_raw.cc (fhandler_dev_raw::open): Replace set_errno() - by __seterrno_from_win_error(). - * security.cc (open_local_policy): Ditto. - (get_lsa_srv_inf): Ditto. - (get_user_groups): Ditto. - (get_user_primary_group): Ditto. - (create_token): Ditto. - (subauth): Ditto. - -2002-05-17 Corinna Vinschen - - * times.cc (utimes): Use FILE_WRITE_ATTRIBUTES even on 9x/Me when - opening file for writing timestamp. - * wincap.cc: Remove flag has_specific_access_rights. - * wincap.h: Ditto. - -2002-05-13 Pierre Humblet - - * syscalls.cc (seteuid): Set default dacl in process token. - Replace in-line code by call to verify_token(). - (setegid): Reverse change from 2002-01-21. Add call to - RevertToSelf and set primary group in impersonation token. - * security.cc (create_token): Store pgrpsid in token security - descriptor, except if it already appears in my_grps. - Use sec_acl() in place of get_dacl(). - (verify_token): Create from code in seteuid(), with tighter checks. - (get_dacl): Deleted. - (get_group_sidlist): Add argument to indicate if pgrpsid is already - in the groups. - * security.h: Define verify_token(). - * autoload.cc: Load GetKernelObjectSecurity(). - -2002-05-13 Mark Bradshaw - - * cygwin.din: Add strlcat and strlcpy. - * include/cygwin/version.h: Increment API minor version number. - -2002-05-09 Pierre Humblet - - * shared.cc (__sec_user): Split into sec_acl() and call orig_sid(). - (sec_acl): Create from part of __sec_user(), except creator/owner. - * security.h: Define sec_acl() and MAX_DACL_LEN. - -2002-05-12 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::open): Avoid using - O_DIROPEN when OS doesn't support it. Return proper errno in that - case. - -2002-05-12 Christopher Faylor - - * syscalls.cc (_read): Change error to EBADF if attempt to read from a - non-readable fd. - -2002-05-11 Christopher Faylor - - * fhandler.h (executable_states): For now, make dont_care_if_executable - equivalent to not_executable. - * sys/mount.h: Define MOUNT_NOTEXEC. - * path.h (fs_info): New class. - (path_conv): Move fs-specific fields to new 'fs' structure. - (path_conv::update_fs_info): Move to fs_info and rename to just 'update'. - * path.cc (fs_info::update): Ditto. Return 'true' if successful. - (fillout_mntent): Add ',noexec' to list of reported options. - -2002-05-11 Christopher Faylor - - * fhandler_virtual.cc (fhandler_virtual::close): Quiet a compiler - warning. - -2002-05-10 Christopher January - - * autoload.cc: Add dynamic load statements for - 'ZwQueryInformationProcess' and 'ZwQueryVirtualMemory'. - * fhandler.h: Change type of bufalloc and filesize members of - fhandler_virtual from int to size_t. Change type of position member - from __off32_t to __off64_t. Add new fileid member to fhandler_virtual - class. Make seekdir take an __off64_t argument. Make lseek take an - __off64_t argument. Add fill_filebuf method to fhandler_virtual. Add - fill_filebuf method to fhandler_proc. Add fill_filebuf method to - fhandler_registry. Add fill_filebuf method to fhandler_process. Add - saved_pid and saved_p members to fhandler_process. - * fhandler_proc.cc (proc_listing_array): Add 'loadavg', 'meminfo', and 'stat'. - (proc_fhandlers array): Ditto. - (fhandler_proc::open): Use fill_filebuf to flesh out the file contents. - (fhandler_proc::fill_filebuf): New method. - (fhandler_proc::format_proc_meminfo): Ditto. - (fhandler_proc::format_proc_stat): Ditto. - (fhandler_proc::format_proc_uptime): Ditto. - * fhandler_process.cc (process_listing): Add 'stat' and 'statm'. - (fhandler_process::fstat): Find the _pinfo structure for the process - named in the filename. Return ENOENT if the process is no longer - around. Set the gid and uid fields of the stat structure. - (fhandler_process::open): Store pid and pointer to _pinfo structure in - saved_pid and saved_p respectively. Use fill_filebuf to flesh out file - contents. - (fhandler_proc::fill_filebuf): New method. - (format_process_stat): New function. - (format_process_status): Ditto. - (format_process_statm): Ditto. - (get_process_state): Ditto. - (get_mem_values): Ditto. - * fhandler_registry.cc (fhandler_registry::seekdir): Change argument - type from __off32_t to __off64_t. - (fhandler_registry::fill_filebuf): New method. - * fhandler_virtual.cc (fhandler_virtual::seekdir): Change argument type - from __off32_t to __off64_t. - (fhandler_virtual::lseek): Ditto. - (fhandler_virtual::fill_filebuf): New method. - (fhandler_virtual::fhandler_virtual): Initialise fileid to -1. - * wincap.cc: Set flag has_process_io_counters appropriately. - * wincap.h: Add flag has_process_io_counters. - -2002-05-09 Christopher Faylor - - * syscalls.cc (_write): Change error to EBADF if attempt to write to a - non-writeable fd. - -2002-05-08 Corinna Vinschen - - * cygheap.h (class cygheap_user): Add member `orig_psid'. - Add method `orig_sid()'. - * cygheap.cc (cygheap_user::set_sid): Maintain orig_psid. - -2002-04-28 Norbert Schulze - - * localtime.cc (tzsetwall): Use wildabbr if generated timezone name - length < 3. - -2002-05-05 Pierre Humblet - - * spawn.cc (spawn_guts): Move call to set_process_privilege() - to load_registry_hive(). - * registry.cc (load_registry_hive): ditto. - * fork.cc (fork_parent): Call sec_user_nih() only once. - -2002-05-04 Christopher January - - * path.h (path_conv::path_conv): Initialise normalized_path to NULL. - -2002-05-03 Christopher Faylor - - * net.cc (getdomainname): Change second argument of getdomainname to - size_t. - -2002-05-03 Christopher January - - * fhandler_proc.cc (proc_listing): Add '.' and '..' to directory - listing. - (fhandler_proc::open): Change use of mode to flags. If the file does - not exist already, fail with EROFS if O_CREAT flag is set. Change - EROFS error to EACCES error when writing to a file. Use cmalloc to - allocate memory for filebuf. - (fhandler_proc::close): Use cfree to free filebuf. - (fhandler_proc::get_proc_fhandler): Properly detect attempts to access - unknown subdir. - * fhandler_process.cc (process_listing): Add '.' and '..' to directory - listing. - (fhandler_process::open): Use cmalloc to allocate memory for filebuf. - (fhandler_process::close): Use cfree to free filebuf. - * fhandler_registry.cc (registry_listing): Add . and '..' to directory - listing. - (fhandler_registry::open): Move check for open for writing before - open_key. Use cmalloc to allocate memory for filebuf. - (fhandler_registry::close): Use cfree to free filebuf. - (fhandler_registry::telldir): Use lower 16 bits of __d_position as - position in directory. - (fhandler_registry::seekdir): Ditto. - * fhandler_virtual.cc (fhandler_virtual::write): Change EROFS error to - EACCES error. - (fhandler_virtual::open): Set the NOHANDLE flag. - (fhandler_virtual::dup): Add call to fhandler_base::dup. Allocate - child's filebuf using cmalloc. Copy filebuf from parent to child. - (fhandler_virtual::close): Use cfree to free filebuf. - (fhandler_virtual::~fhandler_virtual): Ditto. - (from Chris Faylor ). - (fhandler_registry::readdir): Add support for '.' and '..' files in - subdirectories of /proc/registry. - * path.cc (path_conv::check): Do not return ENOENT if a file is not - found in /proc. - -2002-05-02 Christopher Faylor - - * fhandler_proc.cc (fhandler_proc::fstat): Use fhandler name rather - than path_conv name. - (fhandler_proc::open): Ditto. - * fhandler_process.cc (fhandler_process::fstat): Use fhandler name - rather than path_conv name. - (fhandler_process::open): Ditto. - * fhandler_registry.cc (fhandler_registry::fstat): Use fhandler name - rather than path_conv name. - (fhandler_registry::open): Ditto. - * path.cc (path_conv::check): Don't copy posix path when virtual. - (mount_info::conv_to_win32_path): Don't zero string when isproc. Just - derive normal windows path. - - * path.h (path_conv::clear_normalized_path): Declare new method. - * path.cc (path_conv::clear_normalized_path): Define new method. - * dtable.cc (build_fhandler_from_name): Clear normalized path when - finished to conserve space. - -2002-05-02 Christopher Faylor - - * fhandler_proc.cc (fhandler_proc::fstat): Prime with information from - fhandler_base::fstat. Use defines rather than constants for permission - settings. - -2002-04-30 Eric Blake - - * path.cc (hash_path_name): Improve hash function strength. - -2002-05-02 Robert Collins - - * thread.cc (__pthread_cond_dowait): Fix a race on signalling from a - thread woken by the same condition variable it's signalling on. Thanks - to Michael Beach for the report and test case. - -2002-05-02 Christopher Faylor - - * path.h (pathconv_arg): Add PC_POSIX. - (path_conv): Add normalized_path field. - * path.cc (path_conv::~path_conv): New destructor. - (path_conv::check): Set normalized_path, where appropriate. - * dtable.cc (build_fhandler_from_name): Use normalized path from - path_conv. - * syscalls.cc (chroot): Ditto. - - * cygheap.h: Remove path_prefix_p declaration. - -2002-02-26 Christopher January - Christopher Faylor (minor fixups) - - * Makefile.in: Add fhandler_proc.o, fhandler_registry.o, - fhandler_process.o and fhandler_virtual.o. - * dtable.cc (dtable::build_fhandler): Add entries for FH_PROC, - FH_REGISTRY and FH_PROCESS. Set unix_name to the normalized posix - path. - * fhandler.h: Add constants for FH_PROC, FH_REGISTRY and FH_PROCESS. - Add class declarations for fhandler_virtual, fhandler_proc, - fhandler_registry and fhandler_virtual. Update fhandler_union - accordingly. - * fhandler_proc.cc: New file. Add implementation for fhandler_proc. - * fhandler_virtual.cc: New file. Add implementation for - fhandler_virtual. - * fhandler_process.cc: New file. Add implementation for - fhandler_process. - * fhandler_registry.cc: New file. Add implementation for - fhandler_registry. - * path.cc (isproc): New macro. - (isvirtual_dev): Ditto. - * path.cc (path_conv::check): Add check for virtual devices. - * path.cc (mount_info::conv_to_win32_path): Convert paths in /proc to - empty Win32 paths. - * path.cc (chdir): Replace check for FH_CYGDRIVE with more generic - isvirtual_dev macro. Force setting of posix path for virtual - fhandlers. - * path.h (path_prefix_p): Declare. - - -Wed May 1 16:06:02 2002 Jason Tishler - - * include/cygwin/types.h: Include . - -Wed Apr 17 11:27:04 2002 Jason Tishler - - * security.cc (get_lsa_srv_inf): Prevent extraneous backslashes for - the NT Domain case. - -2002-04-12 Corinna Vinschen - - * net.cc (cygwin_accept): Set socket type for accepted socket. - (socketpair): Set socket type for both sockets. - -2002-04-12 Egor Duda - - * fhandler.h (class fhandler_socket): New member to store socket type. - (fhandler_socket::get_socket_type): Access it. - (fhandler_socket::set_socket_type): Ditto. - * net.cc (cygwin_socket): Store socket type. - (cygwin_connect): Disable security checks for connectionless sockets. - (cygwin_accept): Ditto. - -2002-04-09 Mark Bradshaw - - * cygwin.din: Add strptime. - * include/cygwin/version.h: Increment API version number. - -2002-04-09 Corinna Vinschen - - * fork.cc (fork_child): Call fixup_mmaps_after_fork() somewhat earlier. - -2002-04-09 Corinna Vinschen - - * fhandler.cc (fhandler_base::open): Set read-only bit in - file_attributes when adequate. - -2002-03-28 Christopher Faylor - - * times.cc (gettimeofday): Fix typo in previous patch. - -2002-03-27 Wu Yongwei - - * times.cc (gettimeofday): Revert to setting timezone info if tz != - NULL. - -2002-03-21 Christopher Faylor - - * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Always set - st_[ug]id to value derived from get_file_attributes. - -2002-03-21 Christopher Faylor - - * spawn.cc (find_exec): Return input if file not found. - -2002-03-19 Boris Schaeling - - * poll.cc (poll): Add support for invalid descriptors. - -2002-03-15 Robert Collins - - * fhandler.h (fhandler_termios::lseek): Override lseek. - * fhandler_termios.cc (fhandler_termios::lseek): Implement this. - -2002-03-15 Christopher Faylor - - * cygserver.cc: Include stdlib.h for exit declaration. - * threaded_queue.cc: Ditto. - -2002-03-15 Christopher Faylor - - * pinfo.cc (pinfo::init): Use PID_ALLPIDS flag to control when a - redirected block should be marked as nonexistent. - (winpids::add): Use PID_ALLPIDS when looking for all pids. - * cygwin.h (PID_ALLPIDS): New enum element. - -2002-03-15 Corinna Vinschen - - * glob.c (stat32_to_STAT): New function. - (g_lstat): Call user space functions always with 32 bit struct stat - as a workaround. - (g_stat): Ditto. - * include/glob.h (struct glob): Don't prototype function pointers - when compiling Cygwin. - -2002-03-14 Christopher Faylor - - * pinfo.cc (pinfo::init): Properly handle execed process stub when - PID_NOREDIR is specified. - -2002-03-13 Boris Schaeling - - * poll.cc (poll): Remove variable open_fds. Rearrange and add code to - fix settings of revents. - -2002-03-13 Corinna Vinschen - - * mmap.cc (mmap_record::map_map): Return -1 if VirtualProtect fails. - (list::erase): New method with no argument. Erase latest record - added. - (mmap64): Fail if map_map() fails. - -2002-03-12 Corinna Vinschen - - * sysconf.cc (sysconf): Fix condition. - -2002-03-11 Corinna Vinschen - - * mmap.cc (msync): Check area given by addr and len for being a - contigeous mmap'd region. - -2002-03-11 Corinna Vinschen - - * fork.cc (fork_child): Call fixup_mmaps_after_fork() before - closing parent process handle. Call fixup_mmaps_after_fork() - with parent process handle as parameter. - * mmap.cc (mmap_record::access): New method. - (fixup_mmaps_after_fork): Take process handle as parameter. - In case of FILE_MAP_COPY access, copy valid memory regions to child. - * pinfo.h (fixup_mmaps_after_fork): Change prototype accordingly. - -2002-03-07 Corinna Vinschen - - * autoload.cc (NetGetDCName): Add symbol. - (NetServerEnum): Remove symbol. - * security.cc (get_lsa_srv_inf): Call NetGetDCName() instead of - NetServerEnum() since it's faster. Don't call it at all if machine - is not a domain member. - -2002-03-06 Christopher Faylor - - * path.cc (normalize_posix_path): Avoid runs of '.'s > 2. - -2002-03-05 Christopher Faylor - - * errno.cc: Change EPERM associated text to "Operation not permitted" - throughout. - -2002-03-05 Christopher Faylor - - * fhandler_socket.cc (fhandler_socket::close): Respond to signals while - looping, waiting for socket to close. Superstitiously clear last error - when WSAEWOULDBLOCK. - -2002-03-05 Robert Collins - - * cygserver_transport_pipes.cc (transport_layer_pipes::transport_layer_pipes): - Always init - until static members work correctly. - * shm.cc (shmget): Initialize the security descriptor - thanks Corinna! - * include/sys/ipc.h: Make the ipc control constants partitioned off from the sem - control constants. - -2002-03-04 Christian Lestrade - - * include/sys/termios.h: Define _POSIX_VDISABLE. Define CCEQ macro. - * fhandler_termios.cc: Include . - (line_edit): Recognize disabled c_cc[] chars. Ignore VDISCARD when - not in ICANON mode. - -2002-03-04 Dmitry Timoshkov - - * syscalls.cc (truncate64): Use ftruncate64 directly to not lose - upper 32 bits. - -2002-03-04 Robert Collins - - * cygserver_shm.cc (delete_shmnode): New function. - (client_request_shm::serve): Use it. - -2002-03-04 Robert Collins - - * cygserver_shm.cc (client_request_shm::serve): Implement SHM_DETACH. - * shm.cc (shmdt): Implement. - -2002-03-04 Robert Collins - - * cygserver_shm.cc: Run indent. - (deleted_head): New global for storing shm id's pending deletion. - (client_request_shm::serve): Return ENOSYS for invalid request types. - Implement SHM_DEL - delete a shm id. - * cygserver_shm.h (SHM_DEL): New type value. - * shm.cc (delete_inprocess_shmds): New function, does what it's name implies. - (shmctl): Implement shm_rmid control type. - -2002-03-04 Robert Collins - - * Makefile.in (install): Remove install-bin to allow make install to work. - -2002-03-03 Robert Collins - - * shm.cc (shmat): Prevent a compile error. - (shmdt): Set errno as this function is incomplete. - -2002-02-28 Christopher Faylor - - * times.cc: Remove if 0'd code. Clean up slightly. - -2002-02-28 Robert Collins - - * Merge cygwin_daemon into head minus the new shm and ipc exports. - -2002-02-28 Robert Collins - - * fhandler_tty.cc (fhandler_tty_slave::open): More debugging. - (fhandler_tty_slave::read): Fix printf type for the handle. - * tty.cc (tty::common_init): Add a FIXME for security. - -2002-01-29 Robert Collins - - * Makefile.in (OBJS): Remove duplicate localtime.o. - -2002-01-17 Robert Collins - - * cygserver.cc (check_and_dup_handle): Consolidate the two variants for - simplicity. - Add Some basic debug output. - (client_request_attach_tty::serve): Use the new debug_printf for clarity. - Mark the duplicated handles as inheritable - fixup_after_fork() doesn't reopen - tty's. - -2002-01-16 Robert Collins - - * cygserver.cc (transport): Correct scope. - (client_request_attach_tty::serve): Add more debug information. - Fix erroneous use of transport instead of conn. - * cygserver_transport_pipes.cc (transport_layer_pipes::close): More debug. - (transport_layer_pipes::read): Ditto. - (transport_layer_pipes::write): Ditto. - (transport_layer_pipes::impersonate_client): Ditto. - -Mon Oct 8 7:41:00 2001 Robert Collins - - * cygserver.cc (server_request::process): Rename client_request_shm_get to - client_request_shm. - * cygserver_process.cc (process_cache::add): Rename to add_task. - Use process_cleanup instead of process_request. - (process_cache::remove_process): New method. - (process::process): Initialize new members. - (process::~process): New member. - (process::cleanup): New method. - (process::add_cleanup_routine): New method. - (process_request::process): Rename to process_cleanup. - Call the process object's cleanup method and then delete it. - (process_process_param::request_loop): Remove the signalling process. - * cygserver_shm.cc: Globally rename client_request_shm_get to client_request_shm. - (client_request_shm_get::serve): Handle attach request counting. - * cygserver_shm.h: Globally rename client_request_shm_get to client_request_shm. - (class shm_cleanup): New class. - * shm.cc: Globally rename client_request_shm_get to client_request_shm. - (client_request_shm::client_request_shm): New constructor for attach requests. - (shmat): Use it. - * include/cygwin/cygserver_process.h (class process_request): Rename to - process_cleanup. - (class cleanup_routine): New class. - (class process): New members and methods to allow calling back when the process - terminates. - -Thu Oct 4 14:12:00 2001 Robert Collins - * cygserver.cc (request_loop): Make static. - (main): Use new cache constructor syntax. - Start cache worker threads. - Cleanup the cache at shutdown. - * cygserver_process.cc: Run indent. - (process_cache::process_cache): Add a trigger to use when adding a process. - (process_cache::process): Move process_entry to process. - Insert at the end of the list. - Trigger the request loop when new process's inserted. - (process_cache::process_requests): Do it. - (process_cache::add): New method. - (process_cache::handle_snapshot): New method. - (process::process): Merge in the process_entry fields. - (process::handle): Make a stub function. - (process::exit_code): New method. - (process_request::process): New method. - (process_process_param::request_loop): New method. - * cygserver_shm.cc: New header dependency - threaded_queue.h. - * threaded_queue.cc (threaded_queue::cleanup): Clearer messages. - (queue_process_param::stop): Short spinlock on interruptible threads. - * threaded_queue.h (class threaded_queue): New constructor. - * include/cygwin/cygserver_process.h (process_request): New class. - (process_entry): Remove. - (process): Merge in process_entry. - (process_cache): Inherit from threaded_queue. - -Tue Oct 2 23:24:00 2001 Robert Collins - - * cygserver.cc (class server_process_param): Use new constructor syntax. - * cygserver_process.cc (process_cache::~process_cache): New function. - * threaded_queue.cc: Define condition debug_printf. - Run indent. - (threaded_queue::cleanup): Move queue_process_param guts to a method. - (threaded_queue::process_requests): Ditto. - (queue_process_param::queue_process_param): New method. - (queue_process_param::~queue_process_param): Ditto. - (queue_process_param::start): Ditto. - (queue_process_param::stop): Ditto. - * threaded_queue.h (class queue_process_param): Add support for - interruptible request loops. - * cygwin/include/cygwin/cygserver_process.h (class process_cache): Add - destructor. - -Tue Oct 2 23:24:00 2001 Robert Collins - - * cygserver_client.cc: New flag allow_daemon to disable the daemon completely. - (cygserver_request): Check it. - (cygserver_init): Ditto. - * environ.cc (parse_thing): Add (no)daemon option. - -Tue Oct 2 23:00:00 2001 Robert Collins - - * shm.cc: Update to handle include changes from HEAD. - -Tue Oct 2 16:06:00 2001 Robert Collins - - * Makefile.in: Remove cygserver_shm.o from cygwin1.dll. - Rename cygserver_shm_outside.o to cygserver_shm.o. - * cygserver.cc (server_request::process): Use the new client_request - constructor. - * cygserver_client.cc: Remove the #ifdef's stubs for the server method - within cygwin. - (client_request_attach_tty::client_request_attach_tty): Use the new - client_request constructor. - (client_request_shutdown::client_request_shutdown): Ditto. - (client_request::client_request): Ditto. - * cygserver_shm.cc (client_request_shm_get::serve): Remove the - #ifdef'd stub for in-cygwin builds. - (client_request_shm_get::client_request_shm_get): Use the new - client_request constructor, and remove the in-cygwin variants. - * cygserver_shm.h (class client_request_shm_get): #ifndef test the - serve method - it's only used in cygserver. - * shm.cc (client_request_shm_get::client_request_shm_get): New function. - * include/cygwin/cygserver.h (request_header): New constructor. - (class client_request): Use it. - New constructor accepting the header size. - #ifndef test the server method - it's only used within cygserver. - (client_request_get_version): #ifdef test the server method. - (client_request_shutdown): Ditto. - (client_request_attach_tty): Ditto. - -Tue Oct 2 9:57:00 2001 Robert Collins - - * Makefile.in: add threaded_queue.o to cygserver.exe. - * cygserver.cc: Include threaded_queue.h - (class server_request): Inherit from queue_request. - (class server_process_param): Inherit from queue_process_param. - (class server_request_queue): Inherit from threaded_queue. - (request_loop): Adjust for new types. - (server_request_queue::process_requests): Remove guts to - threaded_queue::process_requests. - (server_request::server_request): Adjust for new types. - (worker_function): Delete. - (server_request_queue::create_workers): Delete. - (server_request_queue::cleanup): Delete. - (server_request_queue::add): Move guts to threaded_queue::add. - * threaded_queue.cc: New file. - * threaded_queue.h: New file. - -Mon Oct 1 12:38:00 2001 Robert Collins - - * cygserver.cc (client_request::serve): New function. - * cygserver_process.cc: Inlude for pthread_once. - (process_cache::process_cache): Initialise a crtiical section for write access. - (process_cache::process): Use the critical section. Also add missing entries to - the cache. - (do_process_init): New function to initalise class process static variables. - (process::process): Ensure that the process access critical section is - initialised. - (process::handle): Close the handle of old process's when they have terminated - and we are returning the handle for a process with the same pid. - * cygserver_shm.cc: Run indent. - Include cygserver_process.h to allow process cache functionality. - (client_request_shm_get::serve): New parameter for process cache support. - Use the process cache, not OpenProcess to get a handle to the originating process. - Fix a handle leak with token_handle. - * cygserver_shm.h (class client_request_shm_get): Update ::serve for process - cache support. - * cygserver_transport_pipes.cc: Redefine debug_printf to be conditional on DEBUG. - * include/cygwin/cygserver.h: Do not implement client_request::serve in the - header. - * include/cygwin/cygserver_process.h (class process_cache): Add a write access - critical section to prevent races when requests from a multithreaded - application arrive. - -Sun Sep 30 23:41:00 2001 Robert Collins - - * Makefile.in: Add cygserver_process.o to cygserver.exe. - * cygserver.cc: Include signal.h and cygwin_version.h. - Define debug_printf as a macro. - Define DEBUG to a value. - (client_request_attach_tty::serve): Add beginning of process cache support. - Change from #ifdef DEBUG to work with new DEBUG style. - (client_request_get_version::serve): Add beginning of process cache support. - (class server_request): New prototype for support of process cache. - (class queue_process_param): New class to allow request loop threading. - (class server_request_queue): Add beginning of process cache support. - Allow request loop threading. - (request_loop): Thread function for request loops. - (server_request_queue::process_requests): Initiator for threaded request loops. - (client_request_shutdown::serve): Add beginning of process cache support. - (server_request::server_request): Ditto. - (server_request::process): Use debug_printf. Add beginning of process cache - support. - (server_request_queue::cleanup): Kill off any request loop threads. - (server_request_queue::add): Add beginning of process cache support. - (handle_signal): Trigger a shutdown. - (main): Print out some useful info at startup - version, date time. - Add process cache support. - Spawn a separate thread for the transport request loop, thus allowing concurrent - support for multiple transports. - * cygserver_client.cc (client_request_get_version::serve): Add process cache - support. - (client_request_attach_tty::serve): Add process cache support. - (client_request_shutdown::serve): Add process cache support. - * cygsserver_process.cc: New file with the process cache support. - * cygserver_shm.cc: Redefine debug_printf to allow conditional output. - * cygwin.din: Export shmdt(). - * shm.cc: Run indent. - Update FIXME's. - (shmdt): New function. - * include/cygwin/cygserver.h (class client_request): Add process cache support. - (class client_request_get_version): Ditto. - (class client_request_shutdown): Ditto. - (class client_request_attach_tty): Ditto. - * include/cygwin/cygserver_process.h: New header for process cache support. - -Sun Sep 30 8:52:00 2001 Robert Collins - - * include/cygwin/cygserver_transport.h: Add copyright header. - * include/cygwin/cygserver_transport_pipes.h: Ditto. - * include/cygwin/cygserver_transport_sockets.h: Ditto. - -Sat Sep 29 20:40:00 2001 Robert Collins - - * Makefile.in: Add cygserver_transport_sockets.o to DLL_OFILES. - Add cygserver_transport_sockets_outside.o to cygserver.exe. - * cygserver.cc: Include new include files. - * cygserver_client.cc: Ditto. - * cygserver_shm.h: No need to include now. - * cygerver_transport.cc: Include new include files. - (transport_layer_base::transport_layer_base): Strip back to a stub. - (transport_layer_base::listen): Ditto. - (transport_layer_base::accept): Ditto. - (transport_layer_base::close): Ditto. - (transport_layer_base::read): Ditto. - (transport_layer_base::write): Ditto. - (transport_layer_base::connect): Ditto. - * cygserver_transport_pipes.cc: Include new header - "cygwin/cygserver_transport_pipes.h". - * cygserver_transport_sockets.cc: New file. - * dcrt0.cc: No need to include now. - * fhandler_tty.cc: Ditto. - * tty.cc: Ditto. - * include/cygwin/cygserver_transport.h: Strip the base class to a stub. - Remove the cygserver_transport_pipes class. - * include/cygwin/cygserver_transport_pipes.h: New file. - * include/cygwin/cygserver_transport_sockets.h: New file. - -Tue Sep 25 16:22:00 2001 Robert Collins - - * autoload.cc: Add dynamic load statement for 'ImpersonateNamedPipeClient'. - * Makefile.in: Add new object files, and build instructions for cygserver.exe. - * cygwin.din: Export ftok, shmat, shmctl and shmget. - * dcrt0.cc: Additional includes for cygserver support. - (dll_crt0_1): Initialise the cygserver client. - * fhandler.h (fhandler_tty): New method cygserver_attach_tty. - * fhandler_tty.cc: Additional includes for cygserver support. - (fhandler_tty_slave::open): Attempt to use the cygserver when obtaining - handles from the parent process. On failure or 9x use the current method. - (fhandler_tty_slave::cygserver_attach_tty): New function. - * fork.cc (fork_child): Fixup shm memory mapped areas. - * pinfo.h: Declare fixup_shms_after_fork(). - * security.h: Declare alloc_sd(). - * tty.cc: Additonal includes to support cygserver. - (tty::common_init): Don't allow others to open us if the cygserver is running. - * winsup.h: Declare cygserver_running. - * cygserver.cc: New file. - * cygserver_client.cc: New file. - * cygserver_shm.cc: New file. - * cygserver_shm.h: New file. - * cygserver_transport.cc: New file. - * cygserver_transport_pipes.cc: New file. - * ipc.cc: New file. - * shm.cc: New file. - * include/cygwin/cygserver.h: New file. - * include/cygwin/cygserver_transport.h: New file. - * include/sys/ipc.h: New file. - * include/sys/shm.h: New file. - -2002-02-28 Robert Collins - - * thread.cc (semaphore::TryWait): Set errno as required by posix 1003.1. - (__sem_wait): Ditto. - (__sem_trywait): Ditto. - -2002-02-27 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-02-23 Corinna Vinschen - - * cygwin.din (fstat64): New symbol. - (ftruncate64): Ditto. - (lseek64): Ditto. - (lstat64): Ditto. - (mmap64): Ditto. - (seekdir64): Ditto. - (stat64): Ditto. - (telldir64): Ditto. - (truncate64): Ditto. - * dir.cc (telldir64): New function. - (telldir): Call telldir64(). - (seekdir64): New function. - (seekdir): Call seekdir64(). - * fhandler.h: Redefine all methods using __off32_t to use __off64_t. - * fhandler.cc: Use __off64_t and struct __stat64 throughout. - * fhandler_clipboard.cc: Ditto. - * fhandler_disk_file.cc: Ditto. - * fhandler_dsp.cc: Ditto. - * fhandler_floppy.cc: Ditto. - * fhandler_mem.cc: Ditto. - * fhandler_random.cc: Ditto. - * fhandler_socket.cc: Ditto. - * fhandler_tape.cc: Ditto. - * fhandler_zero.cc: Ditto. - * pipe.cc: Ditto. - * glob.c: Ditto, call lstat64 and stat64 in Cygwin. - * mmap.cc: Use __off64_t throughout. - (mmap64): New function. - * sec_acl.cc (acl_worker): Use struct __stat64, call stat64 and lstat64. - * syscalls.cc (lseek64): New function. - (stat64_to_stat32): Ditto. - (fstat64): Ditto. - (stat64): Ditto. - (lstat64): Ditto. - (ftruncate64): Ditto. - (truncate64): Ditto. - (_fstat): Call fstat64. - (_stat): Call stat64. - (cygwin_lstat): Rename to avoid declaration problem. Call lstat64. - (stat_worker): Use struct __stat64. - (access): Ditto. - (ftruncate): Call ftruncate64. - (truncate): Call truncate64. - * wincap.cc: Set flag has_64bit_file_access appropriately. - * wincap.h: Add flag has_64bit_file_access. - * winsup.h (ILLEGAL_SEEK): Define as __off64_t. - (stat_dev): Declare using struct __stat64. - (stat_worker): Ditto. - * include/cygwin/stat.h (struct __stat32): Define if compiling Cygwin. - (struct __stat64): Ditto. - (struct stat): Revert definition with explicitly sized datatypes. - Eliminate sized field names. - * include/cygwin/types.h (blksize_t): New type. - (__blkcnt32_t): Ditto. - (__blkcnt64_t): Ditto. - (blkcnt_t): Ditto. - -2002-02-22 Christopher Faylor - - * sync.h (new_muto): Just accept an argument which denotes the name of - the muto. Use this argument to construct static storage. - * cygheap.cc (cygheap_init): Reflect above change. - * exceptions.cc (events_init): Ditto. - * malloc.cc (malloc_init): Ditto. - * path.cc (cwdstuff::init): Ditto. - * cygheap.h (cwdstuff): Change name of lock element to make it less - generic. - * path.cc (cwdstuff::get_hash): Ditto. - (cwdstuff::get_initial): Ditto. - (cwdstuff::set): Ditto. - (cwdstuff::get): Ditto. - * sigproc.cc (proc_subproc): Ditto. - - * debug.cc (lock_debug): Change to method. Use method rather than - macro throughout. - - * tty.h (tty_min::kill_pgrp): Declare new method. - * fhandler_termios.cc (tty_min::kill_pgrp): New method. - (fhandler_termios::line_edit): Use new method for killing process. - * dcrt0.cc (do_exit): Ditto. - - * dtable.cc (dtable::get_debugger_info): New method for inheriting - dtable info from a debugger. - * tty.cc (tty_init): Attempt to grab file handle info from parent - debugger, if appropriate. - - # dtable.cc (dtable::stdio_init): Make this a method. - (dtable::init_std_file_from_handle): Don't set fd unless it's not open. - (dtable::build_fhandler_from_name): Move name setting to - dtable::build_fhandler. - (dtable::build_fhandler): Add win32 name parameter. - * dcrt0.cc (dll_crt0_1): Change to use dtable stdio_init. - * dtable.h (dtable): Reflect build_fhandler parameter change. - * mmap.cc (mmap_record::alloc_fh): Don't set name parameter in - build_fhandler. - * net.cc (fdsock): Remove set_name call since it is now handled by - build_fhandler. - - * sigproc.cc (proc_subproc): Release muto as early as possible. - -2001-02-22 Corinna Vinschen - - * smallprint.c (rn): Allow long long values. - (__small_vsprintf): Add 'D', 'U' and 'X' formats for long long - parameters. - -2002-02-19 Christopher Faylor - - * fhandler.cc (fhandler_base::puts_readahead): Remove default parameter - setting. Newer gcc's complain about this. - (fhandler_base::set_readahead_valid): Ditto. - * fhandler_dsp.cc (Audio::open): Ditto. - (fhandler_dev_dsp::open): Ditto. - -2002-02-19 Christopher Faylor - - * fork.cc (fork_parent): Use sec_user_nih to control process/thread - inheritance/permission. - * spawn.cc (spawn_guts): Ditto. - * security.cc (create_token): Initialize token so that it is not tested - for bogus value later. Use sec_user to control process/thread - creation. - * security.h (__sec_user): Rename declaration from sec_user. - (sec_user_nih): Declare here as inline function wrapper for __sec_user. - (sec_user): Ditto. - * sigproc.cc (czombies): Allocate a character array for zombies to - avoid constructor overhead - (extremely hackish, I know). - (cpchildren): Ditto. - (pchildren): New define. - (zombies): Ditto. - (getsem): Use sec_user_nih to control semaphore inheritance/permission. - -2002-02-16 Christopher Faylor - - * times.cc (hires::prime): Restore thread priority on failure - condition. - - * uinfo.cc (uinfo_init): Use more robust method for determining if - process was invoked from a non-cygwin process. - - * sync.h (muto::init): Eliminate "inheritance" parameter. - (new_muto): Reflect removal of parameter. - * sync.cc (muto::init): Ditto. - * cygheap.cc (cygheap_init): Ditto. - * debug.cc (threadname_init): Ditto. - * exceptions.cc (events_init): Ditto. - * malloc.cc (malloc_init): Ditto. - * path.cc (cwdstuff::init): Ditto. - * sigproc.cc (sigproc_init): Ditto. - - * grp.cc (group_lock): Use different method for locking with static - member. - (read_etc_group): REALLY ensure that read lock mutex is released. - * passwd.cc (passwd_lock): Use different method for locking with static - member. - (read_etc_passwd): REALLY ensure that read lock mutex is released. - - * shared.cc (sec_user): Correct reversed inheritance test. - -2002-02-15 Christopher Faylor - - * hires.h (hires::usecs): Rename from utime. Accept an argument. - * strace.cc (strace::microseconds): Use hires class for calculating - times. - * sync.h (new_muto): Use NO_COPY explicitly in declaration. - * times.cc (gettimeofday): Reflect change in usecs argument. - (hires::usecs): Ditto. Changed name from utime. - * winsup.h (NO_COPY): Add nocommon attribute to force setting aside - space for variable. - * regcomp.c (REQUIRE): Add a void cast to bypass a warning. - -2002-02-15 Christopher Faylor - - * hires.h: New file. - * times.cc (gettimeofday): Use hires class for calculating current time. - (hires::prime): New method. - (hires::utime): Ditto. - -2002-02-14 Christopher Faylor - - * include/sys/cygwin.h (cygwin_getinfo_types): New CW_STRACE_ACTIVE. - * external.cc (cygwin_internal): Handle CW_STRACE_ACTIVE. - -2002-02-14 Christopher Faylor - - * exceptions.cc (unused_sig_wrapper): Eliminate unused parameter to - asm. - * external.cc (cygwin_internal): Change CW_STRACE_ON to - CW_STRACE_TOGGLE. - * strace.cc (strace::hello): Toggle strace on and off. - * sync.cc (muto::init): Rename from constructor. - * sync.h (muto::new): Delete. - (muto::delete): Ditto. - (new_muto): Simplify. Use muto.init for nearly everything. - * uinfo.cc (uinfo_init): Avoid closing a NULL handle. - * include/sys/cygwin.h (cygwin_getinfo_types): Rename CW_STRACE_OFF to - CW_STRACE_TOGGLE. Delete CW_STRACE_OFF. - * include/sys/strace.h (strace): Add "inited" field. - -2001-02-12 Corinna Vinschen - - * include/cygwin/acl.h: Fix definition of aclent_t. - -2002-02-10 Christopher Faylor - - * Makefile.in (DLL_OFILES): Consolidate object files. - -2002-02-10 Corinna Vinschen - - * child_info.h, cygheap.h, fhandler_clipboard.cc, fhandler_dsp.cc, - fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, - fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, - pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, - security.h, thread.h, uinfo.cc, include/cygwin/acl.h: Fix copyright. - -2002-02-10 Corinna Vinschen - - * child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h, - fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc, - fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, - fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, - pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, - security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h: - Change usage of uid_t to __uid16_t, gid_t to __gid16_t and - off_t to __off32_t throughout. Use INVALID_UID, INVALID_GID and - INVALID_SEEK instead casting -1 to the appropriate type. - * winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK. - * include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t - types. Don't declare acl functions when compiling Cygwin. - * include/cygwin/grp.h: Declare getgrgid() and getgrnam() with - correct types for internal usage. - -2002-02-10 Corinna Vinschen - - Patch suggested by Pierre A. Humblet : - * uinfo.cc (internal_getlogin): Try evaluating user by SID even if - ntsec is off. - (uinfo_init): Set primary group even if ntsec is off. - -2002-02-09 Corinna Vinschen - - * include/cygwin/grp.h: New file. - * include/cygwin/stat.h: Ditto. - * include/cygwin/types.h: Add definitions for __off32_t, - __off64_t, off_t, __uid16_t, __uid32_t, uid_t, __gid16_t, - __gid32_t and gid_t. - * include/sys/cygwin.h: Use correct uid and gid types. - -2002-02-09 Corinna Vinschen - - * dtable.cc (dtable::dup2): Revert previous patch. - * fhandler.h: Ditto. - (fhandler_socket::recv): Define new method. - (fhandler_socket::send): Ditto. - * fhandler_socket.cc (fhandler_socket::recv): New method. - (fhandler_socket::send): Ditto. - (fhandler_socket::read): Call fhandler_socket::recv() now. - (fhandler_socket::write): Call fhandler_socket::send() now. - * net.cc (class wsock_event): Move definition to wsock_event.h. - (fdsock): Revert previous patch. - (cygwin_recv): Move implementation to fhandler_socket::recv(). - (cygwin_send): Move implementation to fhandler_socket::send(). - * wsock_event.h: New file. - -2002-02-06 Alexander Gottwald - - * net.cc (get_2k_ifconf): Create interface entries for tokenring cards. - -2002-02-08 Corinna Vinschen - - * dtable.cc (dtable::dup2): Store fd for fhandler_socket. - * fhandler.h (fhandler_base::set_fd): New virtual method. - (fhandler_base::get_fd): Ditto. - (fhandler_socket::set_fd): Ditto. - (fhandler_socket::get_fd): Ditto. - * fhandler_socket.cc (fhandler_socket::read): Call cygwin_recv instead - of native Winsock recv. - (fhandler_socket::write): Call cygwin_send instead of native Winsock - send. - * net.cc (fdsock): Store fd in fhandler_socket. - -2002-02-07 Corinna Vinschen - - * net.cc (cygwin_getsockname): Fix handling of NULL sun_path. - -2002-01-29 Corinna Vinschen - - * net.cc (getdomainname): Fix registry key for 9x systems, too. - -2002-01-29 Corinna Vinschen - - * net.cc (getdomainname): Fix registry key for NT systems. - -2002-01-28 Christopher Faylor - - * external.cc (cygwin_internal): Initialize various internal settings - if required to allow use of some things from user loaded DLL. - (CW_STRACE_ON): Add new feature. - (CW_CYGWIN_PID_TO_WINPID): Ditto. - * pinfo.cc (set_myself): Call "strace.hello" to initiate possible - strace session. - (pinfo::init): Guard against dereferencing uninitialized myself. - * sigproc.cc (wait_sig): Call strace.hello() when __SIGTRACE "signal" - received. - * strace.cc (strace::hello): New method. - * wincap.cc (wincapc::init): Avoid initializing if already initialized. - * wincap.h (wincapc::wincapc): New method. - * include/sys/cygwin.h: Add new CW_ enums. Kludge typedefs of - {g,u}id_t if required. - * strace.h (strace::hello): Declare new method. - -2002-01-28 Earnie Boyd - - * include/sys/strace.h (_STRACE_ON): Define. - (_STRACE_OFF): Ditto. - -2002-01-24 Christopher Faylor - - * speclib: Ensure that temporary def file is removed. - -2002-01-23 Christopher Faylor - - * speclib: Use rm -f to remove temp file just to quiet any potential - warnings. - -2002-01-23 Corinna Vinschen - - * security.cc (create_token): Use sec_user() to create - SECURITY_ATTRIBUTES structure for primary token. Use - MAXIMUM_ALLOWED access rights instead of TOKEN_ALL_ACCESS. - -2002-01-23 Corinna Vinschen - - * path.cc (symlink): Fix check for already existing file. - -2002-01-21 Christopher Faylor - - * cygmagic: Suppress error output when figuring out if sum takes an - option. - -2002-01-21 Christopher Faylor - - * cygmagic: Attempt to figure out if sum takes an option. - -2002-01-21 DJ Delorie - - * Makefile.in (libpthread.a): Pass the assembler also. - (libm.a): Ditto. - (libc.a): Ditto. - * speclib: Specify the assembler to dlltool. - -2002-01-21 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-01-21 Corinna Vinschen - - * grp.cc (getgrgid): Don't return default gid entry when ntsec is on. - * syscalls.cc (setegid): Don't set primary group in process token. - -2002-01-21 Christopher Faylor - - * speclib: Don't use /dev/null as DLL name. Just default to what's - already in .def file. - -2002-01-21 Christopher Faylor - - * exceptions.cc (sig_handle): Remove last vestiges of SA_NOCLDSTOP code - which caused SIGCHLD to be ignored. - -2002-01-20 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-01-20 Christopher Faylor - - * syscalls.cc (regfree): Make dll_export. - -2002-01-20 Christopher Faylor - - * exceptions.cc (ctrl_c_handler): Convert windows pid to cygwin pid - when detecting if we should actually handle CTRL-C. - -2002-01-19 Christopher Faylor - - * Makefile.in (new-cygwin1.dll): Revert previous change. libsupc++.a - is only available in libstdc++-v3. - -2002-01-19 Christopher Faylor - - * exceptions.cc (sig_handle_tty_stop): Don't send SIGCHLD if parent - doesn't want it. - (sig_handle): Don't check for SA_NOCLDSTOP here. We don't have enough - information. - -2002-01-19 Christopher Faylor - - * include/cygwin/version.h: Bump DLL minor number. - -2002-01-19 Christopher Faylor - - * Makefile.in (new-cygwin1.dll): Just use -lsupc++ for link. - * sigproc.cc (proc_exists): Change existence criteria. - * sync.h (new_muto): Add volatile to definition to avoid gcc - optimization problems. - -2002-01-19 Corinna Vinschen - - * include/cygwin/version.h: Bump API minor version to 51. - -2002-01-19 Mark Bradshaw - - * cygwin.din: Add recvmsg and sendmsg. - * net.cc: Add cygwin_recvmsg and cygwin_sendmsg. - * /usr/include/sys/socket.h: Add recvmsg and sendmsg. - -2002-01-19 Corinna Vinschen - - * security.cc (create_token): Close processes token handle as soon - as it's not used anymore. - -2002-01-17 Corinna Vinschen - - * Makefile.in: Add fnmatch.o to DLL_OFILES. - * cygwin.din: Add fnmatch export symbol. - * fnmatch.c: New file. - * include/fnmatch.h: Ditto. - * include/cygwin/version.h: Bump API minor version to 50. - -2002-01-15 Corinna Vinschen - - * path.cc (fchdir): Call chdir with full windows path. - -2002-01-14 Corinna Vinschen - - * dir.cc: Use INVALID_FILE_ATTRIBUTES instead of "(DWORD) -1" - for file attributes throughout. - * fhandler.cc: Ditto. - * fhandler_disk_file.cc: Ditto. - * path.cc: Ditto. - * path.h: Ditto. - * syscalls.cc: Ditto. - * times.cc (utimes): Use path_conv::isdir() instead of explicit - GetFileAttributes() call. - -2002-01-13 Christopher Faylor - - * dcrt0.cc (multiple_cygwin_problem): Clarify logic and make - CYGWIN_MISMATCH_OK more powerful. - -2002-01-10 Christopher Faylor - - * exceptions.cc (sig_handle): Accept a second argument indicating - whether the signal came from this process or not. - * sigproc.h: Reflect sig_handle arg change. - * signal.cc (kill_pgrp): Add sigframe info. - (abort): New function. Eliminates newlib function of same name. - * sigproc.cc (wait_sig): Pass "signal from this process" value as arg - 2. - -2002-01-10 Corinna Vinschen - - * syscalls.cc (pathconf): Guard _PC_PATH_MAX branch against invalid - file parameter. - -2002-01-09 Christopher Faylor - Robert Collins - - * exceptions.cc (early_stuff_init): Rename from misnamed - set_console_handler. - (ctrl_c_handler): Attempt to work around potential signal duplication - during process startup. - (sig_handle): Ignore SIGINT when we're just an "exec stub". - * spawn.cc (spawn_guts): Store pid of spawned process in global for use - by ctrl_c_handler. - * dcrt0.cc (dll_crt0_1): Call renamed initialization function. - * winsup.h: Reflect function name change. - -2002-01-08 Corinna Vinschen - - * net.cc (cygwin_accept): Set sun_path for newly connected socket. - -2002-01-07 Ralf Habacker - - * Makefile.in: Add uninstall target. - -2002-01-07 Christopher Faylor - - * sigproc.cc (getsem): Clean up debugging output. - -2002-01-07 Christopher Faylor - - * sigproc.cc (getsem): Set errno when unable to create own semaphore. - Reorganize to make clearer that error should only come from initial - creation of process semaphore. - -2002-01-06 Christopher Faylor - - * dtable.cc (dtable::init_std_file_from_handle): Add some defensive - code to invalid handle case. - -2002-01-06 Corinna Vinschen - - * ioctl.cc (ioctl): Make third argument optional. - * include/sys/ioctl.h: Ditto in declaration. - * dtable.cc (dtable::init_std_file_from_handle): Revert previous - bogus patch. - * window.cc (WndProc): Raise SIGURG instead of SIGIO in case of FD_OOB - message. - -2002-01-05 Christopher Faylor - - * dir.cc (opendir): Guarantee release of alloced fhandler structure on - error. - -2002-01-05 Corinna Vinschen - - * exceptions.cc (sig_handle): Set default action for SIGURG to SIG_IGN. - -2002-01-05 Corinna Vinschen - - * dtable.cc (dtable::init_std_file_from_handle): Don't treat NULL - handle as errorneous. - -2002-01-04 Christopher Faylor - - * cygmagic: Change logic for equality test. - -2002-01-04 Christopher Faylor - - * dir.cc (opendir): Don't attempt to call sub-opendir if ENOENT. - -2002-01-04 Corinna Vinschen - - * net.cc: Replace usage of AF_UNIX by Posix compliant AF_LOCAL - throughout. - (socketpair): Explicitly allow SOCK_STREAM and SOCK_DGRAM socket types - in families AF_UNIX and AF_LOCAL. Explicitly allow PF_UNSPEC, PF_LOCAL - and PF_INET protocols. Return error otherwise. Implement datagram - socketpairs. - -2002-01-01 Christopher Faylor - - * speclib: Remove temp files automatically. - -2002-01-01 Corinna Vinschen - * fhandler.h (fhandler_socket::sun_path): New private member. - (fhandler_socket::set_sun_path): New method. - (fhandler_socket::get_sun_path): Ditto. - * fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize - sun_path to NULL. - (fhandler_socket::~fhandler_socket): Free sun_path if needed. - (fhandler_socket::set_sun_path): New method. - * net.cc (cygwin_bind): Set sun_path to path of local socket file. - (cygwin_getsockname): Add code to return correct sockaddr for unix - domain sockets. diff --git a/winsup/cygwin/ChangeLog-2002 b/winsup/cygwin/ChangeLog-2002 new file mode 100644 index 0000000000..68cf380593 --- /dev/null +++ b/winsup/cygwin/ChangeLog-2002 @@ -0,0 +1,6655 @@ +2002-12-30 Christopher Faylor + + * exceptions.cc (events_init): Display name of mutex on failure. + +2002-12-30 Christopher Faylor + + * windows.cc (setitimer): Return ENOSYS on invalid argument. + +2002-12-28 Christopher Faylor + + * fhandler_termios.cc (fhandler_termios::line_edit): Perform echo + before input is accepted or suffer a "race". + +2002-12-27 Christopher Faylor + + * fhandler.h (fhandler_tty_master::set_winsize): Declare new function. + * fhandler_console.cc (fhandler_console::send_winch_maybe): If + appropriate, call tty master function to handle screen size change. + * fhandler_tty.cc (fhandler_tty_master::set_winsize): New function. + (fhandler_tty_master::init): Call set_winsize to set initial screen + size. + +2002-12-26 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_master::init): Set initial size of tty + to that of console in which tty is operating. + (process_input): Semi-revert previous change. Need to just use current + terminfo settings since this function is running in a thread, blocked + when the terminfo changes. + +2002-12-26 Christopher Faylor + + * fhandler.h (fhandler_termios::line_edit): Replace third argument with + passed-in termios struct. + * fhandler_console.cc (fhandler_console::read): Prior to loop, make a + copy of current termios for passing to line_edit prior so that all + characters are processed consistently. + * fhandler_tty.cc (fhandler_pty_master::write): Ditto. + (process_input): Make a copy of curent termios prior to read for use in + subsequent line_edit. + * fhandler_termios.cc (fhandler_termios::line_edit): Replace third + parameter with passed-in termios struct and use it throughout rather + than the data from the current fhandler_termios class. + +2002-12-25 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-12-25 Christopher Faylor + + * exceptions.cc (events_init): Initialize critical section to control + exiting via signal. + (signal_exit): Enter critical section early to avoid exit races with + main thread. + * dcrt0.cc (do_exit): Use exit_lock critical section to avoid races. + +2002-12-25 Christopher Faylor + + * cygthread.cc (cygthread::detach): Set errno with set_sig_errno so + that EINTR is properly restored after signal. + +2002-12-21 Christopher Faylor + + * Makefile.in: Default fhandler objects to -fomit-frame-pointer. + Eliminate redundant CFLAGS settings. + +2002-12-20 Christopher Faylor + + * fhandler.h (line_edit_status): Reorganize so that tests for error + condition can be < or >. + * fhandler_tty.cc (fhandler_pty_master::write): Don't return after + sending a signal. + + * fhandler_termios.cc (fhandler_termios::line_edit): Trivial change to + use built-in bool types. + +2002-12-19 Pierre Humblet + + * localtime.cc (tzsetwall): Set lcl_is_set and lcl_TZname + in the Cygwin specific part of the routine. + +2002-12-19 Pierre Humblet + + * fhandler.cc (fhandler_base::open): Use "flags" rather than "mode" + in Win9X directory code. + +2002-12-19 Steve Osborn + + * fhandler.h (line_edit_status): Add a new element. + * fhandler_termios.cc (fhandler_termios::line_edit): After + accept_input, handle both potential error condition and pipe full + conditions. + * fhandler_tty.cc (fhandler_pty_master::accept_input): Return -1 on + error. + (fhandler_pty_master::write): Handle pipe full condition. + +2002-12-16 Steve Osborn + Christopher Faylor + + * fhandler_termios.cc (fhandler_termios::line_edit): Return + line_edit_error and remove last char from readahead buffer if + accept_input() fails. + * fhandler_tty.cc (fhandler_pty_master::accept_input): Return 0 and + restore readahead buffer when tty slave pipe is full. + +2002-12-16 Christopher Faylor + + * pinfo.cc (_pinfo::cmdline): Allocate sufficient space for myself + command line args. + +2002-12-14 Steve Osborn + + * fhandler_termios.cc (fhandler_termios::line_edit): Call + accept_input() in character processing loop. Set return value + independently of input_done. + +2002-12-14 Christopher Faylor + + * fhandler.cc (fhandler_base::read): Signal event, if necessary, and + raw_read hasn't done so. + +2002-12-14 Christopher Faylor + + * fhandler.cc (fhandler_base::raw_read): Reset priorities to minimize + window where thread termination may cause data loss. + (fhandler_base::read): Always return at end of function. Just set len + to copied_chars when len is zero. Return immediately after raw_read if + len <= 0. Remove in_len setting and just check end instead. Fix CRLF + handling at end of buffer. + +2002-12-14 Corinna Vinschen + + * dcrt0.cc (dll_crt0_1): Call well known SID initializer function. + * security.h (cygsid::init): Declare new static method. + * sec_helper.cc (cygsid::init): New method for initializing well + known SIDs. + +2002-12-14 Pierre Humblet + + * security.h: Declare well_known_creator_group_sid. + * sec_helper.cc: Define and initialize well_known_creator_group_sid. + +2002-12-14 Corinna Vinschen + + * netdb.cc: Remove strtok_r comment. + +2002-12-14 Pierre Humblet + + * security.cc (get_user_local_groups): Use LookupAccountSid to find the + local equivalent of BUILTIN. + +2002-12-14 Christopher Faylor + + * pipe.cc (make_pipe): Set fork fixup flag for read pipe. + +2002-12-14 Christopher Faylor + + * winbase.h: Turn on inline versions of Interlocked* by default. + +2002-12-14 Gary R. Van Sickle + + * winbase.h: Fixup inline asm functions. Add ilockcmpexch. + +2002-12-13 Christopher Faylor + + Throughout, change fhandler_*::read and fhandler_*::raw_read to void + functions whose second arguments are both the length and the return + value. + * fhandler.cc (fhandler_base::read): Rework slightly to use second + argument as input/output. Tweak CRLF stuff. + (fhandler_base::readv): Accommodate fhandler_*::read changes. + * cygthread.h (cygthread::detach): Declare as taking optional handle + argument. + (cygthread::detach): When given a handle argument, wait for the handle + to be signalled before waiting for thread to detach. Return true when + signal detected. + +2002-12-12 Corinna Vinschen + + * Makefile.in: Add MINGW_LDFLAGS when linking cygrun.exe. + +2002-12-10 Christopher Faylor + + * cygthread.h (cygthread::stack_ptr): New element. + (cygthread::detach): Accept a "wait_for_signal" argument. + (cygthread::terminate_thread): New function. + * cygthread.cc (cygthread::stub): Set stack pointer argument. + (cygthread::terminate_thread): New function. Forcibly terminate + thread. + (cygthread::detach): Optionally wait for signals and kill thread when + signal arrives. + * exceptions.cc (signal_exit): Set signal_arrived prior to exiting to + wake up anything blocking on signals. + * fhandler.h (fhandler_base::set_r_no_interrupt): Change to accept bool + argument. + (fhandler_pipe::ready_for_read): Declare. + * pipe.cc (pipeargs): New structure. + (read_pipe): New thread stub wrapper for normal pipe read. + (fhandler_pipe::read): Modify to call reader in a cygthread, + terminating on signal, as appropriate. + * select.cc (fhandler_pipe::ready_for_read): Define new function. + +2002-12-10 Corinna Vinschen + + * net.cc (free_protoent_ptr): Add missing free() for base structure. + (free_servent_pt): Ditto. + (free_hostent_pt): Ditto. + +2002-12-10 Craig McGeachie + + * netdb.cc (parse_alias_list): Change strtok calls to strtok_r. + (parse_services_line): Ditto. + (parse_protocol_line): Ditto. + +2002-12-10 Pierre Humblet + + * pwdgrp.h (pwdgrp_check::pwdgrp_state): Replace by + pwdgrp_check::isinitializing (). + (pwdgrp_check::isinitializing): Create. + * passwd.cc (grab_int): Change type to unsigned, use strtoul and set + the pointer content to 0 if the field is invalid. + (parse_pwd): Move validity test after getting pw_gid. + (read_etc_passwd): Replace "passwd_state <= " by + passwd_state::isinitializing (). + (internal_getpwuid): Ditto. + (internal_getpwnam): Ditto. + (getpwent): Ditto. + (getpass): Ditto. + * grp.cc (parse_grp): Use strtoul for gr_gid and verify the validity. + (read_etc_group): Replace "group_state <= " by + group_state::isinitializing (). + (internal_getgrgid): Ditto. + (getgrent32): Ditto. + (internal_getgrent): Ditto. + +2002-12-10 Pierre Humblet + + * security.h: Move declarations of internal_getgrent, + internal_getpwsid and internal_getgrsid to pwdgrp.h. + * pwdgrp.h: Declare internal_getpwsid, internal_getpwnam, + internal_getpwuid, internal_getgrsid, internal_getgrgid, + internal_getgrnam, internal_getgrent and internal_getgroups. + Delete "emulated" from enum pwdgrp_state. + (pwdgrp_check::isuninitialized): Create. + (pwdgrp_check::pwdgrp_state): Change state to initializing + rather than to uninitialized. + (pwdgrp_read::gets): Remove trailing CRs. + * passwd.cc (grab_string): Don't look for NLs. + (grab_int): Ditto. + (parse_pwd): Don't look for CRs. Return 0 if entry is too short. + (search_for): Delete. + (read_etc_passwd): Simplify tests to actually read the file. + Set state to loaded before making internal_getpwXX calls. + Replace search_for calls by equivalent internal_pwgetXX calls. + (internal_getpwsid): Use passwd_state.isuninitialized to decide + to call read_etc_passwd. + (internal_getpwuid): Create. + (internal_getpwnam): Create. + (getpwuid32): Simply call internal_getpwuid. + (getpwuid_r32): Call internal_getpwuid. + (getpwnam): Simply call internal_getpwnam. + (getpwnam_r): Call internal_getpwnam. + * grp.cc (parse_grp): Don't look for CRs. Adjust blank space. + (add_grp_line): Adjust blank space. + (class group_lock): Ditto. + (read_etc_group): Simplify tests to actually read the file. + Set state to loaded before making internal_getgrXX calls. + Replace getgrXX calls by equivalent internal calls. + (internal_getgrsid): Use group_state.isuninitialized to decide + to call read_etc_group. + (internal_getgrgid): Create. + (internal_getgrnam): Create. + (getgroups32): Simply call internal_getgrgid. + (getgrnam32): Simply call internal_getgrnam. + (internal_getgrent): Call group_state.isuninitialized. + (internal_getgroups): Create from the former getgroups32, using + two of the four arguments. Set gid to myself->gid and username + to cygheap->user.name (). + (getgroups32): Simply call internal_getgroup. + (getgroups): Call internal_getgroup instead of getgroups32. + (setgroups32): Call internal versions of get{pw,gr}XX. + * sec_helper.cc: Include pwdgrp.h. + (is_grp_member): Call internal versions of get{pw,gr}XX. + * security.cc: Include pwdgrp.h. + (alloc_sd): Call internal versions of get{pw,gr}XX. + * syscalls.cc: Include pwdgrp.h. + (seteuid32): Call internal versions of get{pw,gr}XX. + (setegid32): Ditto. + * uinfo.cc: Include pwdgrp.h. + (internal_getlogin): Call internal versions of get{pw,gr}XX. + (cygheap_user::ontherange): Ditto. + * sec_acl.cc: Include pwdgrp.h. + (setacl): Call internal versions of get{pw,gr}XX. + (acl_access): Ditto and simplify logic. + (aclfromtext): Ditto. + +2002-12-09 2002-12-02 Egor Duda + + * lib/pseudo-reloc.c: New file. + * lib/_cygwin_crt0_common.cc: Perform pseudo-relocs during + initialization of cygwin binary (.exe or .dll). + +2002-12-06 Christopher Faylor + + * cygwin.din: Reflect name change from strtodf to strtof. Export + strtof. + * include/cygwin/version.h: Bump API minor number. + +2002-12-04 Steve Osborn + + * fhandler.h (fhandler_termios::line_edit): Change return from an int + to an enum to allow the function to return an error. + * fhandler_console.cc (fhandler_console::read): Update the line_edit + call to use the new enum. + * fhandler_termios.cc (fhandler_termios::line_edit): Change return from + an int to an enum to allow the function to return an error. Put + put_readahead call before doecho for future patch. + * fhandler_tty.cc (fhandler_pty_master::write): Change to call + line_edit one character at a time, and stop if an error occurs. + +2002-12-04 Craig McGeachie + + * netdb.cc: New file. + * Makeile.in (DLL_OFILES): Add reference to the new netdb.cc file. + * cygwin.din : Add new aliased exports for service and protocol + enumerations in netdb.cc. + +2002-12-04 Thomas Pfaff + + * cxx.cc: New file. Implement new, new[], delete and delete[] + operators and __cxa_pure_virtual if compiled by gcc >=3. + * Makefile.in (DLL_OFILES): Add cxx.o. + Remove libstdc++.a from cygwin1.dll link step. + +2002-11-29 Steve Osborn + + * fhandler_tty.cc (fhandler_pty_master::accept_input): Move + read_retval assignment to prevent race condition. Remove read_retval + from return statement. + +2002-11-29 Christopher Faylor + + * pinfo.h (winpids::set): Renamed from init. + (winpids::init): New declaration. + (winpids::cs): Ditto. + (winpids::winpids): Use set rather than init. + * external.cc (fillout_pinfo): Ditto. + * dcrt0.cc (dll_crt0_1): Call winpids::init. + * pinfo.cc (winpids::set): Renamed from init. Wrap calls in critical + section. + (winpids::init): New function. + (winpids::cs): Define. + +2002-11-28 Christopher Faylor + + * sigproc.cc (sig_dispatch_pending): Remove assertion. + +2002-11-27 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-11-27 Mikael Ylikoski + + * fhandler_socket.cc (fhandler_socket::sendto): Fix potential + unitialized value return. + +2002-11-27 Christopher Faylor + + * cygwin.din: Export pthread_getsequence_np. + * include/cygwin/version.h: Bump API minor version. + +2002-11-26 Jason Tishler + + * cygwin.din: Export nl_langinfo(). + * include/cygwin/version.h: Bump API minor version. + +2002-11-26 Christopher Faylor + + * fhandler_tty.cc (fhandler_pty_master::accept_input): Just use a + normal Sleep or suffer amazing pauses when other tty apps are running. + (fhandler_pty_master::process_slave_output): Ditto. + +2002-11-25 Pierre Humblet + + * passwd.cc (read_etc_passwd): Never add an entry when starting + on Win95/98/ME if a default entry is present. + * uinfo.cc (internal_getlogin): Look for the default uid if needed. + Always call user.set_name (). + +2002-11-25 Corinna Vinschen + + * sec_acl.cc (getacl): Set errno to ENOSPC if command is GETACL and + nentries is less than the number of entries in the file's ACL. + +2002-11-24 Corinna Vinschen + + * sec_acl.cc: Fix some formatting. Only set and check `other' bits in + a_perm throughout. Use ILLEGAL_GID id for all entries having no id. + (setacl): Fix inheritance condition. + (getacl): Set all permission bits in CLASS_OBJ and DEF_CLASS_OBJ + entries. Remove DENY bits before returning to calling function. + (acltomode): Fix usage of searchace(). If available, use CLASS_OBJ + to mask GROUP_OBJ permissions. + (aclfrommode): Fix usage of searchace(). If available, set CLASS_OBJ + permissions to same value as GROUP_OBJ permissions. + +2002-11-24 Pierre Humblet + + * sec_acl.cc (getace): Fix the behavior when allow and + deny entries are present in arbitrary order. + (getacl): Report the actual number of entries when + aclbufp is NULL, even if nentries is zero. Fix the mask + reporting, handle the case where the owner and group sids + are equal and streamline the code. + (acl_worker): Take allow_ntsec into account. + +2002-11-05 Thomas Pfaff + + * dcrt0.cc (dll_crt0_1): Add call to pthread::initMainThread to + initialize mainthread when it is safe to call new. + * init.cc (dll_entry): Change call to store reents in tls key. + * thread.cc (_reent_clib) : Change call to get reents from tls + key. + (_reent_winsup): Ditto. + (MTinterface::Init): Key handling changed. Remove initialization + of member variables. + (MTinterface::fixup_after_fork): Reinitialize mainthread object + after fork. Reset threadount to 1. + (pthread::initMainThread): Create mainthread object dynamically. + and initialize with valid handles. + (pthread::self): Remove calls to create thread objects. + (pthread::setTlsSelfPointer): Change call to store thread self + handle in tls key. + (pthread::getTlsSelfPointer): New static method. + (pthread::exit): Remove setTlsSelfPointer call. + (pthread::initCurrentThread): New method. + (pthread::thread_init_wrapper): Change call to store thread self + handle in tls key. + (pthread::join): Check for a valid joiner. + (pthreadNull::pthreadNull): Mark Null object as detached. + (pthreadNull::exit): Terminate thread via ExitThread. + * thread.h (pthread::initMainThread): Change parameter in function + call. + (pthread::getTlsSelfPointer): New static method. + (pthread::initCurrentThread): New method. + (MTinterface::reent_key): Remove. + (MTinterface::thread_self_dwTlsIndex): Ditto.. + (MTinterface::indexallocated): Ditto. + (MTinterface::mainthread): Ditto. + (MTinterface::reent_key): New member. + (MTinterface::thread_self_key): Ditto. + (MTinterface::MTinterface): Initialize all members. + +2002-11-23 Christopher Faylor + + * wait.cc (wait4): Force pending signal delivery before waiting for + process completion. + +2002-11-23 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-11-22 Christopher Faylor + + * exceptions.cc (handle_sigsuspend): Force pending signal delivery + before waiting for signals to happen. + * signal.cc (sleep): Force pending signal delivery before sleeping. + (usleep): Ditto. + (signal): Force pending signal delivery before manipulating signal + stuff. + (sigprocmask): Ditto. + (kill_worker): Ditto. + (abort): Ditto. + (sigaction): Ditto. + * syscalls.cc (readv): Force pending signal delivery before I/O. + (writev): Ditto. + (open): Ditto. + * net.cc: Ditto, throughout. + * sigproc.cc (sig_dispatch_pending): Deliver any pending signals prior + to returning. + + * tty.cc (tty::make_pipes): Increase pipe buffer size. + +2002-11-22 Christopher Faylor + + * include/cygwin/version.h: Fix comment. + +2002-11-21 Igor Pechtchanski + + * external.cc (cygwin_internal): Fix va_arg references. + +2002-11-21 Christopher Faylor + + * exceptions.cc (sigthread::get_winapi_lock): Just do standard 'give up + timeslice' wait. + (setup_handler): Revamp YA to attempt to deliver signal multiple times + on failure rather than punting to wait_sig. + * miscfuncs.cc (low_priority_sleep): Accept INFINITE sleep to mean + "don't reset the priority after setting it to idle". Return previous + priority. + * winsup.h (SLEEP_0_STAY_LOW): Define. + (low_priority_sleep): Return an int. + * sigproc.h: Define WAIT_SIG_PRIORITY here. + * sigproc.cc: Remove WAIT_SIG_PRIORITY definition. + +2002-11-20 Pierre Humblet + + * security.h: Declare internal_getpwsid and internal_getgrsid. + Undeclare internal_getpwent. Define DEFAULT_UID_NT. Change + DEFAULT_GID. + * passwd.cc (internal_getpwsid): New function. + (internal_getpwent): Suppress. + (read_etc_passwd): Make static. Rewrite the code for the completion + line. Set curr_lines to 0. + (parse_pwd): Change type to static int. Return 0 for short lines. + (add_pwd_line): Pay attention to the value of parse_pwd. + (search_for): Do not look for nor return the DEFAULT_UID. + * grp.cc (read_etc_group): Make static. Free gr_mem and set + curr_lines to 0. Always call add_pwd_line. Rewrite the code for the + completion line. + (internal_getgrsid): New function. + (parse_grp): If grp.gr_mem is empty, set it to &null_ptr. + Never NULL gr_passwd. + (getgrgid32): Only return the default if ntsec is off and the gid is + ILLEGAL_GID. + * sec_helper.cc (cygsid::get_id): Use getpwsid and getgrsid. + (cygsid_getfrompw): Clean up last line. + (cygsid_getfromgr): Ditto. + (is_grp_member): Use getpwuid32 and getgrgid32. + * uinfo.cc (internal_getlogin): Set DEFAULT_GID at start. + Use getpwsid. Move the read of /etc/group after the second access + to /etc/passwd. Change some debug_printf. + +2002-11-20 Steven O'Brien + + * poll.cc (poll): ...but set POLLIN instead. + +2002-11-20 Pierre Humblet + + * security.cc (get_attribute_from_acl): Always test "anti", + just in case an access_denied ACE follows an access_allowed. + Handle the case owner_sid == group_sid, with a FIXME. + Remove unnecessary tests for non-NULL PSIDs. + (alloc_sd): Use existing owner and group sids if {ug}id == -1. + Handle case where owner_sid == group_sid. + Do not call is_grp_member. Try to preserve canonical ACE order. + Remove unnecessary tests for non-NULL PSIDs. Reorganize + debug_printf's. + (get_initgroups_sidlist): Put well_known_system_sid on left + side of ==. + (add_access_denied_ace): Only call GetAce if inherit != 0. + (add_access_allowed_ace): Ditto. Use appropriate sizeof. + * syscalls.cc (chown_worker): Pass {ug}id equal to -1 to + alloc_sd, which removes the need to obtain old_{ug}id. + (chmod): Remove call to get_file_attribute (), simply pass + {ug}id equal to -1 to alloc_sd. + +2002-11-20 Corinna Vinschen + + * poll.cc (poll): Don't set POLLERR if a listening socket has a + pending connect. Don't use errno value from call to + fhandler_socket::recvfrom(). + +2002-11-19 Christopher Faylor + + * net.cc: Sprinkle sigframes throughout. + +2002-11-16 Christopher Faylor + + * tty.cc (tty::make_pipes): Make pipe buffer larger. + +2002-11-15 Pierre Humblet + + * grp.cc (getgroups32): Protect against closing cygheap->user.token. + +2002-11-15 Christopher Faylor + + * include/cygwin/version.h: Bump API_MINOR to accommodate below + changes. + +002-11-14 Sergey Okhapkin + + * cygwin.din (siginterrupt): New export. + * signal.cc (siginterrupt): New. + +2002-11-15 Sergey Okhapkin + + * select.cc (peek_serial): Don't call PurgeComm() to avoid characters + loss. + +2002-11-14 Christopher Faylor + + * exceptions.cc (setup_handler): Add debugging output. Set thread + priority to idle if pending signals to allow other threads to get into + interruptible state. + * miscfuncs.cc (sys_mbstowcs): Save current thread in variable to avoid + an OS call. + * wait.cc (wait_sig): Reset thread priority each time through loop + since the priority may have been set down to deal with pending signals. + +2002-11-14 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::tcgetattr): Don't take any + special action when vmin_ == 0. + +2002-11-14 Corinna Vinschen + + * grp.cc (getgroups32): Revert previous patch. Use impersonation + token if process is in impersonated state. + * sec_helper.cc (is_grp_member): Rewrite. Call getgroups32 only + for current user. Scan passwd and group info otherwise. + +2002-11-14 Christopher Faylor + + * fhandler_console.cc (fhandler_console::write): Allow characters >= + 0177 to be displayed in the title bar. + +2002-11-14 Corinna Vinschen + + * grp.cc (getgroups32): Don't use access token of current user when + retrieving group info for another user. + +2002-11-13 Christopher Faylor + + * dll_init.cc (dll_list::detach): Eliminate reliance on passed in dll + address. Infer from module of caller instead. + (cygwin_detach_dll): Ignore dll_index argument. + * dll_init.h (dll_list::detach): Reflect argument change above. + +2002-11-13 Christopher Faylor + + * ioctl.cc (ioctl): Always print ioctl results, even when it's a tty. + +2002-11-13 Christopher Faylor + + * winsup.h (low_priority_sleep): Declare. + +2002-11-13 Christopher Faylor + + * miscfuncs.cc (low_priority_sleep): New function. Use throughout + where code is supposed to be giving up time slice. + + * fhandler_console.cc (fhandler_console::read): Switch button 2/3 + output escape sequences to be consistent with xterm. + +2002-11-12 Pierre Humblet + + * syscalls.cc (chmod): Simplify conditional. + * sec_helper (cygsid::getfromstr): Reorganize to remove + calls to strcpy and strtok_r. + (cygsid::getfromgr): Change type to __uid32_t instead of int. + Keep only the allow_ntsec branch. Never call LookupAccountSid + which calls PDCs, simply return -1 in case of failure. + Use cygsid == instead of calling EqualSid and remove test + for NULL psid. + * security.h: Declare cygsid::getfromgr as __uid32_t. + +2002-11-10 Corinna Vinschen + + * net.cc: Run indent. + +2002-11-10 Alexander Gottwald + + * autoload.cc (GetIfEntry): Add symbol. + * net.cc (get_2k_ifconf): Get the interface entries with the GetIfEntry + call intead of the GetIfTable call. Clean-up multiple IP address naming. + +2002-11-09 Sergey Okhapkin + + * fhandler.h (class fhandler_pipe): New ioctl() method. + * pipe.cc (fhandler_pipe::ioctl): New. + +2002-11-07 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::ioctl): Fix typo. + +2002-11-07 Christopher January + + * include/cygwin/fs.h: New file. + * include/cygwin/hdreg.h: New file. + * fhandler_floppy.cc (fhandler_floppy::ioctl): Add implementation for + HDIO_GETGEO, BLKGETSIZE, BLKGETSIZE64, BLKRRPART and BLKSSZGET ioctls. + +2002-11-07 Gilles Courcoux + + * fhandler_socket.cc (fhandler_socket::ioctl): Return correct flags + for loopback interface when name is given on input instead of address. + +2002-11-07 Jason Tishler + + * cygwin.din: Export fseeko() and ftello(). + * include/cygwin/version.h: Bump API minor version. + +2002-11-06 Christopher Faylor + + * fhandler_console.cc (keytable[]): Revert previous change. It would + break too many things. + +2002-11-06 Christopher Faylor + + * fhandler_console.cc (keytable[]): Redefine F1 - F5 to something a + little more sensical. + +2002-11-06 Sergey Okhapkin + + * syscalls.cc (getutid): Use UT_IDLEN where appropriate. + +2002-11-06 Christopher Faylor + + * include/cygwin/version.h: Bump API minor number for below export. + +2002-11-06 Sergey Okhapkin + + * cygwin.din (pututline): New exported function. + * syscalls.cc (login): Use pututiline(). + (setutent): Open utmp as read/write. + (endutent): Check if utmp file is open. + (utmpname): call endutent() to close current utmp file. + (getutid): Enable all cases, use strncmp() to compare ut_id fields. + (pututline): New. + * tty.cc (create_tty_master): Set ut_pid to current pid. + +2002-11-05 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::ioctl): Don't try to figure out + if OS has the capability to retrieve RTS/CTS. Just set default values + if DeviceIoControl fails. (suggested by Sergey Okhapkin) + +2002-11-05 Sergey Okhapkin + + * fhandler_serial.cc (fhandler_serial::raw_read): Use correct type for + minchars. + (fhandler_serial::ioctl): Set errno if the ClearCommError fails. + (fhandler_serial::tcsetattr): Use correct value for vmin_. + (fhandler_serial::tcgetattr): Ditto. + +2002-11-05 Thomas Pfaff + + * fhandler_socket.cc (fhandler_socket::recvmsg): Call if from == NULL + WSARecvFrom with fromlen = NULL. + +2002-11-04 Christopher Faylor + + * pinfo.cc (_pinfo::commune_send): Fix thinko in previous checkin. + +2002-11-04 Christopher Faylor + + * pinfo.cc (_pinfo::commune_send): Set priority low when sleeping, + waiting for commune completion so that we don't spin waiting for lower + priority processes. + +2002-11-04 Christopher Faylor + + * sigproc.cc (WAIT_SIG_PRIORITY): Bump to THREAD_PRIORITY_TIME_CRITICAL. + +2002-11-04 Christopher Faylor + + * pinfo.cc (_pinfo::commune_send): Initialize buffer or suffer random + crashes. + +2002-11-04 Christopher Faylor + + * fhandler_process.cc (fhandler_process::fill_filebuf): Deal with error + condition from cmdline retrieval. + +2002-11-04 Christopher Faylor + + * sigproc.cc (WAIT_SIG_PRIORITY): Bump to highest priority. + +2002-11-04 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-11-03 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::ioctl): Reformat. Set errno + appropriately. Exit from the bottom. Correctly deal with third + argument for TCFLSH. (Suggested by Sergey Okhapkin) + +2003-11-03 Sergey Okhapkin + + * fhandler_tty.cc (fhandler_tty_slave::ioctl): Do nothing if the new + window size is equal to the old one. Send SIGWINCH if slave connected + to a pseudo tty. + (fhandler_pty_master::ioctl): Do nothing if the new window size is + equal to the old one. + +2002-10-31 Pierre Humblet + + * fhandler.cc (fhandler_base::open): Verify pc isn't NULL. + +2002-10-30 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-10-30 Christopher Faylor + + * external.cc (cygwin_internal): Implement CW_CMDLINE. + * pinfo.h (SIGCOMMUNE): New signal type. + (commune_result): New structure for commune functions. + (picom): New enum for commune functions. + (_pinfo::hello_pid): New. Pid who's communicating with me. + (_pinfo::tothem): New. Handle of communicating pipe. + (_pinfo::fromthem): Ditto. + (_pinfo::commune_recv): Declare. + (_pinfo::commune_send): Declare. + (_pinfo::alive): Declare. + (_pinfo::cmdline): Declare. + (_pinfo::lock): Declare. + * pinfo.cc (set_myself): Initialize new _pinfo lock. + (_pinfo::alive): Define. Determines if process still exists. + (_pinfo::commune_recv): Define. Receive info from another cooperating process. + (_pinfo::commune_send): Define. Send info to another cooperating process. + (_pinfo::cmdline): Define. Determine command line of a given process. + * include/sys/cygwin.h (CW_CMDLINE): Define. + + *sigproc.cc (talktome): Communicate with any processes who want to talk + to me. + (wait_sig): Honor __SIGCOMMUNE. + + * fhandler.cc (fhandler_virtual::fixup_after_exec): Declare. + * fhandler_proc.cc: Use malloc/free/realloc throughout rather than + cmalloc since buffers don't need to be propagated to subprocesses. + * fhandler_registry.cc: Ditto. + * fhandler_virtual.cc: Ditto. + (fhandler_virtual::fixup_after_exec): Define. + * fhandler_process.cc: Ditto for malloc/free/realloc. + (process_listin): Add "cmdline". + (fhandler_process::fill_filebuf): Implement PROCESS_CMDLINE. + + * miscfuncs.cc (isalpha_array): New array populated with xor values for + alpha characters to switch from one case to another. + * string.h (cygwin_strcasematch): New asm implementation of case match. + * string.h (cygwin_nstrcasematch): New asm implementation of counted + case match. + +2002-10-24 Pierre Humblet + + * pwdgrp.h (pwdgrp_read::open): Compare fh to INVALID_HANDLE_VALUE. + +2002-10-22 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Nevermind. + Revert everything to previous state wrt ntsec and exec bits. + +2002-10-22 Christopher Faylor + + * shared.cc (shared_info::initialize): Use correct value for version + comparison. + * include/cygwin/version.h (CYGWIN_VERSION_MAGIC): Use all of a DWORD + for magic calculation. + +2002-10-22 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Oops. Only + do the executable thing for #! scripts since .exe files wouldn't be + executable in ntsec case regardless. + +2002-10-22 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Always + consider .exe files and '#!' shell scripts to be executable. + +2002-10-22 Christopher Faylor + + * cygthread.cc (cygthread::exiting): New variable. + (cygthread::initialized): Delete. + (cygthread::stub): Use exiting variable to determine when to exit. + (cygthread::runner): Delete. + (cygthread_protect): New variable. + (cygthread::init): Don't start runner thread. Initialize muto for list + protection. + (cygthread::freerange): Return pointer to cygthread. + (cygthread::operator new): Change logic to start threads on an + as-needed basis. + (cygthread::detach): Don't zero id. + (cygthread::terminate): Don't kill any executing threads. Just set + exiting flag. + * cygthread.h (cygthread): Reflect above changes. + * dcrt0.cc (dll_crt0_1): Move cygthread initialization later. + + * fork.cc (fork_child): Do fdtab fixup after dll fixup or (apparently) + winsock may allocate memory in dll load address. + +2002-10-22 Pierre Humblet + + * sec_helper.cc (cygsid::get_id): If the sid matches a sid stored in + cygheap->user, return the uid or gid from myself. + * security.cc (alloc_sd): If gid == myself->gid, return the group sid + from cygheap->user. Remove the test for uid == original_uid, which is + counter-productive. + +2002-10-22 Christopher Faylor + + * cygheap.cc (cygheap_fixup_in_child): Use user_heap element in + cygheap. + (init_cheap): Ditto for declaration. + * fork.cc (fork_parent): Use user_heap element in cygheap. + * heap.h (inheap): Ditto. + * heap.cc (sbrk): Ditto. + (heap_init): Ditto. Reorganize to shrink heap chunk as required and + record new value in cygheap. + * dcrt0.cc (dll_crt0_1): More "move the cygthread init" games. + * shared.cc (open_shared): Rework memory protection to properly deal + with relocated shared segment. + (shared_info::heap_chunk_size): Rename element to 'heap_chunk'. + * shared_info.h (shared_info): Ditto for declaration. + * strace.cc (strace::hello): Report on heap chunk size from cygheap + since it may shrink. + +2002-10-20 Christopher Faylor + + Change _function() to function() throughout. + * cygwin.din: Remove last vestiges (?) of newlib wrappers. + +2002-10-20 Christopher Faylor + + * cygthread.cc (cygthread::detach): Always wait for event or suffer an + apparently inavoidable race. + * dcrt0.cc (dll_crt0_1): Allocate threads after stack has been + relocated. + * debub.cc (lock_debug): Don't acquire lock on exit. + * fork.cc (fork_child): Recreate mmaps before doing anything else since + Windows has a habit of using blocks of memory in the child that could + previously have been occupied by shared memory in the parent. + * mmap.cc (fhandler_disk_file::fixup_mmap_after_fork): Issue error here + and provide some details about what went wrong. + (fixup_mmaps_after_fork): Remove error message. + * shared.cc (open_shared): Move warning message so that more detail is + possible. + * sigproc.cc (sigproc_init): Initialize sync_proc_subproc to avoid a + race. + (sigproc_terminate): Specifically wait for process thread to terminate. + +2002-10-20 Christopher Faylor + + * cygthread.cc (cygthread::stub): Fix typo. + (cygthread::terminate): Don't zero thread handle prior to using it. + +2002-10-20 Christopher Faylor + + * sigproc.cc (wait_sig): Remove obsolete sigchld logic. + +2002-10-20 Christopher Faylor + + Rename _kill() to kill() throughout. Rename _raise() to raise() + throughout. Rename _pid() to pid() throughout. + * Makefile.in: Compile some objects with -fomit-frame-pointer. + * cygwin.din: Reverse aliasing for _kill. + * syscalls.cc (_getpid_r): New function, implemented for newlib + compatibility. + + * shared.cc (open_shared): Remove reserving of memory since previous + change eliminate the need for this hack. + +2002-10-19 Christopher Faylor + + * fork.cc (fork_child): Move pinfo fixup later to attempt some minor + gains from concurrency with cythread::init. + +2002-10-18 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Initialize cygwin threads here only when not + forking. + * fork.cc (fork_child): Initialize cygwin thread later in process to + avoid allocating memory for thread stacks. + * shared.cc (open_shared): Issue warning if NT and shared segment is + relocated. + +2002-10-18 Christopher Faylor + + * cygthread.cc: Bump number of cygthreads up to accommodate + applications which use ttys. + +2002-10-18 Christopher Faylor + + * fork.cc (fork_child): Move mmap initialization. + * shared.cc (shared_info::heap_chunk_size): Store info as megabytes. + Search HKEY_LOCAL_MACHINE as well as HKEY_CURRENT_USER. + * shared_info.h (shared_info::initial_heap_size): Change element name + to reflect new functionality. + * strace.cc (strace::hello): Report on initial heap size. + +2002-10-18 Thomas Pfaff + + * thread.cc (verifyable_object_isvalid): Test for a valid object + pointer before testing for static ptr. + +2002-10-17 Christopher Faylor + + * dtable.cc (dtable::init_std_file_from_handle): Force "devices" to + always be in binary mode. Temporary fix until ssh is rebuilt? + +2002-10-17 Christopher Faylor + + * dtable.cc (dtable::set_file_pointers_for_exec): New function. + * dtable.h (dtable::set_file_pointers_for_exec): Declare new function. + * spawn.cc (spawn_guts): Call dtable::set_file_pointers_for_exec to set + pointers to EOF when execing non-cygwin applications. + +2002-10-17 Robert Collins + + * thread.h (pthread_mutex::isGoodInitializerOrBadObject): Declare. + * thread.cc (pthread_mutex::isGoodInitializerOrBadObject): Implement. + (pthread_mutex::init): Use isGoodInitializerOrBadObject to avoid + unneeded SEGV's during debugging. + +2002-10-17 Thomas Pfaff + + * thread.cc (verifyable_object_isvalid): Test for static object first. + +2002-10-16 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave::read): Attempt #527 to properly + implement VMIN/VTIME. + +2002-10-15 Christopher Faylor + + * shared.cc (open_shared): Revert to "old" method for shared memory + location if !wincap.needs_memory_protection. + * wincap.cc: Implement needs_memory_protection throughout. + * wincap.h: Ditto. + +2002-10-15 Christopher Faylor + + * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. + (child_info_fork::mount_table): Remove. + (child_info_fork::myself_addr): Remove. + * fork.cc (fork_child): Don't set either of the above. + * dcrt0.cc (dll_crt0_1): Call memory_init as early as possible. + * fhandler_console.cc (console_state): Move to shared_info.h. + (fhandler_console::get_tty_stuff): Reflect open_shared arg change. + * pinfo.cc (myself_addr): Remove definition. + (pinfo::init): Get myself address from open_shared. + * pinfo.h (myself_addr): Remove declaration. + * shared.cc (open_shared): Rework so that known shared memory locations + are protected. Take shared memory type as fifth argument. + (memory_init): Reflect open_shared arg change. + * shared_info.h (shared_locations): New enum. + (console_state): Move here. + (open_shared): Reflect open_shared arg change in declaration. + +2002-10-14 Christopher Faylor + + * child_info.h (CURR_CHILD_INFO_MAGIC): Reset. + (child_info_fork::heaptop): Remove obsolete element. + (child_info_fork::heabbase): Ditto. + (child_info_fork::heapptr): Ditto. + (child_info_fork::mount_table): New element. + (child_info_fork::myself_addr): Ditto. + * dcrt0.cc (dll_crt0_1): Set mount_table and myself_addr when forking. + (initial_env): Add newline to "sleeping" message. + * dll_init.cc (reserve_upto): Accommodate cygwin heap when freeing + memory. Make debugging output a little more descriptive. + * fork.cc (fork_parent): Save mount_table and myself_addr. + * pinfo.cc (myself_addr): New variable. + (set_myself): Pass PID_MYSELF flag to init. + (pinfo::init): Honor PID_MYSELF. Save address where myself shared + memory resides in myself_addr, for fork. + * pinfo.h (myself_addr): Declare. + * shared.cc (memory_init): On fork, use previously saved address for + location of mount table. + * include/sys/cygwin.h (PID_MYSELF): New value. + + * dtable.cc (dtable::stdio_init): Don't pass access type to + init_std_file_from_handle. It's always the same. + (dtable::init_std_file_from_handle): Remove access type argument. + Assume read/write. + * dtable.h (dtable::init_std_file_from_handle): Ditto for declaration. + + * exceptions.cc (try_to_debug): Don't try to debug if already being + debugged. + + * fhandler_console.cc (shared_console_info_save): New variable. + (fhandler_console::get_tty_stuff): Save address of shared console stuff + for fork. + +2002-10-13 Christopher Faylor + + * cygthread.cc (cygthread::stub): Reintroduce clearing of __name but do + it before SetEvent to eliminate a race. + (cygthread::terminate): Accumulate list of threads to check for + termination and call WaitForMultipleObjects on list rather than waiting + for each thread individually. + * sigproc.cc (subproc_init): Zap hwait_subproc thread handle since it + is no longer used. + +2002-10-13 Christopher Faylor + + * spawn.cc (spawn_guts): Fix so that cygthread::terminate is *really* + called only for exec. + +2002-10-13 Christopher Faylor + + * cygthread.cc (cygthread::stub): Don't zero __name here. That + introduces a race. + +2002-10-13 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-10-13 Christopher Faylor + + * cygthread.cc (cygthread::stub): Don't create event for long-running + threads. Initialize thread_sync event here which is used to Suspend + using an event rather than relying on SuspendThread/ResumeThread. + (cygthread::init): Save handle to runner thread for future termination. + (cygthread::cygthread): Only resume thread when it is actually + suspended. Otherwise signal thread completion event. + (cygthread::terminate): Forcibly terminate runner thread and any helper + threads. Call DisableThreadLibrary calls if execing. + * cygthread.h (cygthread::thread_sync): Declare. + * dcrt0.cc (do_exit): Eliminate calls to obsolete window_terminate and + shared_terminate. + * exceptions.cc (events_terminate): Don't bother closing title_mutex + since it is going away anyway. + * pinfo.cc (_pinfo::exit): Call cygthread::terminate to ensure that + threads are shut down before process exit or otherwise strange races + seem to occur. + * shared.cc (shared_terminate): Eliminate. + * shared.h (shared_terminate): Eliminate declaration. + * winsup.h (window_terminate): Eliminate declaration. + * spawn.cc (spawn_guts): Call cygthread::terminate early in process if + execing. Call DisableThreadLibrary calls if execing. + * window.cc (Winmain): Call ExitThread to force exit. + (window_terminate): Eliminate. + + * dcrt0.cc (do_exit): Track exit state more closely. + +2002-10-10 Christopher Faylor + + * window.cc (gethwnd): Use SetThreadPriority method. + +2002-10-10 Christopher Faylor + + * Makefile.in (new-cygwin1.dll): Reorganize library order. + + * dcrt0.cc (do_exit): Move thread stuff after vfork stuff or threads + are terminated during vfork. + * sigproc.cc (proc_terminate): Grab proc lock prior to signalling + subproc thread exit to avoid an extra "wait-for-thread-to-exit". + +2002-10-09 Christopher Faylor + + * cygthread.cc (cygthread::stub): Don't create an event for "cygself" + threads. Assume that they exit via an ExitThread call. + * cygthread.h (cygthread::SetThreadPriority): New function. + (cygthread::zap_h): New function. + * dcrt0.cc (do_exit): Move cygthread::terminate earlier and establish + exit_state guard. + * fhandler.h (fhandler_tty_master::output_thread): Delete. + * fhandler_tty.cc (fhandler_tty_master::init): Set priority for threads + via method. Zap handles when done. Don't treat process_output + specially. + (process_output): Call ExitThread directly. + (fhandler_tty_master::fixup_after_fork): Don't worry about + output_thread. + (fhandler_tty_master::fixup_after_exec): Ditto. + * sigproc.cc (proc_terminate): Don't detach from hwait_subproc. Just + let it exit. + (sigproc_init): Close thread handle after initialization. + (wait_sig): Use GetCurrentThread() as SetThreadPriority call rather + than *event* handle. Call ExitThread directly on termination. + (wait_subproc): Call ExitThread directly on termination. + * tty.cc (tty_list::terminate): Don't attempt to detach from + output_thread. + +2002-10-08 Christopher Faylor + + * cygheap.cc (dup_now): Make fatal error a little more informative. + (cygheap_setup_for_child): Detect when default size of shared region is + less than the current size and allocate that much. + (_cbrk): Just return NULL on inability to allocate. + (_cmalloc): Ditto. + * cygheap.h (CYGHEAPSIZE): Change size to reflect newer, tinier + fhandler sizes. + * spawn.cc (av::error): New element, reflects potential errno from cmalloc. + (av::~av): Don't free NULL pointers. + (av::replace0_maybe): Detect out-of-memory conditions. + (av::dup_maybe): Ditto. + (av::dup_all): Ditto. + (av::unshift): Ditto. + (spawn_guts): Set errno and return if argv creation ran into problems. + + * fhandler.h (fhandler_union): Change member names to something safer. + + * fhandler_console.cc (fhandler_console::get_tty_stuff): Always set + fhandler_console::dev_state regardless of whether shared region is + initialized. + + * cygthread.cc (cygthread::runner): Use ExitThread rather than return + (planning for future). + +2002-10-08 Christopher Faylor + + * fhandler.h (dev_console): New class. + (fhandler_console::dev_state): New class element. + (fhandler_console::mouse_aware): Use dev_state element. + (fhandler_console::get_tty_stuff): Declare new function. + * fhandler_console.cc: Use dev_state fhandler_console element, + throughout. + (fhandler_console::get_tty_stuff): Move to fhandler_console class. + Incorporate dev_console information. Move constructor stuff here. + +2002-10-07 Christopher Faylor + + * dtable.cc (dtable::init_std_file_from_handle): Try to mimic standard + open behavior with files redirected from stdin/stdout/stderr, i.e., + fmode settings take precedence over mount settings. + +2002-10-07 Christopher Faylor + + * dtable.cc (unknown_file): New variable. + (dtable::init_std_file_from_handle): Don't set binmode if we couldn't + determine the actual file name on stdin/stdout/stderr. + (handle_to_fn): Return unknown_file when can't determine filename. + +2002-10-07 Christopher Faylor + + * dcrt0.cc (do_exit): Call DisableThreadLibraryCalls since we don't + need to track thread detaches. + * init.cc (dll_entry): Reorganize slightly. Fix api_fatal message. + +2002-10-05 Christopher Faylor + + * cygthread.cc (cygthread::stub): Very minor cleanup. + (cygthread::stub): Report overflows in cygwin thread pool when + DEBUGGING is on and special environment variable is not set. + (cygthread::terminate): Set event only when event actually exists. + * exceptions.cc (signal_exit): Set priority of main thread to low + before setting current thread to high. + +2002-10-01 Robert Collins + + * thread.cc (pthread_key::keys): Copy on fork. Add a comment explaining + why. + (pthreadNull::_instance): Copy on fork. Absolutely no state exists + in pthreadNull. + +2002-09-30 Conrad Scott + + * cygserver_transport_pipes.cc (transport_layer_pipes::accept): + Remove trailing \n from debug_printf. + +2002-09-30 Christopher Faylor + + * thread.cc (pthread_mutex::initMutex): Remove \n from api_fatal. + +2002-09-30 Christopher Faylor + + * thread.cc (pthread::precreate): Use explicit "no inherit" option when + creating mutex. + (pthread_mutex::nativeMutex::init): Ditto. + +2002-09-30 Christopher Faylor + + * thread.cc (pthread_key::keys): Do not copy on fork. + (pthread_mutex::mutexInitializationLock): Ditto. + (pthreadNull::_instance): Ditto. + +2002-09-30 Christopher Faylor + + * exceptions.cc (unused_sig_wrapper): Still need additional level of + indirection when setting errno. + +2002-09-30 Robert Collins + + * thread.cc (pthread_mutex::initMutex): Use the wrapper init call. + (pthread_mutex::nativeMutex::init): Implement. + (pthread_mutex::nativeMutex::lock): Ditto. + (pthread_mutex::nativeMutex::unlock): Ditto. + (pthread_mutex::init): Use the wrapper lock and unlockcalls. + * thread.h (pthread_mutex): Move mutexInitializationLock into a + nativeMutex wrapper class. + +2002-09-30 Christopher Faylor + + Remove \n from calls to strace class printfs throughout. + +2002-09-30 Christopher Faylor + + * exceptions.cc (unused_sig_wrapper): Accommodate newer compilers. + +2002-09-29 Christopher Faylor + + * security.cc (allow_ntsec): Default to zero. + * environ.cc (environ_init): Set allow_ntsec to TRUE by default, + assuming OS allows it. + +2002-09-29 Christopher Faylor + + * environ.cc (environ_init): Avoid a compiler warning. + * path.cc (path_conv::check): Ditto. + * path.h (path_conv::operator int): Ditto. + * regex/engine.c: Ditto throughout. + * regex/regcomp.c: Ditto throughout. + * regex/regexec.c: Ditto throughout. + +2002-09-29 Christopher Faylor + + * thread.cc: Use "%E" in *_printf throughout rather than calling + GetLastError. GNUify comments. + (__pthread_mutex_lock): Don't return error on EBUSY since that just + means that the mutex has already been initialized. + +2002-09-30 Robert Collins + + * pthread.cc (pthread_mutex_init): Use new pthread_mutex::init. + * thread.cc: Change __pthread_mutex_init to pthread_mutex::init + throughout. + (MTinterface::Init): Initialise pthread_mutex support. + (pthread_mutex::mutexInitializationLock): Instantiate. + (pthread_mutex::initMutex): New method. + (__pthread_cond_dowait): Don't dereference untrusted pointers. + Use the new pthread_mutex::init method. + (__pthread_condattr_init): Don't dereference untrusted pointers. + (__pthread_mutex_init): Rename to pthread_mutex::init. + Lock and release mutexInitializationLock to prevent races on + mutex initialisation. + * thread.h (pthread_mutex::initMutex): New method, initialise + pthread_mutex supporting state on process initialisation. + (pthread_mutex::init): Initialise a single mutex. + (pthread_mutex::mutexInitializationLock): A win32 mutex for + syncronising pthread mutex initialisation. + (__pthread_mutex_init): Remove this. + +2002-09-28 Christopher Faylor + + * thread.h (verifyable_object:~verifyable_object): Make virtual. + +2002-09-28 Christopher Faylor + + * cygthread.h (cygthread::terminate): Declare new function. + (cygthread::initialized): Change to 'int'. + * cygthread.cc (cygthread::stub): Exit thread if initialized < 0. + (cygthread::new): Ditto. + (cygthread::runner): Ditto. Set initialized using xor to preserve + sign. + (cygthread::terminate): New function. + * dcrt0.cc (do_exit): Call cygthread::terminate. + +2002-09-27 Robert Collins + + * thread.cc (pthread_key::run_destructor): Run_destructor is not + const as it needs to set the key value. + * thread.h (pthread_key::run_destructor): Ditto. + +2002-09-27 Robert Collins + + * thread.cc (pthread_key::run_destructor): Follow opengroup algorithm. + I.e. only run the destructor NON-NULL key values, and reset the key + to NULL before running the destructor. Reported by Thomas Pfaff. + +2002-09-25 Christopher Faylor + + * cygrun.c (main): Fix setting of CYGWIN environment variable. + + * Makefile.in: Remove linking of unnecessary libraries. + +2002-09-24 Christopher January + + * fhandler_proc.cc (format_process_stat): make ctty a real device + number. + (format_process_status): use effective uid/gid as real and saved + uid/gid. + +2002-09-24 Corinna Vinschen + + * errno.cc (errmap): Map ERROR_INVALID_ADDRESS to new errno code + EOVERFLOW. + (_sys_errlist): Add entries for EILSEQ and EOVERFLOW. + (strerror): Ditto. + * mmap.cc (map_map): Set errno in case of error. + (mmap64): Remove setting errno explicitely to ENOMEM. + +2002-09-24 Corinna Vinschen + + * mmap.cc (map_map): Add debug output. + (mmap64): Evaluate gran_len correctly even if offset isn't 0. + +2002-09-22 Christopher Faylor + + More GNUify non-GNU formatted functions calls throughout. + +2002-09-22 Christopher Faylor + + * Makefile.in (DLL_O_FILES): Restore formatting. + +2002-09-22 Conrad Scott + + GNUify non-GNU formatted functions calls throughout. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (with_strerr): Remove macro. + (server_shmmgr::segment_t::~segment_t): Remove calls to with_strerr. + (server_shmmgr::segment_t::attach): Ditto. + (server_shmmgr::new_segment): Ditto. + * shm.cc (with_strerr): Remove macro. + (client_shmmgr::shmdt): Remove calls to with_strerr. + (client_shmmgr::attach): Ditto. + +2002-09-22 Conrad Scott + + * include/sys/ipc.h: Move to "include/cygwin/ipc.h". + * include/sys/msg.h: Move to "include/cygwin/msg.h". + * include/sys/sem.h: Move to "include/cygwin/sem.h". + * include/sys/shm.h: Move to "include/cygwin/shm.h". + * include/cygwin/ipc.h: New file. + * include/cygwin/msg.h: Ditto. + * include/cygwin/sem.h: Ditto. + * include/cygwin/shm.h: Ditto. + * cygserver_shm.h: Update includes. + * msg.cc: Ditto. + * sem.cc: Ditto. + +2002-09-22 Conrad Scott + + * safe_memory.h (safe_delete): Make a templated function. + * cygserver.cc (~server_request): Update use of safe_delete. + (main): Ditto. + * cygserver_client.cc (client_request::handle_request): Ditto. + (client_request::make_request): Ditto. + * cygserver_process.cc (~process_cleanup): Ditto. + (process::remove): Ditto. + (process::cleanup): Ditto. + (process_cache::process): Ditto. + * cygserver_shm.cc (server_shmmgr::segment_t::detach): Ditto. + (server_shmmgr::delete_segment): Ditto. + * shm.cc (client_shmmgr::shmdt): Ditto. + * threaded_queue.cc (~threaded_queue): Ditto. + (threaded_queue::worker_loop): Ditto. + +2002-09-22 Conrad Scott + + * safe_memory.h: Replace #include with an explicit + definition of the placement new operator. + (safe_delete): Remove unnecessary ## operator. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (class server_shmmgr): Remove `cleanup_t' + friend declaration. + (cleanup_t::cleanup_t): Use the segment's shmid as the key rather + than the segment pointer itself. + (cleanup_t::segptr): Remove method. + (cleanup_t::shmid): New method. + (cleanup_t::cleanup): Update for new key value. + (server_shmmgr::find (segment_t *)): Remove method. + * include/cygwin/cygserver_process.h (cleanup_routine::key): Make + method const. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver_process.h + (cleanup_routine::_key): New field. + (cleanup_routine::cleanup_routine): Initialise new field with new + argument. + (cleanup_routine::operator==): New method. + (cleanup_routine::key): New method. + (cleanup_routine::cleanup): Make argument non-const. + (process::is_active): New method. + (process::remove): Ditto. + (process::check_exit_code): Rename method. + * cygserver_process.cc (process::add): Reorganize code. + (process::remove): New method. + (process::check_exit_code): Rename method. + (process::cleanup): Use new `process::is_active' method. + (process_cache::process): Ditto. + (process_cache::sync_wait_array): Ditto. + (process_cache::check_and_remove_process): Ditto. + * cygserver_shm.cc (server_shmmgr): Make `cleanup_t' a friend. + (segment_t::detach): Make argument non-const. Remove cleanup + object from client if appropriate. + (cleanup_t::_segptr): Remove field. + (cleanup_t::cleanup_t): Initialise parent explicitly. Remove + field. + (cleanup_t::segptr): New method. + (cleanup_t::cleanup): Add error checking and reporting. + (server_shmmgr::shmdt): Make argument non-const. + (server_shmmgr::find (segment_t *)): New method. + +2002-09-22 Conrad Scott + + * cygserver.cc (client_request_shutdown::client_request_shutdown): + Comment out verbose tracing statement. + * cygserver_client.cc + (client_request_get_version::client_request_get_version): Ditto. + (client_request_attach_tty::client_request_attach_tty): Ditto. + * cygserver_shm.cc (client_request_shm::client_request_shm): + Ditto. + +2002-09-22 Conrad Scott + + * cygserver_transport_pipes.cc (transport_layer_pipes::listen): + Set `_is_listening_endpoint' appropriately. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver_transport.h + (transport_layer_base::listen): Change return type. + (transport_layer_base::connect): Ditto. + * include/cygwin/cygserver_transport_pipes.h + (transport_layer_pipes::listen): Change return type. + (transport_layer_pipes::connect): Ditto. + (transport_layer_pipes::_sec_none_nih): Remove unused field. + (transport_layer_pipes::_is_listening_endpoint): New field. + * cygserver_transport_pipes.cc: Synchronize with sockets code. + (transport_layer_pipes::transport_layer_pipes): Initialise new + field. Separate out asserts. + (transport_layer_pipes::listen): Change return type. Add asserts. + (transport_layer_pipes::accept): Add asserts. + (transport_layer_pipes::read): Change conditional to an assert. + Add assert. + (transport_layer_pipes::write): Ditto. + (transport_layer_pipes::connect): Change return type. Change + conditional to an assert. Add asserts. Rationalize error code + slightly. + (transport_layer_pipes::impersonate_client): Add asserts. + * include/cygwin/cygserver_transport_sockets.h + (transport_layer_sockets::listen): Change return type. + (transport_layer_sockets::connect): Ditto. + (transport_layer_sockets::_addr): Change type of field. + (transport_layer_sockets::_addr_len): Ditto. + (transport_layer_sockets::_is_accepted_endpoint): New field. + (transport_layer_sockets::_is_listening_endpoint): Ditto. + * cygserver_transport_sockets.cc + (MAX_CONNECT_RETRY): New constant. + (transport_layer_sockets::transport_layer_sockets): Initialise new + fields. Only initialise the socket address where necessary. + (transport_layer_sockets::listen): Change return type. Rewrite. + (transport_layer_sockets::accept): Add asserts. Add tracing + statements. Use a local variable to hold the accepted address. + (transport_layer_sockets::close): Add tracing statements. Unlink + the UNIX domain socket file as appropriate. Close the socket + cleanly. + (transport_layer_sockets::read): Rewrite method. + (transport_layer_sockets::write): Ditto. + (transport_layer_sockets::connect): Change return type. Rewrite. + * cygserver.cc (server_submission_loop::request_loop): Run the + listening thread at high priority with special handling for + shutdown. + (main): Print the request error code rather than errno in shutdown + request code. Install signal handlers with sigaction(2) to avoid + setting SA_RESTART. Check value of the listen method call, now it + has one. + * cygserver_client.cc (client_request::make_request): Check new + return value on connect method call. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver_transport_pipes.h + (cygserver_transport_pipes::_sd): Rename field. + (cygserver_transport_pipes::_sec_none_nih): Ditto. + (cygserver_transport_pipes::_sec_all_nih): Ditto. + (cygserver_transport_pipes::_pipe_name): Ditto. + (cygserver_transport_pipes::_hPipe): Ditto. + (cygserver_transport_pipes::_is_accepted_endpoint): Ditto. + * cygserver_transport_pipes.cc + (transport_layer_pipes::transport_layer_pipes): Rename fields. + (transport_layer_pipes::init_security): Ditto. + (transport_layer_pipes::listen): Ditto. + (transport_layer_pipes::accept): Ditto. + (transport_layer_pipes::close): Ditto. + (transport_layer_pipes::read): Ditto. + (transport_layer_pipes::write): Ditto. + (transport_layer_pipes::connect): Ditto. + (transport_layer_pipes::impersonate_client): Ditto. + (transport_layer_pipes::revert_to_self): Ditto. + * include/cygwin/cygserver_transport_sockets.h + (cygserver_transport_sockets::_fd): Rename field. + (cygserver_transport_sockets::_addr): Ditto. + (cygserver_transport_sockets::_addr_len): Ditto. + * cygserver_transport_sockets.cc + (transport_layer_sockets::transport_layer_sockets): Rename fields. + (transport_layer_sockets::listen): Ditto. + (transport_layer_sockets::accept): Ditto. + (transport_layer_sockets::close): Ditto. + (transport_layer_sockets::read): Ditto. + (transport_layer_sockets::write): Ditto. + (transport_layer_sockets::connect): Ditto. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (with_strerr): Fix use of %p format. + * shm.cc (client_shmmgr::shmat): Ditto. + (client_shmmgr::shmctl): Ditto. + (client_shmmgr::shmdt): Ditto. + (client_shmmgr::attach): Ditto. + +2002-09-22 Christopher Faylor + + * woutsup.h (system_printf): Remove extraneous semicolon from macro + definition. + +2002-09-22 Conrad Scott + + * cygserver_transport_pipes.cc + (transport_layer_pipes::connect): Use ProtectHandle in DLL code. + (transport_layer_pipes::close): Use ForceCloseHandle in DLL code. + +2002-09-22 Nicholas Wourms + + * threaded_queue.h (class queue_submission_loop): Correct friend + declaration for GCC 3.1.1. + * include/cygwin/cygserver_process.h (class process): Ditto. + (class process_cache): Ditto. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (server_shmmgr::shmdt): Only call + delete_segment if the segment exists [sic]. + +2002-09-22 Conrad Scott + + * safe_memory.h: Include rather than for gcc 3. + +2002-09-22 Conrad Scott + + * safe_memory.h: New file extracted from "woutsup.h". + * woutsup.h: Move the "safe" new/delete macros into the new + "safe_memory.h" header file and include that here. + * cygserver_client.cc: Explicitly include "safe_memory.h" for + client-side code. + (client_request::make_request): Use the "safe" new/delete macros + unconditionally, i.e. use them on the client side as well as on + the server side. + * cygserver_transport.cc: Explicitly include "safe_memory.h" for + client-side code. + (create_server_transport): Use the "safe" new/delete macros + unconditionally, i.e. use them on the client side as well as on + the server side. + * shm.cc: Include "safe_memory.h". + (client_shmmgr::instance): Use the "safe" new/delete macros. + (client_shmmgr::shmdt): Ditto. + (client_shmmgr::new_segment): Ditto. + +2002-09-22 Conrad Scott + + * cygserver_process (process::process): Add the client's cygpid + and winpid to all tracing statements as appropriate. + (process::exit_code): Ditto. + (process_cache::check_and_remove_process): Ditto. + * cygserver_shm.cc (server_shmmgr::shmat): Ditto. + (server_shmmgr::shmdt): Ditto. + (server_shmmgr::shmctl): Add a process object argument and remove + the explicit cygpid argument. Add the client's cygpid and winpid + to all tracing statements as appropriate. + (server_shmmgr::shmget): Ditto. + (client_request_shm::serve): Update for the new signature of the + shmctl and shmget methods. + +2002-09-22 Conrad Scott + + * cygserver.cc (client_request_shutdown::serve): Don't set the + shutdown flag directly, but send a SIGINT, as the signal handler + sets the flag and the signal breaks the pause(2) in the main loop. + (print_usage): Add new options. + (main): Add new --cleanup-threads and --request-threads options to + set the number of threads used by the daemon. Use pause(2) rather + the win32 Sleep in the main loop. + * shm.cc (shmat): Add sigframe. + (shmctl): Ditto. + (shmdt): Ditto. + (shmget): Ditto. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc: Automatically detach processes from any + segments they are attached to at exit. + (class server_shmmgr::attach_t): New class. + (server_shmmgr::segment_t::IS_DELETED): Rename and make private. + (server_shmmgr::segment_t::_sequence): Make private. + (server_shmmgr::segment_t::_flg): Ditto. + (server_shmmgr::segment_t::_hFileMap): Ditto. + (server_shmmgr::segment_t::_attach_head): New private field. + (server_shmmgr::segment_t::segment_t): Initialise new fields. + Make non-inline. + (server_shmmgr::segment_t::~segment_t): New method. + (server_shmmgr::segment_t::is_deleted): Ditto. + (server_shmmgr::segment_t::is_pending_delete): Ditto. + (server_shmmgr::segment_t::mark_deleted): Ditto. + (server_shmmgr::segment_t::attach): Ditto. + (server_shmmgr::segment_t::detach): Ditto. + (server_shmmgr::segment_t::find): Ditto. + (class server_shmmgr::cleanup_t): New class. + (server_shmmgr::_shm_atts): New private field. + (server_shmmgr::shmat): Add a process object argument to replace + the removed process_cache, cygpid and winpid arguments. Remove + the process_cache manipulations. Move body of code to the + segment_t::attach method. Increment _shm_atts when required. + Update tracing statements. + (server_shmmgr::shmdt): Add a process object argument to replace + the removed cygpid argument. Move body of code to the + segment_t::detach method. Decrement _shm_atts when required. + Update tracing statements. + (server_shmmgr::shmget): Use the new segment_t::is_deleted method. + (server_shmmgr::server_shmmgr): Initialise the new _shm_atts + field. + (server_shmmgr::delete_segment): Remove the CloseHandle code, as + this is now done in the segment_t destructor. + (client_request_shm::serve): Look up the client's process object + and pass to the server_shmmgr::shmat and server_shmmgr::shmdt + methods rather than passing the cache, winpid and cygpid. + * cygserver_process.h: Add a cygpid to the process object to make + it more useful and then pass process objects rather than winpids + where possible. + (cleanup_routine::cleanup): Change argument to be a pointer to a + process object. + (class process): Re-order fields for no discernible reason. + (process::_cygpid): New field. + (process::process): Add a cygpid argument. + (process::winpid): New method. + (process::cygpid): Ditto. + (process::add): Make public, as it always should have been. + (process_cache::process): Add a cygpid argument. + * cygserver_process.cc (process::process): Add a cygpid argument + and use it to initialise the `_cygpid' field. Re-order + initialisers to match new field order. + (process::cleanup): Pass `this' rather than just the winpid to + cleanup_routine::cleanup. + (process_cache::process): Add a cygpid argument and pass it to the + process object constructor. + * include/sys/shm.h (shmatt_t): Make unsigned as per SUSv3. + (shm_info::shm_atts): New field. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (class server_shmmgr::segment_t): Add `_' + prefix to the names of all fields. + +2002-09-22 Conrad Scott + + * msg.cc: New file of stub functions, no functionality. + * sem.cc: Ditto. + * shm.cc (client_shmmgr::shmctl): Add support for an out shm_info + buffer for the SHM_INFO command. + (client_shmmgr::shmget): Use %X to print keys. + * include/sys/ipc.h: Comment all fields and values. + (IPC_PRIVATE): Change to be non-negative. + * include/sys/msg.h: New file with SUSv3 and ipcs(8) interfaces. + * include/sys/sem.h: Ditto. + * include/sys/shm.h: Comment all fields and values. + (struct shm_info): New struct. + * cygserver_shm.h (client_request_shm::shminfo): Rename. + (client_request_shm::shm_info): New method. + (client_request_shm::_parameters.out.hFileMap): Move into union. + (client_request_shm::_parameters.out.shminfo): Rename. + (client_request_shm::_parameters.out.shm_info): New field. + * cygserver_shm.cc (server_shmmgr::_shm_ids): Rename. + (server_shmmgr::_shm_tot): New field. + (server_shmmgr::shmctl): Rename `out_shminfo' argument. Add + `out_shm_info' argument. Fill in the `out_shm_info' argument in + the SHM_INFO command. + (server_shmmgr::shmget): Check `shmflg' against the mode of + existing segments as per Stevens 1990, p. 123. + (server_shmmgr::server_shmmgr): Initialise the new `_shm_tot' + field. + (server_shmmgr::new_segment): Set ENOMEM if CreateFileMapping + fails. Pass `size' to new_segment. + (server_shmmgr::new_segment): Add size argument and use it to + check against and update the new `_shm_tot' field. + (server_shmmgr::delete_segment): Update the new `_shm_tot' field. + * Makefile.in (DLL_OFILES): Add new DLL object files. + +2002-09-22 Conrad Scott + + * cygserver_transport_pipes.cc: The main change is to make the + client try harder to connect to the server if it's previously + connected, and so has good grounds for believing that the server + is running. + (MAX_WAIT_NAMED_PIPE_RETRY): Change to be an enumerator. + (WAIT_NAMED_PIPE_TIMEOUT): Ditto. + (transport_layer_pipes::accept): Use interlocked operators on + `pipe_instance'. + (transport_layer_pipes::close): Rearrange so that FlushFileBuffers + and DisconnectNamedPipe are only called for accepted endpoints. + Use interlocked operators on `pipe_instance'. + (transport_layer_pipes::read): Use set_errno where required. + (transport_layer_pipes::write): Ditto. + (transport_layer_pipes::connect): Add local static variable + `assume_cygserver'. Set it if a connection is made to cygserver, + clear it if a connection is not made even after retrying. If set, + ignore all errors from CreateFile and retry the connection. Catch + the situation where WaitNamedPipe fails to wait [sic] and add a + `Sleep (0)' so that the server gets a chance to run. + +2002-09-22 Conrad Scott + + * dcrt0.cc: Only check for cygserver if and when required. + (dll_crt0_1): Remove call to `cygserver_init ()'. + * fhandler_tty.cc (fhandler_tty_slave::open): Change the cygserver + logic to allow for the fact that `cygserver_init ()' may not yet + have been called. + (fhandler_tty_slave::cygserver_attach_tty): Tweak the cygserver + request logic to conform to the practice elsewhere in the code. + * tty.cc (tty::common_init): Add an explicit call to + `cygserver_init ()' if it hasn't already been called. + * include/cygwin/cygserver.h (CYGSERVER_UNAVAIL): Rename from + `CYGSERVER_DEAD'. + (client_request_get_version::check_version): Make available in + cygserver as well the DLL. + (check_cygserver_available): Ditto. Remove `check_version_too' + argument. + (cygserver_init): Ditto. And likewise. + * cygserver_client.cc (client_request_get_version::check_version): + Make available in cygserver as well the DLL. + (client_request::make_request): This may now be called without + `cygserver_init ()' having been called first. Detect this and + call it as required. Add tracing. + (check_cygserver_available): Make available in cygserver as well + the DLL. Remove `check_version_too' argument and always check the + version information. And since this is called from within + `cygserver_init ()', force `cygserver_running' before calling + `client_request::make_request ()'. + (cygserver_init): Make available in cygserver as well the DLL. + Remove `check_version_too' argument. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc: Implement the ipcs(8) interfaces, IPC_INFO, + SHM_STAT and SHM_INFO. + (server_shmmgr::segment_t::sequence): New static field. + (server_shmmgr::segment_t::key): Remove field, use the new + ds.shm_perm.key field instead. + (server_shmmgr::segment_t::shmid): Remove field. + (server_shmmgr::segment_t::intid): New field. + (server_shmmgr::segment_t::segment_t): Use the `key' argument to + initialise `ds.shm_perm.key'. Change from using `shmid' to + `intid'. + (server_shmmgr::_shmseg_cnt): Renamed from `_shmid_cnt'. + (server_shmmgr::_intid_max): Renamed from `_shmid_max. + (server_shmmgr::shmat): Move the out arguments to the start of the + argument list. Rename the `pid' argument as `cygpid'. Add + tracing. Pass an intid to `find ()', not a shmid. + (server_shmmgr::shmctl): Add separate out arguments. Rename the + `pid' argument as `cygpid'. Add support for the ipcs(8) + interfaces. Add tracing. Pass an intid to `find ()', not a + shmid. + (server_shmmgr::shmdt): Rename the `pid' argument as `cygpid'. + Add tracing. Pass an intid to `find ()', not a shmid. + (server_shmmgr::shmget): Add a separate out arguments. Rename the + `pid' argument as `cygpid'. Add tracing. + (server_shmmgr::server_shmmgr): Update for new field names. + (server_shmmgr::find_by_key): Update for the new `ds.shm_perm.key' + field. + (server_shmmgr::find): Update to use the new `segment_t::intid' + field. + (server_shmmgr::new_segment): Rename the `pid' argument as + `cygpid'. Check that the requested size is within bounds. Handle + new error result from `new_segment (key, HANDLE)'. + (server_shmmgr::new_segment): Work with intids, not shmids. Check + that the new intid is within bounds. Update for new field names. + (server_shmmgr::delete_segment): Pass an intid to `find ()', not a + shmid. Update for new field names. + (client_request_shm::serve): Check that the incoming message + length is the size of the `_parameters.in' struct, not of the + whole in/out parameter union. Likewise, set the outgoing message + length to the size of the `_parameters.out' struct. Update for + the new server_shmmgr interfaces. + * include/sys/ipc.h (ipc_perm::key): New field. + * include/sys/shm.h (SHM_INFO): New constant. + * cygserver_ipc.h (IPCMNI): New constant. + (ipc_int2ext): Add `sequence' argument and munge this into the + external ipc id. + (ipc_ext2int_subsys): Unmunge the sequence number from the + external ipc id. + (ipc_ext2int): Ditto. + (ipc_inc_id): Remove. + (ipc_dec_id): Remove. + * cygserver_shm.h (SHMMAX): New constant. + (SHMMIN): Ditto. + (SHMMNI): Ditto. + (SHMSEG): Ditto. + (SHMALL): Ditto. + (client_request_shm::_parameters): Re-arrange as a union of two + separate structs, one for in arguments, the other for out. + (client_request_shm::shmid): Update for the new parameter layout. + (client_request_shm::ds): Ditto. + (client_request_shm::info): New method. + * shm.cc (client_shmmgr::_shmat_cnt): New static field. + (client_shmmgr::shmat): Add locking. Add tracing. + (client_shmmgr::shmctl): Update for ipcs(8) commands. Add + tracing. Add more argument checking. + (client_shmmgr::shmdt): Add locking. Add tracing. Update the new + `_shmat_cnt' field. + (client_shmmgr::shmget): Add tracing. + (client_shmmgr::fixup_shms_after_fork): Add tracing. Add + consistency checking. + (client_shmmgr::attach): Add more tracing. + (client_shmmgr::new_segment): Update the new `_shmat_cnt' field. + (client_request_shm::client_request_shm): Update for the new + parameter layout. Set the outgoing message length to the size of + the `_parameters.in' struct, not of the whole in/out parameter + union. + +2002-09-22 Conrad Scott + + * shm.cc: Remove the use of a static client_shmmgr object. + (client_shmmgr::_instance): New static variable. + (client_shmmgr::instance): Allocate a new shmmgr on the heap, + rather than using a local static object. + +2002-09-22 Conrad Scott + + * cygserver_transport.cc (create_server_transport): Fix + cut-and-paste error. + +2002-09-22 Conrad Scott + + * cygserver_client.cc (client_request::handle_request): Don't + bother with the client request activity marker when compiled with + debugging output. + +2002-09-22 Conrad Scott + + * cygserver_transport_pipes.cc + (MAX_WAIT_NAMED_PIPE_RETRY): New constant. + (WAIT_NAMED_PIPE_TIMEOUT): Ditto. + (transport_layer_pipes::close): The `pipe' field is now either + NULL or a valid handle, and it should never have the value + `INVALID_HANDLE_VALUE'. + (transport_layer_pipes::read): Ditto. + (transport_layer_pipes::write): Ditto. + (transport_layer_pipes::connect): Ditto. + (transport_layer_pipes::impersonate_client): Ditto. + (transport_layer_pipes::connect): Ditto. New, but still bogus, + retry logic. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (server_shmmgr::server_shmmgr): All fields have + to be initialized now that the singleton is no longer static. + +2002-09-22 Conrad Scott + + * cygserver_shm.cc (server_shmmgr::_instance): New static field. + (server_shmmgr::_instance_once): Ditto. + (server_shmmgr::initialise_instance): New static method. + (server_shmmgr::instance): Use a pthread_once_t rather than + relying on a local static variable. + +2002-09-22 Conrad Scott + + * woutsup.h: Remove all uses of the C++ new and delete operators + throughout cygserver until they are fully thread-safe. + (safe_new0): New macro to replace the C++ new operator. + (safe_new): Ditto. + (safe_delete): New macro to replace the C++ delete operator. + * cygserver_client.cc (client_request::handle_request): Replace + all uses of the C++ new and delete operators with the new macros + from "woutsup.h". + (client_request::make_request): Ditto. + * cygserver_process.cc (~process_cleanup): Ditto. + (process::cleanup): Ditto. + (process_cache::process): Ditto. + (process_cache::check_and_remove_process): Ditto. + * cygserver_shm.cc (server_shmmgr::new_segment): Ditto. + (server_shmmgr::delete_segment): Ditto. + * cygserver_transport.cc (create_server_transport): Ditto. + * cygserver_transport_pipes.cc + (transport_layer_pipes::accept): Ditto. + * cygserver_transport_sockets.cc + (transport_layer_sockets::accept): Ditto. + * threaded_queue.cc (~threaded_queue): Ditto. + (threaded_queue::worker_loop): Ditto. + (threaded_queue::stop): Replace sleep(3) with win32 Sleep. + * cygserver.cc (~server_request): Replace all uses of the C++ new + and delete operators with the new macros from "woutsup.h". + (server_submission_loop::request_loop): Ditto. + (main): Ditto. Replace sleep(3) with win32 Sleep. Replace + iostreams with FILEs. + (print_usage): Replace iostreams with FILEs. + (print_version): Ditto. + +2002-09-22 Conrad Scott + + * cygserver_transport_sockets.cc + (transport_layer_sockets::accept): Rename local variable + `accept_fd' to avoid shadowing the `fd' field. + +2002-09-22 Conrad Scott + + * cygwin_ipc.h: Moved (back) to "include/sys/ipc.h". + * cygwin_shm.h: Moved (back) to "include/sys/shm.h". + * include/sys/ipc.h: New file. + * include/sys/shm.h: New file. + * cygserver_shm.h: Update for new header file locations. + * ipc.cc: Ditto. + +2002-09-22 Conrad Scott + + * cygserver_client.cc (client_request::make_request): Comment out + a verbose tracing statement. + * cygserver_process.cc (process_cache::sync_wait_array): Fix + broken assert. + * include/cygwin/cygserver.h (class client_request): Remove excess + use of `class' qualifier in declarations. + (class client_request_get_version): Ditto. + (class client_request_shutdown): Ditto. + (class client_request_attach_tty): Ditto. + +2002-09-22 Conrad Scott + + * cygserver_ipc.h: New file. + * cygserver_shm.h: Re-written from scratch. + * cygserver_shm.cc: Ditto. + * shm.cc: Ditto. + +2002-09-22 Conrad Scott + + * threaded_queue.h (class queue_request): Re-write. + (threaded_queue_thread_function): Remove. + (class queue_process_param): Remove. + (class threaded_queue): Re-write. + (class queue_submission_loop): New version of the old + `queue_process_param' class. + (TInterlockedExchangePointer): New templated function. + (TInterlockedCompareExchangePointer): Ditto. + * threaded_queue.cc (worker_function): Remove. + (class threaded_queue): Re-write. + (class queue_process_param): Remove. + (class queue_submission_loop): New version of the old + `queue_process_param' class. + * include/cygwin/cygserver_process.h (process_cleanup): Re-write. + (class process_process_param): Remove. + (class cleanup_routine): Re-write. + (class process): Re-write. + (class process_cache): Re-write. + * cygserver_process.cc (process_cleanup): Re-write. + (class process_process_param): Remove. + (class cleanup_routine): Re-write. + (class process): Re-write. + (class process_cache): Re-write. + * cygserver.cc (request_count): Remove unused variable. + (class server_request): Move methods inline. + (class server_process_param): Remove. + (class server_request_queue): Remove. + (request_queue): Move into `main ()' and change type to + `threaded_queue'. + (request_loop): Remove. + (class server_submission_loop): New version of the old + `server_process_param' class. + (shutdown_server): New variable. + (client_request_shutdown::serve): Set `shutdown_server' to trigger + shutdown. + (handle_signal): Ditto. + (main): Install signal handler for SIGINT rather than SIGQUIT. + Use new interfaces for the `request_queue' and the `cache'. + Create a `server_submission_loop' and add to the `request_queue'. + Add check for the `shutdown_server' variable to the main loop. + * cygserver_shm.cc (client_request_shm::serve): Release the + process object after use. + +2002-09-22 Conrad Scott + + * cygserver_client.cc (client_request::handle_request): Correct + tracing statement. + * cygserver_transport_pipes.cc: Remove local definition of + FILE_FLAG_FIRST_PIPE_INSTANCE constant. + * cygwin_ipc.h: Update copyright notice. + * cygwin_shm.h: Ditto. + * woutsup.h: Add definition of _WIN32_WINNT. + +2002-09-22 Conrad Scott + + * cygserver_client (client_request::make_request): Replace my + inappropriate use of set_errno () with error_code () throughout. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver.h: Add forward declarations of class + transport_layer_base and class process_cache to reduce + dependencies between header files. + * include/cygwin/cygserver_process.h: Add include of + "threaded_queue.h". + * cygserver.cc: Remove unnecessary cygserver header files. + * cygserver_client.cc: Ditto. + * cygserver_process.cc: Ditto. + * cygserver_shm.cc: Ditto. + * cygserver_shm.h: Ditto. + * cygserver_transport_pipes.cc: Ditto. + * dcrt0.cc: Ditto. + * fhandler_tty.cc: Ditto. + * tty.cc: Ditto. + +2002-09-22 Conrad Scott + + * cygserver_shm.h: Replace with "cygwin_shm.h" after + merge from HEAD. + * cygwin_ipc.h: Update with changes to include/sys/ipc.h lost in + merge from HEAD. + * cygwin_shm.h: Ditto. + +2002-09-22 Conrad Scott + + * cygserver.cc: The tests for a duplicate server instance are now + the responsibility of the transport layer. + (request_loop): Use new `recoverable' flag in call to + `cygserver_transport::accept ()' and shutdown on an unrecoverable + error. + (main): Never call `cygserver_init ()'. Fake `cygserver_running' + just for sending a shutdown request. + * cygserver_client.cc (client_request::send): Comment out + message-size tracing statements as verbose. + (client_request::handle): Ditto. + (client_request_get_version::check_version): #ifdef as DLL-only. + (check_cygserver_available): Ditto. + (cygserver_init): Ditto. + * include/cygwin/cygserver.h + (client_request_get_version::check_version): #ifdef as DLL-only. + (check_cygserver_available): Ditto. + (cygserver_init): Ditto. + * include/cygwin/cygserver_transport.h + (transport_layer_base::impersonate_client): #ifdef as + cygserver-only. + (transport_layer_base::revert_to_self): Ditto. + (transport_layer_base::listen): Ditto. + (transport_layer_base::accept): Ditto. Add a `recoverable' out + flag for error handling. + * include/cygwin/cygserver_transport_sockets.h: Ditto. + * include/cygwin/cygserver_transport_pipes.h: Ditto. + (transport_layer_pipes): Change type of the `pipe_name' field. + Remove the `inited' field, as unnecessary. Add new + `is_accepted_endpoint' field. + * include/cygwin/cygserver_transport.cc + (transport_layer_base::impersonate_client): #ifdef as + cygserver-only. + (transport_layer_base::revert_to_self): Ditto. + * include/cygwin/cygserver_transport_sockets.cc + (transport_layer_sockets::listen): #ifdef as cygserver-only. + (transport_layer_sockets::accept): #ifdef as cygserver-only. + Analyse any errno from `accept ()' and set `recoverable' as + appropriate. + * cygserver_transport_pipes.cc: Add local #define of + `FILE_FLAG_FIRST_PIPE_INSTANCE'. + (pipe_instance_lock_once): New variable. + (pipe_instance_lock): Ditto. + (pipe_instance): Ditto. + (initialise_pipe_instance_lock): New function. + (transport_layer_pipes::transport_layer_pipes): Change + initialization of `pipe_name'. Initialize `is_accepted_endpoint' + as appropriate. Remove use of `inited'. + (transport_layer_pipes::impersonate_client): #ifdef as + cygserver-only. + (transport_layer_pipes::revert_to_self): Ditto. + (transport_layer_pipes::listen): Ditto. + (transport_layer_pipes::accept): Ditto. Keep track of how often + many named pipes have been created, in the `pipe_instance' + variable, and pass the `FILE_FLAG_FIRST_PIPE_INSTANCE' flag on the + open of the first instance. Analyse the error code from + `CreateNamedPipe ()' and set the `recoverable' flag as + appropriate. + (transport_layer_pipes::close): Update the `pipe_instance' count. + +2002-09-22 Conrad Scott + + * woutsup.h (cygserver_running): Add declaration. + (api_fatal): Eliminate. + * include/cygwin/cygserver.h + (client_request_get_version::check_version): Change return type to + bool. + (check_cygserver_available): New function. + (cygserver_init): Add check_version_too argument. + * cygserver_client.cc (allow_daemon): Make a bool. + (client_request_get_version::make_request): See errno on error. + Remove special case for CYGSERVER_REQUEST_GET_VERSION; this is now + handled in cygserver_init(). + (client_request_get_version::check_version): Use syscall_printf() + instead of api_fatal(). Return true if cygserver version is + compatible. + (check_cygserver_available): New function; code moved here from + cygserver_init(). + (cygserver_init): Move some code into check_cygserver_available(). + * cygserver.cc (__set_errno): Copy from debug.cc so that + set_errno() can be used when __OUTSIDE_CYGWIN__. + (main): Call cygserver_init() to set up cygserver_running and add + checks against this to (try and) prevent multiple copies of + cygserver running simultaneously. Remember to delete all + transport connections so that (one day) the transport classes can + tidy up on cygserver shutdown. + +2002-09-22 Conrad Scott + + * cygserver.cc (main): Adjust tracing output for a cleaner display + when compiled without --enable-debugging. + * threaded_queue.cc (threaded_queue::cleanup): Ditto. + (queue_process_param::stop): Ditto. + * include/cygwin/cygserver.h + (client_request::make_request): Make non-virtual. + (client_request::send): Make virtual and protected, not private. + (client_request_attach_tty::send): New virtual method. + * cygserver_client.cc: Use the `msglen()' accessor rather than + `_header.msglen' throughout. + (client_request_attach_tty::send): New method. + (client_request::make_request): Remove the explicit close of + `transport' as it is closed on deletion. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver.h: Change the client_request classes to + give greater encapsulation and to allow variable length requests + and replies. + (enum cygserver_request_code): Now client_request::request_code_t. + (class request_header): Now client_request::header_t. Make a + union of the request_code and the error_code. The `cb' field, + which was the buffer length, is now the `size_t msglen' field. + (struct request_get_version): Now + client_request_get_version::request_get_version. + (struct request_shutdown): Remove unused type. + (struct request_attach_tty): Now + client_request_attach_tty::request_attach_tty. + (client_request::_buf): Make field const. + (client_request::_buflen): New const private field. + (client_request::request_code): New accessor. + (client_request::error_code): Ditto. + (client_request::msglen): Ditto. + (client_request::handle_request): New static method. + (client_request::make_request): New virtual method. + (client_request::handle): New method. + (client_request::send): Make private. + (client_request_get_version::check_version): New method. + (client_request_get_version::serve): Make private. + (client_request_get_version::version): Ditto. + (client_request_shutdown::serve): Ditto. + (client_request_attach_tty::req): Ditto. + (client_request_attach_tty::serve): Ditto. + (client_request_attach_tty::from_master): Make method const. + (client_request_attach_tty::from_master): Ditto. + * cygserver_client.cc + (client_request_get_version::client_request_get_version): Track + changes to the client_request classes. + (client_request_attach_tty::client_request_attach_tty): Ditto. + (client_request_get_version::check_version): New method to + encapsulate code from cygserver_init(). + (client_request_shutdown::client_request_shutdown): Move into + "cygserver.cc". + (client_request::send): Track changes to the client_request + classes. Add more error checking. + (client_request::handle_request): New static method containing the + first half of the old server_request::process() code. + (client_request::make_request): New method to replace the old + cygserver_request() function. + (client_request::handle): New method containing the second half of + the old server_request::process() code. + (cygserver_init): Track changes to the client_request classes. In + particular, some code moved into the + client_request_get_version::check_version() method. + * cygserver.cc (client_request_attach_tty::serve): Track changes + to the client_request classes. In particular, only return a reply + body if some handles are successfully duplicated for the client. + And remove goto's. + (client_request_get_version::serve): Track changes to the + client_request classes. + (client_request_shutdown::serve): Ditto. + (class client_request_invalid): Dead, and so young too. + (server_request::request_buffer): Remove unnecessary field. + (client_request_shutdown::client_request_shutdown): Moved here + from "cygserver_client.cc". + (server_request::process): Implementation moved into the new + client_request::handle_request() and client_request::handle() + methods. + * cygserver_shm.h (class client_request_shm): Put client- and + server-specific interfaces inside #ifdef/#ifndef __INSIDE_CYGWIN__ + guards. + (client_request_shm::serve): Make private. + * cygserver_shm.cc + (client_request_shm::client_request_shm): Track changes to the + client_request classes. + (client_request_shm::serve): Ditto + * shm.cc (client_request_shm::client_request_shm): Ditto. Use + alloc_sd() rather than set_security_attribute() to get access to + the SECURITY_DESCRIPTOR length, so that we can use it to set the + request body length. + (shmat): Track changes to the client_request classes. In + particular, allocate client_request objects on the stack rather + than on the heap, and use the client_request::make_request() + method rather than the old cygserver_request() function. + (shmdt): Ditto. + (shmctl): Ditto. + (shmget): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::cygserver_attach_tty): Ditto. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver_transport.h + (cygserver_transport::read): Change buffer type to void *. + (cygserver_transport::write): Ditto. + * include/cygwin/cygserver_transport_sockets.h + (cygserver_transport_sockets::read): Ditto. + (cygserver_transport_sockets::write): Ditto. + * include/cygwin/cygserver_transport_pipes.h + (cygserver_transport_pipes::read): Ditto. + (cygserver_transport_pipes::write): Ditto. + * cygserver_transport_sockets.cc + (cygserver_transport_sockets::read): Ditto. + (cygserver_transport_sockets::write): Ditto. + * cygserver_transport_pipes.cc + (cygserver_transport_pipes::read): Ditto. Set errno on error, to + match behaviour of cygserver_transport_sockets class. + (cygserver_transport_pipes::write): Ditto. + +2002-09-22 Conrad Scott + + * cygserver.cc (version): New static variable. + (server_request_queue::add_connection): Remove my gratuitous use + of studly caps. + (setup_privileges): Declare static. + (handle_signal): Ditto. + (longopts): Make a local variable of main(). + (opts): Ditto. + (print_usage): New function. + (print_version): Ditto (tip of the hat to Joshua Daniel Franklin + for inspiration here). + (main): More argument checking. Add --help and --version options. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver.h (client_request::serve): Make pure + virtual. + * cygserver.cc (client_request::serve): Remove definition of pure + virtual method. + (class client_request_invalid): New class. + (server_request::process): Use new client_request_invalid + class. And remove goto's. + +2002-09-22 Conrad Scott + + * cygserver.cc (class server_request): Add virtual destructor. + (server_request_queue::addConnection): New method to replace bad + virtual add() method. + (request_loop): Replace call to queue->add() with call to + queue->addConnection(). + (server_request::server_request): Use field initialization. + (server_request::~server_request): New virtual destructor. + (server_request::process): Remove close and delete of + transport_layer_base object. It is deleted by the server_request's + own destructor and closed by its own destructor. + * include/cygwin/cygserver.h + (client_request::operator request_header): Remove unused method. + * cygserver_client.cc: Ditto. + * include/cygwin/cygserver_process.h + (class cleanup_routine): Add virtual destructor. + (cleanup_routine::cleanup): Make pure virtual. + (class process_cache): Make destructor non-virtual. + (process_cache::add): Ditto. + * cygserver_process.cc + (cleanup_routine::~cleanup_routine): New virtual destructor. + * include/cygwin/cygserver_transport.h + (class transport_layer_base): Add virtual destructor. + * cygserver_transport.cc + (transport_layer_base::~transport_layer_base): New virtual + destructor. + * include/cygwin/cygserver_transport_pipes.h + (class transport_layer_pipes): Add virtual destructor. + * cygserver_transport_pipes.cc + (transport_layer_pipes::~transport_layer_pipes): New virtual + destructor. + (transport_layer_pipes::close): Null out handle after closing. + * include/cygwin/cygserver_transport_sockets.h + (class transport_layer_sockets): Add virtual destructor. + * cygserver_transport_sockets.cc + (transport_layer_sockets::~transport_layer_sockets): New virtual + destructor. + (transport_layer_sockets::close): Null out fd after closing. + * threaded_queue.h (class queue_request): Add virtual destructor. + (queue_request::process): Make pure virtual. + * threaded_queue.cc (~queue_request): New virtual destructor. + (queue_request::process): Remove definition of pure virtual + method. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver.h (client_request::send): Make + non-virtual. + (class client_request_attach_tty): Put client- and server-specific + interfaces inside #ifdef/#ifndef __INSIDE_CYGWIN__ guards. + * cygserver_client.cc: Ditto. + (cygserver_init): Fix error handling. + +2002-09-22 Conrad Scott + + * cygserver.cc: Throughout the code, check and correct level of + the XXX_printf() functions used. Comment out several of the + debug_printf() calls with "// verbose:". Reformat and correct + typos of some of the XXX_printf() formats. + * cygserver_process.cc: Ditto. + * cygserver_shm.cc: Ditto. + * cygserver_transport_pipes.cc: Ditto. + * cygserver_transport_sockets.cc: Ditto. + * shm.cc (hi_ulong): New function to allow printing of a 64-bit + key with current small_printf implementation. + (lo_ulong): Ditto. + (client_request_shm::client_request_shm): Use hi_ulong() and + lo_ulong() in call to debug_printf(). + +2002-09-22 Conrad Scott + + * cygserver_shm.cc: Remove #define __INSIDE_CYGWIN__ from around + as it no longer contains any internal code. + +2002-09-22 Conrad Scott + + * include/sys/ipc.h (IPC_PRIVATE): Add cast to key_t. + (IPC_INFO): New flag for ipcs(8). + (IPC_RMID IPC_SET IPC_STAT): Renumber. + * include/sys/shm.h (SHM_RDONLY SHM_RND): Renumber with distinct + values [sic]. + (class _shmattach): Internal type moved to "cygserver_shm.h". + (class shmnode): Ditto. + (class shmid_ds): Ditto. + (struct shmid_ds): Add spare fields. + (struct shminfo): New type for IPC_INFO interface. + * cygserver_shm.h: Remove obsolete #if 0 ... #endif block. + (class shm_cleanup): Remove unused class. + (struct _shmattach): Internal type moved from . + (struct shmnode): Ditto. + (struct int_shmid_ds): Ditto. Renamed to avoid name clash with + public interface struct shmid_ds. Use the shmid_bs structure as a + field. + * cygserver_shm.cc: Remove obsolete #if 0 ... #endif block. + (client_request_shm::serve): Update for redefinition of + int_shmid_ds structure. + * shm.cc (build_inprocess_shmds): Ditto. + (fixup_shms_after_fork): Ditto. + (shmctl): Ditto. + (shmget): Ditto. Remove obsolete #if 0 ... #endif code. + +2002-09-22 Conrad Scott + + * include/cygwin/cygserver_transport.h + (transport_layer_base::transport_layer_base): Remove since it is + now redundant. + (transport_layer_base::listen): Make a pure virtual method. + (transport_layer_base::accept): Ditto. + (transport_layer_base::close): Ditto. + (transport_layer_base::read): Ditto. + (transport_layer_base::write): Ditto. + (transport_layer_base::connect): Ditto. + * cygserver_transport.cc + (transport_layer_base::transport_layer_base): Remove since it is + now redundant. + (transport_layer_base::listen): Remove since it is now a pure + virtual method. + (transport_layer_base::accept): Ditto. + (transport_layer_base::close): Ditto. + (transport_layer_base::read): Ditto. + (transport_layer_base::write): Ditto. + (transport_layer_base::connect): Ditto. + +2002-09-22 Conrad Scott + + * cygserver.cc (check_and_dup_handle): Only use security code if + running on NT, i.e. if wincap.has_security(). + (client_request_attach_tty::serve): Add check for has_security(). + * cygserver_process.cc (process_cache::process): Use DWORD winpid + throughout to avoid win32 vs. cygwin pid confusion. + (process::process): Ditto. + * cygserver_shm.cc (client_request_shm::serve): Only use security + code if running on NT, i.e. if wincap.has_security(). + * cygserver_shm.h (client_request_shm::parameters.in): Replace the + ambiguous pid field with cygpid and winpid fields. + (client_request_shm::client_request_shm): Reduce to only two + client-side constructors: one for SHM_CREATE, another for all the + other requests. + * shm.cc (client_request_shm::client_request_shm): + Ditto. Initialize cygpid and winpid fields here. On NT initialize + sd_buf here using set_security_attribute() to make use of the euid + and egid. + (shmat): Use new client_request_shm constructor. + (shmdt): Ditto. + (shmctl): Ditto. + (shmget): Ditto. Remove security code, now performed in the + relevant client_request_shm constructor. + * include/cygwin/cygserver_process.h: (class cleanup_routine): + Change winpid type to DWORD. + (class process): Ditto. + +2002-09-22 Conrad Scott + + * woutsup.h: New file. + * cygserver.cc: Use "woutsup.h" and new XXX_printf macros. + (getfunc): New function, copied verbatim from "strace.cc". + (__cygserver__printf): New function. + * cygserver_client.cc: Use "woutsup.h" and new XXX_printf macros. + * cygserver_process.cc: Ditto. + * cygserver_shm.cc: Ditto. + * cygserver_transport.cc: Ditto. + * cygserver_transport_pipes.cc: Ditto. + * cygserver_transport_sockets.cc: Ditto. + * threaded_queue.cc: Ditto. + * shm.cc: Remove trailing \n from XXX_printf format strings. + * Makefile.in: Remove special __OUTSIDE_CYGWIN__ case for + cygserver_shm.cc. + +2002-09-21 Christopher Faylor + + * init.cc (dll_entry): Temporarily disable thread detach code. + +2002-09-21 Christopher Faylor + + * fhandler.cc (fhandler_base::dup): Don't set handle on failure. + Caller has already taken care of that. + * fhandler_console.cc (fhandler_console::open): Initialize handles to + NULL. + (fhandler_console::close): Ditto. + +2002-09-21 Christopher Faylor + + GNUify non-GNU formatted functions calls throughout. + +2002-09-21 Conrad Scott + + * cygwin_ipc.h: Move to "include/cygwin/ipc.h". + * cygwin_shm.h: Move to "include/cygwin/shm.h". + * include/cygwin/ipc.h: New file. + * include/cygwin/shm.h: New file. + * ipc.c:c Update include. + * cygserver_shm.cc: Update include. + * shm.cc: Ditto. + +2002-09-21 Robert Collins + + * pthread.cc: Use class::call for converted pthread and semaphore + calls. + * thread.cc: Convert various __pthread_call and __sem_call to + pthread::call and sem::call throughout. + * pthread.h (__pthread_cancel): Convert to pthread::cancel. + (__pthread_join): Convert to pthread::join. + (__pthread_detach): Convert to pthread::detach. + (__pthread_create): Convert to pthread::create. + (__pthread_once): Convert to pthread::once. + (__pthread_atfork): Convert to pthread::atfork. + (__pthread_suspend): Convert to pthread::suspend. + (__pthread_continue): Convert to pthread::resume. + (__sem_init): Convert to semaphore::init. + (__sem_destroy): Convert to semaphore::destroy. + (__sem_wait): Convert to semaphore::wait. + (__sem_trywait): Convert to semaphore::trywait. + (__sem_post): Convert to semaphore::post. + +2002-09-21 Robert Collins + + * thread.cc: Finish the removal of the separate pthread_key + destructor list. + Remove all pthread_key_destructor and pthread_key_destructor_list + references throughout. + (pthread::exit): Call the new pthread_key interface to activate + destructors. + (pthread_key::keys): Change into a list. + (pthread_key::saveAKey): New method, used via forEach. + (pthread_key::restoreAKey): Ditto. + (pthread_key::destroyAKey): Ditto. + (pthread_key::fixup_before_fork): Use the List::forEach functionality. + (pthread_key::fixup_after_fork): Ditto. + (pthread_key::runAllDestructors): New method implementation. + (pthread_key::pthread_key): Use List::Insert rather than custom list + code. + (pthread_key::~pthread_key): Use List::Remove for the same reason. + * thread.h: Remove all pthread_key_destructor and + pthread_key_destructor_list references throughout. + (List): Move the interface above pthread_key in the header. + Use atomic operations during insert and delete. + (List::forEach): A generic interface for doing something on each node. + (pthread_key::runAllDestructors): New method, run all destructors. + (pthread_key::fork_buf): Make private. + (pthread_key::run_destructor): Ditto. + (pthread_key::saveAKey): New method for clearer source. + (pthread_key::restoreAKey): Ditto. + (pthread_key::destroyAKey): Ditto. + (MTinterface::destructors): Remove. + +2002-09-21 Robert Collins + + * thread.cc: Partial refactoring of pthread_key destructor + handling. Loosely based on Thomas Pfaff's work. + (pthread_key_destructor_list::Insert): Remove. + (pthread_key_destructor_list::Pop): Remove. + (pthread_key_destructor_list::IterateNull): Call the key's + run_destructor method. + (pthread_key::pthread_key): Initialize new member. + (pthread_key::get): Mark as const for correctness. + (pthread_key::run_destructor): Implement. + * thread.h (pthread_key::get): Mark as const for correctness. + (pthread_key::run_destructor): Declare. + (List): New template class that implements a generic list. + (pthread_key_destructor_list): Inherit from List, and remove + now duplicate functions. + +2002-09-21 Robert Collins + + * thread.cc: Change verifyable_object_isvalid calls with + PTHREAD_CONDATTR_MAGIC, PTHREAD_MUTEXATTR_MAGIC, PTHREAD_COND_MAGIC, + SEM_MAGIC to objecttype::isGoodObject() calls throughout. + (pthread_condattr::isGoodObject): Implement. + (pthread_mutex::isGoodInitializer): Implement. + (pthread_mutex::isGoodInitializerOrObject): Minor bugfix in the + check for verifyable_object_isvalid result. + (pthread_mutexattr::isGoodObject): Implement. + (pthread_cond::isGoodObject): Ditto. + (pthread_cond::isGoodInitializer): Ditto. + (pthread_cond::isGoodInitializerOrObject): Ditto. + (semaphore::isGoodObject): Ditto. + * thread.h (pthread_mutex::isGoodInitializer): Declare. + (pthread_condattr::isGoodObject): Ditto. + (pthread_cond::isGoodObject): Const correctness. + (pthread_cond::isGoodInitializer): Declare. + (pthread_cond::isGoodInitializerOrObject): Ditto. + (semaphore::isGoodObject): Const correctness. + +2002-09-21 Robert Collins + + * thread.cc: Change verifyable_object_isvalid calls with + PTHREAD_MUTEX_MAGIC and PTHREAD_KEY_MAGIC and PTHREAD_ATTR_MAGIC to + ::isGoodObject() calls throughout. + (MTinterface::Init): Remove dead code. + (pthread_attr::isGoodObject): Implement. + (pthread_key::isGoodObject): Implement. + (pthread_mutex::isGoodObject): Implement. + (pthread_mutex::isGoodInitializerOrObject): Implement. + (pthread::isGoodObject): Update signature. + * thread.h (pthread_key::isGoodObject): Declare. + (pthread_attr::isGoodObject): Ditto. + (pthread_mutex::isGoodObject): Ditto. + (pthread_mutex::isGoodInitializerOrObject): Ditto. + (pthread::isGoodObject): Change to a const parameter for const + correctness. + (pthread_mutexattr::isGoodObject): Declare. + (pthread_condattr::isGoodObject): Ditto. + (pthread_cond::isGoodObject): Ditto. + (semaphore::isGoodObject): Ditto. + +2002-09-19 Christopher Faylor + + Cleanup calls to CreateFile throughout. + * dcrt0.cc (__api_fatal): Correctly check for failing return from CreateFile. + * assert.cc (__assert): Don't check return value from CreateFile for NULL. + * fhandler_console.cc (set_console_state_for_spawn): Ditto. + * fork.cc (fork_parent): Ditto. + +2002-09-18 Christopher Faylor + + * cygthread.cc (cygthread::initialized): Avoid copying on fork or some + threads may not end up in the pool. + (cygthread::new): Avoid race when checking for initialized. Add + debugging code. + +2002-09-18 Pierre Humblet + + * fhandler.cc (fhandler_base::raw_read): Add case for + ERROR_INVALID_HANDLE due to Win95 directories. + (fhandler_base::open): Handle errors due to Win95 directories. + (fhandler_base::close): Add get_nohandle () test. + (fhandler_base::set_close_on_exec): Ditto. + (fhandler_base::fork_fixup): Ditto. + (fhandler_base::lock): Change error code to Posix EINVAL. + (fhandler_base::dup): If get_nohandle (), set new value to + INVALID_HANDLE_VALUE instead of NULL. + * fhandler_disk_file.cc (fhandler_disk_file::fstat): Call fstat_by_name + if get_nohandle (). Remove extraneous element from strpbrk. + (fhandler_disk_file::open): Remove test for Win95 directory. + + * fhandler_random.cc (fhandler_dev_random::open): Add set_nohandle (). + * fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto. + * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. + (fhandler_dev_zero::close): Delete. + * fhandler.h (class fhandler_dev_zero): Ditto. + +2002-09-17 Robert Collins + + * thread.cc (pthread_key::set): Preserve GetLastError(). Reported + by Thomas Pffaf. + +2002-09-17 Robert Collins + + This work inspires by Thomas Pfaff's pthread_fork patch (1). + * fork.cc (fork_child): Remove MTinterface fixup call, it's + adsorbed by pthread::atforkchild. + Rename __pthread_atforkchild to pthread::atforkchild to give + access to private members. + (fork_parent): Rename __pthread_atforkparent to + pthread::atforkparent to give it access to private members. + Ditto for __pthread_atforkprepare. + * thread.cc: Fix some formatting problems throughout. + (MTinterface::fixup_before_fork): Implement. + (MTinterface::fixup_after_fork): Fix pthread_keys. + (pthread_key::keys): Implement. + (pthread_key::fixup_before_fork): Ditto. + (pthread_key::fixup_after_fork): Ditto. + (pthread_key::pthread_key): Add to pthread_key::keys. + (pthread_key::~pthread_key): Remove from pthread_key::keys. + (pthread_key::saveKeyToBuffer): Implement. + (pthread_key::recreateKeyFromBuffer): Ditto. + (pthread::atforkprepare): Prepare all MT classes for fork. + (pthread::atforkchild): And fix them up afterwards. + * thread.h (pthread_key): Buffer the key value during + fork in fork_buf. + List the keys needing to be fixed up in a linked list with + head pthread_key::keys. + (pthread): Move atfork cygwin internal calls into the class. + (MTInterface): Provide a fixup_before_fork for objecst that + need to save state. + (__pthread_atforkprepare): Remove. + (__pthread_atforkparent): Remove. + (__pthread_atforkchild): Remove. + +2002-09-16 Christopher Faylor + + * init.cc: Cleanup slightly and remove obsolete code. + +2002-09-11 Robert Collins + + * init.cc (dll_entry): On thread detach, if the thread hasn't + exit()ed, do so. + * pthread.cc (pthread_getsequence_np): Remove the + __pthread_getsequence_np wrapper. This requires errno.h. + * thread.cc (pthread::self): Instantiate a new pthread object + when called and none exists. return a NULL object if instantiation + fails. + (pthread::precreate): Factor out common code. + (pthread::postcreate): Ditto. + (pthread::create): Ditto. + (pthread::exit): Remove the TLS value when we exit to prevent + double exits. + (MTinterface::Init): Bugfix - don't mark the TLS index as created + if one was not allocated. + Apply Extract Method to move pthread specific initialisation into + pthread. + (pthread::initMainThread): Extracted method from MTinterface::Init. + (pthread::setTlsSelfPointer): Extracted method from various pthread + calls, to make reading those functions easier. + (pthread::setThreadIdtoCurrent): Ditto. + (pthread::cancel_self): Bring into the .cc file, it's only used + within the class. + (pthread::getThreadId): Ditto. + (pthread::thread_init_wrapper): Apply Extract Method to the TLS + setting logic. + (pthread::isGoodObject): Extracted method from various pthread + wrapper calls, for clarity of reading. + (pthread::getsequence_np): Converted from __pthread_getsquence_np. + (__pthread_create): Apply Extract Method to the object validation. + (__pthread_cancel): Ditto. + (__pthread_join): Ditto. + (__pthread_detach): Ditto. + (__pthread_suspend): Ditto. + (__pthread_continue): Ditto. + (__pthread_getschedparam): Ditto. + (__pthread_getsequence_np): Remove. + (__pthread_setschedparam): Apply Extract Method to the object + validation. + (pthreadNull::getNullpthread): New method, return the pthreadNull + object. + (pthreadNull::pthreadNull): Private constructor to prevent accidental + use. + (pthreadNull::~pthreadNull): Prevent compile warnings. + (pthreadNull::create): Override pthread behaviour. + (pthreadNull::exit): Ditto. + (pthreadNull::cancel): Ditto. + (pthreadNull::testcancel): Ditto. + (pthreadNull::setcancelstate): Ditto. + (pthreadNull::setcanceltype): Ditto. + (pthreadNull::push_cleanup_handler): Ditto. + (pthreadNull::pop_cleanup_handler): Ditto. + (pthreadNull::getsequence_np): Ditto. + (pthreadNull::_instance): Ditto. + * thread.h (pthread): Declare pre- and post-create. + Move GetThreadId to private scope and rename to getThreadId. + Move setThreadIdtoCurrent to private scope. + Make create virtual. + Make ~pthread virtual. + Declare initMainThread. + Declare isGoodObject. + Make exit virtual. + Make cancel virtual. + Make testcancel virtual. + Make setcancelstate virtual. + Make setcanceltype virtual. + Make push_cleanup_handler virtual. + Make pop_cleanup_handler virtual. + Declare getsequence_np. + Declare setTlsSelfPointer. + (pthreadNull): New null object class for pthread. + (__pthread_getsequence_np): Remove. + +2002-09-13 Corinna Vinschen + + * syscalls.cc (seteuid32): Treat ILLEGAL_UID invalid. + (setegid32): Treat ILLEGAL_GID invalid. + +2002-09-10 Pierre Humblet + + * grp.cc (initgroups): Call groups::clear_supp to free the + supplementary group sids that may have been set by setgroups. + * security.cc (cygsidlist::free_sids): Also zero the class members. + * security.h (groups::clear_supp): New. + Rename cygsidlist_unknown to cygsidlist_empty. + +2002-09-08 Christopher Faylor + + * fhandler_tty.cc (fhandler_tty_slave::open): Don't protect + input/output handles since they are not properly manipulated later. + * tty.cc (tty::make_pipes): Ditto. + +2002-09-06 Christopher Faylor + + * winsup.h (_WIN32_WINNT): Protect. + +2002-09-06 Christopher Faylor + + * winsup.h (_WIN32_WINNT): Define. + +2002-09-03 Corinna Vinschen + + * Makefile.in (DLL_OFILES): Drop shortcut.o. + * path.cc: Move all shortcut functions from shortcut.c to here. + (check_shortcut): Implement without using COM interface. + * path.h: Move definition of SHORTCUT_HDR_SIZE to here. + * shortcut.c: Remove. + * shortcut.h: Ditto. + +2002-09-03 Conrad Scott + + * fhandler.h (fhandler_socket::read): Remove method. + (fhandler_socket::write): Ditto. + (fhandler_socket::readv): New method. + (fhandler_socket::writev): Ditto. + (fhandler_socket::recvmsg): Add new optional argument. + (fhandler_socket::sendmsg): Ditto. + * fhandler.cc (fhandler_socket::read): Remove method. + (fhandler_socket::write): Ditto. + (fhandler_socket::readv): New method. + (fhandler_socket::writev): Ditto. + (fhandler_socket::recvmsg): Use win32's scatter/gather IO where + possible. + (fhandler_socket::sendmsg): Ditto. + * net.cc (cygwin_recvmsg): Check the msghdr's iovec fields. + (cygwin_sendmsg): Ditto. Add omitted sigframe. + +2002-09-02 Kazuhiro Fujieda + + * cygwin.din: Revert exporting new wchar functions. + * include/cygwin/version.h: Change comment for API minor 62. + +2002-09-02 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Remove getpagesize() call. + * shared.cc (memory_init): Move it here. + +2002-08-31 Christopher January + + * fhandler_proc.cc: Add include. + (format_proc_uptime): Use KernelTime and UserTime only as they include + the other counters. + (format_proc_stat): KernelTime includes IdleTime, so subtract IdleTime + from KernelTime. Make number of 'jiffies' per second same as HZ define. + * fhandler_process.cc: Add include. + (format_process_stat): Make number of 'jiffies' per second same as + HZ define. Use KernelTime and UserTime only to calculate start_time. + +2002-08-30 Christopher Faylor + + (inspired by a patch from Egor Duda) + * select.cc (fhandler_tty_slave::ready_for_read): Remove. + * fhandler.h (fhandler_tty_slave::ready_for_read): Remove declaration. + * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Set "don't + need ready for read" flag. + (fhandler_tty_slave::read): Don't do anything special with vtime when + vmin == 0. + +2002-08-30 Egor Duda + + * autoload.cc (GetConsoleWindow): Correct parameter count. + +2002-08-30 Christopher January + Christopher Faylor + + * tty.cc (tty_list::allocate_tty): Use GetConsoleWindow, if available. + Call FindWindow in a loop. + * autoload.cc (GetConsoleWindow): Export + +2002-08-30 Christopher Faylor + + * miscfuncs.cc (check_iovec_for_read): Don't check buffer when zero + length iov_len. + (check_iovec_for_write): Ditto. + +2002-08-27 Conrad Scott + + * fhandler.h (fhandler_base::readv): New method. + (fhandler_base::writev): Ditto. + * fhandler.cc (fhandler_base::readv): New method. + (fhandler_base::writev): Ditto. + * syscalls.cc (_read): Delegate to readv(2). + (_write): Ditto, mutatis mutandi. + (readv): Rewrite, based on the old _read code, to use the new + fhandler_base::readv method. Improve access mode handling and ensure + all calls reach the final strace statement. + (writev): Ditto, mutatis mutandi. + * include/sys/uio.h (struct iovec): Change field types to match SUSv3. + * winsup.h (check_iovec_for_read): New function. + (check_iovec_for_write): Ditto. + * miscfuncs.cc (check_iovec_for_read): Ditto. + (check_iovec_for_write): Ditto. + +2002-08-30 Corinna Vinschen + + * cygwin.din: Add more prototypes for new wchar functions in newlib. + +2002-08-30 Corinna Vinschen + + * cygwin.din: Add prototypes for new wchar functions in newlib. + * include/cygwin/version.h: Bump API minor number. + +2002-08-29 Boris Schaeling + Corinna Vinschen + + * poll.cc (poll): Peek sockets ready for read to see if there's + actually data. + +2002-08-28 Christopher Faylor + + * cygthread.cc (hthreads): Remove unneeded global. + (cygthread::simplestub): New static member function. + (cygthread::runner): Don't set hthreads. + (cygthread::freerange): New member function. + (cygthread::operator new): Call freerange if all cygwin slots are used + up. + (cygthread::exit_thread): Don't mess with event if freerange thread. + (cygthread::detach): Ditto. + * cygthread.h (class cygthread): Declare new member functions and + variables. + +2002-08-28 Christopher Faylor + + * malloc.cc: Protect some definitions to avoid a compile time warning. + +2002-08-27 Nicholas Wourms + + * cygwin.din: Export getc_unlocked, getchar_unlocked, + putc_unlocked, putchar_unlocked functions. + * include/cygwin/version.h: Bump api minor. + +2002-08-28 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::recvfrom): Eliminate flags + not understood by WinSock. + (fhandler_socket::sendto): Ditto. If WinSock sendto() returns + WSAESHUTDOWN, change errno to EPIPE and raise SIGPIPE if MSG_NOSIGNAL + isn't set in flags. + * include/cygwin/socket.h: Define MSG_WINMASK and MSG_NOSIGNAL. + * include/cygwin/version.h: Bump API minor number. + +2002-08-28 Corinna Vinschen + + * poll.cc (poll): Eliminate erroneous POLLERR conditional. + +2002-08-26 Conrad Scott + + * fhandler_socket.cc (fhandler_socket::check_peer_secret_event): + Fix strace message. + (fhandler_socket::connect): Remove sigframe. + (fhandler_socket::accept): Ditto. + (fhandler_socket::getsockname): Ditto. + (fhandler_socket::getpeername): Ditto. + (fhandler_socket::recvfrom): Ditto. + (fhandler_socket::recvmsg): Ditto. + (fhandler_socket::sendto): Ditto. + (fhandler_socket::sendmsg): Ditto. + (fhandler_socket::close): Ditto. + (fhandler_socket::ioctl): Ditto. + * ioctl.cc (ioctl): Add sigframe. + * net.cc (cygwin_sendto): Ditto. + (cygwin_recvfrom): Ditto. + (cygwin_recvfrom): Ditto. + (cygwin_connect): Ditto. + (cygwin_shutdown): Ditto. + (cygwin_getpeername): Ditto. + (cygwin_accept): Ditto. Improve strace message. + (cygwin_getsockname): Ditto. Ditto. + (cygwin_recvmsg): Ditto. Ditto. + (cygwin_sendmsg): Fix strace message. + +2002-08-27 Christopher Faylor + + * child_info.h: Add _PROC_WHOOPS enum value. + (CURR_CHILD_INFO_MAGIC): Update. + (child_info::magic): Make 'long'. + * cygheap.h: Export _cygheap_start. + * cygheap.cc: Don't declare _cygheap_start. + * cygmagic: Use cksum to produce checksums. Append 'U' to end of + checksum. + * dcrt0.cc (initial_env): Calculate sleep ms before reusing buffer. + (_dll_crt0): Detect cygheap mismatch as indicative of different cygwin + version. Set child_proc_info to NULL when _PROC_WHOOPS. + (multiple_cygwin_problem): If child_info specific problem, then set + child_proc_info type to _PROC_WHOOPS. + * shared_info.h (CURR_MOUNT_MAGIC): Update. + (CURR_SHARED_MAGIC): Ditto. + +2002-08-25 Conrad Scott + + * fhandler.h (fhandler_socket::recvfrom): Fix prototype. + (fhandler_socket::sendto): Ditto. + * fhandler_socket.cc (fhandler_socket::recvfrom): Ditto. + (fhandler_socket::sendto): Ditto. + * include/sys/socket.h (recv): Fix prototype. + (recvfrom): Ditto. + (send): Ditto. + (sendto): Ditto. + * net.cc (cygwin_sendto): Ditto. Improve strace message + (cygwin_recvfrom): Ditto. Ditto. + (cygwin_setsockopt): Improve strace message. + (cygwin_getsockopt): Ditto. + (cygwin_connect): Ditto. + (cygwin_accept): Ditto. + (cygwin_bind): Ditto. + (cygwin_getsockname): Ditto. + (cygwin_getpeername): Ditto. + (cygwin_recv): Fix prototype. + (cygwin_send): Ditto. + (cygwin_recvmsg): Improve strace message. + (cygwin_sendmsg): Ditto. + +2002-08-25 Pierre Humblet + + * sec_acl.cc (getacl): Check ace_sid == well_known_world_sid + before owner_sid and group_sid so that well_known_world_sid + means "other" even when owner_sid and/or group_sid are Everyone. + * security.cc (get_attribute_from_acl): Created from code common + to get_nt_attribute() and get_nt_object_attribute(), with same + reordering as in getacl() above. + (get_nt_attribute): Call get_attribute_from_acl(). + (get_nt_object_attribute): Ditto. + +2002-08-26 Christopher Faylor + + * Makefile.in (cygrunk.exe): Make a -mno-cygwin program. + * cygrun.c (main): Export CYGWIN=ntsec unless otherwise set. + + * shared.cc (shared_name): Only add build date to shared name when + *testing*. + +2002-08-24 Christopher Faylor + + * Makefile.in (DLL_IMPORTS): Move libuuid.a and libshell32.a to list + rather than referring to them via -l. Add DLL imports last in link + line for new-cygwin.dll and cygrun.exe. + +2002-08-19 Christopher Faylor + + * pinfo.h (pinfo::remember): Arrange for destructor call if + proc_subproc returns error. + * sigproc.cc (zombies): Store 1 + total zombies since proc_subproc uses + NZOMBIES element. + +2002-08-19 Corinna Vinschen + + * pwdgrp.h (pwdgrp_read::pwdgrp_read): Remove. + (pwdgrp_read::~pwdgrp_read): Ditto. + (pwdgrp_read::open): Reset fh to NULL instead of INVALID_HANDLE_VALUE. + (pwdgrp_read::close): Ditto. + +2002-08-19 Christopher Faylor + + * fhandler.h (fhandler_console::send_winch_maybe): New method. + * fhandler_console.cc (set_console_state_for_spawn): Remove if 0'ed + code. + (fhandler_console::send_winch_maybe): Define new method. + (fhandler_console::read): Use send_winch_maybe where appropriate. + (fhandler_console::init): Just call all tcsetattr rather than + output_tcsetattr. + * select.cc (peek_console): Reorganize so that send_winch_maybe is + called for everything but keyboard input. + +2002-08-18 Christopher Faylor + + * perthread.h (vfork_save): Add ctty, sid, pgid, exitval fields. + (vfork_save::restore_pid): New method. + (vfork_save::restore_exit): New method. + * fork.cc (vfork): Save ctty, sid, pgid and restore them when returning + to "parent". Use exitval field if exiting but never created a new + process. + * syscalls.cc (setsid): Detect when in "vfork" and force an actual fork + so that pid will be allocated (UGLY!). + (getsid): New function. + * dcrt0.cc (do_exit): Use vfork_save::restore_exit method for returning + from a vfork. + * spawn.cc (spawnve): Use vfork_save::{restore_pid,restore_exit} + methods for returning from vfork. + * cygwin.din: Export getsid. + * include/cygwin/version.h: Bump api minor number. + + * malloc.cc: #ifdef sYSTRIm for when MORECORE_CANNOT_TRIM is true. + +2002-08-18 Christopher Faylor + + * cygmalloc.h (MORECORE_CANNOT_TRIM): Define. + +2002-08-18 Christopher Faylor + + * sigproc.cc (sigCONT): Define. + * sigproc.h (sigCONT): Declare. + (wait_sig): Create sigCONT event here. + * exceptions.cc (sig_handle_tty_stop): Wait for sigCONT event rather + than stopping thread. + (sig_handle): Set sigCONT event as appropriate on SIGCONT rather than + calling ResumeThread. + +2002-08-17 Christopher Faylor + + * malloc.cc: Update to 2.7.2. + * malloc_wrapper.cc (malloc_init): Call user level mallocs to determine + if the malloc routines have been overridden. + +2002-08-16 Christopher Faylor + + * winsup.h: Remove malloc_*lock functions. + +2002-08-16 Christopher Faylor + + * Makefile.in: Add support for new malloc.o and renamed + malloc_wrapper.o. Use -fomit-frame-pointer for malloc.o compilation. + * malloc_wrapper.cc: New file. Rename from malloc.cc. Add support for + more malloc functions. Eliminate export_* calls. Just use straight + malloc names. Remove unused argument from malloc lock functions. + * cygwin.din: Just export straight malloc names. Add malloc_stats, + malloc_trim, malloc_usable_size, mallopt, memalign, valloc. + * dcrt0.cc (__cygwin_user): Eliminate export_* malloc entries. + * fork.cc (fork_parent): Remove unused argument from malloc_lock + argument. + * malloc.cc: New file. Doug Lea's malloc v2.7.1. + * cygmalloc.h: New file. + * include/cygwin/version.h: Bump API_MINOR. + + * sync.h (muto::acquire): Use appropriate number for regparm attribute. + (muto::reset): Ditto. + (muto::release): Ditto. + +2002-08-16 Pavel Tsekov + + * exceptions.cc (interrupt_setup): Ensure that the previous signal mask + is properly saved. + +2002-08-15 Thomas Pfaff + + * dcrt0.cc: Modify define for CYGWIN_GUARD. + (alloc_stack_hard_way): Just use CYGWIN_GUARD in VirtualAlloc call. + +2002-08-11 Conrad Scott + + * fhandler.h (fhandler_socket::recv): Remove method. + (fhandler_socket::send): Ditto. + * fhandler_socket.cc (fhandler_socket::recv): Ditto. + (fhandler_socket::send): Ditto. + (fhandler_socket::read): Delegate to fhandler_socket::recvfrom. + (fhandler_socket::write): Delegate to fhandler_socket::sendto. + (fhandler_socket::sendto): Check for null `to' address. + * net.cc (cygwin_sendto): Check for zero request length. + (cygwin_recvfrom): Ditto. Fix signature, use void *buf. + (cygwin_recv): Delegate to cygwin_recvfrom. + (cygwin_send): Delegate to cygwin_sendto. + +2002-08-11 Christopher Faylor + + * cygthread.cc (cygthread::cygthread): Close another race. + +2002-08-11 Christopher Faylor + + * assert.cc (__assert): Call debugger on assertion failure if + debugging. + * dcrt0.cc (dll_crt0_1): Just wait for signal thread to go live rather + than going through the overhead of invoking it. + * fork.cc (fork_child): Ditto. + * exceptions.cc (signal_fixup_after_fork): Call sigproc_init here. + * sigproc.cc (proc_can_be_signalled): Assume that the signal thread is + live. + (sig_dispatch): Ditto. + (sig_send): Ditto. + (wait_for_sigthread): Rename from "wait_for_me". Assume that + wait_sig_inited has been set and that this function is only called from + the main thread. + * sigproc.h (wait_for_sigthread): Declare new function. + +2002-08-08 Christopher Faylor + + * environ.cc (parse_options): Remember the "no" part of any options for + later export. + +2002-08-07 Conrad Scott + + * winsup.h (__check_null_invalid_struct): Make ptr argument non-const. + (__check_null_invalid_struct_errno): Ditto. + * miscfuncs.cc (__check_null_invalid_struct): Ditto. + (__check_null_invalid_struct_errno): Ditto. + (__check_invalid_read_ptr_errno): Remove superfluous cast. + * net.cc (get): Set appropriate errno if fd is not a socket. + (cygwin_sendto): Fix parameter checking. + (cygwin_recvfrom): Ditto. + (cygwin_setsockopt): Ditto. + (cygwin_getsockopt): Ditto. + (cygwin_connect): Ditto. + (cygwin_gethostbyaddr): Ditto. + (cygwin_accept): Ditto. + (cygwin_bind): Ditto. + (cygwin_getsockname): Ditto. + (cygwin_listen): Ditto. + (cygwin_getpeername): Ditto. + (cygwin_send): Ditto. + (cygwin_shutdown): Ditto. Move sigframe to fhandler_socket. + (cygwin_recvmsg): Fix parameter checking. Add tracing. + (cygwin_sendmsg): Ditto. + * fhandler_socket.cc (fhandler_socket::shutdown): Add sigframe. + * resource.cc (setrlimit): Fix parameter checking. + +2002-08-08 Joe Buehler + + * fhandler_socket.cc (fhandler_socket::accept): Fix FIONBIO call. + +2002-08-06 Christopher Faylor + + * cygheap.cc (_csbrk): Avoid !cygheap considerations. + (cygheap_init): Deal with unintialized cygheap issues here. + (cheap_init): Move cygheap_max setting here. + +2002-08-06 Christopher Faylor + Conrad Scott + + * spawn.cc (spawn_guts): Don't set mount_h here. + * sigproc.cc (init_child_info): Set it here instead. + * shared.cc (cygwin_mount_h): Make NO_COPY. + +2002-08-06 Christopher Faylor + + * cygthread.cc (cygthread::stub): Accept flag to pass info structure to + thread function. + (cygthread::operator new): Add defensive debugging output. + (cygthread::cygthread): Add debugging output. Set name after thread + has been awakened to avoid a race. + (cygthread::exit_thread): Use handle operator rather than using ev + directly. + (cygthread::exit_thread): Reorganize to provide debugging. Set __name + to NULL. + * cygthread.h (cygself): Define. + * fhandler_tty.cc (fhandler_tty_master::init): Use cygself as argument + so that invoked thread can access its own info. + (process_output): Derive cygthread info of thread from thread argument. + * sigproc.cc (sigproc_init): Use cygself as argument so that invoked + thread can access its own info. + (wait_sig): Derive cygthread info of thread from thread argument. + +2002-08-06 Conrad Scott + + * debug.h (handle_list::allocated): Remove field. + * debug.cc (newh): Don't malloc extra entries. + (add_handle): Downgrade strace message level. + (delete_handle): Remove case for `allocated' entries. + +2002-08-05 Christopher Faylor + + * cygthread.cc (cygthread::stub): Change event creation to manual + reset. Set __name after calling SetEvent to prevent races. + (cygthread::detach): Always reset event here to prevent races. + +2002-08-03 Conrad Scott + + * debug.h (WaitForMultipleObjects): Correct typo. + +2002-08-01 Pierre Humblet + + * security.cc (verify_token): Do not reject a token just because + the supplementary group list is missing Everyone or a groupsid + equal to usersid, or because the primary group is not in the token, + as long as it is equal to the usersid. + * syscalls.cc (seteuid32): Use common code for all successful returns. + * grp.cc (getgroups32): Never includes Everyone in the output. + +2002-08-01 Christopher Faylor + + * cygthread.cc (cygthread::exit_thread): Define new method. + * cygthread.h (cygthread::exit_thread): Declare new method. + * fhandler.h (fhandler_tty_master::hThread): Delete. + (fhandler_tty_master::output_thread): Define. + * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Adjust + constructor. + (fhandler_tty_master::init): Use cygthread rather than handle. + (process_output): Use cygthread method to exit. + (fhandler_tty_master::fixup_after_fork): Set output_thread to NULL + after fork. + (fhandler_tty_master::fixup_after_exec): Set output_thread to NULL + after spawn/exec. + * tty.cc (tty_list::terminate): Detach from output_thread using + cygthread method. + +2002-08-01 Christopher Faylor + + * syscalls.cc (_link): Revert previous change and just always + dereference the oldpath. + +2002-08-01 Christopher Faylor + + * syscalls.cc (link): Properly deal with a link to a symlink. + +2002-08-01 Christopher Faylor + + * cygthread.cc: Remove cruft. + +2002-08-01 Christopher Faylor + + * Makefile.in (DLL_OFILES): Add cygthread.o. + * dcrt0.cc (dll_crt0_1): Eliminate various thread initialization + functions in favor of new cygthread class. + * debug.cc: Remove thread manipulation functions. + * debug.h: Ditto. + * external.cc (cygwin_internal): Use cygthread method for determining + thread name. Remove capability for setting thread name. + * fhandler_console.cc (fhandler_console::read): Use cygthread method + rather than iscygthread function. + * fhandler_tty.cc (fhandler_tty_master::fhandler_tty_master): Use + cygthread methods to create threads. + (fhandler_tty_common::__acquire_output_mutex): Use cygthread method to + retrieve thread name. + * select.cc (pipeinf): Use cygthread pointer rather than handle. + (start_thread_pipe): Ditto. + (pipe_cleanup): Ditto. + (serialinf): Ditto. + (start_thread_serial): Ditto. + (serial_cleanup): Ditto. + (socketinf): Ditto. + (start_thread_socket): Ditto. + (socket_cleanup): Ditto. + * sigproc.cc (hwait_sig): Ditto. + (hwait_subproc): Ditto. + (proc_terminate): Ditto. + (sigproc_terminate): Ditto. + (sigproc_init): Initialize cygthread hwait_sig pointer. + (subproc_init): Initialize cygthread hwait_subproc pointer. + (wait_sig): Rely on cygthread HANDLE operator. + * strace.cc (strace::vsprntf): Use cygthread::name rather than threadname. + * window.cc (gethwnd): Use cygthread method to initialize thread. + +2002-07-31 Conrad Scott + + * fhandler.h (fhandler_base::get_r_no_interrupt): Make non-virtual. + * net.cc (fdsock): Call set_r_no_interrupt. + +2002-07-30 Christopher Faylor + + * syscalls.cc (_read): Clarify debugging output. + +2002-07-30 Christopher Faylor + + * fhandler.h (fhandler_base::get_r_no_interrupt): Make virtual. + +2002-07-30 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Incorporate . + and .. processing here. + (fhandler_cygdrive::readdir): Assume . and .. are already in pdrive. + (fhandler_cygdrive::seekdir): Ditto. + +2002-07-29 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Move debug_fixup_after_fork_exec. + * cygheap.cc (cygheap_fixup_in_child): Call debug_fixup_after_fork_exec + immediately after cygheap has been set up. + +2002-07-29 Corinna Vinschen + + * security.cc: Change some formatting. + * include/cygwin/version.h: Bump API minor version. + +2002-07-28 Pierre Humblet + + * cygheap.h (class cygheap_user): Add member groups. + * security.h (class cygsidlist): Add members type and maxcount, methods + position, addfromgr, alloc_sids and free_sids and operator+= (const + PSID psid). Modify contains () to call position () and optimize add () + to use maxcount. + (class user_groups): Create. Update declarations of verify_token and + create_token. + * security.cc (cygsidlist::alloc_sids): New. + (cygsidlist::free_sids): New. + (get_token_group_sidlist): Create from get_group_sidlist. + (get_initgroups_sidlist): Create from get_group_sidlist. + (get_group_sidlist): Suppress. + (get_setgroups_sidlist): Create. + (verify_token): Modify arguments. Add setgroups case. + (create_token): Modify arguments. Call get_initgroups_sidlist and + get_setgroups_sidlist as needed. Set SE_GROUP_LOGON_ID from auth_pos + outside of the loop. Rename the various group sid lists consistently. + * syscalls.cc (seteuid32): Modify to use cygheap->user.groups. + (setegid32): Call cygheap->user.groups.update_pgrp. + * grp.cc (setgroups): Create. + (setgroups32): Create. + * uinfo.cc (internal_getlogin): Initialize and update + user.groups.pgsid. + * cygwin.din: Add setgroups and setgroups32. + +2002-07-28 Christopher Faylor + + * fhandler_console.cc (fhandler_console::read): Use appropriate + kill_pgrp method. + * select.cc (peek_console): Ditto. + * fhandler_termios.cc (fhandler_termios::bg_check): Send "stopped" + signal to entire process group as dictated by SUSv3. + * termios.cc (tcsetattr): Detect when stopped signal sent and force a + stop before setting anything. + +2002-07-26 Christopher Faylor + + * include/cygwin/version.h: Bump API version to indicate that ntsec is + on by default now. + +2002-07-26 Conrad Scott + + * fhandler_registry.cc (fhandler_registry::close): Return any error + result to the caller. + * syscalls.cc (_close): Return result of fhandler::close to the caller. + +2002-07-25 Christopher Faylor + + * security.cc (allow_ntsec): Default to on. + (allow_smbntsec): Default to off. + +2002-07-24 David MacMahon + + * times.cc (to_time_t): Always round time_t down to nearest second. + +2002-07-25 Egor Duda + + * Makefile.in: Check if API version is updated when exports are + changed and stop if not so. + +2002-07-24 Egor Duda + + * include/cygwin/version.h: Bump minor API version. + +2002-07-24 Corinna Vinschen + + * fhandler_serial.cc: Change 'must_init_serial_line capability' + to 'supports_reading_modem_output_lines' throughout (negated meaning). + * wincap.cc: Ditto. + * wincap.h: Ditto. + +2002-07-23 Nicholas Wourms + + * cygwin.din (fcloseall): Add symbol for export. + (fcloseall_r): Ditto. + +2002-07-24 Christopher Faylor + + * path.cc (path_conv::check): Always set fileattr when component == 0. + (readlink): Use path_conv method rather than field. + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Ditto, + throughout. + * path.h (path_conv): Make fileattr private. + * exceptions.cc (try_to_debug): Default to idle priority when looping. + +2002-07-23 Corinna Vinschen + + * fhandler_serial.cc: Use must_init_serial_line capability throughout. + * wincap.cc: Set flag must_init_serial_line appropriately. + * wincap.h: Add flag must_init_serial_line. + +2002-07-23 Corinna Vinschen + + * security.cc (get_group_sidlist): Create group list from /etc files + even if DC is available but access fails. + +2002-07-22 Christopher Faylor + + * fhandler_serial.cc: Fix formatting problems introduced by below + changes. + +2002-07-22 Jacek Trzcinski + + * fhandler.h (class fhandler_serial): Add new members of the class - + rts,dtr and method ioctl(). Variables rts and dtr important for Win 9x + only. + * fhandler_serial.cc (fhandler_serial::open): Add initial setting of + dtr and rts. Important for Win 9x only. + (fhandler_serial::ioctl): New function. Implements commands TIOCMGET, + TIOCMSET and TIOCINQ. + (fhandler_serial::tcflush): Fix found error. + (fhandler_serial::tcsetattr): Add settings of rts and dtr. Important + for Win 9x only. + * termios.h: Add new defines as a support for ioctl() function on + serial device. + +2002-07-20 Christopher Faylor + + * autoload.cc (LoadDLLprime): Add jmp call to allow streamlining of + later jmp rewrite. + (doit): Avoid use of cx register. Just change one word to avoid races. + +2002-07-18 Pierre Humblet + + * security.cc (get_unix_group_sidlist): Create. + (get_supplementary_group_sidlist): Evolve into get_unix_group_sidlist. + (get_user_local_groups): Add check for duplicates. + (get_user_primary_group): Suppress. + (get_group_sidlist): Silently ignore PDC unavailability. + Call get_unix_group_sidlist() before get_user_local_groups(). + Remove call to get_supplementary_group_sidlist(). Never call + get_user_primary_group() as the passwd group is always included. + Add well_known_authenticated_users_sid in only one statement. + +2002-07-19 Christopher Faylor + + * fhandler_serial.cc (fhandler_serial::tcflush): Fix typo. + +2002-07-15 Corinna Vinschen + + * security.cc (get_group_sidlist): Fix formatting. + +2002-07-14 Christopher Faylor + + * dcrt0.cc (initial_env): Force path and CYGWIN_DEBUG contents to lower + case. + * exceptions.cc (error_start_init): Use the name derived from + GetModuleName rather than myself->progname. + +2002-07-14 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Move debug_init call back to here. Avoid a + compiler warning. + * shared.cc (memory_init): Remove debug_init call. + * debug.h (handle_list): Change "clexec" to "inherited". + * debug.cc: Remove a spurious declaration. + (setclexec): Conditionalize away since it is currently unused. + (add_handle): Use inherited field rather than clexec. + (debug_fixup_after_fork_exec): Ditto. Move debugging output to + delete_handle. + (delete_handle): Add debugging output. + * fhandler.cc (fhandler_base::set_inheritance): Don't bother setting + inheritance in debugging table since the handle was never protected + anyway. + (fhandler_base::fork_fixup): Ditto. + + * exceptions.cc (debugger_command): Revert. + +2002-07-14 Conrad Scott + + * debug.cc (clexec): Add missing `hl = hl->next'. + +2002-07-14 Christopher Faylor + + * Makefile.in (cygrun.exe): Add a -lcygwin on the end. + +2002-07-14 Christopher Faylor + + * Makefile.in (cygserver.exe): Add -lstdc++. + (cygrun.exe): Move -lgcc last. + +2002-07-13 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Delay closing of some handles until cygheap + has been set up. + (break_here): New function, for debugging. + (initial_env): Add program name to "Sleeping" message. Implement new + "CYGWIN_DEBUG" environment variable option. + * exceptions.cc (debugger_command): Add argument to dumper call. + * strace.cc (strace::hello): Use winpid if cygwin pid is unavailable. + (strace::vsprntf): Ditto. + +2002-07-13 Christopher Faylor + + * debug.h (handle_list): Move here from debug.cc. Add "inherit" flag + functionality. + * cygheap.cc (init_cheap): Move cygheap_max calculation to _csbrk. + (_csbrk): Reorganize to not assume first allocation is <= 1 page. + (cygheap_setup_for_child): Mark protected handle as inheritable. + * cygheap.h (cygheap_debug): New struct. + (init_cygheap): Add new structure when debugging. + * dcrt0.cc (dll_crt0_1): Remove call to debug_init. Close ppid_handle + here, if appropriate. Don't protect subproc_ready, since it is already + protected in the parent. Call memory_init prior to ProtectHandle to + ensure that cygheap is set up. Call debug_fixup_after_fork_exec when + appropriate. + (_dll_crt0): Don't close ppid_handle here. + * debug.cc: Use cygheap debug structure rather than static elements + throughout. + (add_handle): Don't issue a warning if attempt to protect handle in + exactly the same way from exactly the same place. Add pid info to + warning output. Accept additional argument controlling whether handle + is to be inherited. Add pid to stored information. + (debug_fixup_after_fork_exec): Renamed from debug_fixup_after_fork. + Reorganize to avoid erroneously skipping handles. + (mark_closed): Add pid info to warning output. + (setclexec): Rename from setclexec_pid. + * fhandler.cc (fhandler_base::get_default_fmode): Minor reorg. + (fhandler_base::fstat): Add debugging output. + (fhandler_base::set_inheritance): Call setclexec rather than + setclexec_pid. + (fhandler_base::fork_fixup): Ditto. + * fhandler_console.cc (get_tty_stuff): Mark protected handle as + inheritable. + * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. + * tty.cc (tty::make_pipes): Ditto. + (tty::common_init): Ditto. + * fork.cc (fork_parent): Ditto. + (fork_child): Close protected handles with correct name. Remove + debug_fixup_after_fork call. + * fhandler_socket.cc (fhandler_socket::create_secret_event): Mark + protected handle as inheritable/non-inheritable, as appropriate. + * shared.cc (memory_init): Mark protected handle as inheritable. + Call debug_init here. + * sigproc.cc (wait_sig): Close protected handle with correct name. + * spawn.cc (spawn_guts): Rename spr to subproc_ready and mark it as + inheritable. + + * exceptions.cc (debugger_command): Try to run dumper.exe, if found. + + * syscalls.cc (fstat64): Don't follow symlinks for path_conv lookup + since path is already resolved. + +2002-07-12 Christopher Faylor + + * cygwin.din: Change erroneous entries. + +2002-07-11 Pavel Tsekov + + * fhandler_disk_file.cc (fhandler_disk_file::open): Don't + move the file pointer to the end of file if O_APPEND is + specified in the open flags. + +2002-07-09 Christopher Faylor + + * debug.cc: Avoid explicit zeroing of globals. + (lock_debug): Make locker a static member. Avoid unlocking when + already unlocked (from Conrad Scott). + (debug_init): Initialize lock_debug::locker here. + * fork.cc (fork_child): Fix up fdtab earlier to avoid some (but not + all) confusion with close-on-exec craziness. + +2002-07-05 Corinna Vinschen + + * fhandler.h (fhandler_socket::is_unconnected): Constify. + (fhandler_socket::is_connect_pending): Ditto. + (fhandler_socket::is_connected): Ditto. + (fhandler_socket::set_connect_state): New method. + (struct select_record): Add member `except_on_write'. + (select_record::select_record): Initialize all bool values to `false'. + * fhandler_socket.cc: Use set_connect_state() method throughout. + (fhandler_socket::connect): Set state always to connected if connection + isn't pending. + * net.cc (cygwin_getsockopt): Revert erroneous previous patch. + * select.cc (set_bits): Check for `except_on_write'. Set fd in + write_fds if set. Set connect state to connected if fd has been + returned by WINSOCK_SELECT. + (peek_socket): Check for `except_on_write'. + (start_thread_socket): Ditto. + (fhandler_socket::select_write): Don't set `write_ready' if connect + is pending. Set `except_on_write' if connect is pending. + +2002-07-05 Christopher Faylor + + * ntdll.h (_SYSTEM_PROCESSOR_TIMES): Force eight byte alignment. + (_SYSTEM_TIME_OF_DAY_INFORMATION): Ditto. + + * path.cc (suffix_scan::has): Reorganize to eliminate double scanning + for for .exe (in the typical case). + +2002-07-05 Corinna Vinschen + + * fhandler.h (UNCONNECTED): New define. + (CONNECT_PENDING): Ditto. + (CONNECTED): Ditto. + (class fhandler_socket): Add member `had_connect_or_listen'. + Add member functions `is_unconnected', `is_connect_pending' and + `is_connected'. + * fhandler_socket.cc (fhandler_socket::connect): Set member + `had_connect_or_listen' according to return code of WinSock + call. + (fhandler_socket::listen): Ditto. + * net.cc (cygwin_getsockopt): Modify SO_ERROR return value in + case of socket with pending connect(). + * select.cc (peek_socket): Only add socket to matching fd_set + if it's not "ready". Call WINSOCK_SELECT only if at least one + socket is in one of the fd_sets. + (start_thread_socket): Only add socket to matching fd_set + if it's not "ready". + (fhandler_socket::select_write): Set write_ready to true also + if socket isn't connected or listening. + +2002-07-04 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::set_sun_path): Don't free + memory here. Allow NULL parameter. + +2002-07-04 Corinna Vinschen + + * fhandler_socket.cc (fhandler_socket::dup): Add missing copy operation + on sun_path. + +2002-07-03 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-07-03 Christopher Faylor + + * include/sys/statfs.h: New header file. + +2002-07-03 Christopher Faylor + + * dtable.cc (cygwin_attach_handle_to_fd): Default to implicit bin mode + if none specified. + * fhandler.cc (fhandler_base::init): Make bin argument a guarantee + rather than a suggestion. + * path.cc (path_conv::check): Load flag returned from + cygwin_conv_to_win32_path into path_flags. + +2002-07-03 Conrad Scott + + * tty.cc (tty::common_init): Reverse logic of cygserver check in + call to SetKernelObjectSecurity. + +2002-07-03 Thomas Pfaff + + * autoload.cc (WSAEventSelect): Define new autoload function. + (WSAEnumNetworkEvents): Ditto. + * fhandler_socket.cc (fhandler_socket::accept): If socket is + in blocking mode wait for incoming connection and signal. + +2002-07-02 Christopher Faylor + + * cygheap.cc (init_cheap): Rearrange error message. + (cygheap_fixup_in_child): Ditto. + * dtable.cc: Remove if 0'ed code. + * fhandler_dsp.cc (fhandler_dev_dsp::open): Force binmode. + * sec_helper.cc (cygsid::get_id): Use system_printf for error message. + * tty.cc (tty::common_init): Ditto. + +2002-07-02 Christopher Faylor + + * net.cc (cygwin_getpeername): Defend against NULL pointer dereference. + +2002-07-02 Egor Duda + + * include/cygwin/version.h: Bump API minor version. + +2002-07-01 Pierre Humblet + + * security.cc (get_logon_server): Interpret a zero length + domain as the local domain. + (get_group_sidlist): Add authenticated users SID to SYSTEM's group + list instead of SYSTEM itself. + (verify_token): Accept the primary group sid if it equals + the token user sid. + +2002-07-02 Corinna Vinschen + + * cygwin.din (__fpclassifyd): Add symbol. + (__fpclassifyf): Ditto. + (__signbitd): Ditto. + (__signbitf): Ditto. + +2002-07-02 Corinna Vinschen + + * security.h (DONT_INHERIT): Eliminate definition. + (INHERIT_ALL): Ditto. + (INHERIT_ONLY): Ditto. + * sec_acl.cc: Use appropriate defines from accctrl.h instead of the + above throughout. + * security.cc: Ditto. + +2002-07-01 Pierre Humblet + + * syscalls.c (seteuid32): Return immediately if the program is not + impersonated and both uid and gid are original. + (setegid32): Return immediately if the new gid is the current egid. + +2002-07-01 Christopher Faylor + + * syscalls.cc (seteuid32): Fix incorrect placement of Pierre's patch + below. + +2002-07-01 Christopher Faylor + + * syscalls.cc (seteuid32): Fix incorrect use of system_printf. + +2002-07-02 Christopher January + + * autoload.cc (GetSecurityInfo): Define new autoload function. + (RegQueryInfoKeyA): Ditto. + * fhandler.h (fhandler_virtual::fill_filebuf): Change return type to + bool. + (fhandler_proc::fill_filebuf): Ditto. + (fhandler_registry::fill_filebuf): Ditto. + (fhandler_process::fill_filebuf): Ditto. + (fhandler_registry::value_name): Add new member. + (fhandler_registry::close): Add new method. + (fhandler_process::p): Remove member. + * fhandler_proc.cc (fhandler_proc::open): Add set_nohandle after + calling superclass method. Check return value of fill_filebuf. + (fhandler_proc::fill_filebuf): Change return type to bool. Add return + statement. + * fhandler_process.cc (fhandler_process::open): Add set_nohandle after + calling superclass method. Remove references to p. Check return value + of fill_filebuf. + (fhandler_process::fill_filebuf): Change return type to bool. Don't + use dereference operator on p. Add return statement. + (fhandler_process::format_process_stat): Fix typo. + * fhandler_registry.cc: Add static open_key declaration. + (fhandler_registry::exists): Assume path is already normalised. Try + opening the path as a key in its own right first, before reverting to + enumerating subkeys and values of the parent key. + (fhandler_registry::fstat): Add additional code to return more relevant + information about the registry key/value. + (fhandler_registry::readdir): Explicitly set desired access when + opening registry key. Remove output of buf from debug_printf format + string. + (fhandler_registry::open): Use set_io_handle to store registry key + handle. Set value_name member. Move code to read a value from the + registry to fill_filebuf. Add call to fill_filebuf. + (fhandler_registry::close): New method. + (fhandler_registry::fill_filebuf): Change return type to bool. Add + code to read a value from registry. + (fhandler_registry::open_key): Make function static. Use KEY_READ as + desired access unless this is the last path component. Check the + return value of RegOpenKeyEx for an error instead of hKey. + * fhandler_virtual.cc (fhandler_virtual::lseek): Check the return value + of fill_filebuf. + (fhandler_virtual::open): Remove call to set_nohandle. + (fhandler_virtual::fill_filebuf): Change return type to bool. Add + return statement. + * security.cc (get_nt_object_attribute): New function. + (get_object_attribute): New function. + * security.h (get_object_attribute): New function declaration. + +2002-07-01 Pierre Humblet + + * syscalls.c (seteuid32): Do not return an error when the token cannot + be created only because of a problem with the gid. + +2002-07-01 Christopher Faylor + + * fhandler_clipboard.c (fhandler_dev_clipboard::open): Force text mode. + * fhandler_console.cc (fhandler_console::open): *Really* force binary + mode rather than make it optional. + * fhandler_proc.cc (fhandler_proc::open): Ditto. + * fhandler_process.cc (fhandler_process::open): Ditto. + * fhandler_random.cc (fhandler_dev_random::fhandler_dev_random): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::open): Ditto. + * fhandler_registry.cc (fhandler_registry::open): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. + * fhandler_virtual.cc (fhandler_virtual::open): Ditto. + * fhandler_windows.cc (fhandler_windows::open): Ditto. + * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. + * net.cc (fdsock): Ditto. + * path.cc (set_flags): Add more debugging. + +2002-07-01 Christopher Faylor + + * debug.cc (threads): Avoid initialization. + * uinfo.cc (cygheap_user::ontherange): (from Corinna Vinschen) Actually + make below changes work. + +2002-07-01 Christopher Faylor + + * uinfo.cc (cygheap_user::ontherange): Make cygwin root the last resort + for HOMEPATH/HOMEDRIVE for consistency with HOME. + +2002-07-01 Corinna Vinschen + + * shared.cc (sec_none): Move to sec_helper.cc. + (sec_none_nih): Ditto. + (sec_all): Ditto. + (sec_all_nih): Ditto. + (get_null_sd): Ditto. + (sec_acl): Ditto. + (__sec_user): Ditto. + * sec_helper.cc (sec_none): Move from shared.cc to here. + (sec_none_nih): Ditto. + (sec_all): Ditto. + (sec_all_nih): Ditto. + (get_null_sd): Ditto. + (sec_acl): Ditto. + (__sec_user): Ditto. + +2002-06-30 Christopher Faylor + + * uinfo.cc (cygheap_user::ontherange): Potentially set HOME from + existing homepath and homedrive cygheap_user fields (not currently used + yet). Set HOME to / if no other alternative. + (cygheap_user::test_uid): Simplify. + +2002-06-30 Christopher Faylor + + * environ.cc (parse_options): Use setenv to potentially replace CYGWIN + value on export. Fixes broken behavior since November 2000 changes. + (regopt): Return indication of whether or not something has been parsed + from the registry. + (environ_init): Only attempt to export CYGWIN variable when values were + set from the registry. It is exported automatically otherwise. + +2002-06-30 Christopher Faylor + + * fhandler.h (fhandler_process::pid): New field. + (fhandler_process::fstat): Remove unneeded array. Set pid element. + (fhandler_process::open): Ditto. + (fhandler_process::fill_filebuf): Handle case where 'p' field is NULL. + +2002-06-30 Christopher Faylor + + * fhandler.h (fhandler_process::p): New field. + (fhandler_process:fill_filebuf): Revert to same definition as virtual + in parent class. + (fhandler_process::open): Fill out p field rather than passing as an + argument. + (fhandler_process::fill_filebuf): Use p pointer rather than argument. + +2002-06-29 Pierre Humblet + + * security.cc (extract_nt_dom_user): Check for all buffer overflows. + Call LookupAccountSid after trying to get domain & user from passwd. + (get_group_sidlist): Obtain the domain and user by calling + extract_nt_dom_user instead of LookupAccountSid. + +2002-06-29 Christopher Faylor + + * uinfo.cc (cygheap_user::test_uid): Use standard issetuid test. + +2002-06-29 Christopher Faylor + + * autoload.cc (NetGetDCName): Change to make this an optional load + function. + * cygheap.h (cygheap_user::logsrv): Return NULL when operation fails. + (cygheap_user::winname): Ditto. + (cygheap_user::domain): Ditto. + * uinfo.cc (cygheap_user::env_logsrv): Save results in temp variable. + (cygheap_user::env_userprofile): Ditto. + +2002-06-29 Christopher Faylor + + * environ.cc (spenv::retrieve): Detect return of env_dontadd from + cygheap_user methods. + (build_env): Avoid incrementing environment pointer if not actually + adding to the environment. That could result in garbage in the + environment table. Be more defensive when reallocing envblock. + +2002-06-29 Christopher Faylor + + * uinfo.cc (cygheap_user::test_uid): Return NULL or further tests are + sorta useless. + (cygheap_user::env_domain): Recalculate if name is missing. + +2002-06-29 Christopher Faylor + + * environ.cc (spenv::from_cygheap): Still need to take setuid into + consideration. + +2002-06-28 Christopher Faylor + + * uinfo.cc (cygheap_user::env_logsrv): Return "almost_null" in case + where no domain or username is "SYSTEM". + +2002-06-28 Christopher Faylor + + * cygheap.h (cygheap_user): Reorg to accommodate environment caching. + (cygheap_user::logsrv): New method. + (cygheap_user::winname): Ditto. + (cygheap_user::domain): Ditto. + (cygheap_user::test_uid): Ditto. + * cygheap.cc (cygheap_user::set_name): Reflect name "pwinname" name + change. + * environ.cc (getwinenveq): New function. + (penv::from_cygheap): penv::from_cygheap): Change arguments. + (spenv::retrieve): Ditto for call. Use getwinenveq to retrieve info + from environment. Always return value from cygwin environment, if it + exists. + * environ.h (getwinenveq): Declare. + * uinfo.cc (cygheap_user::ontherange): Use logsrv() rather than + env_logsrv(). + (cygheap_user::test_uid): Define new method. + (cygheap_user::env_logsrv): Accept environment arguments. Use test_uid + to find info. + (cygheap_user::env_domain): Ditto. + (cygheap_user::env_userprofile): Ditto. + (cygheap_user::env_homepath): Ditto. + (cygheap_user::env_homedrive): Ditto. + (cygheap_user::env_name): Ditto. + +2002-06-27 Christopher Faylor + + * cygheap.cc (cfree_and_set): New function. + (cygheap_user::set_name): Use cfree_and_set to reset members. + * cygheap.h (cygheap_user): Delete static members. + (cygheap_user::puserprof): New member. + (cfree_and_set): Declare. + * dcrt0.cc (almost_null): Define. + * environ.cc (env_dontadd): Redefine as "almost_null". + * winsup.h (almost_null): Declare. + * syscalls.cc (cfree_and_set): Remove unused variable. + * uinfo.cc (cygheap_user::homepath_env_buf): Eliminate. + (cygheap_user::homedrive_env_buf): Ditto. + (cygheap_user::userprofile_env_buf): Ditto. + (cygheap_user::ontherange): YA change to try to preserve existing + HOMEPATH and HOMEDRIVE. Return almost_null values when variables + should not actually exist. + (cygheap_user::env_logsrv): Ditto. + (cygheap_user::env_domain): Ditto. + (cygheap_user::env_userprofile): Ditto. + +2002-06-27 Corinna Vinschen + + * dcrt0.cc (dll_crt0_1): Let __progname point to the applications + basename. Move eliminating ".exe" suffix from argv[0] so that it + always also affects __progname. + +2002-06-27 Thomas Pfaff + + * thread.cc (pthread::create): Add trace printf to get CreateThread + LastError. + +2002-06-27 Corinna Vinschen + + * mmap.cc (list::match): Check using pagesize aligned size. + +2002-06-26 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Force + FindFirstFile on first file of directory when asking for x:\ . + +2002-06-26 Christopher Faylor + + * cygheap.cc (cygheap_user::set_name): Correct thinko in below change. + +2002-06-26 Christopher Faylor + + * cygheap.cc (cygheap_user::set_name): Avoid clearing things when just + setting name to itself or during first time initialization. + + * environ.cc (check_case_init): Make case insensitive. + +2002-06-26 Corinna Vinschen + + * fhandler.h (fhandler_socket::bind): Add method definition. + (fhandler_socket::connect): Ditto. + (fhandler_socket::listen): Ditto. + (fhandler_socket::accept): Ditto. + (fhandler_socket::getsockname): Ditto. + (fhandler_socket::getpeername): Ditto. + (fhandler_socket::recvfrom): Ditto. + (fhandler_socket::recvmsg): Ditto. + (fhandler_socket::sendto): Ditto. + (fhandler_socket::sendmsg): Ditto. + (fhandler_socket::shutdown): Ditto. + * fhandler_socket.cc (get_inet_addr): Move here from net.cc. + (fhandler_socket::bind): New method. + (fhandler_socket::connect): Ditto. + (fhandler_socket::listen): Ditto. + (fhandler_socket::accept): Ditto. + (fhandler_socket::getsockname): Ditto. + (fhandler_socket::getpeername): Ditto. + (fhandler_socket::recvfrom): Ditto. + (fhandler_socket::recvmsg): Ditto. + (fhandler_socket::sendto): Ditto. + (fhandler_socket::sendmsg): Ditto. + (fhandler_socket::shutdown): Ditto. + * net.cc: Various formatting cleanups throughout. + (get_inet_addr): Move to fhandler_socket.cc. + (cygwin_bind): Move base functionality to appropriate fhandler_socket + method. + (cygwin_connect): Ditto. + (cygwin_listen): Ditto. + (cygwin_accept): Ditto. + (cygwin_getsockname): Ditto. + (cygwin_getpeername): Ditto. + (cygwin_recvfrom): Ditto. + (cygwin_recvmsg): Ditto. + (cygwin_sendto): Ditto. + (cygwin_sendmsg): Ditto. + (cygwin_shutdown): Ditto. + +2002-06-26 Corinna Vinschen + + * pwdgrp.h (pwdgrp_read::~pwdgrp_read): Avoid compiler warning. + +2002-06-26 Christopher Faylor + + * dcrt0.cc (_dcrt0): Be more defensive when reserved block is used and + it's not cygwin info. + +2002-06-26 Christopher Faylor + + * autoload (noload): Avoid clobbering bx register. + + * environ.cc (codepage_init): Use case insensitive match. + + * fhandler_console.cc (cp_get_internal): Delete. + (con_to_str): Use get_cp to derive code page. + (str_to_con): Ditto. + * miscfuncs.cc (get_cp): New function. + (sys_wcstombs): New function. Converted from macro. + (sys_mbstowcs): Ditto. + * winsup.h: Reflect above changes. + +2002-06-26 Christopher Faylor + + * winsup.h: Minor cleanup. + * path.h (path_conv::[]): New operator. + * syscalls.cc (_link): Use path_conv operators rather than methods, + where appropriate. Minor white space cleanup. + +2002-06-26 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-06-25 Thomas Pfaff + + * include/pthread.h (PTHREAD_CANCELED): Define a reasonable value. + * pthread.cc (pthread_exit): Call method instead of function. + (pthread_setcancelstate): Ditto. + (pthread_setcanceltype): Ditto. + (pthread_testcancel): Ditto. + * thread.h (pthread::cancel_event): New member. + (__pthread_cancel_self): New prototype. + (pthread::exit): New Method. + (pthread::cancel): Ditto. + (pthread::testcancel): Ditto. + (pthread::cancel_self): Ditto. + (pthread::static_cancel_self): Ditto. + (pthread::setcancelstate): Ditto. + (pthread::setcanceltype): Ditto. + (__pthread_cancel): Give c++ linkage. + (__pthread_exit): Remove. + (__pthread_setcancelstate): Ditto. + (__pthread_setcanceltype): Ditto. + (__pthread_testcancel): Ditto. + * thread.cc (pthread::pthread): Inititialize cancel_event. + (pthread::~pthread): Close cancel_event if needed. + (pthread::create): Create cancel_event. + (pthread::exit): New method. Replacement for __pthread_exit. + (pthread::cancel): New method. + (pthread::testcancel): Ditto. + (pthread::static_cancel_self); New static method. + (pthread::setcancelstate): New method. Replacement for + __pthread_setcancelstate. + (pthread::setcanceltype): New method. Replacement for + __pthread_setcanceltype. + (pthread::pop_cleanup_handler): Add lock for async cancel safe + cancellation. + (pthread::thread_init_wrapper): Change __pthread_exit to + thread->exit(). + (__pthread_cancel): Call method thread->cancel(). + (__pthread_exit): Remove. + (__pthread_setcancelstate): Ditto. + (__pthread_setcanceltype): Ditto. + (__pthread_testcancel): Ditto. + +2002-06-25 Christopher Faylor + + * dcrt0.cc (sm): Make NO_COPY. + +2002-06-25 Corinna Vinschen + + * syscalls.cc (chown): Convert uid to 32 bit. + (lchown): Ditto. + (fchown): Ditto. + +2002-06-24 Christopher Faylor + + * dtable.cc (dtable::find_unused_handle): Avoid coercion. + +2002-06-24 Christopher Faylor + + * dtable.cc (fhandler_base::dup2): Cleanup. Ensure that lock is turned + off in error condition. + +2002-06-24 Corinna Vinschen + + * uinfo.cc (internal_getlogin): Set myself->uid and myself->gid instead + of user.real_uid and user.real_gid. + (uinfo_init): Evaluate orig_uid and real_uid from myself->uid. Ditto + for gid. + +2002-06-23 Pierre Humblet + + * security.cc (get_group_sidlist): Add pw argument and use pw->pw_name + in call to get_supplementary_group_sidlist. + (create_token): Add pw argument and use it in call to + get_group_sidlist. + * security.h: Add pw argument in declaration of create_token. + * syscalls.cc (seteuid32): Add pw argument in call to create_token. + +2002-06-23 Conrad Scott + + * fhandler.cc (fhandler_base::fstat): Set S_IFIFO for pipes. + * fhandler_socket.cc (fhandler_socket.cc::fstat): Set S_IFSOCK. + +2002-06-23 Christopher Faylor + + * lib/_cygwin_S_IEXEC.cc: Remove obsolete file. + +2002-06-23 Christopher Faylor + + Use cygwin_{shm,ipc}.h instead of /sys/{shm,ipc}.h throughout. + * sys/ipc.h: Remove. + * sys/shm.h: Remove. + * cygwin_ipc.h: New file. + * cygwin_shm.h: New file. + +2002-06-23 Christopher Faylor + + * cygwin.sc: Add recent changes from ld sources. + +2002-06-23 Conrad Scott + + * winsup.h: Move #ifdef EXPCGF code into "winbase.h". + * winbase.h: #ifdef EXPCGF code moved here from "winsup.h". + +2002-06-12 Thomas Pfaff + + * thread.h (pthread::cleanup_stack): Rename cleanup_handlers to + cleanup_stack. + * thread.cc (pthread::pthread): Ditto. + (pthread::create): Fix mutex verification. + (pthread::push_cleanup_handler): Renam cleanup_handlers to + cleanup_stack. Remvoe Mutex calls, use InterlockedExchangePointer + instead. + (pthread::pop_cleanup_handler): Rename cleanup_handlers to + cleanup_stack. + (pthread::pop_all_cleanup_handlers): Ditto. + (__pthread_once): Check state first and return if already done. + (__pthread_join): Revert DEADLOCK test to __pthread_equal call. + (__pthread_detach): Unlock mutex before deletion. + +2002-06-21 Christopher Faylor + + * Makefile.in (cygrun.exe): Move -lgcc where it will do some good. + +2002-06-21 Corinna Vinschen + + * syscalls.cc (stat64_to_stat32): Correctly evaluate st_rdev. + (fstat64): Set st_rdev to same value as st_dev. + (stat_worker): Ditto. + +2002-06-21 Corinna Vinschen + + * security.cc (alloc_sd): Carefully check owner_sid again after trying + SIDs from cygheap. + +2002-06-21 Corinna Vinschen + + * security.cc (alloc_sd): Remove unnecessary retrieval of owner name. + Check uid for current user first and use SIDs from cygheap if so. + Set errno to EINVAL if user SID isn't retrievable. Just print user SID + as debug output. + Don't bail out if group SID isn't retrievable. Change debug output + appropriately. + +2002-06-21 Christopher Faylor + + * errno.cc: Change text description for EBADF throughout. + +2002-06-20 Pierre Humblet + + * uinfo.cc (cygheap_user::ontherange): Use env_name for NetUserGetInfo. + (cygheap_user::env_logsrv): Verify env_domain is valid. + * environ.cc: Include child_info.h and keep spenvs[] sorted. + (environ_init): Check child_proc_info instead of myself->ppid_handle. + +2002-06-19 Christopher Faylor + + * fhandler.cc (fhandler_base::set_flags): Change priority of "linked + in" default binmode setting so that it has priority over optional + setting. + +2002-06-19 Christopher Faylor + + Use hMainProc where appropriate, throughout. + * environ.cc (spenv::retrieve): Add debugging statements. + + * pinfo.cc (set_myself): Don't call strace.hello if already stracing. + * strace.cc (strace): Move NO_COPY keyword so that it will actually + take effect. + +2002-06-19 Corinna Vinschen + + * uinfo.cc (cygheap_user::ontherange): Call NetUserGetInfo() only with + non-NULL logserver parameter. + +2002-06-16 Christopher Faylor + + * cygheap.h (cygheap_user::issetuid): New method. + * dtable.cc (dtable::vfork_child_dup): Use new method to determine if + we are in "setuid mode." + * fork.cc (fork_parent): Ditto. + * spawn.cc (spawn_guts): Ditto. + * syscalls.cc (seteuid32): Ditto. + (setegid32): Ditto. + * environ.cc (spenv::retrieve): (Suggested by Pierre Humblet) Do + potential recalculation of cygheap_user stuff when in setuid mode. + Return special value when environment variable should be calculated but + not added. + (build_env): Don't add retrieved value to dstp if it is 'dont_add'. + +2002-06-16 Christopher Faylor + + Changes suggested by Pierre Humblet. + * environ.cc (NL): New macro. + (conv_envvars): Use NL macro to fill in name and namelen. + (spenv::namelen): New field. + (spenvs): Use NL to fill in name and namelen. + (spenv::retrieve): Eliminate length argument. Instead, use namelen + throughout. + (build_env): Don't calculate length of initial FOO= part of + environment. Accommodate spenv::retrive argument change. + +2002-06-16 Christopher Faylor + + * cygheap.h (cygheap_user::winname): New field. + * cygheap.cc (cygheap_user::set_name): Clear winname when name changes. + * uinfo.cc (cygheap_user::env_logsrv): Avoid calculating server when + Windows user == SYSTEM. + (cygheap_user::env_domain): Set winname here too. + (cygheap_user::env_userprofile): Eliminate superfluous tests. + (cygheap_user::env_name): Seed winname by calling env_domain(). + +2002-06-12 Pierre Humblet + + * spawn.cc (spawn_guts): Revert removal of ciresrv.moreinfo->uid = + ILLEGAL_UID. + +2002-06-15 Christopher Faylor + + * child_info.h (child_proc_info): Declare as base class. + (spawn_info): Declare as alias of child_proc_info to aid debugging. + (fork_info): Ditto. + * cygheap.cc (cygheap_fixup_in_child): Use child_proc_info global + rather than parameter. + * cygheap.h (cygheap_fixup_in_child): Reflect above change in + declaration. + * dcrt0.cc (_dll_crt0): Move 'si' definition here. Assign + child_proc_info. + (dll_crt0_1): Accommodate cygheap_fixup_in_child and *_info changes. + * environ.cc (spenv::retrieve): Make regparm. + * environ.h (environ_init): Ditto. + (win_env::add_cache): Ditto. + (build_env): Ditto. + (getwinenv): Ditto. + * fork.cc (sync_with_parent): Use fork_info global. + (fork_child): Ditto. + +2002-06-14 Christopher Faylor + + * uinfo.cc (cygheap_user::ontherange): Don't set HOMEDRIVE or HOMEPATH + unless one or the other is specified. + +2002-06-14 Christopher Faylor + + * cygheap.h (cygheap_user::userprofile_env_buf): New static member. + * environ.cc (build_env): Add debugging statement. + (spenvs): Switch functions for USERDOMAIN and USERNAME. + * spawn.cc (spawn_guts): Move environment initialization prior to + cygheap_setup_for_child or environment info will never be copied to + child. + +2002-06-14 Christopher Faylor + + * cygheap.h (cygheap_user): Add static members to hold home{drive,path} + info. + * uinfo.cc (cygheap_user::ontherange): Use static class members for + local HOME* storage. + +2002-06-14 Christopher Faylor + + * cygheap.cc (cygheap_user::set_logsrv): Remove. + (cygheap_user::set_domain): Ditto. + * cygheap.h (cygheap_user::set_logsrv): Remove declaration. + (cygheap_user::set_domain): Ditto. + (cygheap_user::env_domain): Declare new method. + (cygheap_user::env_name): Ditto. + * environ.cc (spenvs): Add two environment variables. + * spawn.cc (spawn_guts): Call build_env after RevertToSelf. Always set + ciresrv.mount_h. + (cygheap_user::ontherange): Recalculate homedrive/homepath if they are + empty. Use env_logsrv to get logon server. + (cygheap_user::env_logsrv): Calculate server name here rather than + relying on it having been previously calculated. + (cygheap_user::env_domain): Ditto for domain name. + (cygheap-user::env_name): New method. + +2002-06-12 Pierre Humblet + + * syscalls.cc (seteuid32): Do not get or set the environment. Do not + call LookupAccountSid nor internal_getlogin. Set cygheap->user name + and sid from the passwd entry. + * uinfo.cc (uinfo_init): Only call internal_getlogin when starting from + a non Cygwin process and use the values returned in user. + (internal_getlogin): Simplify to case where starting from a non Cygwin + process. Store return values in user and return void. Do not set the + Windows default environment. + * dcrt0.cc (dll_crt0_1): Call uinfo_init only when needed. Do not set + myself->uid nor reset user.sid. + * spawn.cc (spawn_guts): Get the sid from cygheap->user. Always + RevertToSelf(). Don't set uid in impersonated case. + * cygheap.cc (cygheap_user::set_sid): Do not set orig_sig. + (cygheap_user::set_orig_sid): New. + * cygheap.h: Declare cygheap_user::set_sid. + * winsup.h: Add argument to uinfo_init(). + +2002-06-14 Corinna Vinschen + + * environ.cc (build_env): If realloc moves envblock, move s with it. + +2002-06-13 Nicholas S. Wourms + + * winver.rc: Add more words to copyright. + +2002-06-13 Corinna Vinschen + + * cygheap.cc (cygheap_user::set_name): Revert previous change. + * environ.cc (spenv::retrieve): Check return value of call to + cygheap->user.*from_cygheap(). + +2002-06-13 Corinna Vinschen + + * cygheap.cc (cygheap_user::set_name): Remove setting homedrive and + homepath to NULL. + (cygheap_user::set_logsrv): Fix free'ing of plogsrv. + * cygheap.h (cygheap_user::cygheap_user): Initialize homedrive and + homepath to NULL. + +2002-06-13 Christopher Faylor + + * security.cc (get_logon_server): Use strcasematch rather than + strcasecmp. + +2002-06-12 Christopher Faylor + + * path.cc (chdir): Minor cleanup. + +2002-06-12 Christopher Faylor + + * environ.cc (build_env): Correctly fill out windows environment block + with win32 paths rather than posix paths. + +2002-06-12 Christopher Faylor + + * cygheap.cc (cygheap_user::set_name): Set homedrive and homepath to + NULL on user name change. + (cygheap_user::set_logsrv): Allocate enough space for leading \\ so + that we can put this in the environment, if needed. + * cygheap.h (homebodies): New enum. + (cygheap_user::homedrive): New field. + (cygheap_user::homepath): Ditto. + (cygheap_user::env_logsrv): New method. + (cygheap_user::env_homepath): New method. + (cygheap_user::env_homedrive): New method. + (cygheap_user::env_userprofile): New method. + (cygheap_user::ontherange): New method. + * environ.cc (envsize): Eliminate debugging argument. + (environ_init): Assume that envc counts number of elments not total + size. + (spenv): New class. + (spenvs): New array, rename from forced_winenv_vars, using spenv. + (spenv::retrieve): New method. + (build_env): Rename from 'winenv' -- one stop shopping for building new + environment blocks for both windows and "unix". + * environ.h (build_env: Declare. + (winenv): Delete declaration. + (envsize): Ditto. + * spawn.cc (spawn_guts): Use build_env to build windows and cygwin + environment blocks. + * uinfo.cc (internal_getlogin): Eliminate environment manipulation. + Default to info from GetUserName if it exists. Move HOMEPATH and + HOMEDRIVE stuff elsewhere. Move HOME setting elsewhere. Only set HOME + environment variable in processes that are not parented by a cygwin + process. + (cygheap_user::ontherange): Define new method. + (cygheap_user::env_logsrv): Ditto. + (cygheap_user::env_homepath): Ditto. + (cygheap_user::env_homedrive): Ditto. + (cygheap_user::env_userprofile): Ditto. + +2002-06-11 Christopher Faylor + + * spawn.cc (spawn_guts): More hToken removal cleanup. + +2002-06-09 Pierre Humblet + + * spawn.cc (spawn_guts): Define sec_attribs and call sec_user_nih() + only once. + +2002-06-10 Christopher Faylor + + * Makefile.in: Ensure that -MD gets added to CFLAGS regardless of + CFLAGS command-line setting. + + * cygwin.din: Export sexec* functions as function which returns ENOSYS + (i.e., sexec* is deprecated). + * dtable.cc (dtable::vfork_child_dup): Ensure that impersonation is + restored even on failure. + * exec.cc: Throughout, remove references to sexec* and _spawnve. + * pinfo.h: Remove _spawnve declaration. + * spawn.cc: Rename _spawnve to spawnve and use throughout. + (spawn_guts): Eliminate hToken argument and processing of same. Just + perform special actions if impersonating. + (spawnve): Rename from _spawnve. + +2002-06-10 Christopher Faylor + + * include/sys/strace.h (strace): Avoid use of constructor. + +2002-06-10 Christopher Faylor + + * dcrt0.cc (dll_crt0_1): Initialize wincap and check for sanity before + running global ctors. + * wincap.h (wincap): Eliminate constructor. Default is to zero memory, + anyway. + * wincap.cc (wincap): Copy this on fork to avoid initialization in + forked processes. + +2002-06-10 Corinna Vinschen + + * fhandler.h (fhandler_socket::fixup_after_fork): Revert patch from + 2002-06-04. + * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Ditto. + (fhandler_socket::dup): Ditto. + * net.cc (fdsock): Make sockets explicitely noninheritable on NT. + +2002-06-09 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Correctly + set number of links for directory, if appropriate. + +2002-06-10 Robert Collins + + * thread.cc: Variation of a patch from Thomas Pffaf. + (__pthread_detach): Cleanup thread object if the thread has terminated. + (__pthread_join): Change order of error checks, and lock against + join/detach/exit races. + (__pthread_exit): Lock object against join/detach/exit races. + (pthread::thread_init_wrapper): Ditto. + (thread_init_wrapper): Rename to pthread::thread_init_wrapper. + (pthread::create): Check that the mutex initialized correctly. + (pthread::push_cleanup_handler): Lock against potential cancellation + race. NB: this may not be required if pthread_cleanup_push is non- + cancelable. + * thread.h (pthread::mutex): New member. + (thread_init_wrapper): Rename to pthread::thread_init_wrapper. + (pthread::thread_init_wrapper_: New static member. + +2002-06-10 Robert Collins + + * cygwin.din: Add _pthread_cleanup_push and _pthread_cleanup_pop. + * pthread.cc: Change __pthread_self to pthread::self() thruoghout. + (_pthread_cleanup_push): New function. + (_pthread_cleanup_pop): Ditto. + * thread.cc: Thanks to Thomas Pfaff for the pthread cleanup_push,_pop + patch, this work is derived from that. + Change __pthread_self to pthread::self() thruoghout. + (__pthread_self): Rename to pthread::self. + (pthread::self): New method. + (pthread::pthread): Initialize new member. + (pthread::push_cleanup_handler): New method. + (pthread::pop_cleanup_handler): New method. + (pthread::pop_all_cleanup_handlers): New method. + (__pthread_exit): Pop all cleanup handlers. + * thread.h (pthread::push_cleanup_handler): Declare. + (pthread::pop_cleanup_handler): Ditto. + (pthread::pop_all_cleanup_handlers): Ditto. + (pthread::self): New static method. + (__pthread_exit): Give C++ linkage. + (__pthread_join): Ditto. + (__pthread_detach): Ditto. + (__pthread_self): Remove. + +2002-04-24 Thomas Pfaff + + * include/pthread.h (__pthread_cleanup_handler): New structure. + (pthread_cleanup_push): Rewritten. + (pthread_cleanup_pop): Ditto. + (_pthread_cleanup_push): New prototype. + (_pthread_cleanup_pop): Ditto. + +2002-04-24 Thomas Pfaff + + * thread.cc (thread_init_wrapper): Check if thread is already joined. + (__pthread_join): Set joiner first. + (__pthread_detach): Ditto. + +2002-06-10 Robert Collins + + * cygserver_transport.cc (create_server_transport): Finish the split + out of sockets code from transport_layer_base. Thanks to Nicholas + Wourms and Conrad Scott for catching this. + +2002-06-08 Christopher Faylor + + * pinfo.cc (pinfo_dummy): Initialize to correct size. + +2002-06-08 Christopher Faylor + + * path.cc: Change MOUNT_AUTO to MOUNT_CYGDRIVE throughout. + * shared_info.h (CURR_MOUNT_MAGIC): Update. + +2002-06-08 Christopher Faylor + + * external.cc (cygwin_internal): Make v1 mount table access invalid. + * path.cc (mount_info::init): Remove had_to_create_mount_areas initialization. + (mount_info::from_registry): Remove v1 table import. + (mount_info::read_v1_mounts): Eliminate. + (mount_info::import_v1_mounts): Ditto. + * shared_info.h (mount_info): Ditto for both of above. + * sys/mount.h (MOUNT_DEVFS): New enum. + (MOUNT_PROC): Ditto. + +2002-06-08 Christopher Faylor + + * include/wchar.h: Define __need_size_t. + +2002-06-07 Christopher Faylor + + * fhandler_socket.cc (fhandler_socket::fstat): Don't assume that socket + is unix-domain socket. + +2002-06-07 Christopher Faylor + + * times.cc (hires_ms::prime): Set init flag. + +2002-06-07 Conrad Scott + + * times.cc (hires_ms::prime): Adjust epoch of initime_us from 1601 to + 1970. + +2002-06-06 Christopher Faylor + + * autoload.cc (timeGetDevCaps): Define new autoload function. + (timeGetTime): Ditto. + (timeBeginPeriod): Ditto. + (timeEndPeriod): Ditto. + * hires.h (hires_base): New class. Rename from hires. + (hires_us): New class. + (hires_ms): New class. + * strace.cc (strace::microseconds): Use hires_us class. + * times.cc (gettimeofday): Use hires-ms class. + (hires_us::prime): Rename from hires::prime. + (hires_us::usecs): Rename from hires:usecs. + (hires_ms::prime): New method. + (hires_ms::usecs): New method. + (hires_ms::~hires_ms): New destructor. + +2002-06-06 Christopher Faylor + + * autoload.cc (noload): Correctly save argument count register. + +2002-06-05 Conrad Scott + + * fhandler.cc (fhandler_base::fstat): Initialise tv_nsec member of + st_atim, st_mtim, and st_ctim fields. + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Ditto. + * fhandler_process.cc (fhandler_process::fstat): Ditto. + * glob.c (stat32_to_STAT): Copy across the whole st_atim, st_mtime, and + st_ctim fields. + * syscalls.cc (stat64_to_stat32): Ditto. + * times.cc (to_timestruc_t): New function. + (time_as_timestruc_t): New function. + * winsup.h: Add to_timestruc_t and time_as_timestruc_t functions. + * include/cygwin/stat.h: Replace time_t with timestruc_t throughout for + all file times, removing the st_spare1, st_spare2, and st_spare3 fields + in the process. Add macros to access tv_sec fields by old names. + * include/cygwin/types.h: Typedef timespec_t and timestruc_t as struct + timespec. + +2002-06-03 Pierre Humblet + + * sec_helper.cc (lookup_name): Suppress. + * security.cc (alloc_sd): Remove logsrv argument. + Remove two calls to lookup_name. + (set_security_attribute): Remove logsrv argument. + Remove logsrv argument in call to alloc_sd. + (set_nt_attribute): Remove logsrv argument. + Remove logsrv argument in call to set_security_attribute. + (set_file_attribute): Remove logsrv argument. + Remove logsrv argument in call to set_nt_attribute. + (set_file_attribute): Remove logsrv argument. + Remove logsrv argument in call to set_file_attribute. + * syscalls.cc (chown_worker): Remove logserver argument in + call to set_file_attribute. + (chmod): Ditto. + * shm.cc (shmget): Remove logsrv argument in call to alloc_sd. + * uinfo.cc (internal_getlogin): Replace calls to + lookup_name by call to LookupAccountName. + * security.h: Remove logsrv in declarations of set_file_attribute + and alloc_sd. Remove declaration of lookup_name. + +2002-06-05 Christopher Faylor + + * child_info.h (CHILD_INFO_MAGIC): Oops. Revert previous change. gcc + 3.1 bug? + +2002-06-05 Christopher Faylor + + * child_info.h (CHILD_INFO_MAGIC): Update. + +2002-06-05 Christopher Faylor + + * strace.cc (strace::hello): Set inited, when appropriate. + +2002-06-05 Christopher Faylor + + * cygwin.din: Eliminate some newlib wrappers. + * path.cc (get_devn): Only consider first 99 potential com devices. + (get_device_number): Ditto. + * times.cc (_times): Eliminate. + (_times): Rename from times(). + +2002-06-05 Christopher Faylor + + * dir.cc (rmdir): Streamline. Detect attempts to remove directories + from "read-only" virtual devices. (Suggested by Pavel Tsekov) + * syscalls.cc (unlink): Detect attempts to remove directories from + "read-only" virtual devices. (From Pavel Tsekov) + +2002-06-05 Christopher Faylor + + * dtable.cc (handle_to_fn): Check error return value from NtQueryObject + first before seeing if name buffer is NULL. + + * grp.cc (read_etc_group): Fix gcc warning regarding snprintf format. + * passwd.cc (read_etc_passwd): Ditto. + +2002-04-18 Thomas Pfaff + + * thread.h (pthread::joiner): New member. + * thread.cc (pthread::pthread): Initialize joiner to NULL + (pthread::create): Increment of thread counter moved from + __pthread_create to this location. + (__pthread_create): Increment thread counter removed. + (thread_init_wrapper): Set joiner to self when thread was created + detached. + (__pthread_exit): delete thread when it is detached and not + joined. + (__pthread_join): Check for deadlock and delete thread when it has + terminated. + (__pthread_detach): Set joiner to self when thread state + changed to detached. + +2002-06-05 Corinna Vinschen + + * grp.cc (read_etc_group): When emulating nonexisting group file on + NT systems, read primary group SID from process token. Use that info + to create correct group entry. On error or on 9x systems fallback + to emulating Administrators group as before. + * passwd.cc (read_etc_passwd): When emulating nonexisting passwd file + on NT systems, read user and primary group SID from process token. + Use that info to create correct passwd entry. On error or on 9x + systems fallback to emulating user with Administrator user id and + Administrators group as before. + +2002-06-05 Corinna Vinschen + + * grp.cc (etc_group): Removed. + (parse_grp): Make line parameter nonconst. Don't copy data into new + allocated memory. Check for CR instead of LF to accomodate new + read method. + (add_grp_line): Make line parameter nonconst. + (read_etc_group): Rearrange using new pwdgrp_read class. + * passwd.cc (parse_pwd): Don't copy data into new allocated memory. + Check for CR instead of LF to accomodate new read method. + (read_etc_passwd): Rearrange using new pwdgrp_read class. + * pwdgrp.h (pwdgrp_check::set_last_modified): Use different + parameters. + (class pwdgrp_read): New class for opening and reading passwd and + group files. + +2002-06-04 Christopher Faylor + + * dtable.cc (handle_to_fn): Attempt to handle "raw" accesses to remote + shares. + * path.cc (mount_info::conv_to_win32_path): Set flags to binary when + mount entry is not found. + (mount_info::set_flags_from_win32_path): Ditto. + +2002-06-04 Christopher Faylor + + * dtable.cc (handle_to_fn): Correct placement and length of name + buffer. (Suggested by Pavel Tsekov) + +2002-06-04 Christopher Faylor + + Remove fcntl.h includes throughout. + * fhandler.h: Move fcntl.h include here. + (fhandler_base::set_flags): Accept supplied_bin argument. Make + non-inlined. + * dtable.cc (dtable::init_std_file_from_handle): Just use binmode from + pc. + (reset_to_open_binmode): Use set_flags. + * cygwin.din (open): Avoid newlib wrapper. + (read): Ditto. + (unlink): Ditto. + (write): Ditto. + * fhandler.cc (fhandler_base::set_flags): Accept supplied_bin argument. + Make binmode decisions here. + (fhandler_base::open): Avoid using pc if it is NULL. Eliminate binmode + logic. Just call set_flags with binmode argument. + (fhandler_base::init): Call set_flags with binmode argument. + * fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto. + * fhandler_console.cc (fhandler_console::open): Ditto. + (fhandler_console::init): Force binary on open. + * fhandler_disk_file.cc (fhandler_disk_file::open): Don't set binmode + here. Let it happen in base class. + * fhandler_dsp.cc (fhandler_dev_dsp::open): Force binmode open. Set + return value appropriately if unable to open. + * fhandler_proc.cc (fhandler_proc::open): Make sure flags are set + before open_status. + * fhandler_process.cc (fhandler_process::open): Ditto. + * fhandler_registry.cc (fhandler_registry::open): Ditto. + * fhandler_random.cc (fhandler_dev_random::fhandler_dev_random): Ditto. + * fhandler_raw.cc (fhandler_dev_raw::open): Force O_BINARY by default. + * fhandler_serial.cc (fhandler_serial::init): Ditto. + * fhandler_tty.cc (fhandler_tty_slave::open): Ditto. + (fhandler_pty_master::open): Ditto. + * fhandler_virtual.cc (fhandler_virtual::open): Ditto. + * fhandler_windows.cc (fhandler_windows::open): Ditto. + * fhandler_zero.cc (fhandler_dev_zero::open): Ditto. + * net.cc (fdsock): Ditto. + * path.cc (path_conv::check): Avoid checking for executable extension + when directory. (Suggested by Pavel Tsekov) + (set_flags): Set PATH_TEXT explicitly, when appropriate. + (mount_info::conv_to_win32_path): Use set_flags() to set path flags. + * path.h (PATH_TEXT): New enum. + (path_conv::binmode): Return appropriate constant based on binmode. + * pipe.cc (make_pipe): Set binmode to O_TEXT xor O_BINARY. + * syscalls.cc (setmode_helper): Make debugging message a little + clearer. + (setmode): Set binmode via set_flags. + +2002-06-04 Corinna Vinschen + + * fhandler.h (class fhandler_socket): Add private method + fixup_after_fork (bool, HANDLE). + * fhandler_socket.cc (fhandler_socket::fixup_after_fork): Move + functionality to new private method. Add closing parent socket + if not called from dup(). Create method new calling private method + with appropriate parameter. + (fhandler_socket::fixup_after_exec): Call private method + fixup_after_fork with appropriate parameter. + (fhandler_socket::dup): Ditto. + +2002-06-04 Corinna Vinschen + + * fhandler_dsp.cc (fhandler_dev_dsp::open): Set errno to EACCES if + requested mode isn't supported. + +2002-06-03 Christopher Faylor + + * fhandler.cc (fhandler_base::open): Don't set binmode if already set. + Don't check for file. Files should already be set. Report on binary + mode for debugging. + (fhandler_base::fhandler_base): Don't set default binmode here. That's + for later. + * fhandler_console.cc (fhandler_console::output_tcsetattr): Don't set + binmode, ever, for console. + * fhandler_disk_file.cc (fhandler_disk_file::open): Always set the + binary mode to the value derived from mount table. + * path.cc (mount_info::conv_to_win32_path): Default to binmode if path + does not translate into anything in the mount table. + +2002-06-03 Corinna Vinschen + + * external.cc (cygwin_internal): Add CW_EXTRACT_DOMAIN_AND_USER + handling to call extract_nt_dom_user() from applications. + * include/sys/cygwin.h (cygwin_getinfo_types): Add + CW_EXTRACT_DOMAIN_AND_USER. + +2002-06-03 Corinna Vinschen + + * syscalls.cc (stat64_to_stat32): Transform st_dev correctly. + (fstat64): Add evaluating st_ino and st_dev. + (stat_worker): Evaluate st_dev as 32 bit value. + * include/cygwin/stat.h: Use new dev_t definition throughout. + * include/cygwin/types.h: Define __dev16_t and __dev32_t. Define + dev_t according to __CYGWIN_USE_BIG_TYPES__ setting. + * include/sys/sysmacros.h: Define major, minor and makedev + according to __CYGWIN_USE_BIG_TYPES__ setting. + +2002-06-03 Pierre Humblet + + * syscalls.cc (setegid32): Verify the correctness of the gid + of the group returned by getgrgid32. + +2002-06-03 Pierre Humblet + + * security.cc (lsa2wchar): Suppressed. + (get_lsa_srv_inf): Suppressed. + (get_logon_server_and_user_domain): Suppressed. + (get_logon_server): Essentially new. + (get_user_groups): Add "domain" argument. Only lookup the + designated server and use "domain" in LookupAccountName. + (is_group_member): Simplify the arguments. + (get_user_local_groups): Simplify the arguments. Do only a + local lookup. Use "BUILTIN" and local domain in LookupAccountName. + (get_user_primary_group). Only lookup the designated server. + (get_group_sidlist): Remove logonserver argument. Do not lookup + any server for the SYSTEM account. + (create_token): Delete logonserver and call to get_logon_server. + Adjust arguments of get_group_sidlist, see above. + * security.h: Delete declaration of get_logon_server_and_user_domain + and add declaration of get_logon_server. + * uinfo.cc (internal_get_login): Call get_logon_server instead of + get_logon_server_and_user_domain. + +2002-06-02 Christopher Faylor + + * dtable.cc (handle_to_fn): Use largest match for device. Correctly + (?) deal with remote drive weirdness. + +2002-06-02 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_name): Check + specifically for non-existent file, first. + (fhandler_disk_file::fstat): Perform fd open on files with funny + characters. + +2002-06-02 Christopher January + + * fhandler_process.cc (fhandler_process::open): Set fileid. + +2002-06-02 Christopher Faylor + + Remove unneeded sigproc.h includes throughout. + * fhandler.h (fhandler_proc::fill_filebuf): Take a pinfo argument. + * fhandler_proc.cc (fhandler_proc::get_proc_fhandler): Simplify search + for given pid. + (fhandler_proc::readdir): Assume that pid exists if it shows up in the + winpid list. + * fhandler_process.cc (fhandler_process::open): Simplify search for + given pid. Call fill_filebuf with pinfo argument. + (fhandler_process::fill_filebuf): Pass pinfo here and assume that it + exists. + * pinfo.h (pinfo::remember): Define differently if sigproc.h is not + included. + +2002-06-02 Christopher Faylor + + * dll_init.cc (dll_list::detach): Don't run destructor on exit. + +2002-06-01 Christopher Faylor + + * fhandler.cc (fhandler_base::fstat): Move dev and ino calculation into + caller. + * syscalls.cc (stat_worker): Calculate dev and ino calculation here, if + zero. + * fhandler_proc.cc (fhandler_proc::fhandler_proc): Minor reorg for + debugging. + * fhandler_process.cc (fhandler_process::exists): Return 0 on + nonexistence. + (fhandler_process::fstat): Simplify pid logic. + * fhandler_tape.cc (fhandler_dev_tape::fstat): Minor reformatting. + +2002-06-01 Christopher Faylor + + * path.cc (chdir): Don't allow cd'ing to a non-directory virtual path. + +2002-05-31 Christopher Faylor + + * fhandler_disk_file.cc (readdir): Move inode calculation into caller. + (fhandler_cygdrive::readdir): Add "." and "..". + * dir.cc (readdir): Move inode calculation here so that fhandler + readdirs can benefit. + +2002-05-31 Christopher Faylor + + * fhandler_console.cc (fhandler_console::open): Reinstate setting of + flags. + + * dtable.cc (dtable::init_std_file_from_handle): Default to using + binmode derived from path_conv, when required. + * fhandler.h (fhandler_base::get_w_binary): Default to binmode if + nothing else is specified. + * fhandler.h (fhandler_base::get_r_binary): Ditto. + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_by_handle): Work + around g++ warning. + + * path.cc (path_conv::check): Remove a debugging statement. + +2002-05-31 Christopher Faylor + + * fhandler_console.cc (fhandler_console::open): Always default to + binmode. + (fhandler_console::write_normal): Don't honor binmode setting. There + is already a termios setting for this. + (fhandler_console::init): Correct argument order in init call. + +2002-05-31 Christopher Faylor + + * fhandler.cc (fhandler_base::open): Make default open mode == binmode. + (fhandler_base::init): Set open flags based on derived binmode argument. + +2002-05-31 Christopher Faylor + + * dll_init.cc (dll_list::init): Eliminate unneeded debugging statement. + +2002-05-31 Christopher Faylor + + * fhandler_proc.cc (fhandler_proc::readdir): Set errno when no more + files. + * fhandler_process.cc (fhandler_process::readdir): Ditto. + * fhandler_registry.cc (fhandler_registry::readdir): Ditto. + +2002-05-30 Christopher Faylor + + * path.cc (path_conv::check): Set fileattr to INVALID_FILE_ATTRIBUTES + for nonexistent virtual device path. + (chdir): Set correct errno when attempt is made to cd to nonexistent + virtual device path. + +2002-05-30 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat): Always call + fstat_by_name if fd is not opened to allow fstat_by_name to properly + set errno. + +2002-05-30 Corinna Vinschen + + * autoload.cc: Replace autoload statments for ZwXXX by NtXXX. + Drop ZwQuerySystemInformation since NtQuerySystemInformation was + already available. + * fhandler_proc.cc (format_proc_uptime): Replace call to + ZwQuerySystemInformation by call to NtQuerySystemInformation. + (format_proc_stat): Ditto. + * fhandler_process.cc (format_process_stat): Replace call to + ZwQueryInformationProcess by call to NtQueryInformationProcess. + (get_process_state): Ditto. + (get_mem_values): Ditto. Replace call to ZwQueryVirtualMemory by + call to NtQueryVirtualMemory. + * ntdll.h: Cleanup. Drop ZwQuerySystemInformation since + NtQuerySystemInformation was already available. Replace declarations + of ZwXXX functions by declarations of NtXXX. + * pinfo.cc (winpids::enumNT): Replace call to ZwQuerySystemInformation + by call to NtQuerySystemInformation. + +2002-05-29 Christopher Faylor + + * fhandler.cc (binmode): Default to binmode when mode is not known. + +2002-05-29 Christopher Faylor + + * include/sys/cygwin.h (EXTERNAL_PINFO_VERSION): Reinstate. + * external.cc (fillout_pinfo): Use it. + +2002-05-29 Corinna Vinschen + + * external.cc (fillout_pinfo): Use new version define. + * include/sys/cygwin.h (external_pinfo): Define + EXTERNAL_PINFO_VERSION_16_BIT and EXTERNAL_PINFO_VERSION_32_BIT + instead of just EXTERNAL_PINFO_VERSION. + +2002-05-29 Christopher Faylor + + * external.cc (fillout_pinfo): Set new version field in external_pinfo + structure. + * include/sys/cygwin.h (external_pinfo): Replace strace_file with + version field. + +2002-05-29 Corinna Vinschen + + Change internal uid datatype from __uid16_t to __uid32_t + throughout. + * cygwin.din: Export new symbols getpwuid32, getpwuid_r32, getuid32, + geteuid32, setuid32, seteuid32. + * passwd.cc (getpwuid32): New function. + (getpwuid_r32): Ditto. + * syscalls.cc (seteuid32): Ditto. + (setuid32): Ditto. + * uinfo.cc (getuid32): Ditto. + (geteuid32): Ditto. + * winsup.h (uid16touid32): New macro, correct casting from __uid16_t + to __uid32_t. + (gid16togid32): Ditto fir gids. + (getuid32): Declare. + (geteuid32): Ditto. + (getpwuid32): Ditto. + * include/sys/cygwin.h (struct external_pinfo): Add members uid32 and + gid32. + +2002-05-29 Corinna Vinschen + + * include/cygwin/socket.h: Protect some symbols against multiple + definition. + * include/netinet/ip.h: Ditto. + * include/netinet/tcp.h: Ditto. + +2002-05-29 Wu Yongwei + + * include/netinet/ip.h: Replace by BSD derived version of the file. + * include/netinet/tcp.h: Ditto. + * include/netinet/udp.h: New file. + * include/cygwin/ip.h: Remove. + +2002-05-29 Christopher Faylor + + * dtable.cc (dtable::init_std_file_from_handle): Attempt stronger + detection of invalid handle. + (handle_to_fn): Detect pathological condition where NT resets the + buffer pointer to NULL on an invalid handle. + +2002-05-28 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Properly + check for whether we should be opening the file to search for #! + characters. Set path_conv structure execability, too, when + appropriate. + +2002-05-28 Corinna Vinschen + + * security.cc (set_security_attribute): Call getegid32() instead of + getegid(). + * include/cygwin/grp.h: Declare getegid32(). + +2002-05-28 Corinna Vinschen + + Change internal gid datatype from __gid16_t to __gid32_t + throughout. + * cygwin.din: Export new symbols chown32, fchown32, getegid32, + getgid32, getgrgid32, getgrnam32, getgroups32, initgroups32, lchown32, + setgid32, setegid32, getgrent32. + * grp.cc (grp32togrp16): New static function. + (getgrgid32): New function. + (getgrnam32): Ditto. + (getgrent32): Ditto. + (getgroups32): Change name of internal function from getgroups. + (getgroups32): New function. + (initgroups32): Ditto. + * syscalls.cc (chown32): Ditto. + (lchown32): Ditto. + (fchown32): Ditto. + (setegid32): Ditto. + (setgid32): Ditto. + * uinfo.cc (getgid32): Ditto. + (getegid32): Ditto. + * include/cygwin/grp.h: Remove declaration of getgrgid() and getgrnam(). + Declare getgrgid32() and getgrnam32() instead. Declare getgid32(). + +2002-05-27 Christopher Faylor + + * autoload.cc (noload): Properly mask low order word for determining + number of bytes to pop. + +2002-05-27 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat): Minor logic + cleanup. + +2002-05-27 Christopher Faylor + + * autoload.cc (LoadFuncEx): Define via new LoadFuncEx2 macro. + (LoadFuncEx2): Adapt from LoadFuncEx. Provides control of return + value for nonexistent function. + (NtQueryObject): Declare. + (IsDebuggerPresent): Declare via LoadFuncEx2 and always return true if + not available. + * debug.h (being_debugged): Just rely on IsDebuggerPresent return + value. + * dtable.cc (handle_to_fn): New function. + (dtable::init_std_file_from_handle): Attempt to derive std handle's + name via handle_to_fn. + (dtable::build_fhandler_from_name): Fill in what we can in path_conv + structure when given a handle and path doesn't exist. + * fhandler.cc (fhandler_base::open): Don't set the file pointer here. + Use pc->exists () to determine if file exists rather than calling + GetFileAttributes again. + * fhandler.h (fhandler_base::exec_state_isknown): New method. + (fhandler_base::fstat_helper): Add extra arguments to declaration. + (fhandler_base::fstat_by_handle): Declare new method. + (fhandler_base::fstat_by_name): Declare new method. + * fhandler_disk_file (num_entries): Make __stdcall. + (fhandler_base::fstat_by_handle): Define new method. + (fhandler_base::fstat_by_name): Define new method. + (fhandler_base:fstat): Call fstat_by_{handle,name} as appropriate. + (fhandler_disk_file::fstat_helper): Accept extra arguments for filling + out stat structure. Move handle or name specific stuff to new methods + above. + (fhandler_disk_file::open): Use real_path->exists rather than calling + GetFileAttributes again. + * ntdll.h (FILE_NAME_INFORMATION): Define new structure. + (OBJECT_INFORMATION_CLASS): Partially define new enum. + (OBJECT_NAME_INFORMATION): Define new structure. + (NtQueryInformationFile): New declaration. + (NtQueryObject): New declaration. + * path.cc (path_conv::fillin): Define new method. + * path.h (path_conv::fillin): Declare new method. + (path_conv::drive_thpe): Rename from 'get_drive_type'. + (path_conv::volser): Declare new method. + (path_conv::volname): Declare new method. + (path_conv::root_dir): Declare new method. + * syscalls.cc (fstat64): Send real path_conv to fstat as second + argument. + +2002-05-24 Pierre Humblet + + * security.cc (lsa2str): New function. + (get_priv_list): Call lsa2str instead of sys_wcstombs. + +2002-05-22 Pierre Humblet + + * syscalls.cc (seteuid): Do not take allow_ntsec into account. + Attempt to use an existing or new token even when the uid + matches orig_uid, but the gid is not in the process token. + Major reorganization after several incremental changes. + (setegid): Do not take allow_ntsec into account. Minor + reorganization after several incremental changes. + +2002-05-26 Christopher Faylor + + * debug.h (being_debugged): New macro. + * dtable.cc (dtable::extend): Use new macro. + * exceptions.cc (try_to_debug): Ditto. + * strace.cc (strace::hello): Only output debugging info when we think + we're being debugged. + +2002-05-25 Robert Collins + + * winsup.h: Remove duplicate declarations of malloc_lock and + malloc_unlock. + +2002-05-24 Christopher Faylor + + Remove unneeded sync.h, where appropriate, throughout. + Remove unneeded heap.h, where appropriate, throughout. + Remove unneeded exceptions.h, where appropriate, throughout. + Remove unneeded perprocess.h, where appropriate, throughout. + +2002-05-22 Pierre Humblet + + * security.cc (create_token): Call __sec_user() instead of + sec_user() to remove dependence on allow_ntsec. Verify that + the returned sd is non-null. + +2002-05-25 Robert Collins + + * gmon.c (fake_sbrk): Correctly return -1 on failed malloc's. + +2002-05-24 Christopher Faylor + + * dtable.cc (dtable::build_fhandler_from_name): Just pass posix path + along to set_name via return_and_clear_normalized_path. + (dtable::build_fhandler): New method with const char * argument. + (dtable::reset_unix_path_name): Eliminate. + (dtable::dup_worker): Use correct build_fhandler method. + * mmap.cc (mmap_record::alloc_fh): Ditto. + * dtable.h (dtable::build_fhandler): New method. + (dtable::reset_unix_path_name): Eliminate. + * fhandler.cc (fhandler_base::set_name): Assume that unix_name has + already been cmalloced. + (fhandler_base::reset_unix_path_name): Eliminate. + (fhandler_base::~fhandler_base): Coercion for cfree. + * fhandler.h (fhandler_base::unix_path_name): Make const char *. + (fhandler_base::win32_path_name): Ditto. + (fhandler_base::reset_unix_path_name): Eliminate. + * fhandler_disk_file.cc (fhandler_cygdrive::set_drives): Accommodate + const char *ness of win32_path_name. + * fhandler_socket.cc (fhandler_socket::fstat): Accommodate new set_name + requirements. + * path.cc (path_conv::return_and_clear_normalized_path): New method. + (path_conv::clear_normalized_path): Eliminate. + (path_conv::~path_conv): Ditto. + (path_conv::check): Accommodate new build_fhandler method. + * path.h (path_conv::~path_conv): Eliminate. + (path_conv::clear_normalized_path): Ditto. + (path_conv::return_and_clear_normalized_path): Declare new method. + +2002-05-23 Christopher Faylor + + * path.cc (path_conv::check): Make sure any trailing path component is + part of potential normalized posix path. + +2002-05-23 Christopher Faylor + + * smallprint.c (__small_vsprintf): Implement '%o' after all these + years. + +2002-05-22 Christopher Faylor + + * fhandler.h (fhandler_virtual::exists): Eliminate path argument. + (fhandler_proc::exists): Ditto. + (fhandler_registry::exists): Ditto. + (fhandler_process::exists): Ditto. + * fhandler_proc.cc (fhandler_proc::exists): Ditto. Use built-in name. + * fhandler_process.cc (fhandler_process::exists): Ditto. + (fstat): Ditto. + * fhandler_registry.cc (fhandler_registry::exists): Ditto. + (fhandler_registry::fstat): Ditto. + * fhandler_virtual.cc (fhandler_virtual::opendir): Ditto. + * path.cc (path_conv::check): Ditto. Add debugging. + +2002-05-22 Christopher Faylor + + * syscalls.cc (dup): Always call dup2 for error handling. + +2002-05-22 Corinna Vinschen + + * include/cygwin/types.h: Revert previous patch. + +2002-05-22 Corinna Vinschen + + * include/cygwin/types.h: Define pthread stuff only if _POSIX_THREADS + is defined. + +2002-05-19 Pierre Humblet + + * security.cc (open_local_policy): Initialize lsa to + INVALID_HANDLE_VALUE instead of NULL. + (get_logon_server_and_user_domain): Test for INVALID_HANDLE_VALUE + instead of NULL. + (create_token): Both of the above. + +2002-05-18 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat): Make handling of + nlink consistent for remote files. + +2002-05-18 Christopher Faylor + + * path.cc (path_conv::check): Always set executable bit for executable + extension. + +2002-05-17 Christopher Faylor + + * fhandler.cc (fhandler_base::lseek): Avoid calling SetFilePointer with + high order part of 64 bit address on OS's which do not support that + kind of operation. Otherwise Windows 95 will become confused. + +2002-05-16 Pierre Humblet + + * fhandler_raw.cc (fhandler_dev_raw::open): Replace set_errno() + by __seterrno_from_win_error(). + * security.cc (open_local_policy): Ditto. + (get_lsa_srv_inf): Ditto. + (get_user_groups): Ditto. + (get_user_primary_group): Ditto. + (create_token): Ditto. + (subauth): Ditto. + +2002-05-17 Corinna Vinschen + + * times.cc (utimes): Use FILE_WRITE_ATTRIBUTES even on 9x/Me when + opening file for writing timestamp. + * wincap.cc: Remove flag has_specific_access_rights. + * wincap.h: Ditto. + +2002-05-13 Pierre Humblet + + * syscalls.cc (seteuid): Set default dacl in process token. + Replace in-line code by call to verify_token(). + (setegid): Reverse change from 2002-01-21. Add call to + RevertToSelf and set primary group in impersonation token. + * security.cc (create_token): Store pgrpsid in token security + descriptor, except if it already appears in my_grps. + Use sec_acl() in place of get_dacl(). + (verify_token): Create from code in seteuid(), with tighter checks. + (get_dacl): Deleted. + (get_group_sidlist): Add argument to indicate if pgrpsid is already + in the groups. + * security.h: Define verify_token(). + * autoload.cc: Load GetKernelObjectSecurity(). + +2002-05-13 Mark Bradshaw + + * cygwin.din: Add strlcat and strlcpy. + * include/cygwin/version.h: Increment API minor version number. + +2002-05-09 Pierre Humblet + + * shared.cc (__sec_user): Split into sec_acl() and call orig_sid(). + (sec_acl): Create from part of __sec_user(), except creator/owner. + * security.h: Define sec_acl() and MAX_DACL_LEN. + +2002-05-12 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::open): Avoid using + O_DIROPEN when OS doesn't support it. Return proper errno in that + case. + +2002-05-12 Christopher Faylor + + * syscalls.cc (_read): Change error to EBADF if attempt to read from a + non-readable fd. + +2002-05-11 Christopher Faylor + + * fhandler.h (executable_states): For now, make dont_care_if_executable + equivalent to not_executable. + * sys/mount.h: Define MOUNT_NOTEXEC. + * path.h (fs_info): New class. + (path_conv): Move fs-specific fields to new 'fs' structure. + (path_conv::update_fs_info): Move to fs_info and rename to just 'update'. + * path.cc (fs_info::update): Ditto. Return 'true' if successful. + (fillout_mntent): Add ',noexec' to list of reported options. + +2002-05-11 Christopher Faylor + + * fhandler_virtual.cc (fhandler_virtual::close): Quiet a compiler + warning. + +2002-05-10 Christopher January + + * autoload.cc: Add dynamic load statements for + 'ZwQueryInformationProcess' and 'ZwQueryVirtualMemory'. + * fhandler.h: Change type of bufalloc and filesize members of + fhandler_virtual from int to size_t. Change type of position member + from __off32_t to __off64_t. Add new fileid member to fhandler_virtual + class. Make seekdir take an __off64_t argument. Make lseek take an + __off64_t argument. Add fill_filebuf method to fhandler_virtual. Add + fill_filebuf method to fhandler_proc. Add fill_filebuf method to + fhandler_registry. Add fill_filebuf method to fhandler_process. Add + saved_pid and saved_p members to fhandler_process. + * fhandler_proc.cc (proc_listing_array): Add 'loadavg', 'meminfo', and 'stat'. + (proc_fhandlers array): Ditto. + (fhandler_proc::open): Use fill_filebuf to flesh out the file contents. + (fhandler_proc::fill_filebuf): New method. + (fhandler_proc::format_proc_meminfo): Ditto. + (fhandler_proc::format_proc_stat): Ditto. + (fhandler_proc::format_proc_uptime): Ditto. + * fhandler_process.cc (process_listing): Add 'stat' and 'statm'. + (fhandler_process::fstat): Find the _pinfo structure for the process + named in the filename. Return ENOENT if the process is no longer + around. Set the gid and uid fields of the stat structure. + (fhandler_process::open): Store pid and pointer to _pinfo structure in + saved_pid and saved_p respectively. Use fill_filebuf to flesh out file + contents. + (fhandler_proc::fill_filebuf): New method. + (format_process_stat): New function. + (format_process_status): Ditto. + (format_process_statm): Ditto. + (get_process_state): Ditto. + (get_mem_values): Ditto. + * fhandler_registry.cc (fhandler_registry::seekdir): Change argument + type from __off32_t to __off64_t. + (fhandler_registry::fill_filebuf): New method. + * fhandler_virtual.cc (fhandler_virtual::seekdir): Change argument type + from __off32_t to __off64_t. + (fhandler_virtual::lseek): Ditto. + (fhandler_virtual::fill_filebuf): New method. + (fhandler_virtual::fhandler_virtual): Initialise fileid to -1. + * wincap.cc: Set flag has_process_io_counters appropriately. + * wincap.h: Add flag has_process_io_counters. + +2002-05-09 Christopher Faylor + + * syscalls.cc (_write): Change error to EBADF if attempt to write to a + non-writeable fd. + +2002-05-08 Corinna Vinschen + + * cygheap.h (class cygheap_user): Add member `orig_psid'. + Add method `orig_sid()'. + * cygheap.cc (cygheap_user::set_sid): Maintain orig_psid. + +2002-04-28 Norbert Schulze + + * localtime.cc (tzsetwall): Use wildabbr if generated timezone name + length < 3. + +2002-05-05 Pierre Humblet + + * spawn.cc (spawn_guts): Move call to set_process_privilege() + to load_registry_hive(). + * registry.cc (load_registry_hive): ditto. + * fork.cc (fork_parent): Call sec_user_nih() only once. + +2002-05-04 Christopher January + + * path.h (path_conv::path_conv): Initialise normalized_path to NULL. + +2002-05-03 Christopher Faylor + + * net.cc (getdomainname): Change second argument of getdomainname to + size_t. + +2002-05-03 Christopher January + + * fhandler_proc.cc (proc_listing): Add '.' and '..' to directory + listing. + (fhandler_proc::open): Change use of mode to flags. If the file does + not exist already, fail with EROFS if O_CREAT flag is set. Change + EROFS error to EACCES error when writing to a file. Use cmalloc to + allocate memory for filebuf. + (fhandler_proc::close): Use cfree to free filebuf. + (fhandler_proc::get_proc_fhandler): Properly detect attempts to access + unknown subdir. + * fhandler_process.cc (process_listing): Add '.' and '..' to directory + listing. + (fhandler_process::open): Use cmalloc to allocate memory for filebuf. + (fhandler_process::close): Use cfree to free filebuf. + * fhandler_registry.cc (registry_listing): Add . and '..' to directory + listing. + (fhandler_registry::open): Move check for open for writing before + open_key. Use cmalloc to allocate memory for filebuf. + (fhandler_registry::close): Use cfree to free filebuf. + (fhandler_registry::telldir): Use lower 16 bits of __d_position as + position in directory. + (fhandler_registry::seekdir): Ditto. + * fhandler_virtual.cc (fhandler_virtual::write): Change EROFS error to + EACCES error. + (fhandler_virtual::open): Set the NOHANDLE flag. + (fhandler_virtual::dup): Add call to fhandler_base::dup. Allocate + child's filebuf using cmalloc. Copy filebuf from parent to child. + (fhandler_virtual::close): Use cfree to free filebuf. + (fhandler_virtual::~fhandler_virtual): Ditto. + (from Chris Faylor ). + (fhandler_registry::readdir): Add support for '.' and '..' files in + subdirectories of /proc/registry. + * path.cc (path_conv::check): Do not return ENOENT if a file is not + found in /proc. + +2002-05-02 Christopher Faylor + + * fhandler_proc.cc (fhandler_proc::fstat): Use fhandler name rather + than path_conv name. + (fhandler_proc::open): Ditto. + * fhandler_process.cc (fhandler_process::fstat): Use fhandler name + rather than path_conv name. + (fhandler_process::open): Ditto. + * fhandler_registry.cc (fhandler_registry::fstat): Use fhandler name + rather than path_conv name. + (fhandler_registry::open): Ditto. + * path.cc (path_conv::check): Don't copy posix path when virtual. + (mount_info::conv_to_win32_path): Don't zero string when isproc. Just + derive normal windows path. + + * path.h (path_conv::clear_normalized_path): Declare new method. + * path.cc (path_conv::clear_normalized_path): Define new method. + * dtable.cc (build_fhandler_from_name): Clear normalized path when + finished to conserve space. + +2002-05-02 Christopher Faylor + + * fhandler_proc.cc (fhandler_proc::fstat): Prime with information from + fhandler_base::fstat. Use defines rather than constants for permission + settings. + +2002-04-30 Eric Blake + + * path.cc (hash_path_name): Improve hash function strength. + +2002-05-02 Robert Collins + + * thread.cc (__pthread_cond_dowait): Fix a race on signalling from a + thread woken by the same condition variable it's signalling on. Thanks + to Michael Beach for the report and test case. + +2002-05-02 Christopher Faylor + + * path.h (pathconv_arg): Add PC_POSIX. + (path_conv): Add normalized_path field. + * path.cc (path_conv::~path_conv): New destructor. + (path_conv::check): Set normalized_path, where appropriate. + * dtable.cc (build_fhandler_from_name): Use normalized path from + path_conv. + * syscalls.cc (chroot): Ditto. + + * cygheap.h: Remove path_prefix_p declaration. + +2002-02-26 Christopher January + Christopher Faylor (minor fixups) + + * Makefile.in: Add fhandler_proc.o, fhandler_registry.o, + fhandler_process.o and fhandler_virtual.o. + * dtable.cc (dtable::build_fhandler): Add entries for FH_PROC, + FH_REGISTRY and FH_PROCESS. Set unix_name to the normalized posix + path. + * fhandler.h: Add constants for FH_PROC, FH_REGISTRY and FH_PROCESS. + Add class declarations for fhandler_virtual, fhandler_proc, + fhandler_registry and fhandler_virtual. Update fhandler_union + accordingly. + * fhandler_proc.cc: New file. Add implementation for fhandler_proc. + * fhandler_virtual.cc: New file. Add implementation for + fhandler_virtual. + * fhandler_process.cc: New file. Add implementation for + fhandler_process. + * fhandler_registry.cc: New file. Add implementation for + fhandler_registry. + * path.cc (isproc): New macro. + (isvirtual_dev): Ditto. + * path.cc (path_conv::check): Add check for virtual devices. + * path.cc (mount_info::conv_to_win32_path): Convert paths in /proc to + empty Win32 paths. + * path.cc (chdir): Replace check for FH_CYGDRIVE with more generic + isvirtual_dev macro. Force setting of posix path for virtual + fhandlers. + * path.h (path_prefix_p): Declare. + + +Wed May 1 16:06:02 2002 Jason Tishler + + * include/cygwin/types.h: Include . + +Wed Apr 17 11:27:04 2002 Jason Tishler + + * security.cc (get_lsa_srv_inf): Prevent extraneous backslashes for + the NT Domain case. + +2002-04-12 Corinna Vinschen + + * net.cc (cygwin_accept): Set socket type for accepted socket. + (socketpair): Set socket type for both sockets. + +2002-04-12 Egor Duda + + * fhandler.h (class fhandler_socket): New member to store socket type. + (fhandler_socket::get_socket_type): Access it. + (fhandler_socket::set_socket_type): Ditto. + * net.cc (cygwin_socket): Store socket type. + (cygwin_connect): Disable security checks for connectionless sockets. + (cygwin_accept): Ditto. + +2002-04-09 Mark Bradshaw + + * cygwin.din: Add strptime. + * include/cygwin/version.h: Increment API version number. + +2002-04-09 Corinna Vinschen + + * fork.cc (fork_child): Call fixup_mmaps_after_fork() somewhat earlier. + +2002-04-09 Corinna Vinschen + + * fhandler.cc (fhandler_base::open): Set read-only bit in + file_attributes when adequate. + +2002-03-28 Christopher Faylor + + * times.cc (gettimeofday): Fix typo in previous patch. + +2002-03-27 Wu Yongwei + + * times.cc (gettimeofday): Revert to setting timezone info if tz != + NULL. + +2002-03-21 Christopher Faylor + + * fhandler_disk_file.cc (fhandler_disk_file::fstat_helper): Always set + st_[ug]id to value derived from get_file_attributes. + +2002-03-21 Christopher Faylor + + * spawn.cc (find_exec): Return input if file not found. + +2002-03-19 Boris Schaeling + + * poll.cc (poll): Add support for invalid descriptors. + +2002-03-15 Robert Collins + + * fhandler.h (fhandler_termios::lseek): Override lseek. + * fhandler_termios.cc (fhandler_termios::lseek): Implement this. + +2002-03-15 Christopher Faylor + + * cygserver.cc: Include stdlib.h for exit declaration. + * threaded_queue.cc: Ditto. + +2002-03-15 Christopher Faylor + + * pinfo.cc (pinfo::init): Use PID_ALLPIDS flag to control when a + redirected block should be marked as nonexistent. + (winpids::add): Use PID_ALLPIDS when looking for all pids. + * cygwin.h (PID_ALLPIDS): New enum element. + +2002-03-15 Corinna Vinschen + + * glob.c (stat32_to_STAT): New function. + (g_lstat): Call user space functions always with 32 bit struct stat + as a workaround. + (g_stat): Ditto. + * include/glob.h (struct glob): Don't prototype function pointers + when compiling Cygwin. + +2002-03-14 Christopher Faylor + + * pinfo.cc (pinfo::init): Properly handle execed process stub when + PID_NOREDIR is specified. + +2002-03-13 Boris Schaeling + + * poll.cc (poll): Remove variable open_fds. Rearrange and add code to + fix settings of revents. + +2002-03-13 Corinna Vinschen + + * mmap.cc (mmap_record::map_map): Return -1 if VirtualProtect fails. + (list::erase): New method with no argument. Erase latest record + added. + (mmap64): Fail if map_map() fails. + +2002-03-12 Corinna Vinschen + + * sysconf.cc (sysconf): Fix condition. + +2002-03-11 Corinna Vinschen + + * mmap.cc (msync): Check area given by addr and len for being a + contigeous mmap'd region. + +2002-03-11 Corinna Vinschen + + * fork.cc (fork_child): Call fixup_mmaps_after_fork() before + closing parent process handle. Call fixup_mmaps_after_fork() + with parent process handle as parameter. + * mmap.cc (mmap_record::access): New method. + (fixup_mmaps_after_fork): Take process handle as parameter. + In case of FILE_MAP_COPY access, copy valid memory regions to child. + * pinfo.h (fixup_mmaps_after_fork): Change prototype accordingly. + +2002-03-07 Corinna Vinschen + + * autoload.cc (NetGetDCName): Add symbol. + (NetServerEnum): Remove symbol. + * security.cc (get_lsa_srv_inf): Call NetGetDCName() instead of + NetServerEnum() since it's faster. Don't call it at all if machine + is not a domain member. + +2002-03-06 Christopher Faylor + + * path.cc (normalize_posix_path): Avoid runs of '.'s > 2. + +2002-03-05 Christopher Faylor + + * errno.cc: Change EPERM associated text to "Operation not permitted" + throughout. + +2002-03-05 Christopher Faylor + + * fhandler_socket.cc (fhandler_socket::close): Respond to signals while + looping, waiting for socket to close. Superstitiously clear last error + when WSAEWOULDBLOCK. + +2002-03-05 Robert Collins + + * cygserver_transport_pipes.cc (transport_layer_pipes::transport_layer_pipes): + Always init - until static members work correctly. + * shm.cc (shmget): Initialize the security descriptor - thanks Corinna! + * include/sys/ipc.h: Make the ipc control constants partitioned off from the sem + control constants. + +2002-03-04 Christian Lestrade + + * include/sys/termios.h: Define _POSIX_VDISABLE. Define CCEQ macro. + * fhandler_termios.cc: Include . + (line_edit): Recognize disabled c_cc[] chars. Ignore VDISCARD when + not in ICANON mode. + +2002-03-04 Dmitry Timoshkov + + * syscalls.cc (truncate64): Use ftruncate64 directly to not lose + upper 32 bits. + +2002-03-04 Robert Collins + + * cygserver_shm.cc (delete_shmnode): New function. + (client_request_shm::serve): Use it. + +2002-03-04 Robert Collins + + * cygserver_shm.cc (client_request_shm::serve): Implement SHM_DETACH. + * shm.cc (shmdt): Implement. + +2002-03-04 Robert Collins + + * cygserver_shm.cc: Run indent. + (deleted_head): New global for storing shm id's pending deletion. + (client_request_shm::serve): Return ENOSYS for invalid request types. + Implement SHM_DEL - delete a shm id. + * cygserver_shm.h (SHM_DEL): New type value. + * shm.cc (delete_inprocess_shmds): New function, does what it's name implies. + (shmctl): Implement shm_rmid control type. + +2002-03-04 Robert Collins + + * Makefile.in (install): Remove install-bin to allow make install to work. + +2002-03-03 Robert Collins + + * shm.cc (shmat): Prevent a compile error. + (shmdt): Set errno as this function is incomplete. + +2002-02-28 Christopher Faylor + + * times.cc: Remove if 0'd code. Clean up slightly. + +2002-02-28 Robert Collins + + * Merge cygwin_daemon into head minus the new shm and ipc exports. + +2002-02-28 Robert Collins + + * fhandler_tty.cc (fhandler_tty_slave::open): More debugging. + (fhandler_tty_slave::read): Fix printf type for the handle. + * tty.cc (tty::common_init): Add a FIXME for security. + +2002-01-29 Robert Collins + + * Makefile.in (OBJS): Remove duplicate localtime.o. + +2002-01-17 Robert Collins + + * cygserver.cc (check_and_dup_handle): Consolidate the two variants for + simplicity. + Add Some basic debug output. + (client_request_attach_tty::serve): Use the new debug_printf for clarity. + Mark the duplicated handles as inheritable - fixup_after_fork() doesn't reopen + tty's. + +2002-01-16 Robert Collins + + * cygserver.cc (transport): Correct scope. + (client_request_attach_tty::serve): Add more debug information. + Fix erroneous use of transport instead of conn. + * cygserver_transport_pipes.cc (transport_layer_pipes::close): More debug. + (transport_layer_pipes::read): Ditto. + (transport_layer_pipes::write): Ditto. + (transport_layer_pipes::impersonate_client): Ditto. + +Mon Oct 8 7:41:00 2001 Robert Collins + + * cygserver.cc (server_request::process): Rename client_request_shm_get to + client_request_shm. + * cygserver_process.cc (process_cache::add): Rename to add_task. + Use process_cleanup instead of process_request. + (process_cache::remove_process): New method. + (process::process): Initialize new members. + (process::~process): New member. + (process::cleanup): New method. + (process::add_cleanup_routine): New method. + (process_request::process): Rename to process_cleanup. + Call the process object's cleanup method and then delete it. + (process_process_param::request_loop): Remove the signalling process. + * cygserver_shm.cc: Globally rename client_request_shm_get to client_request_shm. + (client_request_shm_get::serve): Handle attach request counting. + * cygserver_shm.h: Globally rename client_request_shm_get to client_request_shm. + (class shm_cleanup): New class. + * shm.cc: Globally rename client_request_shm_get to client_request_shm. + (client_request_shm::client_request_shm): New constructor for attach requests. + (shmat): Use it. + * include/cygwin/cygserver_process.h (class process_request): Rename to + process_cleanup. + (class cleanup_routine): New class. + (class process): New members and methods to allow calling back when the process + terminates. + +Thu Oct 4 14:12:00 2001 Robert Collins + * cygserver.cc (request_loop): Make static. + (main): Use new cache constructor syntax. + Start cache worker threads. + Cleanup the cache at shutdown. + * cygserver_process.cc: Run indent. + (process_cache::process_cache): Add a trigger to use when adding a process. + (process_cache::process): Move process_entry to process. + Insert at the end of the list. + Trigger the request loop when new process's inserted. + (process_cache::process_requests): Do it. + (process_cache::add): New method. + (process_cache::handle_snapshot): New method. + (process::process): Merge in the process_entry fields. + (process::handle): Make a stub function. + (process::exit_code): New method. + (process_request::process): New method. + (process_process_param::request_loop): New method. + * cygserver_shm.cc: New header dependency - threaded_queue.h. + * threaded_queue.cc (threaded_queue::cleanup): Clearer messages. + (queue_process_param::stop): Short spinlock on interruptible threads. + * threaded_queue.h (class threaded_queue): New constructor. + * include/cygwin/cygserver_process.h (process_request): New class. + (process_entry): Remove. + (process): Merge in process_entry. + (process_cache): Inherit from threaded_queue. + +Tue Oct 2 23:24:00 2001 Robert Collins + + * cygserver.cc (class server_process_param): Use new constructor syntax. + * cygserver_process.cc (process_cache::~process_cache): New function. + * threaded_queue.cc: Define condition debug_printf. + Run indent. + (threaded_queue::cleanup): Move queue_process_param guts to a method. + (threaded_queue::process_requests): Ditto. + (queue_process_param::queue_process_param): New method. + (queue_process_param::~queue_process_param): Ditto. + (queue_process_param::start): Ditto. + (queue_process_param::stop): Ditto. + * threaded_queue.h (class queue_process_param): Add support for + interruptible request loops. + * cygwin/include/cygwin/cygserver_process.h (class process_cache): Add + destructor. + +Tue Oct 2 23:24:00 2001 Robert Collins + + * cygserver_client.cc: New flag allow_daemon to disable the daemon completely. + (cygserver_request): Check it. + (cygserver_init): Ditto. + * environ.cc (parse_thing): Add (no)daemon option. + +Tue Oct 2 23:00:00 2001 Robert Collins + + * shm.cc: Update to handle include changes from HEAD. + +Tue Oct 2 16:06:00 2001 Robert Collins + + * Makefile.in: Remove cygserver_shm.o from cygwin1.dll. + Rename cygserver_shm_outside.o to cygserver_shm.o. + * cygserver.cc (server_request::process): Use the new client_request + constructor. + * cygserver_client.cc: Remove the #ifdef's stubs for the server method + within cygwin. + (client_request_attach_tty::client_request_attach_tty): Use the new + client_request constructor. + (client_request_shutdown::client_request_shutdown): Ditto. + (client_request::client_request): Ditto. + * cygserver_shm.cc (client_request_shm_get::serve): Remove the + #ifdef'd stub for in-cygwin builds. + (client_request_shm_get::client_request_shm_get): Use the new + client_request constructor, and remove the in-cygwin variants. + * cygserver_shm.h (class client_request_shm_get): #ifndef test the + serve method - it's only used in cygserver. + * shm.cc (client_request_shm_get::client_request_shm_get): New function. + * include/cygwin/cygserver.h (request_header): New constructor. + (class client_request): Use it. + New constructor accepting the header size. + #ifndef test the server method - it's only used within cygserver. + (client_request_get_version): #ifdef test the server method. + (client_request_shutdown): Ditto. + (client_request_attach_tty): Ditto. + +Tue Oct 2 9:57:00 2001 Robert Collins + + * Makefile.in: add threaded_queue.o to cygserver.exe. + * cygserver.cc: Include threaded_queue.h + (class server_request): Inherit from queue_request. + (class server_process_param): Inherit from queue_process_param. + (class server_request_queue): Inherit from threaded_queue. + (request_loop): Adjust for new types. + (server_request_queue::process_requests): Remove guts to + threaded_queue::process_requests. + (server_request::server_request): Adjust for new types. + (worker_function): Delete. + (server_request_queue::create_workers): Delete. + (server_request_queue::cleanup): Delete. + (server_request_queue::add): Move guts to threaded_queue::add. + * threaded_queue.cc: New file. + * threaded_queue.h: New file. + +Mon Oct 1 12:38:00 2001 Robert Collins + + * cygserver.cc (client_request::serve): New function. + * cygserver_process.cc: Inlude for pthread_once. + (process_cache::process_cache): Initialise a crtiical section for write access. + (process_cache::process): Use the critical section. Also add missing entries to + the cache. + (do_process_init): New function to initalise class process static variables. + (process::process): Ensure that the process access critical section is + initialised. + (process::handle): Close the handle of old process's when they have terminated + and we are returning the handle for a process with the same pid. + * cygserver_shm.cc: Run indent. + Include cygserver_process.h to allow process cache functionality. + (client_request_shm_get::serve): New parameter for process cache support. + Use the process cache, not OpenProcess to get a handle to the originating process. + Fix a handle leak with token_handle. + * cygserver_shm.h (class client_request_shm_get): Update ::serve for process + cache support. + * cygserver_transport_pipes.cc: Redefine debug_printf to be conditional on DEBUG. + * include/cygwin/cygserver.h: Do not implement client_request::serve in the + header. + * include/cygwin/cygserver_process.h (class process_cache): Add a write access + critical section to prevent races when requests from a multithreaded + application arrive. + +Sun Sep 30 23:41:00 2001 Robert Collins + + * Makefile.in: Add cygserver_process.o to cygserver.exe. + * cygserver.cc: Include signal.h and cygwin_version.h. + Define debug_printf as a macro. + Define DEBUG to a value. + (client_request_attach_tty::serve): Add beginning of process cache support. + Change from #ifdef DEBUG to work with new DEBUG style. + (client_request_get_version::serve): Add beginning of process cache support. + (class server_request): New prototype for support of process cache. + (class queue_process_param): New class to allow request loop threading. + (class server_request_queue): Add beginning of process cache support. + Allow request loop threading. + (request_loop): Thread function for request loops. + (server_request_queue::process_requests): Initiator for threaded request loops. + (client_request_shutdown::serve): Add beginning of process cache support. + (server_request::server_request): Ditto. + (server_request::process): Use debug_printf. Add beginning of process cache + support. + (server_request_queue::cleanup): Kill off any request loop threads. + (server_request_queue::add): Add beginning of process cache support. + (handle_signal): Trigger a shutdown. + (main): Print out some useful info at startup - version, date time. + Add process cache support. + Spawn a separate thread for the transport request loop, thus allowing concurrent + support for multiple transports. + * cygserver_client.cc (client_request_get_version::serve): Add process cache + support. + (client_request_attach_tty::serve): Add process cache support. + (client_request_shutdown::serve): Add process cache support. + * cygsserver_process.cc: New file with the process cache support. + * cygserver_shm.cc: Redefine debug_printf to allow conditional output. + * cygwin.din: Export shmdt(). + * shm.cc: Run indent. + Update FIXME's. + (shmdt): New function. + * include/cygwin/cygserver.h (class client_request): Add process cache support. + (class client_request_get_version): Ditto. + (class client_request_shutdown): Ditto. + (class client_request_attach_tty): Ditto. + * include/cygwin/cygserver_process.h: New header for process cache support. + +Sun Sep 30 8:52:00 2001 Robert Collins + + * include/cygwin/cygserver_transport.h: Add copyright header. + * include/cygwin/cygserver_transport_pipes.h: Ditto. + * include/cygwin/cygserver_transport_sockets.h: Ditto. + +Sat Sep 29 20:40:00 2001 Robert Collins + + * Makefile.in: Add cygserver_transport_sockets.o to DLL_OFILES. + Add cygserver_transport_sockets_outside.o to cygserver.exe. + * cygserver.cc: Include new include files. + * cygserver_client.cc: Ditto. + * cygserver_shm.h: No need to include now. + * cygerver_transport.cc: Include new include files. + (transport_layer_base::transport_layer_base): Strip back to a stub. + (transport_layer_base::listen): Ditto. + (transport_layer_base::accept): Ditto. + (transport_layer_base::close): Ditto. + (transport_layer_base::read): Ditto. + (transport_layer_base::write): Ditto. + (transport_layer_base::connect): Ditto. + * cygserver_transport_pipes.cc: Include new header + "cygwin/cygserver_transport_pipes.h". + * cygserver_transport_sockets.cc: New file. + * dcrt0.cc: No need to include now. + * fhandler_tty.cc: Ditto. + * tty.cc: Ditto. + * include/cygwin/cygserver_transport.h: Strip the base class to a stub. + Remove the cygserver_transport_pipes class. + * include/cygwin/cygserver_transport_pipes.h: New file. + * include/cygwin/cygserver_transport_sockets.h: New file. + +Tue Sep 25 16:22:00 2001 Robert Collins + + * autoload.cc: Add dynamic load statement for 'ImpersonateNamedPipeClient'. + * Makefile.in: Add new object files, and build instructions for cygserver.exe. + * cygwin.din: Export ftok, shmat, shmctl and shmget. + * dcrt0.cc: Additional includes for cygserver support. + (dll_crt0_1): Initialise the cygserver client. + * fhandler.h (fhandler_tty): New method cygserver_attach_tty. + * fhandler_tty.cc: Additional includes for cygserver support. + (fhandler_tty_slave::open): Attempt to use the cygserver when obtaining + handles from the parent process. On failure or 9x use the current method. + (fhandler_tty_slave::cygserver_attach_tty): New function. + * fork.cc (fork_child): Fixup shm memory mapped areas. + * pinfo.h: Declare fixup_shms_after_fork(). + * security.h: Declare alloc_sd(). + * tty.cc: Additonal includes to support cygserver. + (tty::common_init): Don't allow others to open us if the cygserver is running. + * winsup.h: Declare cygserver_running. + * cygserver.cc: New file. + * cygserver_client.cc: New file. + * cygserver_shm.cc: New file. + * cygserver_shm.h: New file. + * cygserver_transport.cc: New file. + * cygserver_transport_pipes.cc: New file. + * ipc.cc: New file. + * shm.cc: New file. + * include/cygwin/cygserver.h: New file. + * include/cygwin/cygserver_transport.h: New file. + * include/sys/ipc.h: New file. + * include/sys/shm.h: New file. + +2002-02-28 Robert Collins + + * thread.cc (semaphore::TryWait): Set errno as required by posix 1003.1. + (__sem_wait): Ditto. + (__sem_trywait): Ditto. + +2002-02-27 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-02-23 Corinna Vinschen + + * cygwin.din (fstat64): New symbol. + (ftruncate64): Ditto. + (lseek64): Ditto. + (lstat64): Ditto. + (mmap64): Ditto. + (seekdir64): Ditto. + (stat64): Ditto. + (telldir64): Ditto. + (truncate64): Ditto. + * dir.cc (telldir64): New function. + (telldir): Call telldir64(). + (seekdir64): New function. + (seekdir): Call seekdir64(). + * fhandler.h: Redefine all methods using __off32_t to use __off64_t. + * fhandler.cc: Use __off64_t and struct __stat64 throughout. + * fhandler_clipboard.cc: Ditto. + * fhandler_disk_file.cc: Ditto. + * fhandler_dsp.cc: Ditto. + * fhandler_floppy.cc: Ditto. + * fhandler_mem.cc: Ditto. + * fhandler_random.cc: Ditto. + * fhandler_socket.cc: Ditto. + * fhandler_tape.cc: Ditto. + * fhandler_zero.cc: Ditto. + * pipe.cc: Ditto. + * glob.c: Ditto, call lstat64 and stat64 in Cygwin. + * mmap.cc: Use __off64_t throughout. + (mmap64): New function. + * sec_acl.cc (acl_worker): Use struct __stat64, call stat64 and lstat64. + * syscalls.cc (lseek64): New function. + (stat64_to_stat32): Ditto. + (fstat64): Ditto. + (stat64): Ditto. + (lstat64): Ditto. + (ftruncate64): Ditto. + (truncate64): Ditto. + (_fstat): Call fstat64. + (_stat): Call stat64. + (cygwin_lstat): Rename to avoid declaration problem. Call lstat64. + (stat_worker): Use struct __stat64. + (access): Ditto. + (ftruncate): Call ftruncate64. + (truncate): Call truncate64. + * wincap.cc: Set flag has_64bit_file_access appropriately. + * wincap.h: Add flag has_64bit_file_access. + * winsup.h (ILLEGAL_SEEK): Define as __off64_t. + (stat_dev): Declare using struct __stat64. + (stat_worker): Ditto. + * include/cygwin/stat.h (struct __stat32): Define if compiling Cygwin. + (struct __stat64): Ditto. + (struct stat): Revert definition with explicitly sized datatypes. + Eliminate sized field names. + * include/cygwin/types.h (blksize_t): New type. + (__blkcnt32_t): Ditto. + (__blkcnt64_t): Ditto. + (blkcnt_t): Ditto. + +2002-02-22 Christopher Faylor + + * sync.h (new_muto): Just accept an argument which denotes the name of + the muto. Use this argument to construct static storage. + * cygheap.cc (cygheap_init): Reflect above change. + * exceptions.cc (events_init): Ditto. + * malloc.cc (malloc_init): Ditto. + * path.cc (cwdstuff::init): Ditto. + * cygheap.h (cwdstuff): Change name of lock element to make it less + generic. + * path.cc (cwdstuff::get_hash): Ditto. + (cwdstuff::get_initial): Ditto. + (cwdstuff::set): Ditto. + (cwdstuff::get): Ditto. + * sigproc.cc (proc_subproc): Ditto. + + * debug.cc (lock_debug): Change to method. Use method rather than + macro throughout. + + * tty.h (tty_min::kill_pgrp): Declare new method. + * fhandler_termios.cc (tty_min::kill_pgrp): New method. + (fhandler_termios::line_edit): Use new method for killing process. + * dcrt0.cc (do_exit): Ditto. + + * dtable.cc (dtable::get_debugger_info): New method for inheriting + dtable info from a debugger. + * tty.cc (tty_init): Attempt to grab file handle info from parent + debugger, if appropriate. + + # dtable.cc (dtable::stdio_init): Make this a method. + (dtable::init_std_file_from_handle): Don't set fd unless it's not open. + (dtable::build_fhandler_from_name): Move name setting to + dtable::build_fhandler. + (dtable::build_fhandler): Add win32 name parameter. + * dcrt0.cc (dll_crt0_1): Change to use dtable stdio_init. + * dtable.h (dtable): Reflect build_fhandler parameter change. + * mmap.cc (mmap_record::alloc_fh): Don't set name parameter in + build_fhandler. + * net.cc (fdsock): Remove set_name call since it is now handled by + build_fhandler. + + * sigproc.cc (proc_subproc): Release muto as early as possible. + +2001-02-22 Corinna Vinschen + + * smallprint.c (rn): Allow long long values. + (__small_vsprintf): Add 'D', 'U' and 'X' formats for long long + parameters. + +2002-02-19 Christopher Faylor + + * fhandler.cc (fhandler_base::puts_readahead): Remove default parameter + setting. Newer gcc's complain about this. + (fhandler_base::set_readahead_valid): Ditto. + * fhandler_dsp.cc (Audio::open): Ditto. + (fhandler_dev_dsp::open): Ditto. + +2002-02-19 Christopher Faylor + + * fork.cc (fork_parent): Use sec_user_nih to control process/thread + inheritance/permission. + * spawn.cc (spawn_guts): Ditto. + * security.cc (create_token): Initialize token so that it is not tested + for bogus value later. Use sec_user to control process/thread + creation. + * security.h (__sec_user): Rename declaration from sec_user. + (sec_user_nih): Declare here as inline function wrapper for __sec_user. + (sec_user): Ditto. + * sigproc.cc (czombies): Allocate a character array for zombies to + avoid constructor overhead + (extremely hackish, I know). + (cpchildren): Ditto. + (pchildren): New define. + (zombies): Ditto. + (getsem): Use sec_user_nih to control semaphore inheritance/permission. + +2002-02-16 Christopher Faylor + + * times.cc (hires::prime): Restore thread priority on failure + condition. + + * uinfo.cc (uinfo_init): Use more robust method for determining if + process was invoked from a non-cygwin process. + + * sync.h (muto::init): Eliminate "inheritance" parameter. + (new_muto): Reflect removal of parameter. + * sync.cc (muto::init): Ditto. + * cygheap.cc (cygheap_init): Ditto. + * debug.cc (threadname_init): Ditto. + * exceptions.cc (events_init): Ditto. + * malloc.cc (malloc_init): Ditto. + * path.cc (cwdstuff::init): Ditto. + * sigproc.cc (sigproc_init): Ditto. + + * grp.cc (group_lock): Use different method for locking with static + member. + (read_etc_group): REALLY ensure that read lock mutex is released. + * passwd.cc (passwd_lock): Use different method for locking with static + member. + (read_etc_passwd): REALLY ensure that read lock mutex is released. + + * shared.cc (sec_user): Correct reversed inheritance test. + +2002-02-15 Christopher Faylor + + * hires.h (hires::usecs): Rename from utime. Accept an argument. + * strace.cc (strace::microseconds): Use hires class for calculating + times. + * sync.h (new_muto): Use NO_COPY explicitly in declaration. + * times.cc (gettimeofday): Reflect change in usecs argument. + (hires::usecs): Ditto. Changed name from utime. + * winsup.h (NO_COPY): Add nocommon attribute to force setting aside + space for variable. + * regcomp.c (REQUIRE): Add a void cast to bypass a warning. + +2002-02-15 Christopher Faylor + + * hires.h: New file. + * times.cc (gettimeofday): Use hires class for calculating current time. + (hires::prime): New method. + (hires::utime): Ditto. + +2002-02-14 Christopher Faylor + + * include/sys/cygwin.h (cygwin_getinfo_types): New CW_STRACE_ACTIVE. + * external.cc (cygwin_internal): Handle CW_STRACE_ACTIVE. + +2002-02-14 Christopher Faylor + + * exceptions.cc (unused_sig_wrapper): Eliminate unused parameter to + asm. + * external.cc (cygwin_internal): Change CW_STRACE_ON to + CW_STRACE_TOGGLE. + * strace.cc (strace::hello): Toggle strace on and off. + * sync.cc (muto::init): Rename from constructor. + * sync.h (muto::new): Delete. + (muto::delete): Ditto. + (new_muto): Simplify. Use muto.init for nearly everything. + * uinfo.cc (uinfo_init): Avoid closing a NULL handle. + * include/sys/cygwin.h (cygwin_getinfo_types): Rename CW_STRACE_OFF to + CW_STRACE_TOGGLE. Delete CW_STRACE_OFF. + * include/sys/strace.h (strace): Add "inited" field. + +2001-02-12 Corinna Vinschen + + * include/cygwin/acl.h: Fix definition of aclent_t. + +2002-02-10 Christopher Faylor + + * Makefile.in (DLL_OFILES): Consolidate object files. + +2002-02-10 Corinna Vinschen + + * child_info.h, cygheap.h, fhandler_clipboard.cc, fhandler_dsp.cc, + fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, + fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, + pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, + security.h, thread.h, uinfo.cc, include/cygwin/acl.h: Fix copyright. + +2002-02-10 Corinna Vinschen + + * child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h, + fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc, + fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc, + fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc, + pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc, + security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h: + Change usage of uid_t to __uid16_t, gid_t to __gid16_t and + off_t to __off32_t throughout. Use INVALID_UID, INVALID_GID and + INVALID_SEEK instead casting -1 to the appropriate type. + * winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK. + * include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t + types. Don't declare acl functions when compiling Cygwin. + * include/cygwin/grp.h: Declare getgrgid() and getgrnam() with + correct types for internal usage. + +2002-02-10 Corinna Vinschen + + Patch suggested by Pierre A. Humblet : + * uinfo.cc (internal_getlogin): Try evaluating user by SID even if + ntsec is off. + (uinfo_init): Set primary group even if ntsec is off. + +2002-02-09 Corinna Vinschen + + * include/cygwin/grp.h: New file. + * include/cygwin/stat.h: Ditto. + * include/cygwin/types.h: Add definitions for __off32_t, + __off64_t, off_t, __uid16_t, __uid32_t, uid_t, __gid16_t, + __gid32_t and gid_t. + * include/sys/cygwin.h: Use correct uid and gid types. + +2002-02-09 Corinna Vinschen + + * dtable.cc (dtable::dup2): Revert previous patch. + * fhandler.h: Ditto. + (fhandler_socket::recv): Define new method. + (fhandler_socket::send): Ditto. + * fhandler_socket.cc (fhandler_socket::recv): New method. + (fhandler_socket::send): Ditto. + (fhandler_socket::read): Call fhandler_socket::recv() now. + (fhandler_socket::write): Call fhandler_socket::send() now. + * net.cc (class wsock_event): Move definition to wsock_event.h. + (fdsock): Revert previous patch. + (cygwin_recv): Move implementation to fhandler_socket::recv(). + (cygwin_send): Move implementation to fhandler_socket::send(). + * wsock_event.h: New file. + +2002-02-06 Alexander Gottwald + + * net.cc (get_2k_ifconf): Create interface entries for tokenring cards. + +2002-02-08 Corinna Vinschen + + * dtable.cc (dtable::dup2): Store fd for fhandler_socket. + * fhandler.h (fhandler_base::set_fd): New virtual method. + (fhandler_base::get_fd): Ditto. + (fhandler_socket::set_fd): Ditto. + (fhandler_socket::get_fd): Ditto. + * fhandler_socket.cc (fhandler_socket::read): Call cygwin_recv instead + of native Winsock recv. + (fhandler_socket::write): Call cygwin_send instead of native Winsock + send. + * net.cc (fdsock): Store fd in fhandler_socket. + +2002-02-07 Corinna Vinschen + + * net.cc (cygwin_getsockname): Fix handling of NULL sun_path. + +2002-01-29 Corinna Vinschen + + * net.cc (getdomainname): Fix registry key for 9x systems, too. + +2002-01-29 Corinna Vinschen + + * net.cc (getdomainname): Fix registry key for NT systems. + +2002-01-28 Christopher Faylor + + * external.cc (cygwin_internal): Initialize various internal settings + if required to allow use of some things from user loaded DLL. + (CW_STRACE_ON): Add new feature. + (CW_CYGWIN_PID_TO_WINPID): Ditto. + * pinfo.cc (set_myself): Call "strace.hello" to initiate possible + strace session. + (pinfo::init): Guard against dereferencing uninitialized myself. + * sigproc.cc (wait_sig): Call strace.hello() when __SIGTRACE "signal" + received. + * strace.cc (strace::hello): New method. + * wincap.cc (wincapc::init): Avoid initializing if already initialized. + * wincap.h (wincapc::wincapc): New method. + * include/sys/cygwin.h: Add new CW_ enums. Kludge typedefs of + {g,u}id_t if required. + * strace.h (strace::hello): Declare new method. + +2002-01-28 Earnie Boyd + + * include/sys/strace.h (_STRACE_ON): Define. + (_STRACE_OFF): Ditto. + +2002-01-24 Christopher Faylor + + * speclib: Ensure that temporary def file is removed. + +2002-01-23 Christopher Faylor + + * speclib: Use rm -f to remove temp file just to quiet any potential + warnings. + +2002-01-23 Corinna Vinschen + + * security.cc (create_token): Use sec_user() to create + SECURITY_ATTRIBUTES structure for primary token. Use + MAXIMUM_ALLOWED access rights instead of TOKEN_ALL_ACCESS. + +2002-01-23 Corinna Vinschen + + * path.cc (symlink): Fix check for already existing file. + +2002-01-21 Christopher Faylor + + * cygmagic: Suppress error output when figuring out if sum takes an + option. + +2002-01-21 Christopher Faylor + + * cygmagic: Attempt to figure out if sum takes an option. + +2002-01-21 DJ Delorie + + * Makefile.in (libpthread.a): Pass the assembler also. + (libm.a): Ditto. + (libc.a): Ditto. + * speclib: Specify the assembler to dlltool. + +2002-01-21 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-01-21 Corinna Vinschen + + * grp.cc (getgrgid): Don't return default gid entry when ntsec is on. + * syscalls.cc (setegid): Don't set primary group in process token. + +2002-01-21 Christopher Faylor + + * speclib: Don't use /dev/null as DLL name. Just default to what's + already in .def file. + +2002-01-21 Christopher Faylor + + * exceptions.cc (sig_handle): Remove last vestiges of SA_NOCLDSTOP code + which caused SIGCHLD to be ignored. + +2002-01-20 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-01-20 Christopher Faylor + + * syscalls.cc (regfree): Make dll_export. + +2002-01-20 Christopher Faylor + + * exceptions.cc (ctrl_c_handler): Convert windows pid to cygwin pid + when detecting if we should actually handle CTRL-C. + +2002-01-19 Christopher Faylor + + * Makefile.in (new-cygwin1.dll): Revert previous change. libsupc++.a + is only available in libstdc++-v3. + +2002-01-19 Christopher Faylor + + * exceptions.cc (sig_handle_tty_stop): Don't send SIGCHLD if parent + doesn't want it. + (sig_handle): Don't check for SA_NOCLDSTOP here. We don't have enough + information. + +2002-01-19 Christopher Faylor + + * include/cygwin/version.h: Bump DLL minor number. + +2002-01-19 Christopher Faylor + + * Makefile.in (new-cygwin1.dll): Just use -lsupc++ for link. + * sigproc.cc (proc_exists): Change existence criteria. + * sync.h (new_muto): Add volatile to definition to avoid gcc + optimization problems. + +2002-01-19 Corinna Vinschen + + * include/cygwin/version.h: Bump API minor version to 51. + +2002-01-19 Mark Bradshaw + + * cygwin.din: Add recvmsg and sendmsg. + * net.cc: Add cygwin_recvmsg and cygwin_sendmsg. + * /usr/include/sys/socket.h: Add recvmsg and sendmsg. + +2002-01-19 Corinna Vinschen + + * security.cc (create_token): Close processes token handle as soon + as it's not used anymore. + +2002-01-17 Corinna Vinschen + + * Makefile.in: Add fnmatch.o to DLL_OFILES. + * cygwin.din: Add fnmatch export symbol. + * fnmatch.c: New file. + * include/fnmatch.h: Ditto. + * include/cygwin/version.h: Bump API minor version to 50. + +2002-01-15 Corinna Vinschen + + * path.cc (fchdir): Call chdir with full windows path. + +2002-01-14 Corinna Vinschen + + * dir.cc: Use INVALID_FILE_ATTRIBUTES instead of "(DWORD) -1" + for file attributes throughout. + * fhandler.cc: Ditto. + * fhandler_disk_file.cc: Ditto. + * path.cc: Ditto. + * path.h: Ditto. + * syscalls.cc: Ditto. + * times.cc (utimes): Use path_conv::isdir() instead of explicit + GetFileAttributes() call. + +2002-01-13 Christopher Faylor + + * dcrt0.cc (multiple_cygwin_problem): Clarify logic and make + CYGWIN_MISMATCH_OK more powerful. + +2002-01-10 Christopher Faylor + + * exceptions.cc (sig_handle): Accept a second argument indicating + whether the signal came from this process or not. + * sigproc.h: Reflect sig_handle arg change. + * signal.cc (kill_pgrp): Add sigframe info. + (abort): New function. Eliminates newlib function of same name. + * sigproc.cc (wait_sig): Pass "signal from this process" value as arg + 2. + +2002-01-10 Corinna Vinschen + + * syscalls.cc (pathconf): Guard _PC_PATH_MAX branch against invalid + file parameter. + +2002-01-09 Christopher Faylor + Robert Collins + + * exceptions.cc (early_stuff_init): Rename from misnamed + set_console_handler. + (ctrl_c_handler): Attempt to work around potential signal duplication + during process startup. + (sig_handle): Ignore SIGINT when we're just an "exec stub". + * spawn.cc (spawn_guts): Store pid of spawned process in global for use + by ctrl_c_handler. + * dcrt0.cc (dll_crt0_1): Call renamed initialization function. + * winsup.h: Reflect function name change. + +2002-01-08 Corinna Vinschen + + * net.cc (cygwin_accept): Set sun_path for newly connected socket. + +2002-01-07 Ralf Habacker + + * Makefile.in: Add uninstall target. + +2002-01-07 Christopher Faylor + + * sigproc.cc (getsem): Clean up debugging output. + +2002-01-07 Christopher Faylor + + * sigproc.cc (getsem): Set errno when unable to create own semaphore. + Reorganize to make clearer that error should only come from initial + creation of process semaphore. + +2002-01-06 Christopher Faylor + + * dtable.cc (dtable::init_std_file_from_handle): Add some defensive + code to invalid handle case. + +2002-01-06 Corinna Vinschen + + * ioctl.cc (ioctl): Make third argument optional. + * include/sys/ioctl.h: Ditto in declaration. + * dtable.cc (dtable::init_std_file_from_handle): Revert previous + bogus patch. + * window.cc (WndProc): Raise SIGURG instead of SIGIO in case of FD_OOB + message. + +2002-01-05 Christopher Faylor + + * dir.cc (opendir): Guarantee release of alloced fhandler structure on + error. + +2002-01-05 Corinna Vinschen + + * exceptions.cc (sig_handle): Set default action for SIGURG to SIG_IGN. + +2002-01-05 Corinna Vinschen + + * dtable.cc (dtable::init_std_file_from_handle): Don't treat NULL + handle as errorneous. + +2002-01-04 Christopher Faylor + + * cygmagic: Change logic for equality test. + +2002-01-04 Christopher Faylor + + * dir.cc (opendir): Don't attempt to call sub-opendir if ENOENT. + +2002-01-04 Corinna Vinschen + + * net.cc: Replace usage of AF_UNIX by Posix compliant AF_LOCAL + throughout. + (socketpair): Explicitly allow SOCK_STREAM and SOCK_DGRAM socket types + in families AF_UNIX and AF_LOCAL. Explicitly allow PF_UNSPEC, PF_LOCAL + and PF_INET protocols. Return error otherwise. Implement datagram + socketpairs. + +2002-01-01 Christopher Faylor + + * speclib: Remove temp files automatically. + +2002-01-01 Corinna Vinschen + * fhandler.h (fhandler_socket::sun_path): New private member. + (fhandler_socket::set_sun_path): New method. + (fhandler_socket::get_sun_path): Ditto. + * fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize + sun_path to NULL. + (fhandler_socket::~fhandler_socket): Free sun_path if needed. + (fhandler_socket::set_sun_path): New method. + * net.cc (cygwin_bind): Set sun_path to path of local socket file. + (cygwin_getsockname): Add code to return correct sockaddr for unix + domain sockets. diff --git a/winsup/cygwin/cygthread.cc b/winsup/cygwin/cygthread.cc index a354125bab..9f86a978f1 100644 --- a/winsup/cygwin/cygthread.cc +++ b/winsup/cygwin/cygthread.cc @@ -1,6 +1,6 @@ /* cygthread.cc - Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This software is a copyrighted work licensed under the terms of the Cygwin license. Please consult the file "CYGWIN_LICENSE" for diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc index da39f07a15..f40264584d 100644 --- a/winsup/cygwin/dcrt0.cc +++ b/winsup/cygwin/dcrt0.cc @@ -1,6 +1,6 @@ /* dcrt0.cc -- essentially the main() for the Cygwin dll - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/dtable.cc b/winsup/cygwin/dtable.cc index 7b8e8272d8..03490b6025 100644 --- a/winsup/cygwin/dtable.cc +++ b/winsup/cygwin/dtable.cc @@ -1,6 +1,6 @@ /* dtable.cc: file descriptor support. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/dtable.h b/winsup/cygwin/dtable.h index 589a27a0db..6e382a6292 100644 --- a/winsup/cygwin/dtable.h +++ b/winsup/cygwin/dtable.h @@ -1,6 +1,6 @@ /* dtable.h: fd table definition. - Copyright 2000, 2001 Red Hat, Inc. + Copyright 2000, 2001, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 716846f898..e73775f669 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -1,6 +1,6 @@ /* exceptions.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index f0dde37224..8840cb85f8 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -1,6 +1,6 @@ /* fhandler.h - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index 22dc69e1e3..f554bcd262 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -1,6 +1,6 @@ /* fhandler_console.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_disk_file.cc b/winsup/cygwin/fhandler_disk_file.cc index ea338ffc64..f535f5993a 100644 --- a/winsup/cygwin/fhandler_disk_file.cc +++ b/winsup/cygwin/fhandler_disk_file.cc @@ -1,6 +1,6 @@ /* fhandler_disk_file.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_proc.cc b/winsup/cygwin/fhandler_proc.cc index 2bfe48a947..40863c7dc7 100644 --- a/winsup/cygwin/fhandler_proc.cc +++ b/winsup/cygwin/fhandler_proc.cc @@ -1,6 +1,6 @@ /* fhandler_proc.cc: fhandler for /proc virtual filesystem - Copyright 2002 Red Hat, Inc. + Copyright 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_process.cc b/winsup/cygwin/fhandler_process.cc index 7cadcb40d5..a349b6c60b 100644 --- a/winsup/cygwin/fhandler_process.cc +++ b/winsup/cygwin/fhandler_process.cc @@ -1,6 +1,6 @@ /* fhandler_process.cc: fhandler for /proc/ virtual filesystem - Copyright 2002 Red Hat, Inc. + Copyright 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_registry.cc b/winsup/cygwin/fhandler_registry.cc index f1427dc6da..18e1db4dd7 100644 --- a/winsup/cygwin/fhandler_registry.cc +++ b/winsup/cygwin/fhandler_registry.cc @@ -1,6 +1,6 @@ /* fhandler_registry.cc: fhandler for /proc/registry virtual filesystem - Copyright 2002 Red Hat, Inc. + Copyright 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_serial.cc b/winsup/cygwin/fhandler_serial.cc index 2f41eb9c7f..066e990e91 100644 --- a/winsup/cygwin/fhandler_serial.cc +++ b/winsup/cygwin/fhandler_serial.cc @@ -1,6 +1,6 @@ /* fhandler_serial.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_termios.cc b/winsup/cygwin/fhandler_termios.cc index b9fd9e7095..ee0c87d936 100644 --- a/winsup/cygwin/fhandler_termios.cc +++ b/winsup/cygwin/fhandler_termios.cc @@ -1,6 +1,6 @@ /* fhandler_termios.cc - Copyright 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 1f552ceaf3..af26108db9 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -1,6 +1,6 @@ /* fhandler_tty.cc - Copyright 1997, 1998, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1997, 1998, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/include/cygwin/types.h b/winsup/cygwin/include/cygwin/types.h index caa826fce0..2064e8acba 100644 --- a/winsup/cygwin/include/cygwin/types.h +++ b/winsup/cygwin/include/cygwin/types.h @@ -1,6 +1,6 @@ /* types.h - Copyright 2001, 2002 Red Hat Inc. + Copyright 2001, 2002, 2003 Red Hat Inc. Written by Robert Collins This file is part of Cygwin. diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 3f0704e0fc..4460c7984d 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -1,6 +1,6 @@ /* version.h -- Cygwin version numbers and accompanying documentation. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/include/pthread.h b/winsup/cygwin/include/pthread.h index b1afe93008..60550e7545 100644 --- a/winsup/cygwin/include/pthread.h +++ b/winsup/cygwin/include/pthread.h @@ -1,6 +1,6 @@ /* pthread.h: POSIX pthread interface - Copyright 1996, 1997, 1998, 1999, 20000, 2001 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Written by Marco Fuykschot diff --git a/winsup/cygwin/include/semaphore.h b/winsup/cygwin/include/semaphore.h index 500b8f7a4d..860c2bfca2 100644 --- a/winsup/cygwin/include/semaphore.h +++ b/winsup/cygwin/include/semaphore.h @@ -1,6 +1,6 @@ /* semaphore.h: POSIX semaphore interface - Copyright 2001 Red Hat, Inc. + Copyright 2001, 2003 Red Hat, Inc. Written by Robert Collins diff --git a/winsup/cygwin/include/sys/termios.h b/winsup/cygwin/include/sys/termios.h index f7f88be61a..7c47372b8e 100644 --- a/winsup/cygwin/include/sys/termios.h +++ b/winsup/cygwin/include/sys/termios.h @@ -1,6 +1,6 @@ /* sys/termios.h - Copyright 1997, 1998, 1999, 2000, 2001 Red Hat, Inc. + Copyright 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/miscfuncs.cc b/winsup/cygwin/miscfuncs.cc index a47625cf94..6956d38bed 100644 --- a/winsup/cygwin/miscfuncs.cc +++ b/winsup/cygwin/miscfuncs.cc @@ -1,6 +1,6 @@ /* miscfuncs.cc: misc funcs that don't belong anywhere else - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc index c3bb7a115b..2aca84c5d9 100644 --- a/winsup/cygwin/passwd.cc +++ b/winsup/cygwin/passwd.cc @@ -1,6 +1,6 @@ /* passwd.cc: getpwnam () and friends - Copyright 1996, 1997, 1998, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 5ff147c685..f88b03df91 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -1,6 +1,6 @@ /* path.cc: path support. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 336405fde9..74e14f3546 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -1,6 +1,6 @@ /* pinfo.cc: process table support - Copyright 1996, 1997, 1998, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/pipe.cc b/winsup/cygwin/pipe.cc index ee3c725754..ee1f18386b 100644 --- a/winsup/cygwin/pipe.cc +++ b/winsup/cygwin/pipe.cc @@ -1,6 +1,6 @@ /* pipe.cc: pipe for Cygwin. - Copyright 1996, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/pthread.cc b/winsup/cygwin/pthread.cc index 09a494d2a9..2a15a3b639 100644 --- a/winsup/cygwin/pthread.cc +++ b/winsup/cygwin/pthread.cc @@ -1,6 +1,6 @@ /* pthread.cc: posix pthread interface for Cygwin - Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Originally written by Marco Fuykschot diff --git a/winsup/cygwin/sysconf.cc b/winsup/cygwin/sysconf.cc index f0f49778d5..cc5fc24a65 100644 --- a/winsup/cygwin/sysconf.cc +++ b/winsup/cygwin/sysconf.cc @@ -1,6 +1,6 @@ /* sysconf.cc - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index dee6eb05a3..4f4f1f0513 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -1,6 +1,6 @@ /* thread.cc: Locking and threading module functions - Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Originally written by Marco Fuykschot Substantialy enhanced by Robert Collins diff --git a/winsup/cygwin/thread.h b/winsup/cygwin/thread.h index fad85e5571..9e1405d613 100644 --- a/winsup/cygwin/thread.h +++ b/winsup/cygwin/thread.h @@ -1,6 +1,6 @@ /* thread.h: Locking and threading module definitions - Copyright 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. Written by Marco Fuykschot Major update 2001 Robert Collins diff --git a/winsup/cygwin/window.cc b/winsup/cygwin/window.cc index 55bc369c07..bdcb450603 100644 --- a/winsup/cygwin/window.cc +++ b/winsup/cygwin/window.cc @@ -1,6 +1,6 @@ /* window.cc: hidden windows for signals/itimer support - Copyright 1997, 1998, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1997, 1998, 2000, 2001, 2002, 2003 Red Hat, Inc. Written by Sergey Okhapkin diff --git a/winsup/cygwin/winsup.h b/winsup/cygwin/winsup.h index 2f6e4966e2..f3dce68dc6 100644 --- a/winsup/cygwin/winsup.h +++ b/winsup/cygwin/winsup.h @@ -1,6 +1,6 @@ /* winsup.h: main Cygwin header file. - Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. + Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Red Hat, Inc. This file is part of Cygwin. -- 2.11.0