diff options
author | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:38:33 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2000-02-17 19:38:33 +0000 |
commit | 1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch) | |
tree | dc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/cygwin/ChangeLog-1998 | |
parent | 369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff) | |
download | cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.tar.gz cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.tar.bz2 cygnal-1fd5e000ace55b323124c7e556a7a864b972a5c4.zip |
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/cygwin/ChangeLog-1998')
-rw-r--r-- | winsup/cygwin/ChangeLog-1998 | 4490 |
1 files changed, 4490 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog-1998 b/winsup/cygwin/ChangeLog-1998 new file mode 100644 index 000000000..e22a158ed --- /dev/null +++ b/winsup/cygwin/ChangeLog-1998 @@ -0,0 +1,4490 @@ +Thu Dec 31 16:50:32 1998 DJ Delorie <dj@cygnus.com> + + * mmap.cc: replaced all references to libstdc++ templates with + inline classes to remove build dependency on libstdc++ + +Thu Dec 31 00:02:40 1998 Geoffrey Noer <noer@cygnus.com> + + * sysdef/uuid.def: remove useless stub. + * sysdef/oldnames.def: ditto. + * sysdef/largeint.def: ditto. + * sysdef/rpcndr.def: ditto. + +Wed Dec 30 20:33:09 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/cygcheck.cc: clean up misc. warnings relating to + signed vs. unsigned, char * vs. const char *, etc... + +Wed Dec 30 21:41:25 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (do_exit): Remove previous dwProcessId + change as it presumes too much knowledge about signalling + in the wrong place in the code. + * sigproc.cc (sigproc_terminate): Move the dwProcessId + assignment here but only do it when it is necessary or + programs will die abnormally. + * fhandler.h: Add raw_write method to fhandler_serial. + * fhandler_serial.cc (raw_write): New method. Accomodates + overlapped I/O that now must be used with serial. + * utils/kill.cc (main): Allow `0' signal. Just checks + for existence of process. + +Wed Dec 30 00:01:18 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin/version.h: bump API_MINOR to 8 to mark + recently exported _ctype_, _sys_errlist, _sys_nerr. Briefly + describe all API_MINOR changes to date. + +Wed Dec 30 01:31:34 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (do_exit): Set myself->dwProcessId so that + some exit routines will not falsely believe that this + process has been execed. + * select.cc (peek_serial): Remove debugging statements. + * sigproc.cc (sigproc_terminate): Detect state where + myself->dwProcessId == 0 as indicative of not being + an exec stub. + +Tue Dec 29 21:13:33 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (alloc_stack_hard_way): Fix a couple of thinkos + in calculating size of the new stack. Just use the size + passed from the parent. + (dll_crt0_1): Set up new frame pointers here, if appropriate. + * fork.cc (fork): Move frame pointer setup into dll_crt0_1. + +Tue Dec 29 12:57:38 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/mkpasswd.c: Include wchar.h. + * utils/mkgroup.c: Ditto. + +Tue Dec 29 12:53:23 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: remove dep for libcerr.o + +Mon Dec 28 22:02:15 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h: Make fhandler_serial io_status public since + select needs it. Add 'saw_error' field to select_record so + that select can detect error conditions. + * fhandler_serial.cc (fhandler_serial::raw_read): Detect + "operation aborted" error and retry. This seems to indicate + an attempt to retry an overlapped operation. + * select.cc (select_stuff::wait): Honor saw_error field when + appropriate. + (peek_serial): Rewrite to operate similarly to + fhandler_serial::raw_read. + * include/sys/termios.h: CBAUD mask was still not right. + +Mon Dec 28 09:09:27 1998 Christopher Faylor <cgf@cygnus.com> + + * libcerr.cc: Make obsolete. Move into errno.cc + * libctype.c: Make obsolete. Use newlib table. + * Makefile.in: Remove obsolete entries from LIBCOS. Define + __INSIDE_CYGWIN__ explicitly for .c -> .o compilation. + * cygwin.din: New exports: _ctype_, _sys_errlist, _sys_nerr. + * errno.cc: Move _sys_errlist and _sys_nerr here. + * dlfcn.cc: Reorganize includes to put ctype.h after winsup.h + so that __INSIDE_CYGWIN__ will be defined for use in ctype.h. + * fhandler_console.cc: Ditto. + * fhandler_tty.cc: Ditto. + * path.cc: Ditto. + * spawn.cc: Ditto. + +Sat Dec 26 00:20:48 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * include/Windows32/CommonFunction.h: Added proto for + NetUserChangePassword(). + +Thu Dec 24 16:15:40 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (dll_crt0_1): Add more debugging output. + * ioctl.cc (ioctl): Can't use TC[GS]ET ioctls for pty master as + it conflicts with TIOCPKT. + * passwd.cc (passwd): Bypass tc[gs]etattr call in favor of appropriate + method or conversion confusion will result due to attempts to + appropriately convert to old-style termios structures in tc[gs]etattr. + * strace.cc (strace_vsprintf): Define t explicitly. + * termios.cc (tcsetattr): Reorganize to allow meaningful debugging + output. + (tcgetattr): Ditto. + +Wed Dec 23 15:02:11 1998 Christopher Faylor <cgf@cygnus.com> + + * winsup.h: Reorganize include order to allow thread-safe build. + +Wed Dec 23 11:45:33 1998 DJ Delorie <dj@cygnus.com> + + * strace.cc (strace_microseconds): new function; returns elapsed + time in microseconds, using performance counters if available. + (strace_vsprintf): print timestamps and deltas as microseconds, + not seconds. + +Wed Dec 23 11:35:02 1998 DJ Delorie <dj@cygnus.com> + + * times.cc (__to_clock_t): Change return value to unsigned long + long to prevent overflow. + +Tue Dec 22 19:37:55 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h: Reflect fhandler_*::init argument reordering. + Add dup and init methods to fhandler_serial. + * fhandler.cc (fhandler_base::init): Reorder arguments to mirror + open(). + * fhandler_console.cc (fhandler_console::init): Ditto. Initialize + using fhandler_base rather than fhandler_serial as console is + now being slowly uncouple from fhandler_serial. + * fhandler_serial.cc (fhandler_serial::fhandler_serial): Set size + of data structure or suffer strange behavior on exec(). + (raw_read): Add debugging output. + (fhandler_serial::init): New method. + (fhandler_serial::open): Detect call from init method and avoid + calling fhandler_base::open. Don't worry about non-blocking reads + since they are now handled correctly by _read(). + (fhandler_serial::tcsetattr): Honor ICANON in a kludgey sort of way. + (fhandler_serial::tcgetattr): Ditto. + (fhandler_serial::dup): New method. Ensures duplication of all + elements of fhandler_serial class. + * fhandler_tty.cc (fhandler_tty_master::init): Reflect init argument + reordering. + (fhandler_tty_slave::init): Ditto. + * hinfo.cc (hinfo::init_std_file_from_handle): Remove unnecessary + argument. + (hinfo_init): Reflect change to init_std_file_from_handle. + (cygwin_attach_handle_to_fd): Use more appropriate types for + arguments. + (hinfo::build_fhandler): Add some slop to allocated buffer just + for paranoia's sake. + (hinfo::dup2): Avoid dereferencing a NULL pointer when oldfd==newfd. + * pipe.cc (make_pipe): Reflect init argument change. + * shared.h: Another immigrant from winsup.h + * winsup.h: Reflect change to init_std_file_from_handle. Relocate + a declaration to shared.h so that it can be used in fhandler.h. + * include/sys/cygwin.h: Reflect change to cygwin_attach_handle_to_fd. + +Mon Dec 21 16:22:48 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.cc (fhandler_base::open): Detect serial device as a special + case requiring an overlapped open. + * fhandler.h (fhandler_serial): Add several methods. Add new 'fixup after + fork required' field. + * fhandler_serial.cc (raw_read): Rewrite to come closer to handling VMIN + VTIME parameters and to allow EINTR. + (fhandler_serial::open): Initialize overlapped event here. Make error + messages more explicit. + (fhandler_serial::close): Close status event. + (fhandler_serial::tcsetattr): Store vtime_ as milliseconds. Attempt to + handle VMIN > 0, VTIME == 0 better. + (fhandler_serial::fixup_after_fork): Initialize a new event handle after + a fork. + (fhandler_serial::de_linearize): Ditto. + * hinfo.cc (hinfo::fixup_after_fork): Call fork fixer upper if close_on_exec + of need_fork_fixup set. + +Sun Dec 20 16:05:25 1998 Geoffrey Noer <noer@cygnus.com> + + * include/shellapi.h: replace with stub that includes windows.h + like similar headers already do. + * scandir.cc (scandir): add parens around assignment used as truth + value. + +Sat Dec 19 00:42:44 1998 Christopher Faylor <cgf@cygnus.com> + + * thread.cc: Fix copyright info. + * thread.h: Ditto. + * libcmain.cc: gcc is now more picky about requiring a type + for main(), so add one. + * include/pthread.h: Add attribution for net contributor. + +Fri Dec 18 19:21:30 1998 Geoffrey Noer <noer@cygnus.com> + + * pthread.cc: fix copyright header. + * shared.h: ditto. + +Fri Dec 18 19:21:30 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * cygwin.din: export scandir and alphasort. + * Makefile.in: add scandir.o to deps + * scandir.cc: New file with scandir and alphasort implementations. + * include/cygwin/version.h: bump API_MINOR to 7. + +Fri Dec 18 16:44:07 1998 Geoffrey Noer <noer@cygnus.com> + + * include/pthread.h: clean up, remove C++-style comments, + remove pthread_getsequence_np proto. + +Fri Dec 18 15:26:33 1998 Christopher Faylor <cgf@cygnus.com> + + Throughout, prepend cygwin_ to functions that are exported + as cygwin_* which previously needed to be aliased. + + * path.cc (cygwin_conv_to_win32_path): Resolve symbolic links. + Return success or failure value. + (cygwin_conv_to_full_win32_path): Ditto. + (cygwin_conv_to_posix_path): Return success or failure value. + (cygwin_win32_to_posix_path_list): Ditto. + (cygwin_posix_to_win32_path_list): Ditto. + * shared.h: New include file that incorporates parts of + winsup.h, fhandler_tty.h, path.h, and delqueue.h. + * Makefile.in: Remove old include files. + * cygwin.din: cygwin_* aliases are no longer required. + * libccrt0.cc: Store api_minor in per_process structure. + * select.cc: Change meaning of second argument to ready_for_read + to indicate whether read_ahead should be ignored. + * fhandler.h: Reflect change in second argument to ready_for_read. + * syscalls.cc (_read): Ditto. + * termios.cc: Throughout, detect attempt to use old style termios + structure and convert as appropriate. + * ioctl.cc (ioctl): Detect use of ioctl requiring termios field + and call appropriate tc[gs]et* function to handle it. + * fhandler_console.cc (fhandler_console::ioctl): Remove TC* calls + that are now handled in main ioctl. + * fhandler_tty.cc (fhandler_tty_slave::ioctl): Ditto. + * include/cygwin/version.h: Added TERMIOS defines. Bump API_MINOR + to 6. + * include/sys/cygwin.h: Reflect change in return value for some + cygwin_conv_* calls. + * include/sys/termios.h: Reformat slightly. Add conversion macros + for dealing with old style termios structure. + * include/pthread.h: add + +Fri Dec 18 15:03:33 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Cleanup pthread usage. + +Fri Dec 18 14:35:59 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Remove obsolete header dependency for + thread-safe build. + +Fri Dec 18 14:16:04 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (sig_handle): Avoid suspending top-level + processes. + * trace.cc: Remove unneeded include. + +Thu Dec 17 19:19:53 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: remove pthread_getsequence_np, _reent_clib + +Thu Dec 17 16:48:15 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin/version.h: correct two typos in comments + +Thu Dec 17 19:11:31 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * include/Windows32/Defines.h: Add values for using Windows + function `DeviceIoControl()'. + +Thu Dec 17 18:00:34 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (dll_crt0_1): exception_list is not a struct. + * debug.cc (thread_stub): Ditto. + +Thu Dec 17 08:24:37 1998 Christopher Faylor <cgf@cygnus.com> + + * cygwin.din: Remove leading underscores from pthread functions. + * include/cygwin/version.h: Bump DLL major version to 21, DLL minor + version to 0, and API_MINOR to 5. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + Merge in thread-safe branch changes. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + * pthread.cc: Include winsup.h. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + * thread.cc: Reformat. + * pthread.cc: New file. + * cygwin.din: Add pthread interface functions + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + * configure.in: Add some --enable options. + * configure: Regenerate. + * Makefile.in: Reorganize CFLAGS to recognize new --enable options. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + * fork.cc (stack_base): Store slightly different information + in child_info_fork structure for later use in alloc_stack_hard_way. + (fork): Set frame pointer information if stack has been reallocated. + * dcrt0.cc (alloc_stack_hard_way): Reflect change in + child_info_fork structure. + (dll_crt0_1): Make thread initializers "static" and NO_COPY or death + of the main thread causes death of other threads. + * winsup.h (child_info_fork): Change structure. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + * thread.h: Remove extraneous declaration. + * include/sys/strace.h: Make a new thread_printf function + for use by new thread-safe code. + * thread.cc: Use thread_printf throughout. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Marco Fuykschot (marco@ddi.nl) + * Throughout sources add locking control for preliminary + thread-safe cygwin operation. + +Wed Dec 16 22:54:16 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (getprogname): Should be a static. + (alloc_stack): Extend to allow forking from another + thread. + (alloc_stack_hard_way): New function used by alloc_stack. + (dll_crt0_1); Don't pass parameters since stack may be + "funny". Use statics instead. Move fork/spawn checking + into dll_crt0. + (dll_crt0): Do fork spawn checking here. alloc_stack() + will call dll_crt0_1 if forked from a non-main thread. + * fork.cc (stack_base): New function determines base + (and other values) of this thread's stack. + (fork): Use new PROC_FORK1 method for forking. Provides + more data to forkee. Use stack_base to set stack + values. + * winsup.h (child_info_fork): Changes for PROC_FORK1. + +Wed Dec 16 16:15:29 1998 Geoffrey Noer <noer@cygnus.com> + + * include/shellapi.h: fix typo in DragQueryPoint proto. + +Mon Dec 14 12:37:43 1998 Geoffrey Noer <noer@cygnus.com> + + * net.cc: minor respacing + (get_ifconf): new local function, combines get_winnt_ifconf and + get_win95_ifconf. + (get_win95_ifconf): delete + (get_winnt_ifconf): delete + (fhandler_socket::ioctl): adjust ifconf calls in light of above, + check returned value for safety. + * include/cygwin/version.h: bump CYGWIN_VERSION_API_MINOR to 4 + in honor of newly supported socket ioctls. + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * include/asm/socket.h: Added defines for ioctl() calls + SIOCGIFADDR, SIOCGIFBRDADDR and SIOCGIFNETMASK. + * net.cc (get_winnt_ifconf): Check the registry entries + instead of just calling get_win95_ifconf(). Added what argument + to support the new ioctl() calls. + (get_win95_ifconf): Check the Windows 9x registry entries as + described by Tim Newsham. + (fhandler_socket::ioctl): Support the ioctl() commands + SIOCGIFADDR, SIOCGIFBRDADDR and SIOCGIFNETMASK. + (get_if_flags): Check for a down interface. + +Wed Dec 9 18:11:31 1998 Geoffrey Noer <noer@cygnus.com> + + * fhandler.cc (fhandler_disk_file::open): check for shell scripts + regardless of Win32 OS type. + +Sun Dec 6 19:38:11 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * fhandler_console.cc (fhandler_console::tcgetattr): Fix typo. + ISIG should be ored with c_lflag. + +Tue Dec 1 16:28:56 1998 Geoffrey Noer <noer@cygnus.com> + + * include/utmp.h: delete, moved to newlib/libc/sys/cygwin/sys. + +Thu Dec 3 15:41:51 1998 Geoffrey Noer <noer@cygnus.com> + + Released 20.1 update. + +Thu Dec 3 22:24:18 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (set_process_mask): Add `sync' parameter + to control whether signals should be synched on exit. + (handle_sigsuspend): Provide second argument to set_process_mask - + don't sync. + (call_handler): Ditto for asm handler. + * signal.cc (sigprocmask): Ensure that signals are synchronized + by calling set_process_mask with sync == 1. + * sigproc.cc (__release_signal_mutex): Third argument is not + strictly a BOOL, so change it. + * sigproc.h: Reflect above parameter changes. + +Thu Dec 3 15:30:44 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (peek_console): Work around NT bug that + caused strange behavior with ReadFile after this + function was invoked. + +Tue Dec 1 14:43:35 1998 Christopher Faylor <cgf@cygnus.com> + + * sigproc.cc (sigproc_init): Set maintid and signal_mutex early + to avoid races in wait_sig initialization. + (__get_signal_mutex): Improve debug output. + (__release_signal_mutex): Ditto. + * spawn.cc (spawn_guts): Allocate more space for string when building + up from #! and absolute path is not known. Otherwise weird stuff + like infinite recursion or unknown file errors occur. + +Tue Dec 1 08:34:18 1998 Christopher Faylor <cgf@cygnus.com> + + * mkvers.sh: Accomodate lack of timezone in date output so that + year shows up correctly. + +Mon Nov 30 14:30:51 1998 Jeff Johnston <jjohnstn@cygnus.com> + + * times.cc (times): Altered function so that on non-Windows-NT systems + it does not use the GetProcessTimes() API which is not supported. + +Mon Nov 30 00:38:54 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc: Fix incorrect use of struct on exception_list + typedef. + * debug.cc (thread_stub): Ditto. + * dll_init.cc: Ditto. + * include/Windows32/Structures.h: Correct typo where + typedef SYSTEM_POWER_STATUS was being used as a struct. + +Sun Nov 29 22:03:17 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * fhandler_console.cc (fhandler_console::ioctl): + Added ioctl commands TCGETA, TCSETA, TCSETAW, TCSETAF. + +Fri Nov 27 22:30:58 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h: Set aside NOEINTR bit. When this is set + cygwin will not allow the read on this device to be + interrupted by a signal. + * pipe (_pipe): Set NOEINTR bit for read end of pipes + created using this method. The vague rationale for this + is that these pipes are supposed to be more like Windows + pipes than UNIX pipes. + * syscalls.cc (_pipe): Honor NOEINTR flag. + * getopt.c: Clean up some gcc warnings. + * libcerr.c: Ditto. + +Fri Nov 27 21:56:03 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (SIG_NONMASKABLE): Update for new signal + mask method. + (handle_sigsuspend): Release of signal mutex must be + synchronous -- the signal must be delivered before the + function returns. Otherwise, there will be races in + the caller code. + * sigproc.cc (sigproc_terminate): Minor cleanup. + +Thu Nov 26 20:26:17 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (call_handler): Attempt to work around + potential race when setting signal_arrived. This + particularly affects sigsuspend. + (handle_sigsuspend): Reset signal_arrived prior to + grabbing the mutex. This should reduce the probability + of a race. + * sigproc.cc (sig_send): Don't reset signal_arrived in + the SIGSUSPEND case since this could introduce a race. + +Thu Nov 26 12:19:16 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * select.cc (MAKEready): Don't wait for signal prior to + testing for read. That introduces an unnecessary delay. + +Wed Nov 25 23:03:47 1998 Christopher Faylor <cgf@cygnus.com> + + * winsup.h: Make `isdirsep' an alias for SLASH_P. + Implement isabspath convenience macro. + Change sigprotect to a macro since it appears to + be impossible to send __FILE__ type macros to a + constructor. Change use of sig_protect throughout. + * dcrt0.cc (dll_crt0_1): Use new path macro. + * dlfcn.cc (get_full_path_of_dll): Ditto. + * path.cc (path_conv::path_conv): Ditto. + (normalize_posix_path): Ditto. + (slashify): Ditto. + (backslashify): Ditto. + * syscalls.cc (num_entries): Ditto. + * lock.cc: Redefine lock methods to pass debug info to + {get,release}_signal_mutex. + * environ.cc (environ_init): Correct strncmp test for + TERM=, otherwise it's impossible to set TERM. + * exceptions.cc: Eliminate lock_cs and unlock_cs macros. + Use {get,release}_signal_mutex throughout. + (signal_init): Don't initialize signal_mutex here. + (set_process_mask): Remove vestiges of old mutex code. + (handle_sigsuspend): Ditto. + (call_handler): Move signal_arrived SetEvent back here. + It was being triggered too often before. + Detect when the signal thread is exiting. + (sig_handle): Remove inappropriate SetEvent(signal_arrived). + (events_terminate): Move close of signal_mutex elsewhere. + * glob.cc: Increase "MAXPATHLEN" size for arguments that + are not necessarily pathnames. + * pinfo.cc (lpfu): Lower timeout for reporting possible + problem with INFINITE wait. + * sigproc.cc (wake_wait_subproc): Make this a macro with + no arguments so that its use in the code is a little + clearer. + (proc_terminate): Eliminate signal blocking here since + this should already be handled by the caller. + (sigproc_init): It makes sense to initialize signal_mutex + here, so do so. + (__allow_sig_dispatch): Rename. Take debugging arguments. + Pass arguments on to release_signal_mutex. + (__block_sig_dispatch): Rename. Take debugging arguments. + Pass arguments on to get_signal_mutex. Detect signal + thread exiting confition. + (__get_signal_mutex): Take debugging arguments. Maintain + a stack of nested mutex calls for later display in + __release_signal_mutex. Detect signal thread exit + condition. Don't bother with locking if signal thread is + executing or if just an exec stub. + (__release_signal_mutex): Don't bother with locking if signal + thread is executing or if just an exec stub. + * sigproc.h: Reflect renamed functions above. Provide + wrappers to pass in diagnostic information. + * spawn.cc (spawn_guts): More fixes to deal with nested + #! and to properly report posix argv[0] when invoked as a + script. + +Wed Nov 25 12:41:12 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Reinstate libwinspool.a/winspool.drv creation. + +Tue Nov 24 18:48:56 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: add CFLAGS_COMMON and CFLAGS_CONFIG to CFLAGS + and CXXFLAGS in FLAGS_TO_PASS. + + * include/sys/select.h: new file with select proto. Avoid + potential conflict with Winsock inclusion by Cygwin internals. + * include/sys/socket.h: remove select proto. + * winsup.h: define __INSIDE_CYGWIN__. Include windows.h after + Unix include files. + * include/mywinsock.h: delete file + * include/Windows32/Sockets.h: add ndef __INSIDE_CYGWIN__s + around portions that conflict with Unix definitions. This + yields what used to be mywinsock.h which is a blend of Unix + sockets and Winsock needed by Cygwin internals. + * exceptions.cc: define Win32_Winsock to include + Windows32/Sockets.h. No longer define __INSIDE_CYGWIN__. + * hinfo.cc: ditto + * net.cc: ditto + * select.cc: ditto + + * include/exceptions.h: change wrapper define to _EXCEPTIONS_H. + * include/sys/resource.h: move includes outside __cplusplus check. + * include/sys/wait.h: ditto. + +Sun Nov 22 23:33:19 1998 Geoffrey Noer <noer@cygnus.com> + + * sigproc.cc (__release_signal_mutex): revert Nov 3d change. + +Sun Nov 22 17:04:44 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * regexp/Makefile.in: Add additional bits necessary to + allow correct installation of include file. + +Fri Nov 20 17:04:48 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Set "Warn about writable strings" option in CFLAGS. + * fhandler_tty.h: Fix for writable strings detection. + * grp.cc (add_grp_line): Ditto. + * mkvers.sh: Ditto. + * path.h: Ditto. + * registry.cc: (reg_key::reg_key): Ditto. + * smallprint.c (__small_vsprintf): Ditto. + * tty.cc (tty::get_event): Ditto. + * winsup.h: Give up on read_ready_thread. Move sig_protect + here since it needs to use information set up after the sigproc.h + include. + * dcrt0.cc: Ditto. + * debug.cc (WFSO): New function. Used to ensure that + function shows up on stack trace. + (WFMO): Ditto. + * debug.h: Define the above. + * exceptions.cc (ctrl_c_handler): Record last signal + for signal handler. + * select.cc (MAKEready): New macro for constructing + fhandler_*::ready_for_read function. + (fhandler_*::ready_for_read): Use macro to construct this + method throughout. + * sigproc.cc (sig_send): Work around race on process termination + where the event being waited for may disappear. + (sigproc_terminate): #ifdef code here that attempted to deal with + the above condition in sig_send. + * sigproc.h: Move sig_protect to winsup.h. + * spawn.cc (perhaps_suffix): Don't return pointer into an + automatic variable. + (find_exec): Always point known_suffix to something. + * syscalls.cc (read_handler): Refine debug output. + (read_ready_thread): Delete. + (_read): Eliminate use of read_ready_thread. Call ready_for_read + directly as appropriate. + +Thu Nov 19 15:26:40 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: remove -Wunused since that's already in -Wall + * dlfcn.cc (check_path_access): rename winenv arg to mywinenv + * path.cc (symlink): change save_errno var to saved_errno + * spawn.cc (find_exec): rename winenv arg to mywinenv + (spawn_guts): rename sigprotect handle to starting_here + * winsup.h: remove trailing comma from process_state flags + enum + * utils/aclocal.m4: regenerate + * utils/configure: regenerate + +Thu Nov 19 11:16:38 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Use correct libpthread.a target when + thread-safe is enabled. + +Thu Nov 19 10:49:27 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (path_conv): Correct error reporting. + +Wed Nov 18 20:07:50 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/Makefile.in: remove termcap file install rule + +Wed Nov 18 18:14:18 1998 Geoffrey Noer <noer@cygnus.com> + + More minor cleanup: + * environ.cc (winenv): don't define len twice. + * fork.cc (sync_with_parent): should NOT use rc since + this is a macro and that could have interfered with rc in + the calling function. Renamed to psync_rc. + * fhandler_serial.cc (fhandler_serial::open): change + access to myaccess since it shadows global decl. + * hinfo.cc: ditto throughout + * path.cc: ditto throughout + (path_conv::path_conv): change error to err. + +Wed Nov 18 16:17:58 1998 Geoffrey Noer <noer@cygnus.com> + + * profil.c: include stdio.h + (print_prof): comment out unused func + (profile_ctl): should return an int + +Wed Nov 18 16:17:58 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/ps.cc: include sys/cygwin.h, make pname buf + MAXPATH in size. + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * utils/ps.cc (main): converting windows paths to posix + paths in output. + +Wed Nov 18 15:34:46 1998 Geoffrey Noer <noer@cygnus.com> + + * include/wchar.h: include stddef.h. + +Wed Nov 18 17:39:15 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc (environ_init): Fix incorrect TERM= detection. + +Tue Nov 17 17:28:09 1998 Geoffrey Noer <noer@cygnus.com> + + * gcrt0.c: include stdlib.h, add proto for monstartup. + +Tue Nov 17 16:47:42 1998 Geoffrey Noer <noer@cygnus.com> + + * include/wchar.h: add protos for wcslen and wcscmp. + * syscalls.cc: minor reformat. + +Tue Nov 17 15:38:45 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.cc (fhandler_base::fhandler_base): Default non-disk + devices to binary mode. + * fhandler.h: Reformat slightly. + +Tue Nov 17 11:19:23 1998 Christopher Faylor <cgf@cygnus.com> + + * external.cc (fillout_pinfo): Copy progname using strcpy to + save on time. + * path.h: Add new enums for more fine-grained control + of path_conv. + * dir.cc (opendir): Use enum argument to path_conv. + (mkdir): Ditto. + (rmdir): Ditto. + * dlfcn.cc (get_full_path_of_dll): Ditto. + * fhandler.h: Add new set_readahead_valid to set actual + readahead. + * fhandler.cc (raw_read): Remove extraneous variable. + (fhandler_base::read): Rework to allow readahead when + not text mode. + (fhandler_disk_file::fstat): get_symlink_p() only returns + true/false now. + (fhandler_disk_file::fhandler_disk_file): Use enum argument + to path_conv. + (fhandler_disk_file::open): Ditto. + * spawn.cc (perhaps_suffix): Ditto. + * syscalls.cc (_unlink): Ditto. + (_link): Ditto. + (stat_worker): Ditto. + (_rename): Ditto. + * fhandler_serial.cc (fhandler_serial::open): Always reset timeouts. + * path.cc (path_conv::path_conv): Honor new enum arguments. + Specifically, use SYMLINK_CONTENTS for readlink interface. + (readlink): Use SYMLINK_CONTENTS argument to path_conv. + * select.cc: Rework serial support which has apparently never + worked. + +Mon Nov 16 16:15:20 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: FLAGS_TO_PASS should pass CFLAGS and CXXFLAGS + not ALL_CFLAGS and ALL_CXXFLAGS. Rework handling of CFLAGS + variables to remove duplication and make it possible to + build mingw directory. + +Mon Nov 16 09:40:21 1998 Christopher Faylor <cgf@cygnus.com> + + * syscalls.cc (_open): Use new macro to check for + NULL or empty pathname and return appropriate error. + * path.cc (check_null_empty_path*): Move macro to + path.h. + * path.h: Move macros here. + +Sun Nov 15 20:23:10 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin/version.h: bump API_MINOR to 3 to mark + addition of dll_noncygwin_dllcrt0 to exports list. + +Sun Nov 15 23:05:21 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (check_null_empty_path): New macro. + (check_null_empty_path_errno): Ditto. + (path_conv::path_conv): Check for NULL and empty + path names here and set appropriate error. + (conv_to_win32_path): Ditto. + (conv_to_full_win32_path): Ditto. + (conv_to_posix_path): Ditto. + (conv_to_full_posix_path): Ditto. + (mount_info::conv_wo_win32_path): Back out previous + change. + (mount_info::conv_to_posix_path): Ditto. + +Sun Nov 15 19:29:19 1998 Geoffrey Noer <noer@cygnus.com> + + * include/limits.h: define CHILD_MAX to be 63. + * sysconf.cc (sysconf): return CHILD_MAX when asked for + instead of _POSIX_CHILD_MAX. + +Sun Nov 15 18:25:22 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * path.cc (mount_info::conv_to_posix_path): Handle NULL and + empty pathnames. + (mount_info::conv_to_win32_path): Likewise. + +Sun Nov 15 18:09:06 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: export dll_noncygwin_dllcrt0. + * {libccrt0.cc, winsup.h}: minor reformat. + +Sat Nov 14 22:14:51 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc (environ_init): Use sizeof for string lengths + rather than hard-coded values. + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * dll_init.cc (dll_foreign_dllcrt0): Rename to + dll_noncygwin_dllcrt0. + * winsup.h: Ditto. + * include/cygwin/cygwin_dll.h: Ditto. + +Sat Nov 14 14:09:33 1998 Christopher Faylor <cgf@cygnus.com> + + * hinfo.cc (hinfo::de_linearize_fd_array): Reset first fd + for open to zero after an exec. + +Sat Nov 14 01:29:23 1998 Christopher Faylor <cgf@cygnus.com> + + * fork.cc (fork): No need for intermediate jmp_buf variable. + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * libccrt0.cc (cygwin_attach_foreign_dll): New function. + * dll_init.cc (dll_foreign_dllcrt0): New function to initialize + DLLs loaded by non-cygwin apps. + (dll_dllcrt0_1): Initialize process table entry. + (dll_dllcrt0): Revert last change to do partial initialization. + * winsup.h (dll_foreign_dllcrt0): Prototype. + * include/cygwin/cygwin_dll.h (_cygwin_foreign_dll_entry): New + entry point that does partial initialization for non-cygwin apps. + +Fri Nov 13 16:17:28 1998 Geoffrey Noer <noer@cygnus.com> + + Assorted -Wall cleanup: + * utils/mount.cc (show_mounts): remove unused var i. + * utils/cygcheck.cc (dll_info): comment out unused var ofs. + (dump_sysinfo): return a void, not an int. Comment out unused + var len in two places. Add parens around assignment used as + truth value. + * utils/kill.cc (main): remove unused var i + * utils/mkpasswd: include <ctype.h> and <stdlib.h>. + (enum_users): remove unused var rc. + (enum_local_groups): ditto. + * utils/ps.cc (main): Add parens around assignments used as + truth values. + * utils/mkgroup.c: include <ctype.h> and <stdlib.h>. + (enum_groups): return void, not int. Remove unused var rc. + * gmon.c: include <stdio.h> and <unistd.h>. + (_mcleanup): remove unused vars buf and profdir. + +Fri Nov 13 16:17:28 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * include/sys/sysmacros.h: new file, define major, minor, makedev + +Fri Nov 13 17:03:52 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc: Reflect a variable name change. + * fhandler.h: *::ready_for read takes an additional argument. + * fhandler_console.cc (get_non_ascii_key): New function derived + from fhandler_console::read1. + (fhandler_console::read1): Use new function. + * select.cc (*::ready_for_read): Add new "nonblocking" argument. + (peek_console): Be more diligent in detecting when a usable + character has been entered or false positives will be returned. + (fhandler_tty_common::ready_for_read): Detect attempt to perform + a "background" read. + * syscalls.cc (read_handler): Remove code for dealing with slow + devices. Just deal with non-blocking here. + (read_ready_thread): Renamed function. Rewritten to only detect + when an fd has data ready to be read. Actual reads happen in + the main thread. + (_read): Rely on read_handler to read data for everything. Use + the read_ready_thread to indicate when data is ready to be read. + Gut the read_thread_info class since it no longer needs to return + much information. + * winsup.h: Reflect above changes to read_thread_info. Rename + to read_ready_thread_info. + +Fri Nov 13 15:09:26 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de> and + Ron Parker <rdparker@butlermfg.org>: + * path.cc (mount_info::conv_to_win32_path): Refined recognition of + UNC devices. + +Fri Nov 13 12:37:00 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Fix a typo. + +Fri Nov 13 10:59:43 1998 DJ Delorie <dj@cygnus.com> + + * Makefile.in: "make" uses new "ld -shared" by default internally. + +Fri Nov 13 00:58:38 1998 Christopher Faylor <cgf@cygnus.com> + + * spawn.cc (find_exec): Make sure that return value is correct + in all cases. Document. + * fhandler.h (fhandler_tty_common): Give unit number to constructor. + * fhandler_tty.cc (fhandler_tty_slave::fhandler_tty_slave): Give + unit number to descriptor. Create correct UNIX path name for + tty so that ttyname() will work correctly. + * select.cc (fhandler_tty_common::ready_for_read): Don't worry + about read_for_read since the tty read routines are already + interruptible. + * syscalls.cc (_read): Reset read thread events on signal. + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * dlfcn.cc (ctype.h): Include. + (check_access): Document. + (check_path_access): Document. + (get_full_path_to_dll): Rework to handle general filenames and + symlinks. + +Thu Nov 12 17:01:52 1998 DJ Delorie <dj@cygnus.com> + + * Makefile.in (shared): "make shared" uses the new "ld -shared" + * cygwin.din: add LIBRARY and BASE tags for "ld -shared" + +Wed Nov 11 17:16:17 1998 Christopher Faylor <cgf@cygnus.com> + + * configure.in: Add --enable options for various cygwin defines + including preliminary thread-safe defines. + * configure: Regenerate + * Makefile.in: Honor new --enable options. + * glob.h: Move BSD defines to sys/cdefs.h. + * include/sys/cdefs.h: Move __P definition here. + +Wed Nov 11 14:00:45 1998 DJ Delorie <dj@cygnus.com> + + * cygwin.din (getpwnam): remove duplicates + +Tue Nov 10 18:27:09 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/aclocal.m4: regenerate with aclocal + * utils/configure.in: don't call AM_CYGWIN32 + * utils/configure: regenerate + +Tue Nov 10 15:56:03 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Gary V. Vaughan <gvaughan@oranda.demon.co.uk>: + * dlfcn.cc (dlopen): return an introspective handle to the + current module if name arg is NULL. The Single UNIX + Specification, Version 2 has this as a requirement. + +Mon Nov 9 16:29:27 1998 Geoffrey Noer <noer@cygnus.com> + + * errno.cc (strerror): all errnos in + newlib/libc/include/sys/errno.h are now listed here. + +Mon Nov 9 16:29:27 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin/version.h: up DLL version, bump API_MINOR to 2 + to mark following change. + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * cygwin.din: add exports for some of the newlib bessel + functions (j1, jn, y1, yn). + +Mon Nov 9 15:10:06 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc (_link): rewrite FIXME. + +Mon Nov 9 14:51:03 1998 Geoffrey Noer <noer@cygnus.com> + + * errno.cc (strerror): add string for EDEADLOCK. + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * errno.cc (errmap[]): add END_OF_MEDIA and additional Win32 + error codes. + +Sun Nov 8 21:28:01 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h: fhandler_pipe cannot be is_slow under + Windows9[58]. There is no way to check for EOF on a pipe + without performing a read on that system. + * syscalls.cc (read_handler): Don't check for ready_for_read + unless this is a "slow" device. + * winsup.h: Reorganize to accomdate fhandler.h requirement + for os_type. + +Sat Nov 7 23:27:05 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h (fhandler_console): Add a new function declaration. + * fhandler_console.cc (fhandler_console::read1): New function + renamed from console_read to allow use of class fields. + Detect readahead situation when doing line buffering and + buffer does not contain \n. + (fhandler_console::read): Reflect function name change. + * select.cc (cygwin_select): Changes for better handling + of < 1000 usec timeouts. + (select_stuff::wait): Perform a poll on timeout to + set any fd's that may have become active. + (peek_pipe): More debugging. Honor write_ready if set. + (peek_console): Can't always use WaitForSingleObject. + Detect readahead conditions set in fhandler_console::read1. + Honor write_ready if set. + (peek_windows): Honor write_ready if set. + * times.cc (__to_clock_t): Return clock_t value. + (times): Add some debugging printfs. + +Fri Nov 6 20:15:20 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * spawn.cc (spawn_guts): find_exec() argument mismatch + resulted in inability to run !# scripts which did not + begin with '/'. + +Tue Nov 3 16:12:59 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (handle_exceptions): Don't wait for signal + completion. + (ctrl_c_handler): Ditto. + * fhandler.h (fhandler_*): Declare new ready_for_read functions. + * select.cc: Reorganize all methods into a peek_*, a poll_*, + and a fhandler_*::ready_for_read. This is to allow the _read + function to query the state of an fd without starting a thread. + * signal.cc (kill_worker): If sending a signal from a non-main thread + don't wait for completion. + * sigproc.h (myself_nowait_nonmain): New define for use by sig_send. + * sigproc.cc (sig_send): Honor myself_nowait_nonmain. Don't wait + if not in main thread. + (__release_signal_mutex): Revert to calling ReleaseMutex only + once or mutex is released prematurely. + * syscalls.cc (read_handler): Use new ready_for_read method to + determine if an fd has data for reading. This function optionally + blocks until there is data to read. + (read_helper): Add debugging statement. + (_read): Move signal_arrived reset to before sig_protect to avoid + a race. Force read_handler thread to longjmp back to read_handler + function on signal. + +Tue Nov 3 12:18:31 1998 DJ Delorie <dj@cygnus.com> + + * utils/cygcheck.cc (dump_sysinfo): Note when not finding a + program (like cpp) on the path is a good thing. + +Tue Nov 3 01:26:08 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Kazuhiro Fujieda <fujieda@jaist.ac.jp>: + * environ.cc (environ_init): correct size arg to parse_options + +Mon Nov 2 21:40:32 1998 Christopher Faylor <cgf@cygnus.com> + + * regexp/regexp.c (regatom): Respond to compiler warning. + +Mon Nov 2 21:36:48 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (handle_exceptions): cygwin should not + print exception information if the exception is trapped + via signal(). + Also use consistent timings for lock_cs() throughout. + +Mon Nov 2 16:46:28 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: For now, also include newlib/libc/sys/cygwin. + Eventually will stop including newlib/libc/sys/cygwin32. + +Mon Nov 2 19:38:30 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * syscall.cc (gethostname): function deleted + * net.cc (gethostname): new function 'gethostname' which + first calls wsock32::gethostname and only if it fails, + calls GetComputerNameA. + +Wed Oct 28 17:57:53 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin/version.h: up DLL version to 20.0 in honor + of new Net release. + +Wed Oct 28 17:57:53 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * dll_init.cc (doGlobalCTORS): Fix invocation order. + (doGlobalDTORS): Likewise. + +Wed Oct 28 17:57:53 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: add include/exceptions.h to dll_init.cc deps. + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * dll_init.cc (exceptions.h): Include. + (dll_dllcrt0_1): New function to initialize Cygwin DLL guts + properly when a non-Cygwin app uses the Cygwin DLL. + (dll_dllcrt0): Call dll_dllcrt0_1 when user_data is NULL. + +Tue Oct 27 17:35:00 1998 Geoffrey Noer <noer@cygnus.com> + + * syslog.cc: drop "32" from CYGWIN32_LOG_NAME + +Tue Oct 27 16:09:09 1998 DJ Delorie <dj@cygnus.com> + + * utils/cygcheck.cc (usage): cygwhich->cygcheck + +Mon Oct 26 17:47:10 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: fix deps for dll_entry.o and dll_main.o, + add dep for glob.o. + + patch from Mumit Khan <khan@xraylith.wisc.edu>: + * dll_entry.cc: New file for user DLL entry point. + * dll_main.cc: New file for user DLL main. + * Makefile.in (LIBCOS): Add dll_entry.o and dll_main.o. + +Mon Oct 26 13:47:10 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: add back install of include/net which was + removed by accident. + +Mon Oct 26 15:25:22 1998 Christopher Faylor <cgf@cygnus.com> + + * strace.cc (get_strace_mutex): Don't reset last windows + error. + (strace_printf): Preserve last windows error. + +Mon Oct 26 11:01:46 1998 Christopher Faylor <cgf@cygnus.com> + + * uname.cc (uname): Remove slash from system name. + +Mon Oct 26 02:11:44 1998 Geoffrey Noer <noer@cygnus.com> + + * include/asm/byteorder.h: add missing __cplusplus wrapper. + +Mon Oct 26 00:46:33 1998 Christopher Faylor <cgf@cygnus.com> + + * uname.cc (uname): Remove space from the system name. + +Sun Oct 25 23:47:56 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler_console.cc (console_read): Several typos caused flaky + behavior when \r or \n detected under ENABLE_LINE_INPUT. Also ignore + first \n detected under ENABLE_LINE_INPUT if it isn't preceded by a \r. + This avoids problems when switching from "raw" mode into "cooked mode. + +Sun Oct 25 12:28:21 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: remove unnecessary __cygwin32_stack_trace and + __cygwin_stack_trace exports. + +Sat Oct 24 21:18:46 1998 Christopher Faylor <cgf@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * path.cc (symlink): Standard protection for symlink should + be 0777. + * syscalls.cc (num_entries): Calculated links for directory + entry should only include directories. + +Sat Oct 24 20:51:08 1998 Christopher Faylor <cgf@cygnus.com> + + * mkvers.sh: Modify check for CVS/Tag to work around ash bug. + * sigproc.cc (wait_sig): Fix detection of non-blockable signals. + +Fri Oct 23 18:24:43 1998 Geoffrey Noer <noer@cygnus.com> + + * environ.cc: CYGWIN32 environment variable is now called CYGWIN + * window.cc: lose "32" in Cygwin32WndClass + * syslog.cc: lose "32" in WIN95_EVENT_LOG_PATH and + CYGWIN32_LOG_NAME. + +Fri Oct 23 16:32:59 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/cygcheck.cc: reformat, add copyright notice + +Fri Oct 23 18:15:28 1998 DJ Delorie <dj@cygnus.com> + + * utils/cygcheck.cc: new file + * utils/Makefile.in: build cygcheck.exe + +Fri Oct 23 16:48:41 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (signals_init): Add error to api_fatal. + (events_init): Ditto. Collapse printfs into one. + (winsock_init): Ditto. + * net.cc (winsock_init): Remove "Cygwin" from error message. + +Fri Oct 23 13:48:10 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: install include/cygwin headers, losing the "32". + * include/cygwin32: remove + +Fri Oct 23 14:36:31 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc (environ_init): Avoid reallocating environ array. + * exec.cc: Increase number of arguments to 1024 throughout. + * fhandler.cc (fhandler_disk_file::open): Revert to checking + a file for '#!' to find out if it is executable but add + extra check for NTEA which, if set, eliminates the need for + the read. + * sigproc.cc (sigproc_terminate): Close hwait_sig and set it + to NULL prior to closing other handles since this flags some + routines that the process is going down. + +Fri Oct 23 00:31:27 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/*: remove "32"s from cygwin32_foo function calls + +Fri Oct 23 00:24:27 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin/version.h: increment CYGWIN_VERSION_DLL_MINOR + and CYGWIN_VERSION_API_MINOR since I'm changing the API in a + meaningful but backwards-compatible fashion. + + * exceptions.cc: strip "32" from cygwin32_exception_handler + debug printfs + + * net.cc: strip "32" from all net functions + * select.cc, syscalls.cc, winsup.h: lose "32" from cygwin32_select + * cygwin.din: adjust for these changes (no backwards + compatability issues here). + + * cygwin.din: rename all cygwin32_foo functions, aliasing as + cygwin_foo for backwards compat. for now but intend to lose them + at a later date. + * include/sys/cygwin.h: copy all cygwin32_ protos and make them + usable without the "32". We will remove the cygwin32_ ones at a + later date. + * external.cc, external.h: lose "32" from cygwin32_internal + * shared.cc, winsup.h: lose "32" in cygwin32_getshared + * path.cc, path.h: lose "32" in cygwin32_foo comments + * dll_init.cc: lose "32" in cygwin32_detach_dll + * hinfo.cc: lose "32" in cygwin32_attach_handle_to_fd + * libccrt0.cc: lose "32" in refs to cygwin32_attach_dll + * pinfo.cc: lose "32" in cygwin32_winpid_to_pid + + * include/cygwin32: remove all files except cygwin32_dll.h which + some people may already be including. Aim to remove this + remaining file at a later date. + * include/cygwin: move all include/cygwin32 files here. + * cygwin/cygwin_dll.h: change protos to reflect loss of "32"s + * include/net/if.h, include/netinet/in.h, include/netinet/ip.h, + include/netinet/ip_icmp.h, include/asm/socket.h: + include/sys/socket.h: include the headers in include/cygwin + * Makefile.in, winsup.h: fix references to + include/cygwin32/version.h + + * libcctype.c, smallprint.c, test.c: lose "32" in Cygwin32 refs in + comments + * include/dlfcn.h, include/exceptions.h, include/mapi.h, + include/winsock.h, include/mywinsock.h: ditto + * config/*: ditto + * profil.c: ditto, and respace + +Thu Oct 22 22:52:40 1998 Geoffrey Noer <noer@cygnus.com> + + * net.cc, exceptions.cc, hinfo.cc, select.cc, + include/mywinsock.h: rename __INSIDE_CYGWIN32__ to + __INSIDE_CYGWIN__ + +Thu Oct 22 17:39:06 1998 Geoffrey Noer <noer@cygnus.com> + + First round of Cygwin32 -> Cygwin renaming. In all files, + rename Cygwin32 to Cygwin in comments. + * CYGWIN32_LICENSE: delete and + * CYGWIN_LICENSE: add it back under this name + +Thu Oct 22 20:10:24 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc: Eliminate cs mutex. Just use signal_mutex + throughout. Rename sig_dispatch_mutex to signal_mutex throughout. + (lock_cs): Rewrite to be a front-end for get_signal_mutex. + (unlock_cs): Rewrite to be a front-end for release_signal_mutex. + (set_process_mask): Synchronize signals after resetting mask. + * sigproc.cc (release_signal_mutex): Report on success or + failure of signal_mutex release. + * include/Windows32/Defines.h (FILE_FLAG_WRITE_THROUGH): Make + unsigned to avoid a compiler warning. + +Thu Oct 22 14:23:49 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/Makefile.in: disable building cygwin.exe. + +Thu Oct 22 14:16:10 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (sig_handle): Minimize life of cs lock during + handling of signals to reduce the potential for a race. + +Thu Oct 22 10:23:19 1998 Christopher Faylor <cgf@cygnus.com> + + * include/sys/strace.h: Minor addition from threadsafe-branch. + +Thu Oct 22 09:03:18 1998 Christopher Faylor <cgf@cygnus.com> + + * debug.cc (close_handle): Error condition needs a return value. + * environ.cc (parse_thing): char pointers should all be constant. + (add): Ditto. + * heap.cc (heap_init): Provide a little more information in + fatal printf. Use api_fatal to print errors. + * sigproc.cc (sigproc_terminate): Move code executed on + thread termination here from wait_sig since this function + may actually be executing in the signal thread. + * strace.cc (strace_open): Argument should be const. + (strace_init): Ditto. + * winsup.h: Ditto. + * include/cygwin32/version.h: Note that original shared memory + version was 0 for 98r2. + +Wed Oct 21 08:41:39 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (__api_fatal): Remove "cygwin" identifier. + * fhandler.cc (fhandler_disk_file::open): Set symlink flag + appropriately for previous change. + * shared.cc (shared_name): Initialize static buffer to + (hopefully) force it into NO_COPY segment. + * mkvers.sh: Reorganize, add cvs tag detection, and output + cygwin "info" defines. + +Tue Oct 20 18:42:50 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin32/version.h: rewrite versioning comments, + updating for new scheme but keeping historical information. + +Mon Oct 19 23:45:24 1998 Geoffrey Noer <noer@cygnus.com> + + * include/windows.h: remove Objective-C BOOL ifdef, now taken + care of within the include/Windows32 header files. + * fhandler_console.cc: fix KeyEvent references in light of + changes to the KeyEvent struct in the Windows32 headers. + + Update include/Windows32 header files. Changes from + Mumit Khan <khan@xraylith.wisc.edu>, Corinna Vinschen + <corinna.vinschen@cityweb.de>, and me. + * include/Windows32/CommonFunctions.h: new file, contents from + Functions.h. + * include/Windows32/*.h: Misc updates. + +Mon Oct 19 20:26:15 1998 Christopher Faylor <cgf@cygnus.com> + + * debug.cc: Throughout, avoid calling *_printf while lock + is active. Previous lock count was not thread-safe. + * fhandler_console.cc (console_read): Avoid sending a + \r to caller if ENABLE_LINE_INPUT. + (fhandler_console::read): Rely on console_read to handle + \r\n conversion. + +Mon Oct 19 12:10:09 1998 Christopher Faylor <cgf@cygnus.com> + + * mkvers.sh: Use more portable constructs to allow running + this with /bin/sh, bash, and ksh. + +Mon Oct 19 11:19:58 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (mount_info::from_registry): Missed "b15.0" part + for writing mount information back to registry. + (mount_info::init): Remove obsolete stuff. + +Mon Oct 19 10:42:17 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Avoid newer GNU make construction when building + version.cc. + +Mon Oct 19 00:09:06 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: invoke mkvers.sh with $(SHELL) + +Sun Oct 18 15:19:17 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.cc (set_name): Accept unit argument for generating + win32_name. + (fhandler_base::fhandler_base): Ditto. + (fhandler_dev_floppy::fhandler_dev_floppy): Ditto. + (fhandler_dev_tape::fhandler_dev_tape): Ditto. + (fstat): Set symlink bit only if symlink_p is positive. + * fhandler.h: Reflect unit argument changes. + * fhandler_serial.cc (fhandler_serial::fhandler_serial): Accept + unit argument for generating win32_name. + * hinfo.cc (hinfo::build_fhandler): Pass unit argument to constructor + where apropriate. + * path.cc (path_conv::path_conv): Set symlink_p to a positive + value if !nofollow, negative otherwise. + (windows_device_names): Can't default to \dev\comx. \dev part + doesn't work. + (get_device_number): Accept just "comN" for backwards compatibility. + +Sat Oct 17 01:58:15 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (globify): Fix problem with argument corruption + due to use of pointer freed by realloc. + +Sat Oct 17 00:10:53 1998 Christopher Faylor <cgf@cygnus.com> + + Change NOT_OPEN_FD to dtable.not_open throughout. + * Makefile.in: Change .dll name to cygwin1.dll. Increment + the '1' when there are API/shared memory changes. Make + version.cc file every time .dll is linked. Remove datestamp + stuff. + * mkvers.sh: New file. Creates version.cc. + * cygwin.din: Export setdtablesize. + * dcrt0.cc: Remove obsolete version variables. + (build_argv): Use issep() macro rather than isspace since + isspace includes whitespace that the shell does not consider + a command separator. + (check_sanity_and_sync): Use new cygwin version defines and + structures for compatibility checking. + (dll_crt0_1): Ditto. + (__api_fatal): Renamed from api_fatal. Now always called from + macro which tacks program name to beginning of fmt. Increase + size of buffer. + * environ.cc (regopt): Use new reg_key class constructor + functionality. + * net.cc (getdomainname): Ditto. + * path.cc (read_mounts): Ditto. + (mount_info::from_registry): Ditto. + (mount_info::to_registry): Ditto. + (hash_path_name): No need for this to be a "C" function. + * external.cc (cygwin32_internal): Export version info strings. + * external.h: Add CW_GETVERSIONINFO. + * fhandler.cc (fhandler_base::write): Eliminate use of MIN macro. + * init.cc (set_dllname): Obsolete function. Handled in version.cc. + (dll_entry): Remove reference to set_dllname. + * libccrt0.cc (this_proc): Renamed from cygwin_statu. + (cygwin_crt0_common): Record api version in this_proc. + * mmap.cc (recreate_mmaps_after_fork): No need for this to be + a "C" function. + * syscalls.cc (close_all_files): Ditto. + * pinfo.cc (lock_pinfo_for_update): Eliminate a compiler warning. + * registry.cc: Eliminate reg_session class. Augment reg_key to handle + functionality of reg_session. + * registry.h: Ditto. + * shared.cc (shared_name): No need for this to be a "C" function. + Use new cygwin version structure. + (shared_info::initialize): Use new reg_key class constructor + functionality. + * smallprint.c (__small_vsprintf): Accept %P as a format specifier. + Signifies the program name. + * spawn.cc (spawn_guts): Quote *all* of the stuff the dcrt0.c considers + special. + * tty.cc (tty::inuse_event_exists): Remove debugging printf. It results + in too much output to strace log. + * uinfo.cc: Add a needed include. + * uname.cc (uname): Use new cygwin version structure to fill in utsname + fields. + * winsup.h: Regroup into sections. Add new version structure. + * include/utmp.h: Move login/logout function declarations here. + * include/cygwin32/version.h: Define new CYGWIN version/info + stuff here. + +Fri Oct 16 00:13:35 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: enable building mingw subdir by default + +Thu Oct 15 12:01:08 1998 Christopher Faylor <cgf@cygnus.com> + + * spawn.cc (spawn_guts): Set all security attributes + for CreateProcess so that sexec will work properly. + +Thu Oct 15 08:49:12 1998 Christopher Faylor <cgf@cygnus.com> + + * hinfo.cc (hinfo::dup2): Avoid a null pointer dereference + in a debugging printf. + +Wed Oct 14 18:06:51 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * fhandler_console.cc (fhandler_console::dup): reset + default_color since the console fhandler forgets its default + colorizing when it's `dup'ed. + (fhandler_console::fhandler_console): remove unnecessary + erasing in constructor of fhandler_console. + +Mon Oct 12 22:20:59 1998 Christopher Faylor <cgf@cygnus.com> + + * fcntl.cc (fcntl): According to the "Single UNIX Specification", + F_DUPFD should *not* close its argument. Revert to previous + behavior. + * hinfo.cc (dup2): Guard against closing target fd too early. + * pinfo.cc: Always initialize myself to a dummy value so that + myself != NULL checks are avoided. + * include/sys/strace.h (strace): Remove NULL check for myself. + * dcrt0.cc (api_fatal): Ditto. + * exceptions.cc (handle_exceptions): Ditto. + * signal.cc (sigprocmask): Ditto. + (_raise): Ditto. + * strace.cc (get_strace_mutex): Ditto. + +Mon Oct 12 15:19:47 1998 DJ Delorie <dj@cygnus.com> + + * utils/ps.cc (main): use const char *pname + +Fri Oct 9 12:32:23 1998 Christopher Faylor <cgf@cygnus.com> + + * syscalls.cc (getw): Simplify. + +Thu Oct 8 23:09:34 1998 Geoffrey Noer <noer@cygnus.com> + + * times.cc: add missing syscall_printfs to time functions, + slight reformatting. + +Thu Oct 8 21:56:37 1998 DJ Delorie <dj@cygnus.com> + + * hinfo.cc (cygwin32_attach_handle_to_fd): allow to pass -1 + for dup() simulation; return allocated fd. + * pinfo.cc (lock_pinfo_for_update): if the mutex is broken, + fail instead of looping. If you do loop, don't use 100% CPU. + +Thu Oct 8 18:33:02 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc: Add another per-thread object for strace. + (quoted): Fix misconception of method used to quote + quotes. + (globify): Optionally output arguments. + (build_argv): Ditto. + (dll_crt0_1): Fix typo in line reassignment. + * debug.cc (class locker): Avoid calling lock multiple times. + * exceptions.cc (call_handler): Set strace recursion flag + to zero when invoking a signal handler. + * fcntl.cc (_fcntl): F_DUPFD should close its argument. + * fork.cc (fork): Move determination of parent process to + a safer place. + * sigproc.cc (get_sig_dispatch_mutex): Rename. Use macro + interface to provide the name of the caller for strace output. + (release_sig_dispatch_mutex): Ditto. + * sigproc.h: Define *_dispatch_mutex wrappers. + * strace.cc (strace_printf): Use new per-thread object to + guard against recursion. + * winsup.h: Define per_thread_strace_protect. Redo per_thread + base class for a little more clarity. + +Wed Oct 7 22:30:43 1998 Geoffrey Noer <noer@cygnus.com> + + * fhandler_tty.h: up NTTYs from 16 to 128 + +Wed Oct 7 09:15:55 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler_console.cc (console_read): Distinguish between + 0 byte return from CTRL-C and EOF condition. + +Tue Oct 6 22:31:44 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (build_argv): Rewrite. Now: 1) allocates argv on + the fly, 2) inserts '@' files as they are found, 3) uses + sh-style quoting using either " or ' which may be embedded + in an argument. + (insert_file): Don't scan command line. Accept already + parsed arguments from build_argv. + (quoted): New function for parsing quoted strings. + (globify): Don't scan argv list. Accept element from + build_argv which will be tacked to end of argv as it + is being built. Extend quoting options to allow + tilde, braces, and quotes. + (dcrt0_dll_1): Simplify argv processing. Just call + build_argv, which handles everything. + +Tue Oct 6 11:04:43 1998 Christopher Faylor <cgf@cygnus.com> + + Change Create[A-Z]* calls throughout to use sec_none_nih + to avoid subprocesses accidentally inheriting handles. + * grp.cc: Hold group structures in group_buf rather than + an image of the /etc/group file. + (parse_grp): New function to parse a group line into a + struct group. + (add_grp_line): Use parse_grp to add line from /etc/group + into internal cache. + (read_etc_group): Avoid redundant feof call. Set up + default group. + (getgrgid): Just return appropriate entry from group_buf + rather than reparsing internal representation. + (getgrnam): Ditto. + (getgrent): Ditto. + * hinfo.cc (hinfo::select_*): Set errno value when attempt + is made to use an unopened fd. + * passwd.cc: Hold passwd structures in passwd_buf rather than + an image of the /etc/passwd file. + (parse_pw): New function to parse a passwd line into a + struct passwd. + (add_pw_line): Use parse_pw to add line from /etc/passwd + into internal cache. + (read_etc_passwd): Avoid redundant feof call. + (search_for): Just scan passwd_buf for matching entries. + (getpwent): Just return appropriate entry from passwd_buf + rather than reparsing internal representation. + +Mon Oct 5 18:06:31 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Corinna Vinschen <corinna.vinschen@cityweb.de>: + * sysdef/kernel32.def: add missing GetDiskFreeSpaceEx lines + +Sat Oct 3 23:52:23 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (si): Initialize so that NO_COPY will work. + * debug.cc (class locker): Fix previous change. Critical + sections are still required, so protect them if operating + in main thread to avoid signal problems. + Make any previously static use of locker global since that + appears to be the only foolproof way of marking the variable + NO_COPY. Rename these variables to something that is not + likely to be collided with. + * exceptions.cc (call_handler): Signal arrival of a dispatched + signal here and wait a long time for the mutex before giving + up. Should increase performance slightly. + * sigproc.cc (maintid): New external symbol. + * sigproc.cc (maintid): Make this global since it is used + in other places now. + (sig_dispatch_pending): Don't wait for wait_sig to complete + if there are no pending signals. Avoids a race and should + be faster. + (wait_sig): Don't set signal_arrived event here. Do it in + call_handler. + * strace.cc (strace_printf): Remove previous recursion check + since it is not signal safe. + * syscalls.cc (_read): Remove duplicate CreateEvent typo. + +Fri Oct 2 09:54:42 1998 DJ Delorie <dj@cygnus.com> + + * strace.cc (strace_printf): protect against recursion + +Thu Oct 1 17:08:47 1998 Geoffrey Noer <noer@cygnus.com> + + * utils/ps.cc (main): add more detailed usage printfs + +Thu Oct 1 11:05:16 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Fix typo in debug.o dependency. + * debug.cc (class locker): Give up on using critical sections + since they are not safe to use in the main thread due to signals. + +Wed Sep 30 22:34:42 1998 Christopher Faylor <cgf@cygnus.com> + + * fork.cc (fork): Close parent's parent_alive handle + if there is one or suffer a handle leak. + * syscalls.cc (_read): Make all events no access and + non-inheritable or suffer potential handle leak. + * windows.cc (gethwnd): Ditto. + +Wed Sep 30 17:22:29 1998 Geoffrey Noer <noer@cygnus.com> + + * include/io.h: add missing setmode proto + +Tue Sep 29 23:33:11 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler_tty.cc (fhandler_pty_master::close): Make sure + both sides of both pipes associated with a tty master are + closed or suffer handle leaks. + +Tue Sep 29 16:55:00 1998 Geoffrey Noer <noer@cygnus.com> + + * path.cc (mount_info::init): remove default mounts for + raw devices. + * utils/mount.cc (reset_mounts): ditto + (main, usage): new -f flag disables warning messages about + missing mount point directories. Two new flags, disabled for + now: -c will create missing mount point directory, -g will + select adding the mount point to the global registry location. + * include/sys/mount.h: add MOUNT_GLOBAL define, for future use. + +Tue Sep 29 14:20:30 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (exception): Use %p to denote some hex + values. + * winsup.h (read_info): Add jmp_buf to structure. Required + for syscalls.cc change below. + +Mon Sep 28 19:36:41 1998 Syd Polk <spolk@cygnus.com> + + * include/{tchar.h, direct.h}: Added so that + tcl8.1a2 can be compiled with cygwin. + +Mon Sep 28 19:36:41 1998 Christopher Faylor <cgf@cygnus.com> + + * syscalls.cc (thread_reset): Yet another method for + handling interruptible reads. + (_read): Use thread_reset to reset reads after a signal. + +Sun Sep 27 21:11:46 1998 Christopher Faylor <cgf@cygnus.com> + + * cygwin.din: New alias for __cygwin32_stack_trace. + * debug.cc (find_handle): Avoid leaving function without + unlocking. + (newh): Ditto. + * exceptions.cc (__cygwin32_stack_trace): Rename to just + `stack'. Shortens stack trace output. + (exception): Use %p to distinguish register values. + * fhandler_console.cc (fhandler_console::init): Remove + debugging sig_protect. + * init.cc (dll_entry): Move definition to avoid a + compiler warning. + * path.cc (mount_info::conv_to_win32_path): Detect + case of root directory when setting win32 relative + path. + (mount): Remove obsolete label. + * syscalls.cc (thread_sync): New function for exiting + the read helper thread. + (_read): Use new method for exiting the read helper + thread. + +Sun Sep 27 11:25:06 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * delqueue.cc (delqueue_list::process_queue): Clear queue + entry if file cannot be deleted for a reason other than + sharing violation. + +Fri Sep 25 08:52:50 1998 Christopher Faylor <cgf@cygnus.com> + + * debug.cc: locker variables should all be static. + * syscalls.cc (_read): Call ForceCloseHandle on + thread handle since it is protected. + +Thu Sep 24 18:59:25 1998 Geoffrey Noer <noer@cygnus.com> + + * path.cc (mount): don't verify that path is an existing + directory. Instead + * utils/mount.cc: verify that path is an existing directory + and print warning if it's not. Still do the mount. + +Thu Sep 24 11:45:04 1998 Christopher Faylor <cgf@cygnus.com> + + * debug.cc: locker class variables must be NO_COPY since + they contain data that should not be precisely duplicated + after a fork. This hopefully fixes a "SIGSEGV" problem. + * select.cc (peek_pipe): Pipes apparently should set both + "read" and "exception" flags on EOF. + +Wed Sep 23 18:26:31 1998 DJ Delorie <dj@cygnus.com> + + * doc/doctool.c (main): typo checking for --help + +Wed Sep 23 17:46:06 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (symlink_check_one): Try much harder to ensure that + CloseHandle is called on the file which was opened to check + for a symlink. Avoid obsolete check for NULL buf. + +Wed Sep 23 17:11:50 1998 Christopher Faylor <cgf@cygnus.com> + + * syscalls.cc (_read): Close thread handle or suffer a leak. + * dir.cc (opendir): Simplify logic. + (readdir): Ditto. Close handle explicitly when hit end + of files. + (rewinddir): Close directory handle or suffer leak. + (closedir): Simplify logic. + +Wed Sep 23 14:42:12 1998 Christopher Faylor <cgf@cygnus.com> + + patch from DJ Delorie <dj@cygnus.com>: + * path.cc (symlink_check_one): Don't re-define res or symlinks + will be undetectable. + +Wed Sep 23 12:02:39 1998 Christopher Faylor <cgf@cygnus.com> + + * Change calls to api_fatal throughout to avoid need for \n + (see below). + Adapt some *_printf()/ExitProcess combinations to use api_fatal. + * winsup.h (SIGTOMASK): Generate signal mask correctly for + programs linked with newer cygwins. + * dcrt0.cc (check_sanity_and_check): Set subtract constant for + signal mask calculation based on whether binary was linked with + "older" or "newer" cygwin. + (do_global_ctors): Accept a second argument indicating whether + the ctors should always be run. Necessary in forked processes + for cygwin constructors which may do more than just allocate memory. + (checkout): Remove obsolete function. + (dll_crt0_1): Remove obsolete function call. Call do_global_ctors + with second argument TRUE. + (api_fatal): Change to a print-style function, allowing arguments. + Always emit a "\n" after a message. + (__main): Do not force running of constructors in forked processes. + * exceptions.cc (call_handler): Simplify arguments passed to this + function. Eliminate potential race by setting signal masks here. + (sig_handle): Just calculate current sigaction pointer once. + Change call_handler arguments. + * fhandler_console.cc (fhandler_console::write_normal): Output + unknown characters to screen. + (fhandler_console::write): Make signal protection synchronous. + * fork.cc (fork): Reorganize slightly to eliminate a compiler warning. + * init.cc (dll_entry): Temporarily remove freeing of waitq_storage + on thread detach until a more robust scheme is developed. + * signal.cc (signal): Make signal protection synchronous. + (sigaction): Ditto. + * sigproc.cc (get_sig_dispatch_mutex): More debug info. + (release_sig_dispatch_mutex): Work around potential bug in windows + with double allocation of a mutex when WaitForSingleObject is + interrupted. Save errno here only if about to call sig_send + where it may be changed. + (wait_sig): Remove unnecessary sig_sign stuff. Add some debugging + output. + * termios.cc (tcflow): Signal protection. + (tcgetattr): Ditto. + (tcsetattr): Make signal protection synchronous. + * winsup.h: Add new extern for SIGTOMASK macro. Use it in SIGTOMASK + macro. Move errno stuff to end so that it can benefit from previous + declarations. + * configure.in: Move AC_CANONICAL_SYSTEM up a little to avoid having + configure generate some code (like the check for host type) twice. + * configure: Regenerate. + +Wed Sep 23 11:49:55 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (symlink_check_one): Fix handle leak resulting + from open of file to check for symlink magic. Suggested + by Corinna Vinschen <corinna.vinschen@cityweb.de> . + +Wed Sep 23 08:33:26 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * fhandler_tty.cc (process_ioctl): Use console handle + for ioctl operations. + +Tue Sep 22 23:58:20 1998 Geoffrey Noer <noer@cygnus.com> + + based on patch from sos@prospect.com.ru (Sergey Okhapkin): + * utils/ps.cc (main): rewrite ps to give it more options, + including a, e, f, l, and u. + +Tue Sep 22 15:18:41 1998 Geoffrey Noer <noer@cygnus.com> + + * path.cc (umount): remove initial system_printf + (mount): stat path, verify that it's an existing directory, + otherwise fail. + (strncasematch, strcasematch): return 0 instead of FALSE + * utils/mount.cc (reset_mounts): reset / to System drive, + not C: as was done in the old days. + +Mon Sep 21 18:18:18 1998 Geoffrey Noer <noer@cygnus.com> + + * path.cc (mount, umount, setmntent, getmntent, endmntent): + make extern "C" + +Mon Sep 21 20:37:16 1998 DJ Delorie <dj@cygnus.com> + + * doc/configure.in: don't try to find cc until we can correctly + configure it for a native cc in a cross build. + +Mon Sep 21 17:17:14 1998 Geoffrey Noer <noer@cygnus.com> + + * fhandler.cc (fhandler_disk_file::check_execable_p): + don't check for .shc since that's non-standard. Check for + .exe first. + +Mon Sep 21 14:57:50 1998 Geoffrey Noer <noer@cygnus.com> + + * doc/Makefile.in: reference -db2html in case docbook + tools aren't installed. + +Mon Sep 21 14:43:40 1998 Geoffrey Noer <noer@cygnus.com> + + patch from DJ Delorie <dj@cygnus.com>: + * doc/doctool.c (scan_file): correct off by one error in + malloc + +Mon Sep 21 14:28:38 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h (select_record): Clear memory in constructor. + +Mon Sep 21 08:49:22 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * select.h: Use unsigned int to hold count in fd_set + structure or suffer alignment problems. + (WINSOCK_FD_ZERO): Back out previous change as it + is no longer needed due to the above. + +Sat Sep 19 22:58:18 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler_console.cc (console_read): Keep looping in + ENABLE_LINE_INPUT mode when no characters are read. + This apparently means that a CTRL-C has been hit. + * select.cc (select_record::operator new): Remove. + (setlect_stuff::~select_stuff): Use delete to remove + record. + (pipe_cleanup): Remove unneeded statement. + (poll_socket): Add debugging statement. + (start_thread_socket): Add debugging statements. + * fhandler.h: Remove new operator from select_record. + * select.h: Make WINSOCK_FD_ZERO more aggressive. + * sigproc.cc (allow_sig_dispatch): Use new errno + saving method. + * syscalls.cc (_read): Reorganize stack freeing + code to avoid overhead when it's not needed and + to actually decommit stack memory. + +Sat Sep 19 19:16:32 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * select.cc (socket_cleanup): Avoid using a pointer + after it has been deleted. + +Fri Sep 18 13:57:37 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * Makefile.in: Really remove extra slash in INCLUDES. + Previous change didn't work. + pipe.cc (make_pipe): set close-on-exec flag for non-inheritable + pipes. + +Thu Sep 17 15:26:14 1998 Christopher Faylor <cgf@cygnus.com> + + * doc/Makefile.in: Add dummy install target. + +Thu Sep 17 12:30:49 1998 Christopher Faylor <cgf@cygnus.com> + + * winsup.h (per_thread*): New classes for storing and + manipulating per_thread information. + (threadstuff): New array of per_thread objects which are + manipulated after a fork. + (read_helper_thread_info): read() thread local storage. + (waitq_storage): wait() thread local storage. + * debug.cc (class locker): New class for generic locking + of debug table manipulation. Use this throughout for + locking access to thread/debug tables. + (debug_init): Remove in favor of automatic constructor. + * debug.h: Ditto. + * fork.cc (fork): Iterate through threadstuff looking + for thread information to clear out. Should solve some + problems for Windows 95/98. + * init.cc (dll_entry): Remove thread storage initialization. + Use per_thread class for DLL_THREAD_DETEACH. + * sigproc.cc: Use system_printf rather than alert_printf + throughout since system_printf now has the same functionality. + (sigproc_init): Use method to initialize per-thread storage. + * sigproc.h: Remove waitq_storage declaration. + * syscalls.cc (_read): Use per_thread class to manipulate + per-thread information. + * wait.cc (wait4): Ditto. + +Wed Sep 16 12:58:49 1998 Christopher Faylor <cgf@cygnus.com> + + * syscalls.c (_read): Lower timeout for signal detection after + EOF on device. Should fix recent configure performance problems. + * Makefile.in: Extend clean target into regexp directory. + +Wed Sep 16 11:44:14 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.cc (fhandler_base::set_name): Honor no_free_names(). + (fhandler_base::linearize): Remove unneeded check for NULL + get_win32_name(). + (fhandler_disk_file::fhandler_disk_file): Set path names + to a standard constant. They should eventually be filled + out by fhandler_disk_file::open. + (fhandler_disk_file::open): Detect if win32_path_name_ is + a dummy path. Fill it out from real_path, if so. + * hinfo.cc (hinfo::init_std_file_from_handle): Improve debugging + statement. + (hinfo::linearize_fd_array): Remove unneeded check for NULL + get*_name (). + * path.cc (path_conv::path_conv): Correct problem with + symlinks found at places like E:\. + +Wed Sep 16 02:25:33 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * fhandler.cc (fhandler_disk_file::open): fix typo. + +Tue Sep 15 23:52:44 1998 Christopher Faylor <cgf@cygnus.com> + + * winsup.h: Remove side effects from SLASH_P. + +Tue Sep 15 18:36:08 1998 Ben Elliston <bje@cygnus.com> + + * sysdef/kernel32.def: Add definition for the Win32 API function + `TryEnterCriticalSection'. + +Tue Sep 15 12:26:48 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Remove extra slash in INCLUDES. + * hinfo.cc (hinfo::dup2): Always clear close-on-exec + flag for duplicated handle (problem and fix determined + by Sergey Okhapkin, sos@prospect.com.ru). + * fhandler.cc (fhandler_base::set_name): Avoid use of empty + path names. + (fhandler_base::raw_read): Show error code on failure. + (fhandler_base::linearize): Avoid copying NULL names. + (fhandler_base::open): Use NULL detection in small_printf. + (fhandler_base::dup): Move set_close_on_exec_flag to dup2 + so it is caught in all cases. + (fhandler_disk_file::fhandler_disk_file): Set "no free names" + flag. + (fhandler_disk_file::open): Clear "no free names" flag since + names have been allocated to the fhandler structure at this point. + * fhandler.h (set_no_free_names): Newconditional "no free names" + function. + * hinfo.cc (hinfo::dup2): Clear close on exec here. + (hinfo::linearize_fd_array): Avoid copying NULL names. + * path.cc (normalize_posix_path): Avoid copying trailing slash + if root. + (nofinalslash): Rename variable. + * path.h: Add flag for future use. + * regexp/regerror.c: Avoid including RCS strings in product. + * regexp/regsub.c: Ditto. + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * select.cc (thread_pipe): Sleep for 10ms on every iteration. + (start_thread_pipe): Set the handle in the select structure + so that it will be properly identified in select_stuff::wait. + +Tue Sep 15 12:28:30 1998 DJ Delorie <dj@cygnus.com> + + * added documentation and doctool.c + +Tue Sep 15 08:37:26 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Fix LIBGCC definition for native builds. + Remove CFCOMMON in favor of configure solution. + * configure.in: Default CXXFLAGS to be == CFLAGS. + * configure: regenerate. + +Sun Sep 13 19:52:04 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: include ../libio when building + +Sun Sep 13 19:30:58 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin32/version.h: bump version minor now that + we've merged in all that new code... + +Sun Sep 13 21:34:33 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (do_global_ctors): Reverse call order + of constructors thanks to insight from Mumit Khan + (hkan@xraylith.wisc.edu). + (do_global_dtors): Reflect above change: invoke destructors + in the proper order. + * smallprint.c (__small_vsprintf): Gracefully detect a + null pointer for '%s' format. + * syscalls.cc (_read): Set correct flags to retrieve stack + information or suffer sporadic failures due to uninitialized + flag. + * regexp/regexp.c: Comment out RCS string. This provides + no useful information in the .dll. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + Merge in experimental-980602 branch changes. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (symlink_check_one): known_suffix needs to be + determined here in some cases, so deal with it here. + (path_conv::path_conv): More effort needed to propagate + the known_suffix back to caller in every case. + (has_suffix): Return suffix found. + (readlink): Avoid two passes through symlink_check_one. + * spawn.cc (find_exec): Propagate known_suffix from + perhaps_suffix back to caller, if appropriate. + (spawn_guts): Use suffix returned from find_exec to + determine if file should be scanned as a script when + a #! file is found. Avoids a duplicate call to + perhaps_suffix. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * path.h (suffix_info): New struct for dealing with standard + suffix (.exe, .bat, etc.) information. + (path_conv): Constructor now takes a suffix_info argument. + (std_suffixes) Standard array of suffixes to consider "special". + * path.cc (path_conv): Constructor now takes a suffix_info + argument. Record any known suffix in path_conv known_suffix + field. + (has_suffix): New function for determining if a path already + has a known suffix. + (next_suffix): New function for returning the next suffix from + a list of suffixes. + (symlink_check_one): Take an optional suffix_info argument + for suffixes to consider or tack on. + * spawn.cc (std_suffixes): Standard list of executable suffixes. + (perhaps_suffix): Pass std_suffixes to path_conv. Use + new known_suffix field in path_conv to determine if a + suffix has been detected. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + Substitute new str{,n}casematch for strcasecmp throughout. + This implementation is faster since it only tests equality. + + Change fhandler*::open throughout to return true/false + since the pointer returned was never used for anything. + + * Use strcasestr throughout for case insensitive matches for + filenames. + * Makefile.in: Use GNU make construct for determining gcc lib. + * dcrt0.cc (check_sanity_and_sync): Make error message more + explicit. + * debug.h: Better defines for dummy functions when !DEBUGGING. + * fhandler.cc (fhandler_base::fstat): Don't bother zeroing buf + here since it is always done in the caller. + (fhandler_base::~fhandler_base): Recognize cases where *_path_name_ + should not be freed. + (fhandler_disk_file::open): Split into two functions. First + function performs a path_conv and does testing on same. This + calls new fhandler_disk_file::open with path_conv data. New + function is called by stat_worker to avoid extra path tests and + mallocs. + Also, fix long standing off-by-one typo looking for #! magic. + Also, reapply test for != WinNT when checking files for magic. + Otherwise there is a tremendous slowdown in file opening, especially + for stat(). + * fhandler.h: Add support for setting/detecting when *_path_name + should not be freed. + Add new fhandler_disk_file::open declaration. + * hinfo.cc (digits): Remove obsolete function. + (hinfo::build_fhandler): Add default name for FH_DISK. + * path.cc (path_prefix_p_): Don't check beyond len1 for leading + slash. Responsible for reported performance problems? + (path_conv::path_conv): Ensure that fileattr is filled out + correctly in all cases. Return immediately when a file + is detected in !follow_mode. + (nofinalslash): Simplify. + (strncasematch): New function similar to strncasecmp except + that it only checks for =/!= and benchmarks faster than same. + (strcasematch): Ditto, re. strcasecmp. + (strcasestr): New function which does a case-insensitive strstr. + Needed for filename matching. + * smallprint.c (__small_vsprintf): Fix off-by-one in %.ns processing. + * spawn.cc (exe_exts): Make global for eventual use by other modules. + * syscalls.cc (_fstat): Zero buf prior to use. + (stat_worker): Rename from _stat_worker. Reorganize to minimize + mallocs and path name conversions. Should now perform only one + path conversion and 0 malloc/frees. + * winsup.h: Declare new functions. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + Clean up error messages throughout using new strace_printf + options. + * smallprint.c (__small_vsprintf): Add %E option for printing + error code. Understand %.n syntax. + * strace.cc (strace_vsprintf): Common routine for formatting + strace output. Default to always ending with \n unless + string ends with \b. + (strace_write): Common routine for writing to strace output. + (strace_printf): Use above two routines. + (system_printf): Ditto. + * path.cc (path_conv): Scan path to be converted from right + to left for efficiency. Implement extension searching + which is passed from spawn to symlink_check_one to minimize + overhead. + (symlink_check_one): Check extensions for existence for use + with spawn. + (readlink): Accomodate changes to symlink_check_one. + * spawn.cc (perhaps_suffix): Use new extension checking + capabilities of path_conv. + (find_exec_1): Delete. + (find_exec): Generalize to allow searching on any PATH like + environment variable. + * dllfcn.cc (check_path_access): Use find_exec to find a path. + This also ensures that paths are in Windows format which was + not the case before. + * environ.cc (conv_envvars): Add LD_LIBRARY_PATH. + * fork.cc (fork): Clean up dll loading slightly. + * Makefile.in: Turn on compiler warnings. + * winsup.h (save_errno): New class for saving errno from + being clobbered. + * include/sys/strace.h: Make system_printf a macro similar + to strace_printf_wrapper. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * sigproc.cc (sig_send): Attempt to work around Windows strangeness + when thread interrupted while waiting for completion event. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc: Remove debugging function DELETEME (). + * fhandler.cc (fhandler_base::fstat): Respond to compiler warning. + * signal.cc (sleep): Reset signal_arrived event before using it or + we could wake up immediately. + (usleep): Ditto. + (pause): Ditto. + * spawn.cc (spawn_guts): Ditto. Respond to compiler warning. + * sigproc.cc (sig_send): More debugging info. + (sig_dispatch_mutex): Only ping wait_sig when needed. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (socket_cleanup): Close thread handle or suffer + handle leak. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (verify_true): New function. + (fhandler_socket::select_*): Use verify_true for verification + function to avoid multiple calls to socket select. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (select_stuff::wait): Scan entire list of fds + when WFMO wakes up. + (set_bits): Add some strace debugging output. + (thread_socket): Ditto. + (verify_ok): Return result of set_bits rather than always 1. + (start_thread_socket): Set the handle in the select structure + so that it will be properly identified in select_stuff::wait. + (fhandler_windows::select_read): Verification routine should + be `poll_windows'. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * sigproc.cc: Change some sigproc_printfs to only occur when + #ifdef DEBUGGING. + * spawn.cc (perhaps_suffix): Search for (PROG is the pathname to + the executable file) PROG.exe, PROG.com, PROG.bat, PROG.cmd, and + PROG and return extension found or NULL if no matching file. + (spawn_guts): If the file name of the executable ends in either + .exe, .com, .bat, or .cmd we assume that it is not a script file + and therefore do not open the file to determine if it is. + Fix "wait_failed" error when exec() called and non-cygwin parent. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dir.cc (rmdir): Set correct errno when non-empty directory and + Windows9x. + * pipe.cc (pipe): Use binary mode by default for pipes. + * syscalls.cc (_read): Wait for terminated thread to exit before + clearing its stack memory. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * hinfo.cc (hinfo::fixup_after_fork): Start initial fd search + to zero forked processes so that a close(0)/dup(fd) will work. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler_windows::set_close_on_exec: Deal with possible + NULL handle. + (fhandler_windows::fixup_after_fork): Ditto. + * select.cc (select_stuff:wait): Handle return from + MsgWaitForMultipleObjects correctly for windows case. + * sigproc.cc (sig_send): Reset completion event for main thread. + * syscalls.cc (_read): Better handling of stack free condition. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (call_handler): Exit earlier if just running + in an exec'ed stub since the stub may own the sig_dispatch mutex, + but we still want to exit. + * select.cc (select_stuff::wait): Fix check for window activity + from MsgWaitForMultipleObjects. Handle infinite wait correctly. + (poll_windows): Add debugging output. + * spawn.cc (spawn_guts): Protect against signals interrupting + at an inopportune moment. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (select_stuff:test_and_set): Take appropriate action + when a select record uses a window_handle. + (fhandler_windows::select_read): Set handle and windows_handle + appropriately. + (fhandler_windows::select_write): Ditto. + (fhandler_windows::select_except): Ditto. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (cygwin32_select): Need to reset signal_arrived before + testing it or suffer loop. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * fork.cc (resume_child): Give up on SuspendThread synchronization + and use subproc_ready/forker_finished events. + (sync_with_parent): Ditto. + * sigproc.cc (wait_sig): Make sigcomplete_main manual reset to + allow handling of nested interrupts. + (wait_sig): Fix stupid typo on exit that would cause a + loop to run for a long time. Are exits faster now? + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (unlock_cs): Leave decision to release + sig_dispatch_mutex to the caller. + (set_process_mask): Call release_sig_dispatch_mutex explicitly + if needed. + (handle_sigsuspend): unlock_cs no longer takes an argument. + (call_handler): Try to acquire the strace mutex prior to + suspending the main thread to ensure that the mutex is always + released. + (sig_handle): Call release_sig_dispatch_mutex explicitly. + * fhandler_console.cc (fhandler_console::write): Protect against + signals while writing. + * signal.cc (signal): Protect against signal dispatch. + (sigaction): Ditto. + * sigproc.cc (sig_dispatch_pending): Return status no longer needed. + (sig_send): Assume pending_signals if sending signal to self. + (allow_sig_dispatch): Accept synchronize argument to control whether + to wait for wait_sig to do its thing. + (release_sig_dispatch_mutex): Just awaken wait_sig loop and wait + for acknowledgement if waitfor is TRUE. + (wait_sig): Don't ever zero pending_signals to avoid a possible race. + Set pending_signals for blocked signals, too. + * sigproc.h: Add __SIGFLUSH signal. + (class sig_protect): Allow destructor to wait for signal dispatch, + or not given constructor argument. + * strace.cc (get_strace_mutex): Renamed from waitfor_strace_mutex. + (release_strace_mutex): External function for use by call_handler. + This replaces raw calls to ReleaseMutex throughout. + * syscalls.cc (_read): Use sig_protect to protect against signals. + Other cosmetic cleanups. + (_close): Protect function with sig_protect. + * termios.cc (tcsetattr): Protect function with sig_protect. + +Thu Sep 10 21:09:51 1998 DJ Delorie <dj@cygnus.com> + + * syscalls.cc (_read): typo in matching printf format to args. + + * fhandler.cc (write): Switch to the Microsoft/DJGPP way of + writing out text files: pass \r but prepend \r to \n. + (read): Don't collapse multiple \r's. + + * delqueue.cc: rewritten for speed. Don't check *every* entry in + the list if we know the list is empty, plus check for duplicates. + * delqueue.h: ditto. + * path.cc (path_conv): If a path component is missing, short- + circuit the symlink check. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h: Reorder fhandler status field so that device is + in lower bits. This allows gcc to optimize access to the device. + * hinfo.cc: Inline not_open(). + * winsup.h: Inline hinfo::not_open(). Make hinfo::[] operator a + simple array reference. + * strace.cc: Change strace() to a macro. + * include/sys/strace.h: Ditto. + * syscalls.cc (read_handler): New function. Called directly from + _read for "non-slow" devices or via read_handler for slow devices. + (_read): Use read_handler for reading. + (read_helper): Ditto. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (do_exit): Don't ignore signals if reparenting. + Besides being a race, this screws up the process which is + actually executing. + * fork.cc (fork): Don't create a new process group when + forking or subprocesses won't respond to CTRL-C. + * syscalls.cc (_read): Ensure correct setting of EINTR errno. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * fork.cc (sync_with_child): Consider it a success if the child + has set the subproc_ready signal regardless of whether it has + exited or not. + * init.cc (dll_entry): Set read_helper_thread_info stuff to 0 + on dll initialization. Windows 95 seems to keep garbage here, + despite documentation to the contrary. + * syscalls.cc (_read): Report on errors to create read_helper + events. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (compute_argc): Limit debug_printf string argument size + or suffer a buffer overrun. + (do_exit): Add debugging statement. + * exceptions.cc (call_handler): Remove extraneous sigproc_printf. + Consolidate signal_arrived event with sig_was_dispatched. + (events_terminate): Consolidate signal_arrived event with + sig_was_dispatched. + * fhandler.h: Rename a field to something more mnemonic. + * fhandler_tty.cc: Throughout: Only set up fhandler_tty_master when + actually using ttys. Change tty_master `f' field to `console'. + * tty.cc: Ditto. + * fork.cc (sync_with_child): Add more information to "child died" + error. + * hinfo.cc (hinfo::build_fhandler): Call tty master constructor + when appropriate. + * select.cc (select_stuff::wait): Consolidate signal_arrived event + with sig_was_dispatched. + * sigproc.h: Ditto. + * syscalls.cc (_read): Ditto. + * winsup.h: Ditto. + * sigproc.cc: Ditto, throughout. + (block_sig_dispatch): Don't reset signal_arrived. Causes races. + * spawn.cc (spawn_guts): Limit debug_printf string argument size + or suffer a buffer overrun. + * include/sys/strace.h: Implement strace_minimal for very minimal + output which, hopefully, will not affect the behavior of traced + programs as much. + +Thu Sep 10 21:09:51 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: build libwinspool.a with the dll name winspool.drv + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (build_argv): Remove verbose debug_printf. + (dll_crt0_1): Use shared data handle passed in from parent process + when appropriate. Remove extraneous debug_printf. + * environ.cc (getwinenv): New function. Returns (possibly cached) + native version of an environment variable. + (win_env::add_cache): Add cached version of posix and win env + variables to local table. + (posify): Modify for use with native caching. + (setenv): Convert special environment variables to native here, + when they are set. + (struct parse_thing): Simplify struct. + (struct parse_things): Extend table to accomodate "envcache" + setting. + (parse_options): Add "envcache" option to control whether special + environment variables are cached. Simplify handling of remembered + parameters. + (winenv): Modify for use with getwinenv. + * exceptions.cc (unlock_cs): release_sig_dispatch takes an argument + now. + (set_process_mask): unlock_cs now wakens wait_sig when appropriate. + (handle_sigsuspend): Reorganize to take advantage of new behavior + of release_sig_dispatch_mutex and hopefully avoid a race. + (handle_sig): Avoid waking wait_sig if we couldn't get the dispatch + mutex. + * exec.cc (strccpy): Change to modify second argument to point + to position where "parse" stopped so that it doesn't have to be + recalculated by the caller. + (sexecvpe): Use find_exec () to find program to run. If you've + got a function for this, you might as well use it. + * fhandler_tty.cc (fhandler_pty_master::process_input_to_slave): + Report on signal being sent in termios_printf. Use kill_pgrp + interface. + * fork.cc (fork_copy): Just copy everything at once rather than + in individual pieces. + (fork): Potentially move up sbrk() when DEBUGGING so that parent + and child heaps are in sync. Pass cygwin_shared_h to child. + * path.cc (path_conv::path_conv): Make sure that a file is not + a symlink when returning immediately. + * sigproc.cc (sig_dispatch_pending): Return TRUE if signals were + pending. + (sigproc_init): Move sig_was_dispatched initialization here so + that it will always be available to other functions which rely + on it. Otherwise these functions would have to wait for wait_sig + to complete its initialization. + (sig_send): Rework SIGSUSPEND handling. + (release_sig_dispatch_mutex): Wait for signal to be dispatched + after releasing mutex if argument is TRUE. + (wait_sig): Remove sig_was_dispatched initialization from here. + * sigproc.h: release_sig_dispatch takes an argument. + * spawn.cc (perhaps_suffix): Take an optional argument indicating + whether the path has already been converted to win32. + (find_exec_1): Use getwinenv to get windows version of PATH. Use + windows version of individual directories to avoid posix lookups. + (spawn_guts): Call strace_dump here to cause strace output to + be slightly more synced when using strace caching. + (spawnvpe): Use find_exec () to find program to run. If you've + got a function for this, you might as well use it. + * syscalls.cc (_read): Only block signals for "slow" devices. + * winsup.h: Changes needed for previous checkin and getwinenv. + +Thu Sep 10 21:09:51 1998 DJ Delorie <dj@cygnus.com> + + * path.cc (path_conv): bug fix when path ends in slash + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.cc (fhandler_base::set_name): Use fhandler + method for determining native name. Avoid path_conv + when possible. + (fhandler_disk_file::get_native): New function, returns + windows name of disk file. + * fhandler.h: Add get_native() method to fhandler_* + classes. + * fhandler_serial.cc (fhandler_serial::get_native): Return + windows name of serial port. + * fhandler_tty.cc (fhandler_tty_master::init): Use consistent + name for tty master. + * fork.cc (fork_copy): Experimental change to avoid loop. + * grp.cc (add_grp_line): Use realloc to extend group buffer. + * hinfo.cc (hinfo::release): fd object should be deleted, + not freed or suffer a memory leak. + (init_std_file_from_handle): Reset first_fd_for_open to + signal that std* locations have been opened. Avoids use + of these locations prior to full dtable setup. + * passwd.cc (add_pwd_line): Use realloc to extend passwd buffer. + * path.cc (path_conv::path_conv): Avoid checking for symlinks on + network shares. Check for existence of file prior to taking + it apart for symlink checking (this needs more work). + (windows_device_names): Make global. + (get_device_number): Detect tty master. + * sigproc.cc (wait_sig): Maintain a flag which indicates when + signals are queued due to the wait_sig's inability to get a + sig_dispatch mutex. + (sig_dispatch_pending): Don't wake up the wait_sig thread if + unless there are signals queued (see above) or force argument. + (allow_sig_dispatch): Only wait for signal dispatch if something + is queued. + * sigproc.h: allow_sig_dispatch takes a (defaulted) argument now. + * syscalls.cc (_open): Use default hinfo::find_unused_handle call. + * net.cc: Ditto, throughout. + * pipe.cc: Ditto. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (do_exit): Ignore user initiated signals here. + * fhandler.cc (fhandler_disk_file::open): Detect error condition + on fhandler_base::open. + * fhandler_console.cc (undo_input): Respond to compiler warnings. + * grp.cc (getgrgid): Ditto. + * times.cc (_tzname): Ditto. + * fhandler_tty.cc (fhandler_Tty_slave::open): Cosmetic changes. + * fork.cc: Clean up debugging output. + * pinfo.cc (pinfo_init): Set pgid and sid to different values + initially. Let user program set sid appropriately if it is + to be the owner of a tty. + * sigproc.cc (allow_sig_dispatch): Try harder to detect when we + should wait for a signal dispatch. + * strace.cc (strace_open): Revert to previous mutex behavior. + * include/sys/strace.h: Ditto. + * syscalls.cc (_open): Detect error from fhandler open. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + Global changes: + Store win32 name in fhandler structure to avoid multiple translations. + Support close_on_exec at the Win32 level for all but sockets. + Respond to gcc warnings. + Use single fstat() call for devices. + *::set_close_on_exec modified. + * dir.cc (opendir): Use win32 name in stat to speed things + up a little. + * debug.cc: New file. Provides routines for extra debugging + when -DDEBUGGING is specified. + * debug.h: New file. Definitions for debug.cc. + * exceptions.cc (signals_init): Break out signal initialization + from exceptions. + (dump_status): Add thread name to stack dump output. + (handle_exceptions): Renamed. + (set_process_mask): Don't ever mask non-maskable signals. + (ctrl_c_handler): Preliminary change to allow propagation of + cygwin signals back to gdb. + (sig_handle): Call do_exit directly from signal thread rather than + attempting to redirect the main thread. + * fhandler.cc (set_name): Store win32 name in fhandler structure. + (*::open) name field is extraneous now. Use get_win32_name () to + retrieve stored win32 name. + (fhandler_base::fstat): Default to performing fstat on a device. + (fhandler_disk_file::fstat): Renamed from fhandler_base::fstat. + Operate only on disk files. + (fhandler_base::set_close_on_exec_flag): New function sets flag + without touching the handle. + (fhandler_base::~fhandler_base): Free unix/win32 path names. + (fhandler_disk_file::close): Only call delqueue.process_queue from + this function since disk files are the only things that can + be unlinked, currently. + (fhandler_dev_null::open): Delete. + (set_inheritence): New function. Set handle inheritence. + (fhandler_*::fork_fixup): New functions. Inherit fhandler data + after a fork. + fhandler.h: *::set_output_handle - new method. + Setup methods for use by select(). + fork.cc (fork): Call fixup_after_fork in child to inherit + handles marked as non-inheritable on CreateProcess. + hinfo.cc (hinfo::build_fhandler): Use new function to detect + devices. + (dup_for_exec): Delete obsolete function. + (hinfo::dup2): Remove extraneous tests. + (hinfo::select_*): Interfaces into select(). + (hinfo::release): Free fd in dtable. + (hinfo::fixup_after_fork): New function. Inherit close-on-exec + handles from parent after fork. + path.cc (mount_info::posix_path_p): Make inline. + (path_conv::path_conv): Short circuit when path resolves to a device. + (digits): Move here from hinfo.cc. + (windows_device_names): Win32 names for Cygwin devices. + (get_device_number): New function. Return devie number given device + name. + (win32_device_name): New function. Decode a windows device name + and an optional "unit". + (mount_info::conv_to_win32_path): Short circuit when path resolves to + a device. + * path.h: add device and unit fields to path_conv class. + * select.cc: Rewrite for more structure, more OO. + * sigproc.cc: (get_sig_dispatch_mutex): New function. + (release_sig_dispatch_mutex): New function. + * sigproc.h: sig_protect class. Automatic protection from signals + when used. + * syscalls.cc (stat_dev): New function. + (stat_worker): Short-circuit when a cygwin device is detected. + * utils/ps.cc: Don't lock_pinfo when -f. Compress format to fit + more on a line. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (dll_crt0_1): Register name for main thread. + * exceptions.cc (dump_status): Add thread name to diagnostic output. + (__cygwin32_exception_handler): Rename to handle_exceptions. Avoid + creating a .core file. + * exec.cc (sexecve): Reflect spawn_guts argument change. + * fhandler_tty.cc (fhandler_tty_master::init): Use makethread to + create a new thread. + * select.cc: Create pipe/socket threads each time select is called. + Use thread termination as indication of fd readiness. + * sigproc.cc (sigproc_init): Use makethread to create a new thread. + (wait_sig): Simplify default signal call slightly. + * spawn.cc (spawn_guts): Accept child pinfo pointer rather than + pid. Reorganize so that common initialization is handled once. + * strace.cc: Set strace_mutex to NULL initially to catch CreateMutex + errors. + * window.cc (gethwnd): Use makethread to create a new thread. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Add debug.o target. + * cygwin.din: Separate pipe from _pipe. + * dcrt0.cc (alloc_stack): New, more precise method for allocating + stack space after a fork. + (dll_crt0_1): Use new child_proc_info class to retrieve information + from possible parent process. Remove #ifdef erroneously checked in. + Remove extraneous syscall_printf. + * exceptions.cc (signals_init): New function. + * fhandler.cc (fhandler_make_pipe): Move to pipe.cc. + * fhandler.h (fhandler_base): New = operator preserves unix_path_name_. + * fhandler_tty.cc: Strip some tty functions from here into tty.cc. + * fork.cc: Remove obsolete ifdefs. Reorganize, streamline with new + fork. + * hinfo.cc: Speed up build_fhandler. + * libccrt0.cc: Remove obsolete ifdefs. + * pinfo.cc (pinfo_init): Simplified by new fork/spawn info passing + method. + * pipe.cc (make_pipe): Moved from fhandler.cc. Handles MS-style + _pipe. + (pipe): Use new arguments to make_pipe. + (_pipe): New MS-compatible function. + * shared.cc: cygwin_shared_h make global so that it can be inherited + via new fork/spawn info passing method. + (open_shared_file_map): Detect if shared info is already set up from + fork/spawn. + * sigproc.cc (sigproc_init): Initialize signals with signals_init here. + Use new fork/spawn info passing method. + * spawn.cc (spawn_guts): Pass information in a structure to spawned + process. Identify structure type with a "magic number". + * strace.cc (strace_printf): Only print program full path spec once + to save space and clutter. Preserve any windows error. + * syscalls.cc (_open): Detect and avoid error return from + build_fhandler. + * tty.cc: Accept some non-fhandler functions formerly found in + fhandler_tty.cc + * winsup.h (pinfo): Remove some fields obsoleted by new fork/spawn + info passing method. + (child_info*): New classes for passing information to forked/spawned + process. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Add debug.o target. + * console.cc (fhandler_console::char_command): Fix failed merge. + * dcrt0.cc (alloc_stack): New, more precise method for allocating + stack space after a fork. + (dll_crt0_1): Use new child_proc_info class to retrieve information + from possible parent process. Remove #ifdef erroneously checked in. + Remove extraneous syscall_printf. + +Thu Sep 10 21:09:51 1998 Christopher Faylor <cgf@cygnus.com> + + Global changes: + Replace pinfo hmap entry with "dtable" reference. + Replace cygwin_shared .t field with '.tty' and allow indexing via + tty into this array. + Make fhandler_ constructors set the size of the structure into any + created class. + Change fhandler settings into a bit mask. Use methods to access. + Record device type in fhandler class. + Remove old linearize/de_linearize code in favor of newer method + uses more bullet-proof method for determing device type of inherited + files. + Protect various important handles from closing when operating + under -DDEBUGGING. + * dcrt0.cc (do_global_ctors): Renamed, made static and reused + for calling from dll_crt0_1 to initialize cygwin.dll constructors. + (do_global_dtors): Renamed. + (dll_crt0_1): mark noreturn. Use new do_global_ctors function. + Call debug_init to initialize features turned on by -DDEBUGGING. + Call dtable_init to initialize dtable, hinfo_init to initialize + standard fds. + (dll_crt0): Mark noreturn. Move constructor calls to dll_crt0_1. + (__main): Use new do_global_ctors (). + Remove OLDWAY and _PPC_ conditionals. + * environ.cc (environ_init): Use appropriate strace printf. + * exceptions.cc (set_process_mask): Don't ever mask out unmaskable + signals. + * init.cc (dll_entry): Initialize storage for read_helper. + * pinfo.cc (init_from_exec): Delete obsolete function. + * sigproc.cc (sig_send): Implement myself_nowait to allow + sending a signal to myself without waiting for synchronization. + (wait_sig): Change method for determining whether signal should + be examined slightly. + * strace.cc (strace_printf): Add ability to report on thread from + which message originated. + (threadname): New function + * syscalls.cc (read_helper): New function. Invoked in separate thread + from _read. + (_read): Use a separate thread for reads that can be interrupted + with a TerminateThread(). Allows EINTR. + (setdtablesize): Use new method for extending the size. Callable + from anywhere. + (getdtablesize): Use new method for getting the current dtable size. + * tty.cc: Remove use count in favor of a method which checks tty + availability via an event. Some code cleanup. + (tty::inuse): New function for determining if a tty is + in use by any process. + (tty_list::terminate): Use new method for determining if a tty is in + use. Should avoid hangs waiting for non-existent processes to + free up a tty. + (tty::common_init): Common initialization for tty/pty master. + (fhandler_tty_master::init): New function. + (do_output): Use new method for determining if a tty is in use. + (fhandler_pty_master::open): Use comon initialization code. + (fhandler_pty_master::ptsname): static buffer is ok now. + * tty.h: Reflect inuse changes and tty.cc cleanup. + * winsup.h: Include debug.h for use when -DDEBUGGING. Remove + stuff previously here which was conditionally compiled with -DDEBUGGING. + (hinfo_vec): Rename to hinfo. Maintain argv style list of pointers + to open fds. Add methods to deal with above changes. + (pinfo): Removals due to above changes. + (shared_info): Rename t to tty. + Add common defines to extern "C" section. + +Wed Sep 9 22:24:50 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (path_prefix_p_): Rewrite to avoid false match + against root when remote path or \\x style disk device. + * include/sys/strace.h: Implement new macro for use by + malloc_printf which does not default to "on" if STRACE=1. + This avoids massive strace logs. + +Tue Sep 8 11:31:42 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (dll_crt0_1): Remove ill-advised ifdef NEEDOEM. + +Thu Sep 3 17:54:18 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Speed up dll links. + * path.cc (chdir): Fix previous change. + +Mon Aug 31 12:23:33 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (chdir): Protect free from potential signal race. + +Fri Aug 28 15:59:27 1998 Geoffrey Noer <noer@cygnus.com> + + * dlfcn.h: delete, move it + * include/dlfcn.h: here + +Thu Aug 27 14:20:38 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * path.cc (path_conv::path_conv): remove trailing backslash from + full win32 name, otherwise the last component of the path isn't + checked for symlink. + +Wed Aug 26 14:15:22 1998 Christopher Faylor <cgf@cygnus.com> + + * fhandler.h (fhandler_base): Make set_name() public and implement + clear_name() to accomodate dup2. + * hinfo.cc (dup2): Previous change exposed problem with dup2. + Same unix_path_name_ ptr was being used in two separate fds. + Fix this. + +Wed Aug 26 12:10:27 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * malloc.cc: Use malloc_printf throughout. + * path.cc (getcwd_inner): Allocate buffer with realloc to + avoid a memory leak. + * syscalls.cc (_close): delete unix_path_name_ explicitly since + destructor is never called. + * include/sys/strace.h: Add strace_malloc stuff. + +Mon Aug 24 15:45:59 1998 Geoffrey Noer <noer@cygnus.com> + + * include/sys/ioctl.h: variable names in protos should start + with two leading underscores. + * include/sys/mman.h: ditto. + * include/sys/mount.h: ditto. + * include/sys/resource.h: ditto. + * include/sys/smallprint.h: ditto. + * include/sys/socket.h: ditto. + * include/sys/strace.h: ditto. + * include/sys/vfs.h: ditto. + * include/sys/wait.h: ditto. + * include/mntent.h: ditto. + +Tue Aug 18 17:00:20 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Trevor Yann (TYann@vet.com.au): + * uname.cc (uname): report processor type for win98 + +Tue Aug 18 16:09:13 1998 Christopher Faylor <cgf@cygnus.com> + + * fork.cc (cygwin_fork_helper1): Start initial fd search + to zero forked processes so that a close(0)/dup(fd) will work. + +Mon Aug 17 16:58:09 1998 Christopher Faylor <cgf@cygnus.com> + + * winsup.h (hinfo): Remember initial fd to start searching + for new fds. This avoid assigning std/in/out/err to + files opened early in initialization. + (hinfo_vec::find_unused_handle): New default way to search + for a new handle. Avoids using std/in/out/err until the + proper time in the initialization. + * fhandler.cc (fhandler_make_pipe): Use default method for + finding unused handle. + * net.cc: Ditto throughout. + * pipe.cc (dup): Ditto. + * syscalls.cc (_open): Ditto. + * hinfo.cc (hinfo_vec::init_std_file): Set initial fd for open + search to include std/in/out/err. + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * spawn.cc (perhaps_suffix): Use translated win32 path when + determining if a .exe extension should be added or suffer adding + a .exe extension twice. + +Mon Aug 10 15:08:49 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin32/version.h: up minor version number + +Mon Aug 10 07:04:13 1998 DJ Delorie <dj@cygnus.com> + + * delqueue.cc: rewritten for speed. Don't check *every* entry in + the list if we know the list is empty, plus check for duplicates. + * delqueue.h: ditto. + +Sat Aug 8 14:03:52 1998 Eric Bachalo <ebachalo@cygnus.com> + + * spawn.cc (perhaps_suffix): If report_failure_p is non-zero this + function will search for (PROG is the pathname to the executable + file) PROG.exe, PROG, PROG.com, PROG.bat, and PROG.cmd and return + either the full path name if found or NULL if not. + (spawn_guts): If the file name of the executable end in either + .exe, .com, .bat, or .cmd we assume that it is not a script file + and therefore do not open the file to determine if it is. + +Thu Aug 6 22:25:38 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (path_conv): If a path component is missing, short- + circuit the symlink check. Bug fix for case where path ends + in a slash. + (path_conv::path_conv): Make sure that a file is not + a symlink when returning immediately. Avoid checking for + symlinks on network shares. Check for existence of file prior + to taking it apart for symlink checking (this needs more work). + +Sun Aug 2 19:17:59 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (cleanup_pipe_thread): Cleanup thread handle or suffer + handle leak. + (cleanup_socket_thread): Ditto. + * sigproc.cc (proc_subproc): Make wait thread manual reset to + solve problem with nested waits not waiting correctly. + * fhandler_tty (fhandler_tty_slave::open): Don't create the output + mutex, just open it. If it can't be opened, its an error. + +Wed Jul 29 12:08:19 1998 Eric Bachalo <ebachalo@loony.cygnus.com> + + * include/Windows32/Defines.h: Added Virtual-Key Code defines + for the Win95 keys - VK_LWIN, VK_RWIN, and VK_APPS. + +Tue Jul 21 14:47:59 1998 DJ Delorie <dj@cygnus.com> + + * path.cc (path_prefix_p): optimize calls by comparing first + characters inline. + (path_conv): optimize by not checking both foo and foo/ for + symbolic links. + +Tue Jul 21 14:39:03 1998 Christopher Faylor <cgf@cygnus.com> + + * pinfo.cc (pinfo_init): Set myself->sid to 1 so that + a program started up outside of cygwin will not trump + other opens of ttys. Fixes problem with pgid change below. + +Tue Jul 21 12:59:21 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (chdir): Force chdir to disk device to go to the root + directory. + +Tue Jul 21 09:32:23 1998 Christopher Faylor <cgf@cygnus.com> + + * pinfo.cc (pinfo_init): 0 is a very bad value for a default pgid. + +Fri Jul 16 15:09:50 1998 Stan Cox <scox@cygnus.com> + + * (gcrt0.c, gmon.c, profil.c, mcount.c, gmon.h, profil.h, + config/i386/profile.h): New files for gprof cygwin support. + Some code contributed by Tim Newsham for Secure Networks, Inc. + * Makefile.in (LIBGMON_A, GMON_START, GMON_OFILES): New for gprof. + +Mon Jul 13 19:29:00 1998 Eric Bachalo <ebachalo@loony.cygnus.com> + + * dcrt0.cc (insert_files): Now both -@file and @file work as + command line file insertion options. + * fhandler_serial.cc (fhandler_serial::open): Enabled RTS Control + Line by default to make full handshaking cables work for the + D10V board. (CDB.fRtsControl) + (fhandler_serial::tcsetattr): same as above + +Wed Jul 8 15:53:35 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (dll_crt0_1): Avoid redundant strace_printf. + +Wed Jul 8 15:05:10 1998 DJ Delorie <dj@cygnus.com> + + * fhandler.cc (fhandler_base::lseek): Note lseek so that next + write() can check for the Win95 "gap" bug. + (fhandler_base::write): If Win95 and lseek past eof + followed by write, use WriteFile to force the "gap" to be filled + with zeros rather than left to the "undefined" data Win32 specifies. + (fhandler_base::fhandler_base): initialize check_win95_lseek_bug_. + * fhandler.h (class fhandler_base): Add check_win95_lseek_bug_ + for bug: when seek past EOF and write, win95 fills with random + data (security hole). + +Thu Jul 2 10:45:15 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc (winenv): Be more paranoid when restoring special + win32 environment variables beginning with '='. + +Thu Jul 2 09:19:32 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc: Previous change was not rigorous enough. + Track environment variables to convert in a structure which + records the correct function for converting the environment + variable from/to POSIX format. + (isspecial): New function. + (parse_options): Use template to initialize parse array. + (posify): Use new conversion function. + (winenv): Ditto. Also restore special win32 environment variables + beginning with '='. + * path.cc (conv_path_list): Source argument should be const. + (win32_to_posix_path_list): Ditto. + (posix_to_win32_path_list): Ditto. + * path.h: Reflect changes to path.cc. + +Tue Jun 30 14:00:32 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc (winenv): Avoid converting environment variables to + windows style if they begin with something like a 'C:'. + +Sun Jun 28 20:59:16 1998 Christopher Faylor <cgf@cygnus.com> + + * include/Windows32/Structures.h (MINMAXINFO): Add a missing + *LP... + +Thu Jun 25 10:45:38 1998 Christopher Faylor <cgf@cygnus.com> + + * signal.cc (sigpending): Stop from always reporting pending signals + when no signals are actually pending. + +Tue Jun 23 15:38:45 1998 Christopher Faylor <cgf@cygnus.com> + + * Makefile.in: Add a new target. + * cygwin.din: Add cygwin32_internal interface. + * dcrt0.cc (dll_crt0_1): Don't call main if no main set. Allows + initialization from a .dll. + * utils/ps.cc: Use new internal/external interface to cygwin to + provide an unchanging interface to some cygwin internals. + * external.h: Preliminary stab at an interface to cygwin32 for + getting at the "naughty bits". + * external.cc: External interfaces to some cygwin internal stuff. + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * exceptions.cc (sig_handle): When abnormally terminating, + close_all_files in signal thread context to prevent socket hangs. + +Thu Jun 18 15:17:06 1998 Christopher Faylor <cgf@cygnus.com> + + * pinfo.cc (pinfo_list::allocate_pid): Wrap pids at SHRT_MAX + or ash complains. + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * window.cc (WndProc): Always kill timer before starting up + a new one or eventually suffer a timer proliferation. + +Mon Jun 15 09:40:30 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc: Cosmetic change. + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * syscalls.cc (system): Ignore SIGINT, SIGQUIT and SIGCHLD while + in a system() call. + +Thu Jun 11 18:37:02 1998 Geoffrey Noer <noer@cygnus.com> + + * include/sys/syslog.h: add missing LOG_LOCALn bits + +Tue Jun 9 22:29:26 1998 Christopher Faylor <cgf@cygnus.com> + + * dll_init.cc (DllNameIterator::operator const char* ()): Add + a missing \n to a *_printf. + * fhandler_tty.cc (fhandler_tty_slave::dup): Ditto. + (fhandler_tty_slave::ioctl): Ditto. + * errno.cc (errmap): Add an unrepresented windows error. + Simplify table. + +Tue Jun 9 17:21:44 1998 Christopher Faylor <cgf@cygnus.com> + + * errno.cc (errmap): Make sure that errmap array is + terminated with a NULL or suffer a SIGSEGV. + +Tue Jun 9 10:30:02 1998 Christopher Faylor <cgf@cygnus.com> + + Change `sprintf' to `__small_sprintf' throughout cygwin. + * cygwin.din: Don't export exception handler. + * exceptions.cc (__cygwin32_exception_handler): Rename to + handle_exceptions. Make static. Redo core file generation + slightly so that __small_sprintf can be used. + (call_handler): Remove use of `rethere' in asm code. Don't + probe stack as this is potentially dangerous unless done + meticulously. + * select.cc (select): Redo to create thread whenever needed + for pipe/socket. Thread termination denotes fd readiness. + +Mon Jun 8 14:31:11 1998 Christopher Faylor <cgf@cygnus.com> + + * hinfo.cc (set_std_handle): New function to set windows + "standard" handles from cygwin handles. + (hinfo_vec::dup2): Set windows standard handle if appropriate. + * syscalls.cc (_open): Set windows standard handle if appropriate. + +Sun Jun 7 16:34:00 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * fhandler_console.cc (fhandler_console::scroll_screen): Add a + workaround for Win95 ScrollConsoleScreenBuffer bug which allowed + scrolling to work correctly in both directions. + (fhandler_console::char_command): Simulate underscore with cyan + instead of magenta like on a real linux console. + +Sat Jun 6 00:01:18 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc: Remove obsolete PPC and OLDWAY defines. + * exceptions.cc: Remove obsolete PPC defines. + +Fri Jun 5 22:18:01 1998 Christopher Faylor <cgf@cygnus.com> + + * utils/Makefile.in: install should build products if necessary. + +Fri Jun 5 17:47:11 1998 Geoffrey Noer <noer@cygnus.com> + + * errno.cc (seterrno): shouldn't & against 0xff since there + are error codes above 255. + +Fri Jun 5 14:35:36 1998 Christopher Faylor <cgf@cygnus.com> + + * exceptions.cc (ctrl_c_handler): Ignore CTRL_LOGOFF_EVENT or + everybody gets signalled when a user logs off. Allow program + to clean up when receiving a CTRL_CLOSE_EVENT or CTRL_SHUTDOWN_EVENT. + * spawn.cc (_spawnve): Delete hmap.vec from created child since + it just gets overwritten in the child anyway. + * pinfo.cc (lpfu): u -> user_data. + +Thu Jun 4 22:45:12 1998 Geoffrey Noer <noer@cygnus.com> + + * mmap.cc (mprotect): 3rd arg to VirtualProtect call should + be new_prot, not prot. Also, fix check for PROT_NONE (==, + not &). + +Wed Jun 3 16:37:43 1998 Geoffrey Noer <noer@cygnus.com> + + * exceptions.cc: Fix typo in comment + (ctrl_c_handler): Add comments, return FALSE on CTRL_CLOSE_EVENT, + CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT events. Otherwise, + we handle the console event ourselves, send a SIGINT, and return + TRUE. + +Wed Jun 3 14:36:08 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * path.cc (conv_to_win32_path, conv_to_full_win32_path): resolve + symlinks before converting. + +Wed Jun 3 02:11:23 1998 Geoffrey Noer <noer@cygnus.com> + + * exceptions.cc (ctrl_c_handler): return zero when a + CTRL_LOGOFF_EVENT occurs. + +Wed Jun 3 01:01:17 1998 Geoffrey Noer <noer@cygnus.com> + + Reorganize fhandler-related file layout. + * Makefile.in: Remove console.o, add fhandler_console.o. Add + fhandler_serial.o. Remove tty.o, add fhandler_tty.o. + * fhandler_console.cc: Was console.cc. + * console.cc: Delete. + * fhandler_serial.cc: Was code in fhandler.cc. + * fhandler.cc: Delete fhandler_serial routines. + * fhandler.h: Fix comments describing fhandler file layout. + * fhandler_tty.cc: Was code in tty.cc. + * tty.h: Delete. + * fhandler_tty.h: Was tty.h. + * tty.cc: Delete code moved to fhandler_tty.cc. + * winsup.h: Include fhandler_tty.h instead of tty.h. + +Tue Jun 2 23:34:42 1998 Geoffrey Noer <noer@cygnus.com> + + Don't need processor-specific sysdef directories: + * sysdef/powerpc: remove all files + * sysdef/i386: move all files to top of sysdef directory + * configure.in: stop setting processor-specific sysdef variable + * configure: regenerate + * Makefile.in: build .a files from top-level sysdef files. + +Tue Jun 2 16:52:18 1998 Geoffrey Noer <noer@cygnus.com> + + patch from lhall@rfk.com (Larry Hall): + * console.cc (fhandler_console::fhandler_console): call + fillin_info() to check if console attributes have already been + set. If so, set the default foreground color to be the default + for the console, otherwise set it to white. + (fhandler_console::char_command): use the default color to set fg, + bg, and bold for all cases. + +Mon Jun 1 14:05:01 1998 Christopher Faylor <cgf@cygnus.com> + + * dir.cc (writable_directory): Avoid a malloc. + (opendir): Convert to fully qualified path spec. Use inode from + stat as hash instead of recalculating. + (readdir): Try hard to generate the same inode for filenames + as inodes returned from stat(). Handle '.' and '..' inodes + differently than normal files. Note that '..' will still fail + in certain pathological conditions. + * fhandler.cc (fstat): Preserve errno around path conversion. + * path.cc (path_conf::path_conv): Add an extra argument signifying + whether caller wants a fully qualified Windows spec. + (get_current_directory_name): New function. Retrieves current + directory name into internal buffer. + (getcwd_inner): Reorganize. Use get_current_directory_name() + to retrieve a (possibly cached) directory name. + (hash_path_name): Move function here from syscalls.cc. Rewrite to + deal (simplistically) with non-absolute path specs. Use + get_current_directory_name to absolutize path. + * path.h: Reflect additional argument for path_conv. + * select.cc (cygwin32_select): Remove newline from select_printf(). + * syscalls.cc (hash_path_name): Move to path.cc. + (stat_worker): Always use full path spec so that inodes are + calculated correctly. + * uinfo.cc (getlogin): Make extern "C". + * include/sys/resource.h: Put extern "C" around this file. + +Mon Jun 1 13:16:03 1998 Christopher Faylor <cgf@cygnus.com> + + * console.cc: Comment out small_printfs which issue errors + on things like invalid escape sequences. This is very much + unlike a normal terminal, or even like linux which console.cc + purports to emulate. + (console_read): Renamed from FakeReadConsole. Streamline + slightly. + (fhandler_console::read): Ditto. + +Fri May 29 22:41:18 1998 Geoffrey Noer <noer@cygnus.com> + + * hinfo.cc: Include unistd.h, not fcntl.h. + +Fri May 29 21:38:10 1998 Christopher Faylor <cgf@cygnus.com> + + * path.cc (mount_info::binary_win32_path_p): Don't allow + the root mount to replace a //drive or //host specification. + +Fri May 29 08:20:28 1998 Geoffrey Noer <noer@cygnus.com> + + * winsup.h: Remove exports section in favor of external + include files. Fix some comments. + * {console.cc, fcntl.cc, pipe.cc}: Include unistd.h. + * dcrt0.cc (__main): Make extern "C". + * strace.cc: Include time.h. + * wait.cc (_wait): Make extern "C". + * version.h: Bump minor version to 3 in honor of /dev/windows + support. + +Fri May 29 03:11:28 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * Makefile.in: Add fhandler_windows.o target + * fhandler.h: Include <sys/ioctl.h>. fhandler_windows: new + fhandler class that handles access to Windows message queue. + (fhandler_base::is_windows): new virtual member function + * fhandler_windows.cc: New file, fhandler_windows class + implementation. + * hinfo.cc (hinfo_vec::build_fhandler): build fhandler_windows + class for "/dev/windows". Include <sys/ioctl.h>. + * select.cc: New fd_windows_map class + (fd_windows_map::convert_to_unix_fdset): New, check for Windows + messages in a queue. + (cygwin32_select): check for windows fd is passed to select call, + increase size of harray by one to support windows pseudo-handle, + do MsgWaitForMultipleObjects if windows fd passed to select call. + +Thu May 28 18:22:24 1998 Ian Lance Taylor <ian@cygnus.com> + + * utils/cygpath.cc: New file. + * utils/Makefile.in (PROGS): Add cygpath$(EXEEXT). + (cygpath$(EXEEXT)): Ne target. + + * include/sys/cygwin.h: Declare more path conversion functions. + +Thu May 28 15:56:26 1998 Geoffrey Noer <noer@cygnus.com> + + * include/sys/ioctl.h: need to include <sys/cdefs.h> + * syscalls.h: remove ioctl proto + +Wed May 27 01:34:06 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: add sethostent/endhostent exports + * net.cc (sethostent, endhostent): new stubs + +Fri May 22 17:31:50 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin32/in.h: correct typo in IPPORT_WHOIS define + +Fri May 22 17:00:48 1998 Geoffrey Noer <noer@cygnus.com> + + * include/sys/ioctl.h: add ioctl proto + +Wed May 20 18:52:31 1998 Geoffrey Noer <noer@cygnus.com> + + * include/sys/param.h: delete, file overlaps with newlib's. + Move it to newlib/libc/sys/cygwin32/sys where such files + are supposed to go. + +Wed May 20 18:20:35 1998 Geoffrey Noer <noer@cygnus.com> + + * select.cc (auto_del_fd_set_map::auto_del_fd_set_map): correct + C++ problem -- can't use parens in call to new. + +Wed May 20 17:03:25 1998 Geoffrey Noer <noer@cygnus.com> + + based on patch from newsham@lava.net (Tim Newsham): + * select.cc: FIXMEs added/adjusted + (select_sleep): new static select helper function + (cleanup_sockthread): ditto + (cleanup_pipethread): ditto + (cygwin32_select): remove degenerate goto in favor of calling + select_sleep, call cleanup_sockthread and cleanup_pipethread + instead of previously duplicated code. + +Wed May 20 02:21:37 1998 Geoffrey Noer <noer@cygnus.com> + + patch from Christopher Faylor <cgf@cygnus.com> + * fhandler.cc (fhandler_serial::raw_read): When + vmin_ == 0, vtime_ > 0, don't force only one char at a time + to be read. + (fhandler_serial::tcsetattr): set to.ReadIntervalTimeout + and to.ReadTotalTimeoutMultiplier appropriately so reads + will time out properly when vmin_ == 0, vtime_ > 0. + +Tue May 19 09:05:46 1998 Christopher Faylor <cgf@cygnus.com> + + * init.cc (set_dllname): Use consistent "cygwin32" name for dll + if the name of the dll is actually cygwin. This will allow + better interoperability between dlls which have been renamed, + i.e., cygwindevo.dll -> cygwin98r1.dll. + +Mon May 18 22:39:35 1998 Christopher Faylor <cgf@cygnus.com> + + * winsup.h: Remove sig* undefs since this is now done in newlib. + Define SIGTOMASK define for use by signal mask operations. + * exceptions.cc (__cygwin32_exception_handler): Use SIGTOMASK. + (sig_handle): Ditto + * signal.cc (sigpending): Ditto. + (sigaddset): Use SIGTOMASK. Disallow signal 0. + (sigdelset): Ditto. + (sigismember): Ditto. + * strace.cc (strace_printf): It is possible for strace_mutex to + be an invalid handle. Open the mutex if so. Call ReleaseMutex + until exhausted since a signal may have interrupted an strace_printf. + (strace_dump): Call ReleaseMutex until exhausted. + * tty.cc (do_output): Remove strace printf to avoid filling up strace + output. + (fhandler_tty_slave::read): Use SIGTOMASK. + +Mon May 18 09:11:38 1998 Christopher Faylor <cgf@cygnus.com> + + * dcrt0.cc (dll_crt0_1): Clear errno before calling main. + +Thu May 14 00:37:01 1998 Geoffrey Noer <noer@cygnus.com> + + * dcrt0.cc: add comments, reformatting + +Wed May 13 17:47:23 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * times.cc (to_time_t): prevent stat from returning incorrect + file modification time (one second less) on fat partitions due + to round-up error. + +Wed May 13 16:03:07 1998 Geoffrey Noer <noer@cygnus.com> + + * select.cc: add comments, FIXMEs, respace, delete old + sockets-only case that was previously commented out. + (cygwin32_select): in case where handles and sockets are + set, don't check that always_ready_used is zero (that case is + covered before). + * syscalls.cc: delete unused file_queue struct. + +Tue May 12 18:36:25 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc (get_os_type): add FIXME + +Tue May 5 14:02:12 1998 Christopher Faylor <cgf@cygnus.com> + + Throughout Cygwin replace use of "sa" SECURITY_ATTRIBUTE variables + with appropriate global variables. + * shared.cc (shared_init): Initialize global security attribute + variables for use in various places around cygwin. + * fork.cc (fork_init): Remove. Functionality replaced by above. + * dcrt0.cc (dll_crt0_1): Remove obsolete fork_init() call. + +Sat May 2 17:40:51 1998 Christopher Faylor <cgf@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * tty.cc (create_tty_master): Fill in ut_host utmp field with + local host name instead of "local" to avoid "who" command timeouts. + +Fri May 1 22:38:20 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc: Add a global to control com port reset behavior. + (parse_options): Recognize "reset_com" as a CYGWIN32 option. + * fhandler.cc (fhandler_serial::raw_read): Handle vmin and vtime + more like UNIX. + (fhandler_serial::open): Revive code to reset com port on open. + Only reset the port if reset_com global is not set and if this + function is being called explicitly by open. + (fhandler_serial::tcsetattr): Make CRTSCTS flow control more + like UNIX -- it should turn on hardware handshaking in both + directions. Handle vmin and vtime in a manner more consistent + with UNIX. + (fhandler_serial::tcgetattr): Reflect CRTSCTS changes above when + reporting this state. + * include/sys/termios.h: Move CRTSCTS and CRTSXOFF (sic) into + 16 bits or they will never be capable of being set. + +Thu Apr 30 15:05:45 1998 Christopher Faylor <cgf@cygnus.com> + + * console.cc (fhandler_console::init): If resetting stdin, + make sure to reset the ConsoleCtrlHandler. + * exceptions.cc (set_console_handler): New function broken out + of init_exceptions(). Sets the function responsible for handling + CTRL-C. + (init_exceptions): Snipped out set_console_handler. + +Thu Apr 30 14:11:30 1998 Christopher Faylor <cgf@cygnus.com> + + * include/sys/cygwin.h: Remove cygnus-specific declaration. + * winsup.h: Move cygnus-specific cygwin32_attach_handle_to_fd + declaration here. This function may eventually be replaced by + an osf_* function. + +Tue Apr 28 17:07:46 1998 Geoffrey Noer <noer@cygnus.com> + + * passwd.cc (parse, getpass): remove unneeded uses of NO_COPY + * grp.cc (getgrgid, getgrnam): ditto + +Tue Apr 28 16:18:03 1998 Geoffrey Noer <noer@cygnus.com> + + * version.h: bump minor version to 2 + * errno.cc: add FIXME + +Wed Apr 22 15:43:56 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc (cygname): delete + * shared.cc (shared_name): new, was cygname + * strace.cc, exceptions.cc, sigproc.cc, shared.cc: fix + cygname references in light of above + +Wed Apr 22 14:12:09 1998 Christopher Faylor <cgf@cygnus.com> + + * select.cc (fd_set_map::remove_pair_by_handle): minor optimization + * strace.cc (strace_printf): change format for consistency + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * dcrt0.cc (dll_crt0): Call global constructors explicitly + * tty.cc (create_tty_master): Remove code which attempted to + invoke tty constructor + +Tue Apr 21 16:18:27 1998 Christopher Faylor <cgf@cygnus.com> + + * environ.cc (ucenv): inline + (posify): Ditto + (environ_init): remove obsolete function use + * path.cc (symlink_check_one): Set errno here where appropriate. + (readlink): Rely on errno set by symlink_check_one rather than + defaulting to EINVAL. Should fix problems with RCS. + +Tue Apr 21 15:36:41 1998 Christopher Faylor <cgf@cygnus.com> + + * Implement a NOSTRACE preprocessor define to allow building + Cygwin32 without any STRACE code. + * configure.in: Add entries for architecture specific programs + to allow easier cross-compile builds + * configure: Ditto + * Makefile.in: Ditto + * console.cc (fhandler_console::char_command): Fix two problems + with cursor position report: 1) it reported position relative + to beginning of buffer rather than beginning of screen, 2) it + reported y, x in reversed order + * dcrt0.cc: Remove NO_COPY from variables that don't need it. + Remove variables obsoleted by NO_COPY. + (dll_crt0_1): strace settings are now inherited. Don't try + to initialize strace early. Remove initialization of variables + which are now handled automatically by NO_COPY. Set error mode + for Cygwin32 to fail on critical errors rather than popping up + a dialog box. + * spawn.cc (spawn_guts): Always use default error mode when + spawning a new process. Move error message to more generally + useful location. Terminate signal handling in a cygwin parent + process or two processes will be handling signals. + (_spawnve): Inherit strace stuff + * exceptions.cc (events_init): Provide more information on + "Catastrophic failure". Change error message wording slightly. + * fork.cc: Remove obsolete structure + (cygwin_fork_helper1): Remove use of obsolete structure. Inherit + strace settings in child processes. + * sigproc.cc (sigproc_init): Set wait_sig priority immediately + after thread creation. + * smallprint.c: Remove unneeded include + * strace.cc: Reorganize to handle NOSTRACE + (strace_open): Use strace entries in pinfo structure which are + now inherited + (strace_dump): ditto + (strace_init): preprocessor define STRACE_HHMMSS causes strace + output to use alternate log file format. + (strace_printf): ditto + * syscalls.cc (access): Remove SetErrorMode in favor of global + cygwin32 setting in dll_crt0_1. + * fhandler.cc: Handle NOSTRACE + * tty.cc: Ditto + * window.cc: Ditto + * include/sys/strace.h: Ditto + * winsup.h: Move strace_file handle from per_process to pinfo so + that it can be inherited. Remove obsolete pinfo entry. + +Tue Apr 21 14:30:52 1998 Christopher Faylor <cgf@cygnus.com> + + * hinfo.cc (cygwin32_attach_handle_to_fd): New function + * include/sys/cygwin.h: Ditto. + * cygwin.din: Export new cygwin-specific function + +Tue Apr 21 02:32:08 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc: comment out file_queue struct that doesn't + seem to be used for anything anymore. Don't need to include + stdarg.h or sys/socket.h. Include utmp.h. Minor respacing. + Move all functions from misc.cc here. + (_read): change strace debug printf function name to _read + (logout): rename success to res + * misc.cc: delete file + * Makefile.in: adjust for above change + +Tue Apr 21 01:45:05 1998 Geoffrey Noer <noer@cygnus.com> + + * dir.cc: new file for directory-related functions, was + dirsearch.cc. + (mkdir, rmdir, writable_directory): move here from syscalls.cc, + writable_directory no longer static + * dirsearch.cc: delete file + * winsup.h: add proto for writable_directory. + * errno.cc: new file for errno-related functions, move errmap + struct here from syscalls.cc + (seterrno): move from syscalls.cc + (strerror): move from strerror.cc + * strerror.cc: delete file + * syscalls.cc: delete everything moved to any of the above files + * Makefile.in: adjustments for above + +Thu Apr 17 16:43:23 1998 Geoffrey Noer <noer@cygnus.com> + + * termios.cc: add comments, add extern "C" in front of exported + calls, move debugging local functions to end of file + * winsup.h: remove fork_terminate proto for function that is no + longer with us. Add strccpy proto. + * spawn.cc (_spawnve): make static + (strccpy): remove in favor of identical function in exec.cc + * exec.cc (strccpy): no longer static + + patch from newsham@lava.net (Tim Newsham): + * select.cc (cygwin32_select): fix off by one error, stop + using memcpy to copy memory over itself + +Thu Apr 16 16:23:00 1998 Geoffrey Noer <noer@cygnus.com> + + * net.cc: respace, put all fhandler_socket functions together + (getsockopt): fix case statement bug resulting in faulty strace + output + (setsockopt): ditto + * shared.cc: throughout, rename global h to cygwin_shared_h + * strerror.cc: make error global a local variable + * fhandler.h: add comments, add virtual function always_read_ready + to fhandler_serial which should return zero to allow non-blocking + serial I/O. + * Makefile.in: select.cc should depend on select.h + +Wed Apr 15 16:14:01 1998 Geoffrey Noer <noer@cygnus.com> + + * select.h: new file, containing macros used by select.cc. + * select.cc: remove them from here, include select.h + +Wed Apr 15 15:23:55 1998 Geoffrey Noer <noer@cygnus.com> + + * ntea.cc (NTReadEARaw): mark as static, don't check allow_ntea + since this is only accessed by functions that have already checked + it. + +Tue Apr 14 14:07:54 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: export truncate call + +Mon Apr 13 23:15:13 1998 Geoffrey Noer <noer@cygnus.com> + + Throughout Cygwin32, rename *u for per_process data *user_data. + Likewise, rename *s for shared memory data *cygwin_shared. + Respace where necessary. + * registry.cc: minor respace + * registry.h: ditto + * net.cc: ditto + * fhandler.cc (fhandler_base::read): don't redeclare int len + * syslog.cc: add FIXME, reformatting, remove extern "C" around + whole file, add before exported functions + (syslog): rename second cp char pointer cp2 + (setlogmask): comment out unused function + +Mon Apr 13 17:55:43 1998 Geoffrey Noer <noer@cygnus.com> + + * environ.cc (parse_options): add "ntea" setting to CYGWIN32 + env variable. Setting determines whether NTEA is used or not. + * ntea.cc: Add allow_ntea global which is inited to FALSE. + Now instead of immediately returning FALSE, make all + functions check allow_ntea variable and use or not use NTEA + based on its value. + * ps.cc (main): widen Win32_pid field by one to better handle + Win 95 pids. + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * shared.cc (shared_info::initialize): increase default + heap_chunk_size to 128 mb to get around the problem that + Cygwin32 still can't cope with a split heap properly. + +Wed Apr 8 18:04:07 1998 Geoffrey Noer <noer@cygnus.com> + + * net.cc (cygwin32_bind, cygwin32_getsockname, cygwin32_listen, + cygwin32_shutdown): if should check sock, not s. + +Wed Apr 8 15:00:46 1998 Geoffrey Noer <noer@cygnus.com> + + Eliminate warnings revealed by -Wshadow -Wall: + * console.cc (FakeReadFile): fix aggregate with partly bracketed + initializer (add missing brackets). + * tty.cc (fhandler_tty_slave::close): remove unused variable tty + (fhandler_tty_slave::dup): ditto + (fhandler_tty_slave::send_ioctl_request): ditto + +Wed Apr 8 03:04:11 1998 Geoffrey Noer <noer@cygnus.com> + + Eliminate warnings revealed by -Wshadow -Wall: + * console.cc (FakeReadFile): change variable name index to + modifier_index. + (fhandler_console::read): remove second definition of flags + * dcrt0.cc (build_argv): rename s to start, e to end + (insert_files): reformat, add parens around assign used as truth + value, make i a DWORD, remove dup def of i. + * dlfcn.cc (set_dl_error): rename s to str + (checkAccess): rename to check_access + (checkPathAccess): rename to check_path_access + (getFullPathOfDll): rename to get_full_path_of_dll, don't + redeclare len + * dll_init.cc (DllList::detachDll): rename index to dll_index + * fork.cc (cygwin_fork_helper1): rename index to dll_index, + reformat slightly, rename res in dll load section to loadres, + don't redeclare rc two additional times + (dump_jmp_buf): rename s to sbuf + * grp.cc (initgroups): rename group arg to grp + * hinfo.cc (digits): rename s to str + (hinfo_vec::build_fhandler): rename first buf variable to + buf_info, the second to buff. + (hinfo_vec::linearize_fd_array): cast sizeof return to int, + declare i in for loop + (hinfo_vec::de_linearize_fd_array): declare i in for loop + * misc.cc (nice): rename pri to priority, index to curr + (cygname): rename s to str + (login): rename tty to currtty + (logout) put missing parens around arg to sizeof calls + * net.cc (DuplicateSocket): rename function to duplicate_socket, + rename s arg to sock + (fhandler_socket::fhandler_socket): rename s arg to sock + (socketpair): rename sin to sock_in + (cygwin32_rexec): rename passwd arg to password + * passwd.cc (parse): rename stat array to tmpbuf + * resource.cc (fill_rusage): rename creation to creation_time, + exit to exit_time, kernel to kernel_time, user to user_time + (getrusage): rename rusage arg to rusage_in + * sigproc.cc (proc_terminate): move i declaration outside of + loop, get rid of extra declaration + (getsem): rename s to str + (proc_strace): declare i at top of function, remove extra two + declarations of it later + * smallprint.c: include ctype.h for isalnum proto + (__small_vsprintf): put parens around assign used as truth value + * spawn.cc (spawn_guts): rename both s variables to str, remove + redeclarations of i + * strace.cc (mark): rename s arg to str + * syscalls.cc (chown): remove unused vars group, passwd + (access): rename s to st + (ctermid): rename s to str + * termios.cc (cfsetospeed, cfsetispeed): rename s to speed + * times.cc (times): rename creation to creation_time, + exit to exit_time, kernel to kernel_time, user to user_time + (time_t_to_filetime, timeval_to_filetime): rename time to time_in + * tty.cc (create_tty_master): rename utmp variable our_utmp + (fhandler_tty_master::init): rename ttynum arg ttynum_in + +Tue Apr 7 17:18:05 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc (seterrno): add FIXME + * path.cc (symlink_check_one): change comment wording + + patch from Tom Tromey (tromey@cygnus.com) + * syscalls.cc (access): Call SetErrorMode to turn off critical + errors dialog. + + patch from Mikey (jeffdb@netzone.com): + * fhandler.cc (fhandler_disk_file::open): under Win95, set + S_IXOTH|S_IXGRP|S_IXGRP if the first two bytes of a file contain + a '#!'. + (fhandler_disk_file::check_execable_p): consider shell scripts + execable + +Mon Apr 6 20:55:06 1998 Geoffrey Noer <noer@cygnus.com> + + * include/sys/cygwin.h: add protos for cygwin32 path conversion + functions. + +Wed Apr 1 16:12:58 1998 Geoffrey Noer <noer@cygnus.com> + + * {fhandler.cc, fhandler.h, hinfo.cc, console.cc}: Rename + fhandler_tty class to fhandler_serial + +Tue Mar 31 16:27:36 1998 Geoffrey Noer <noer@cygnus.com> + + * ntea.cc: temporarily disable reading/writing NTEA information + due to the large penalty incurred on NT fat partitions. + +Fri Mar 27 13:35:30 1998 Geoffrey Noer <noer@cygnus.com> + + * environ.cc (parse_options): change struct to union to avoid + references to uninitialized fields. + +Thu Mar 26 19:03:00 1998 Eric Bachalo <ebachalo@cygnus.com> + + * dcrt0.cc (insert_files): added this function to replace + -@file in the command line with the contents of the file + (dll_crt0_1): calls insert_files before building argv + +Wed Mar 25 15:25:26 1998 Geoffrey Noer <noer@cygnus.com> + + And more: + * {fhandler.cc, fhandler.h, tty.cc, net.cc, console.cc}: make + ioctl calls' cmd arg unsigned, ditto for access arg of init calls. + * console.cc (fhandler_console::fillin_info): add parens around + assignment used as truth value. + (FakeReadFile): make copied_chars a size_t + (fhandler_console::read): make i in loop unsigned + * environ.cc (setenv): make l_value unsigned, add parens around + assignments used as truth values. + * exceptions.cc (call_handler): supposed to return an int and + wasn't at the end of control flow. Now returns 1 there. + * fhandler.h (~fhandler_base): destructor should be marked virtual + * misc.cc (login): add parens around assignment used as truth + value. + * net.cc: cast INVALID_SOCKET to int in comparisons + (fhandler_socket::ioctl): remove int cast to FIONBIO since cmd + is now unsigned + (get_win95_ifconf): add cast to signed vs unsigned int comparison. + * ntea.cc (NTReadEA): add cast to signed vs unsigned int + comparison. + * path.cc (getcwd_inner): make len a size_t + * pinfo.cc (cygwin32_winpid_to_pid): add comment + * select.cc (cygwin32_select): make wait_ret an int + * signal.cc (kill_worker): add parens around assignments used as + truth values. + * sigproc.cc (wait_sig): make rc a DWORD + (sig_send): add parens around assignment used as truth value. + * strace.cc: make inqueue global a static DWORD + * tty.cc (do_output): add cast to signed vs unsigned int + comparison. + (fhandler_pty_master::open): remove unused handle nh + +Tue Mar 24 18:03:59 1998 Geoffrey Noer <noer@cygnus.com> + + More spring cleaning: + * net.cc: move LOAD macro definition out of winsock_init, + correction to make it valid ANSI C++. + * grp.cc (read_etc_group): pass default line directly to + add_grp_line call + +Mon Mar 23 19:21:00 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor): + * spawn.cc (spawn_guts): Don't call close_all_files if a cygwin + process has been spawned. Otherwise, we close tty handles twice. + +Fri Mar 20 23:01:24 1998 Geoffrey Noer <noer@cygnus.com> + + * pinfo.cc (pinfo_list::init): Initialize next_pid to PBASE. + (pinfo_list::operator []): Now index is given by pid mod size(). + (pinfo_list::allocate_pid): Allow more pid numbers than spaces in + the process table. Pids now can range from PBASE (1000) to + INT_MAX. At that point they wrap to 1000 again. For speed, use + modular arithmetic to map pids into table. + * winsup.h: move PBASE to pinfo.cc, rename next_pid_index to + next_pid + * utils/ps.cc (main): reorg of what's printed where, listing pid + first. + +Thu Mar 19 15:05:07 1998 Geoffrey Noer <noer@cygnus.com> + + * winsup.h: Change section name in NO_COPY definition. We were + using a .data$nocopy section to avoid copying certain data on + fork. The linker used to include this between __data_start__ and + __data_end__, but that broke building the cygwin32 dll. The fix + is to rename the section ".data_cygwin_nocopy" and explictly + include it after __data_end__. + +Wed Mar 18 15:03:51 1998 Geoffrey Noer <noer@cygnus.com> + + * tty.h: fix ttyslot proto; it returns an int + * glob.h: fix glob proto; it returns an int + +Mon Mar 16 16:16:40 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: stop installing the dll in the lib directory as + well as the bindir. + * environ.cc (parse_options): don't need to call malloc + +Mon Mar 16 11:56:23 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor): + * tty.cc (fhandler_tty_slave::dup): Don't set flags to 0. Flags + have already been set in wrapper. + * net.cc: Rename `s' variable which shadows global `s'. + * termios.cc: ditto + * time.cc: ditto + +Tue Mar 10 15:54:04 1998 Geoffrey Noer <noer@cygnus.com> + + * version.h: up CYGWIN_DLL_VERSION_MINOR + +Tue Mar 10 15:41:29 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor): + * spawn.cc (spawn_guts): Make argument handling after `#! pgm' + handle spaces similarly to UNIX. Close "linearized" file handles + when a non-cygwin32 binary is executed or suffer hangs on exit. + Reorganize lpReserved2 buffer to avoid conflicts with Microsoft + usage which resulted in incorrect stdin/stdout operation with + programs compiled using MSVC. + * pinfo.cc (pinfo_init): Accomodate change to lpReserved2 + organization. + +Mon Mar 9 19:27:17 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc (_open): modify to take a variable number of + arguments to match newlib's fcntl.h. + * environ.cc (parse_options): rewrite struct known to conform + to ANSI standards. Can't statically initialize, so do so + dynamically at the beginning of the function instead. + + patch from jeffdb@netzone.com (Mikey): + * dcrt0.cc (build_argv, compute_argc): need to escape quotes + +Sat Feb 28 16:41:54 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * fhandler.cc (fhandler_base::init): call set_flags based on + access arg. + * net.cc: include fcntl.h + (fhandler_socket::fhandler_socket): made sockets O_RDWR + +Thu Feb 26 23:41:54 1998 Geoffrey Noer <noer@cygnus.com> + + Beta 19 release made. + +Sun Feb 22 23:46:31 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * Makefile.in: Do not link cygwinb19.dll with libwsock32.a + * exceptions.cc: add proto for i_WSACleanup. + (sig_handle): call *i_WSACleanup if winsock was inited. + * hinfo.cc: add proto for i_getpeername. + (hinfo_vec::build_fhandler): call *i_getpeername if winsock + was inited + * net.cc: wsock32, i_wsockimports - new globals. Throughout + file, call winsock functions via indirect pointers. + (winsock_init): dynamically load wsock32.dll and resolve addresses + of exports. + (cygwin32_rcmd, cygwin32_rexec, cygwin32_rresvport): resolve + addresses of exports. + * select.cc: add protos for i___WSAFDIsSet, i_WSAGetLastError, + i_select, i_socket, i_closesocket. WINSOCK_FD_ISSET changed to + use indirect pointer. Direct winsock calls changed to indirect. + (cygwin32_select): initialize winsock before calling select in + degenerate case. + * winsup.h: remove protos for ScreenRows, ScreenCols, + ScreenGetCursor, ScreenSetCursor. + +Sun Feb 22 17:44:55 1998 Geoffrey Noer <noer@cygnus.com> + + * environ.cc (parse_options): comment out -- no longer + compiles with egcs. Will rewrite/enable later. + +Sun Feb 22 13:49:10 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.h: remove protos for _open, _read, _write since + they are in newlib headers that are already included + * syscalls.cc (_read): return int, not ssize_t + (_write): ditto + +Sat Feb 21 14:21:17 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: rename dll to cygwindevo.dll + +Sat Feb 21 01:33:56 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: remove dup definition of endpwent + +Thu Feb 19 14:20:21 1998 Geoffrey Noer <noer@cygnus.com> + + * include/cygwin32/cygwin_dll.h: Correct protection wrapper + +Tue Feb 17 20:21:24 1998 Geoffrey Noer <noer@cygnus.com> + + * include/Windows32/Structures.h: tagBITMAPFILEHEADER should + be packed. + +Tue Feb 17 19:34:41 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor): + * cygwin.din: export sigpause + * signal.cc (sigpause): New "compatibility interface" to + sigsuspend function. Used currently by inetutils. + +Tue Feb 17 11:43:27 1998 Ian Lance Taylor <ian@cygnus.com> + + * tty.h (class tty): Add slave_opened field. + * tty.cc (fhandler_tty_master::init): Initialize slave_opened. + (do_output): Only return with EOF if the slave has been opened. + (fhandler_tty_slave::open): Set slave_opened. + (fhandler_pty_master::open): Initialize slave_opened. + + * tty.cc (fhandler_pty_master::read): Change type of n to DWORD. + If there are no characters to read, and the descriptor is in + nonblocking mode, just return EGAIN. + +Mon Feb 16 15:11:25 1998 Ian Lance Taylor <ian@cygnus.com> + + * tty.h (class tty): Remove handle_pid and slave_handles fields. + (class tty_list): Add getcount method. + * tty.cc (tty::init): Initialize input_handle and output_handle. + (tty_list::free_tty): If we just freed the last reference to this + tty, close input_handle and output_handle. + (fhandler_tty_master::init): Don't initialize handle_pid and + slave_handles. + (do_output): Instead of just calling ReadFile, loop using + PeekNamedPipe and check whether the tty has been closed. Return 0 + on EOF and -1 on error. + (process_output): Only print debugging error message if error + occurs in do_output. + (fhandler_tty_slave::open): Always duplicate handles from master. + Never close handles in source. Don't change slave_handles. + (fhandler_tty_slave::close): Don't change slave_handles, and don't + close tty handles. + (fhandler_tty_slave::linearize): Call attach_tty. + (fhandler_tty_slave::de_linearize): Don't call attach_tty. + (fhandler_tty_slave::dup): Don't increment slave handles. + (fhandler_pty_master::open): Don't initialize handle_pid and + slave_handles. + (fhandler_pty_master::close): Don't check slave_handles, and don't + close tty handles. + (fhandler_pty_master::read): Handle EOF return value from + do_output. + (fhandler_pty_master::linearize): Call attach_tty. + (fhandler_pty_master::de_linearize): Don't call attach_tty. + + * fork.cc (cygwin_fork_helper1): Copy strace_mask from parent to + child. + +Thu Feb 12 20:33:57 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor): + * utils/cygwin.cc: Modify -s option to use new strace_mask entry + in pinfo. Prepare for future ability to specify an strace file. + +Thu Feb 12 11:57:26 1998 Geoffrey Noer <noer@cygnus.com> + + * grp.cc (read_etc_group): add a default /etc/group in memory + if /etc/group isn't found + (getgrnam): return NULL if requested group isn't found instead + of returning a default group + +Wed Feb 11 15:59:10 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * strace.cc (strace_open): do not close u->strace_file if it + points to stderr. + * malloc.cc (malloc_init): do not check for application's malloc + in a forkee, this breaks memory coherency in a forkee and forker. + use_internal_malloc flag now copies on fork. + +Tue Feb 10 18:11:30 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor) + Throughout sources, mark statics and globals as NO_COPY where + appropriate. + * fork.cc (cygwin_fork_helper1): Remove #if 0 around fork_copy of + cygwin data/bss. Remove __malloc_copy since it is no longer + necessary. + +Tue Feb 10 15:30:19 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor) + * console.cc (fhandler_console::write): Implement xterm style + escape sequences for setting title in the console title bar. + * fhandler.h: Define constants for console title escape sequence. + +Tue Feb 10 14:16:17 1998 Geoffrey Noer <noer@cygnus.com> + + * include/a.out.h: remove junk chars introduced by mailer + when this header was sent to us + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * libccrt0.cc: rename cygwin_attach_dll to cygwin32_attach_dll + + patch from cgf@bbc.com (Christopher Faylor): + * environ.cc: fix off by one problem + +Mon Feb 9 14:56:00 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: add registry.h to environ.o deps + +Mon Feb 9 14:42:24 1998 Ian Lance Taylor <ian@cygnus.com> + + * Makefile.in (DLL_OFILES): Rename dllinit.o to dll_init.o. + + * tty.cc (fhandler_tty_slave::close): Don't close the tty handles + if the slave and the master are the same process. + + * path.cc (read_mounts): Change key parameter to reference, to + avoiding running the destructor. + +Mon Feb 9 13:53:50 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Christopher Faylor): + Moves all environment manipulation into environ.cc. + Switches to CYGWIN32 for settings: + set CYGWIN32=[no]title [no]strip_title [no]binmode [no]glob + strace=mask:cache,file [no]tty + (set STRACE=whatever is still honored). + Propagates tty settings to all subprocesses regardless of + unsetting of environment variable. + Moves strace mask into pinfo structure for easier future + manipulation by external program. Moves strace_file into the + vacated position for automatic use in forked processes. + Propagates old title to execed processes so that they can + correctly restore the correct title when they exit. + * console.cc: Use PID_USETTY setting in process_state so that + tty state can be easily inherited. + (set_console_title): New function to set console title. + * syscalls.cc: Use PID_USETTY setting in process_state so that + tty state can be easily inherited. + * tty.cc: Ditto. + * hinfo.cc: Ditto. + (hinfo_vec::de_linearize_fd_array): Return last location in buffer + for further potential processing. + * dcrt0.cc: Add global variables for control of glob and title, + set by environ_init. Mark some variables as NO_COPY. + Remove routines and variables for dealing with environment. + (dll_crt0_1): Move environment initialization into separate + function. Honor 'noglob' CYGWIN32 setting. + * environ.cc (environ_init): New function to initialize the + environ table. Also scans for CYGWIN32 environment variable, + setting appropriate values. + (ucenv): New function. Upper cases an environment variable. + (parse_options): New function. Parse CYGWIN_* environment + variable. + (posify): New function. Convert a Windows env path spec to + cygwin. + (env_sort): New function. Sort an environ block. + (winenv): New function. Returns a windows style environment + block. + * fhandler.cc (fhandler_base::read): Reflect change to location of + strace_mask. + * fork.cc (cygwin_fork_helper1): Remove save/restore of some + settings since this is automatic now with new dll data copy. Save + PID_USETTY setting in child process_state. + * strace.h: Cosmetic change. + * pinfo.cc (pinfo_init): Call environ_init here since it may + affect further processing in this function. Use old console title + from "parent" process if execed process. Reflect change to + location of strace_mask. + * spawn.cc (spawn_guts): Remove environment manipulation code. + Use new winenv function call instead. Save old title in block of + memory copied to newly execed process if title is being displayed. + * strace.cc: Changes to reflect new location for strace_mask and + strace_file. These are now automatically inherited on fork. + * winsup.h: Move strace_mask into pinfo to allow possible + manipulation by other processes. Put u->strace_file in uptr + structure so that it will be automatically duplicated on fork, + removing the necessity of initializing strace in a forked + process. Add functions/variables associated with environment + manipulation and console title setting. + +Mon Feb 9 03:06:56 1998 Geoffrey Noer <noer@cygnus.com> + + Extensive reformatting in new files from next patch. + Rename dllinit.h file to dll_init.h and likewise for dll_init.cc. + Rename cygwin_detach_dll to cygwin32_detach_dll throughout. + Similarly, rename cygwin_attach_dll and _cygwin_dll_entry. + And rename sanityAndSyncCheck to check_sanity_and_sync. + Also: + * dll_init.h: don't include winsup.h + * dll_init.cc: include winsup.h here instead + * dlfcn.cc: include winsup.h, don't include windows.h + * cygwin.din: rename cygwin_detach_dll to cygwin32_detach_dll. + + patch from giac@dalim.de (Philippe Giacinti): + Copy data areas of cygwin-compiled dlls on fork(), + implement dlopen/dlsym/dlclose/dlerror calls. + * Makefile.in: add dlfcn.o and dllinit.o to DLL_OFILES, add + dllinit.h dependencies + * cygwin.din: dll_dllcrt0, cygwin_detach_dll, dlopen, dlclose, + dlsym, dlerror, dlfork -- new exports. + * dcrt0.cc: include dllinit.h, mark u pointer as NO_COPY. + (sanityAndSyncCheck): new, code moved from dll_crt0_1. + Initialize all linked dlls before calling main(). + * dlfcn.cc: new file. + * dllinit.cc: new file. + * dllinit.h: new file. + * exceptions.cc: mark some variables with NO_COPY. + * fork.cc: include dllinit.h; declare cygwin.dll data/bss + start/end. + (cygwin_fork_helper1): copy data/bss of cygwin.dll itself to child + process (the code is disabled now); copy data areas of + linked/loaded dlls (if any); free loaded dll list on cleanup. + * include/cygwin32/cygwin_dll.h: new file. + * include/dlfcn.h: new file. + * libccrt0.cc (cygwin_crt0_common): new, code derived from + cygwin_crt0, MainFunc parameter added. + (cygwin_crt0): call cygwin_crt0_common. + (cygwin_attach_dll): new. + * shared.cc: mark some data as NO_COPY + * strace.cc: mark some data as NO_COPY + * winsup.h: add dll_dllcrt0 proto, NO_COPY macro. + +Sun Feb 8 17:51:26 1998 Geoffrey Noer <noer@cygnus.com> + + * getopt.c: new. Import Berkeley getopt code modified for use + in Cygnus' kerberos implementation (including the writing of + getopt_long by Chris Provenzano (proven@cygnus.com)) then modified + a bit more to get it working in Cygwin32. Although we were + going to remove getopt, it appears that too many programs would + need fixing to remove it completely. Whether getopt should be + included in Cygwin32 should be decided at a later time. + * include/getopt.h: new. Import Berkeley getopt.h. + * Makefile.in: add getopt.o to LIBCOS + * utils/Makefile.in: remove include of ../../include since + getopt.h is now in winsup/include, also revert recent change + of addition of GETOPT_OBJS. + +Fri Feb 6 16:28:19 1998 Geoffrey Noer <noer@cygnus.com> + + * cygwin.din: remove set_new_handler and cygwin_set_attributes + exports + * version.h: up major version number + * Makefile.in: rename dll to cygwinb19.dll + * syscalls.cc (cygwin_set_attributes): axe + +Thu Feb 5 18:28:37 1998 Geoffrey Noer <noer@cygnus.com> + + * include/Windows32/Functions.h: add protos for + DdeCmpStringHandles and DdeCreateDataHandle + * Makefile.in: stop including ../libiberty/getopt* since + we aren't exporting or using them + * utils/Makefile.in: add new variable for libiberty getopt objs + which is linked in for cygwin.exe + +Thu Feb 5 17:59:12 1998 Geoffrey Noer <noer@cygnus.com> + + syscalls.cc: move ppc dll_entry asm code to... + dcrt0.cc: ...here + + Import new globbing code from NetBSD 1.3 + * glob: delete subdirectory + * glob.c: new file + * glob.h: new file + * Makefile.in: remove glob from submakes, remove glob/libglob.a + from DLL_IMPORTS, fix dcrt0 glob.h dependency + * configure.in: don't configure glob subdirectory + * configure: regenerate + * dcrt0.cc: include glob.h, not glob/glob.h. + (globify): don't call glob with GLOB_NOESCAPE which isn't a valid + flag with this glob + +Wed Feb 4 16:14:13 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + Allow system administrator to enter into the HKLM registry tree + a predefined mount table inherittable by all cygwin users. The + predefined mounts are non-mandatory so the user's mount table has + a higher priority than the default one. Cygwin reads HKLM tree + in read-only mode. + * path.cc (read_mounts): new, code derived from + mount_info::from_registry(). + (mount_info::from_registry): call read_mounts from user's table, + then from system-wide mount table. + * registry.cc (reg_session::reg_session): key and access arguments + added. + (reg_key::init): access argument added. + (reg_key::reg_key): access argument added. + * registry.h (class reg_key): init prototype changed, default + argument of reg_key added. + (class reg_session): default arguments of constructor added. + +Wed Feb 4 15:38:59 1998 Geoffrey Noer <noer@cygnus.com> + + * include/a.out.h: new coff header file + +Wed Feb 4 01:55:18 1998 Geoffrey Noer <noer@cygnus.com> + + * uinfo.cc: define DEFAULT_UID/GID here + * winsup.h: removed DEFAULT_UID/GID defs and unused + set_console_title proto. Did some major reorganizing, + and a little reformatting, commenting. + +Tue Feb 3 23:59:23 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + Replace u->self and this_procinfo () with new `myself' pointer + wherever appropriate. Also replace get_pid() calls with a + simple ->pid reference. + +Mon Feb 2 12:34:49 1998 Geoffrey Noer <noer@cygnus.com> + + patch from sos@prospect.com.ru (Sergey Okhapkin): + * console.cc (FakeReadFile): limit bytes to read to 30000 due to + Win NT 4.0 SP3 bug. Kill foreground process group with SIGWINCH + on console buffer size change if tty support enabled. + * include/sys/termios.h: define more constants. + * tty.cc (fhandler_pty_master::ioctl): kill foreground process + group with SIGWINCH on window resizing. + +Mon Feb 2 12:14:49 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + * dcrt0.cc (dll_crt0_1): Initialize u->self here, early in a + forked process so the correct pid is used in strace output and so + signals do not end up being erroneously sent to the parent. + * exceptions.cc: Make a global variable static. Some minor + optimizations. + (call_handler): Make sure that the signal mask is restored when + sig_dispatch mutex is unavailable. + Reorder asm statements to prevent clobbering of flags register by + preceding ors or risk random inexplicable behavior when returning + from a signal handler. + * fork.cc (cygwin_fork_helper1): Put setjmp restore in child's + pinfo. Have the child figure out its pid earlier in the + initialization process. Don't print a "child failed" error if the + child failed during initialization due to a CTRL-C. This is still + not quite right (see comment). + * sigproc.cc (sig_send): Remove unlock/lock_pinfo or suffer + consistent hangs in zsh. Make {allow,block}_sig_dispatch globally + available. + (wait_sig): Fix problem where blocked signals would still be + processed if queued. Add debugging SIGNOQUEUE conditional to turn + off signal queueing, making cygwin more like traditional UNIX. + * sigproc.h: Add {allow,block}_sig_dispatch functions. + +Mon Jan 26 17:33:57 1998 Geoffrey Noer <noer@cygnus.com> + + * path.cc (mount_info::init): don't hardcode C: as the default + slash mount. Instead, use the drive letter that the OS is loaded + on. + +Mon Jan 26 13:33:57 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + * fork.cc (cygwin_fork_helper): Move setting PID_INITIALIZING + process_state here to avoid erroneously setting it permanently + via proc_register(). + * pinfo.cc (pinfo_init): Delay notifying "parent" when execing + until this process is ready to receive signals or risk a race + condition if exec parent calls sigproc_terminate prior to + the child exec. + * sigproc.cc (proc_subproc): Don't set PID_INITIALIZING here. + It is too late in the process creation. + (sig_send): Reset sigsuspend mutex prior to use to avoid a race. + (wait_sig): Create sigsuspend mutex as an auto reset to attempt + to avoid a race condition. Notify parent that this process is + ready if we were execed (code moved from pinfo_init). Change + PulseEvents to SetEvents to avoid races + * spawn.cc (spawn_guts): Move setting PID_INITIALIZING + process_state here to help avoid race. + +Fri Jan 23 12:31:37 1998 Ian Lance Taylor <ian@cygnus.com> + + * malloc.cc (malloc_critical_section): New static variable. + (malloc_init): New function. + (__malloc_lock, __malloc_unlock): New functions. + * winsup.h (malloc_init): Declare. + * heap.cc (heap_init): Call malloc_init. + +Thu Jan 22 18:46:40 1998 Ian Lance Taylor <ian@cygnus.com> + + * tty.h (class tty): Change slave_handles to int. + * tty.cc (fhandler_tty_slave::open): Check for invalid tty + handles. If this is the first slave, set slave_handles to 2; + otherwise, increment slave_handles. + (fhandler_tty_slave::close): Only close the tty handles if the + slave_handles field drops to 1. + (fhandler_tty_slave::write): Add a debugging message if WriteFile + fails. + (fhandler_tty_slave::dup): Set ttynum of new fhandler. Increment + slave_handles if appropriate. + (fhandler_pty_master::close): Only close the tty handles if the + tty is no longer allocated. + + * tty.h (class tty): Add handle_pid and slave_handles fields. + * tty.cc (attach_tty): Call connect_tty even if use_tty is not + set. + (detach_tty): Don't check use_tty. + (fhandler_tty_master::init): Initialize handle_pid and + slave_handles of tty. + (do_input): Treat \r as end of line character. + (do_output): Only set output_done_event if it is not NULL. + (fhandler_tty_slave::open): Don't worry if we can't open + output_done_event. Check slave_handles field of tty to decide + from where to duplicate the handles. Call detach_tty on error. + If we are now the owner of the slave handles, mark the tty + appropriately. + (fhandler_tty_slave::close): Only close output_done_event if it is + not NULL. Check for errors from CloseHandle. Close the tty + handles if we own them. + (fhandler_tty_slave::write): Only wait for output_done_event if it + is not NULL. + (fhandler_tty_slave::read): If nobody owns the tty, return EOF. + (fhandler_tty_slave::dup): Attach the tty. Don't duplicate + output_done_event if it is NULL. Detach the tty on error. + (fhandler_pty_master::open): Initialize handle_pid and + slave_handles of tty. Don't create output_done_event. + (fhandler_pty_master::close): Only close output_done_event if it + is not NULL. Check for errors from CloseHandle. Only close the + tty handles if we own them. + (fhandler_pty_master::read): Only set output_done_event if it is + not NULL. + * hinfo.cc (de_linearize_fd_array): Don't set use_tty just because + we find a tty to delinearize. + +Wed Jan 21 21:58:27 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + * sigproc.cc: Changes in wait_sig/sig_send semaphore/event + signaling to attempt to eliminate races. + +Tue Jan 20 16:11:05 1998 Geoffrey Noer <noer@cygnus.com> + + Remove last remnants of the mixed case handling support. + * path.cc (path_conv::path_conv): remove mixed_p init + (mount_info::from_registry): don't check for fmixed + (mount_info::to_registry): ditto + (mount_item::getmntent): when setting ret.mnt_opts, only consider + text vs binary flag + (mount_item::init): remove init of mixed + * path.h: remove mixed_p, mixed from path_conv class. Remove + unmixedcaseify proto. + * include/sys/mount.h: comment out MOUNT_MIXED define, protect + header against multiple inclusion + + A little header file cleanup. Mostly to protect headers against + multiple inclusion. Some aren't strictly speaking necessary but... + * include/sys/cygwin.h: protect header against multiple inclusion + * include/sys/smallprint.h: ditto, also add cplusplus wrapper + * include/sys/strace.h: comment last endif + * include/cygwin32/in.h: change _LINUX_IN_H protect defines + to _CYGWIN32_IN_H + * include/arpa/inet.h: protect header against multiple inclusion + * include/asm/types.h: ditto + * include/net/if.h: ditto + * include/netinet/ip.h: ditto + * include/netinet/ip_icmp.h: ditto + * include/netinet/in.h: ditto, remove commented out real header + file + * include/fcntl.h: protect header against multiple inclusion + * include/memory.h: ditto + * include/mntent.h: ditto + * include/strings.h: ditto + * include/syslog.h: ditto + * include/termio.h: ditto + +Tue Jan 20 12:51:59 1998 Ian Lance Taylor <ian@cygnus.com> + + * strace.cc (strace_stderr): New static variable. + (strace_init): Set strace_stderr. + (system_printf): If not strace_stderr, use debug_printf to put the + message in a trace file. + + * fhandler.h (fhandler_pty_master): Add neednl_ field. + * tty.h (RESTART_OUTPUT_EVENT): Change to be different from + IOCTL_DONE_EVENT. + * tty.cc (fhandler_tty_master::init): Initialize neednl_. + (do_output): Handle a length of one by using neednl_ to record an + expansion of \n to \r\n which doesn't fit. Never expand \r to + \r\n. Correct order of \r\n. + (fhandler_tty_slave::open): Improve error handling. Use + DUPLICATE_CLOSE_SOURCE to close the pipes in the master process. + (fhandler_tty_slave::dup): Duplicate the handles, rather than + calling fhandler_tty_slave::open. + (fhandler_pty_master::open): Initialize neednl_. + (fhandler_pty_master::read): Return EOF for ERROR_BROKEN_PIPE, + rather than error. Set errno correctly. + * hinfo.cc (digits): New static function. + (build_fhandler): Always accept /dev/ptmx and /dev/ttyDDD, even if + use_tty is not set. use_tty now only controls the interpretation + of /dev/tty. + +Mon Jan 19 14:49:45 1998 Geoffrey Noer <noer@cygnus.com> + + * sigproc.cc (sig_send): lock_pinfo_for_update during this + function + +Fri Jan 16 18:09:59 1998 Geoffrey Noer <noer@cygnus.com> + + * sigproc.cc (sigproc_init): if we can't create a signal + thread or can't create sync_proc_subproc mutex, fail with + an api_fatal call rather than just returning + +Fri Jan 16 18:08:49 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + Changed signal handling to use one semaphore and one shared + memory array which is manipulated via Interlocked*() functions. + * exceptions.cc (lock_cs): Comment. Report on error. + (unlock_cs): Add debugging statement. + (sig_dispatch_pending): Remove obsolete function. + (set_process_mask): Adapt to new signal method. + (call_handler): Clear wait()ing threads here while main thread is + suspended to avoid timing screwups. Avoid calling the handler if + can't get dispatch mutex (code moved from sig_handle). Return + status of acquiring the sig_dispatch mutex. + (sighandle): Adapt to new signal method. Reorganize to *always* + honor sig_dispatch mutex or suffer deadlock on fatal signals when + someone else has the mutex and we're attempting to cleanup. + (events_init): Reflect change in cygname() arguments. + * fork.cc (stack_dummy): New function. Returns address of + argument to determine bounds for eventual stack copy. + (cygwin_fork_helper1): Call subproc_init to start up subproc + thread if it is not alreay started. Ensure that signals are + blocked while forked process is initializing. Change method of + calculation for lower stack bounds to slightly more foolproof + method. Preserve some global settings in forked process. + * misc.cc (cygname): Remove an unused argument. + * pinfo.cc (pinfo_list::allocate_pid): Add a useful debugging + statement. + * shared.cc (open_shared_file_map): Reflect change in cygname() + arguments. + * signal.cc (kill_pgrp): Avoid killing dead processes. Don't + kill processes in my pgrp if not also in my ctty. + (sigaction): Adapt to new signal method. + (sigpending): Adapt to new signal method. + * sigproc.cc: Many changes to adapt to new signal method. Also + delay waits for thread initialization until the thread needs to be + contacted. + * sigproc.h: Ditto. + * spawn.cc (spawn_guts): Fix potential off-by-one error(?) in + transcribing the argument list and add paranoid code to detect + future overruns. Change priority to highest so that waiting + process will clear out quickly. + (_spawnve): Call subproc_init() to start up subproc thread if is + not already started. + * strace.cc (strace_printf): Increase size of internal buffer so + that long argument lists printed from spawn_guts do not overrun it + so easily. + * wait.cc (wait4): Set status flag to -1 prior to exit. This will + cause previous wait that was interrupted by a signal which + dispatched to another wait to return the correct error value. + * winsup.h (pinfo): Add _sigtodo array for new signal method. + Remove obsolete field. Reflect change in cygname arguments. + +Thu Jan 15 13:07:07 1998 Ian Lance Taylor <ian@cygnus.com> + + * syscalls.cc (mkdir): Don't permit the directory to be created if + the parent directory is not writable. + + * syscalls.cc (fchmod): Call chmod with the path name, rather than + just returning zero. + + * syscalls.cc (writable_directory): New static function. + (_unlink): Don't permit the file to be removed if the directory is + not writable. + (rename): Don't permit the rename if either the source or + destination directory is not writable. + + * syscalls.cc (chown): Set username and groupname lengths to UNLEN + + 1, rather than 100. If getpwuid fails, try to look up the real + user name to see if it is the same. Don't report an error if + there is no security mapping. + +Wed Jan 14 15:34:20 1998 Ian Lance Taylor <ian@cygnus.com> + + * syscalls.cc (setegid): New function which just returns ENOSYS. + (chroot): Likewise. + * cygwin.din: Export setegid, _setegid, chroot, and _chroot. + + * syscalls.cc (setmode): Rename from _setmode. Change to return + the old mode. Remove old setmode function. + * cygwin.din: Make _setmode an alias for setmode. + +Wed Jan 14 14:46:00 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: don't strip cygwin.dll by default + * winsup.h: minor reformatting, removed/reworded some comments + +Mon Jan 12 13:53:03 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + Speed up cygwin pid calculation by staying in the range + 1000 through (1000 + PSIZE - 1). + * pinfo.cc (pinfo_list::init): Change to reflect new pid + calculation method. + (pinfo_list::operator []): Ditto. + (pinfo_list::allocate_pid): Ditto. + * winsup.h (pinfo): Move pid and ppid into non-zeroed region since + they are always set by allocate_pid. + (pinfo_list): Change pid_base to next_pid_index to reflect new pid + calculation method. + (PBASE): New constant for new pid calcuation method. + +Sat Jan 10 12:06:38 1998 Geoffrey Noer <noer@cygnus.com> + + * syscalls.cc (process_deletion_queue): remove wrapper function + (close_all_files): call s->delqueue.process_queue instead of + going through wrapper. + * fhandler.cc (fhandler_base::close): call + s->delqueue.process_queue instead of using above wrapper. + * winsup.h: remove process_deletion_queue proto + * delqueue.h: up MAX_DELQUEUES_PENDING to 100 for now. Rename + v to dqueue for clarity. + * delqueue.cc: v renamed to dqueue throughout. Add FIXME + describing why this whole delqueue system needs rewriting. + +Fri Jan 9 13:18:44 1998 Geoffrey Noer <noer@cygnus.com> + + Remove some historical baggage: + * syscalls.cc (cygwin_set_attributes): remove commented-out code, + add FIXME since this function should go away next time an + incompatible change to cygwin.din is made. Stop including + include/sys/cygwin.h. + * include/sys/cygwin.h: remove cygwin_set_attributes proto. + Remove CYGWIN_FMODE_ALL_BINARY define. + * hinfo (hinfo_vec::init_std_file_from_handle): remove old + commented-out code + * path.cc (unmixedcaseify): delete commented-out function + (mixedcaseify): ditto + * strerror.cc (strerror): delete commented-out code section + +Tue Jan 6 18:51:40 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + Conform to POSIX method for sending SIGHUP to stopped processes. + * dcrt0.cc (do_exit): Use new kill_pgrp function to kill orphaned + children on group leader exit iff the children are stopped (per + POSIX). + * signal.cc (kill_worker): Negative signal now means to send + a SIGCONT after the signal, to wake up the target process. + (_kill): Break out pgrp handling into separate function. + (kill_pgrp): New function pulled from _kill to send signals + to processes in a given pgrp. + +Tue Jan 6 14:37:43 1998 Geoffrey Noer <noer@cygnus.com> + + patch from cgf@bbc.com (Chris Faylor): + * fhandler.cc (fhandler_base::open): include + FILE_FLAG_BACKUP_SEMANTICS in file_attributes when file is + a directory. Allows opening of directory as a file. Allows + use of handle to perform some operations on both directories and + files. + (fhandler_base::fstat): Loop when attempting to get volume serial + number. Works around an apparent Windows NT 3.51 bug. + * times.cc (utimes): use FILE_FLAG_BACKUP_SEMANTICS flag + to allow accessing directory times (may only work under NT; + until now it didn't work under either OS). + * winsup.h: Add O_DIROPEN constant. + +Mon Jan 5 19:18:01 1998 Geoffrey Noer <noer@cygnus.com> + + * Makefile.in: make winsup.h depend on winsup.h in accordance + with below + + patch from cgf@bbc.com (Chris Faylor): + * {*.cc, *.h}: Remove include files already present in winsup.h. + Change empty function parameter lists to (void) where appropriate. + + * fork.cc: Clean up include files. Minor change to CreateProcess + parameter list. + * signal.cc: Remove ifdef'ed stuff. + * smallprint.c: Add a necessary include file. + * winsup.h: Add a common include file. Add a function declaration + for kill_pgrp. + +Mon Jan 5 18:30:37 1998 Geoffrey Noer <noer@cygnus.com> + + Fix spoofing of directory inodes. + * syscalls.cc (hash_path_name): instead of initializing the + hash to zero, take the value of the initial hash as a new + argument. + (_stat_worker): fix up hash_path_name reference in light of above + * dirsearch.cc (opendir): initialize dir->__d_dirhash to the + hash of the full directory name so readdir can make use of it. + (readdir): compute d_ino by combining the directory hash + calculated by opendir with the hash of the filename. + * fhandler.cc: fix up hash_path_name reference in light of above + + * winsup.h: remove unnecessary protos for getkey, kbhit. Adjust + hash_path_name proto. |