newlib-cygwin/winsup/cygwin/ChangeLog-1998

4491 lines
176 KiB
Plaintext

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.