newlib-cygwin/winsup/cygwin/ChangeLog

2859 lines
105 KiB
Plaintext

2005-06-15 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::detach): Fix debugging output.
* dcrt0.cc (dll_crt0_1): Create signal_arrived early -- before any
filename manipulation.
* sigproc.cc (sigproc_init): Don't create signal_arrived here.
* fork.cc (fork_child): Ditto.
* sigproc.h (create_signal_arrived): Declare.
2005-06-14 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Always reset to FH_FS when component != 0
and FH_NETDRIVE to fix problems with strict case checking.
2005-06-12 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::recvmsg): Avoid SEGV in OpenSSH
when trying to pass file descriptor by setting msg->msg_accrightslen
to 0.
2005-06-11 Christopher Faylor <cgf@timesys.com>
* Makefile.in: Avoid initial heap allocation since cygwin has its own
heap.
2005-06-11 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (fhandler_console::read): Fix a compiler warning.
2005-06-10 Christopher Faylor <cgf@timesys.com>
* include/pthread.h: Change PTHREAD_MUTEX_DEFAULT to
PTHREAD_MUTEX_NORMAL. Revert PTHREAD_MUTEX_INITIALIZER to
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP since that is actually closer
to what linux does.
* thread.h (cw_cancel_action): New enum.
(cancelable_wait): Use cw_cancel_action as third argument.
* thread.cc (cancelable_wait): Ditto. Don't wait for cancel if
cancel_action == cw_no_cancel.
(pthread::create): Don't wait for cancel event since that is racy.
(pthread_mutex::pthread_mutex): Set default to PTHREAD_MUTEX_ERRORCHECK.
(pthread_mutexattr::pthread_mutexattr): Ditto.
(pthread_mutex::_lock): Tell cancelable_wait not to wait for
cancellation event.
(semaphore::_timedwait): Accommodate change in cancelable_wait args.
(pthread::join): Ditto.
2005-06-10 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::sendto): Always initialize
ret to 0.
(fhandler_socket::sendmsg): Ditto.
2005-06-10 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (imaxabs): Export.
(imaxdiv): Export.
(llabs): Export.
(lldiv): Export.
(strtoimax): Export.
(strtoumax): Export.
* include/inttypes.h (imaxabs): Activate declaration.
(imaxdiv): Ditto.
(strtoimax): Ditto.
(strtoumax): Ditto.
* include/cygwin/version.h: Bump API minor.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::detach): Improve diagnostics for what should
be an impossible failure condition.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* cygtls.h (_local_storage::setmode_file): New element.
(_local_storage::setmode_mode): New element.
* tlsoffsets.h: Regenerate.
* cygwin.din (setmode): Define as cygwin_getmode.
* syscalls.cc (setmode_helper): Use setmode_* variables from tls rather
than using unthreadsafe static.
(setmode): Break out fwalk stuff.
(cygwin_setmode): New function. Put fwalk stdio stuff here.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* thread.cc (pthread_mutex::_lock): Use cancelable_wait rather than
WaitForSingleObject.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* cygwin.sc: Place .cygwin_dll_common in a more sensible spot.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* cygwin.sc: Place .cygwin_dll_common.
* init.cc (threadfunc_ix): Use a more common name for the section name.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* include/pthread.h (PTHREAD_MUTEX_INITIALIZER): Change to
PTHREAD_NORMAL_MUTEX_INITIALIZER_NP to be closer to linux default.
2005-06-09 Christopher Faylor <cgf@timesys.com>
* thread.cc (cancelable_wait): No-op change to make sure that res is
always a valid WFMO return.
2005-06-09 Christopher Faylor <cgf@timesys.com>
Change pthread::cancelable_wait to just cancelable_wait, throughout.
* thread.h (cw_sig_wait): New enum.
(fast_mutex::lock): Use cancelable_wait with resumable signal.
(cancelable_wait): Change fourth argument to cw_sig_wait enum.
* thread.cc (cancelable_wait): Ditto. Loop on signal detection if
fourth argument == cw_sig_resume.
2005-06-08 Christopher Faylor <cgf@timesys.com>
* cygwin.sc: Apparently nonloading sections need to go last.
2005-06-08 Christopher Faylor <cgf@timesys.com>
* cygwin.sc: Restore resource and reloc sections and use more modern
syntax for stabs sections.
2005-06-08 Christopher Faylor <cgf@timesys.com>
* environ.cc (spenvs): Remove cut/paste error which associated
CYGWIN_DEBUG with HOME.
2005-06-08 Corinna Vinschen <corinna@vinschen.de>
* security.cc (cygwin_logon_user): Run LogonUser in the primary
process token context. Fix potential handle leak.
2005-06-07 Corinna Vinschen <corinna@vinschen.de>
* pinfo.cc (pinfo::init): Define sa_buf as PSECURITY_ATTRIBUTES and
allocate dynamically.
(pinfo::set_acl): Replace sa_buf by dynamically allocated acl_buf.
* sec_acl.cc (setacl): Allocate acl dynamically.
* sec_helper.cc (sec_acl): Add test for alignment of acl when
DEBUGGING is defined.
(__sec_user): Same for sa_buf.
* security.cc (verify_token): Define sd_buf as PSECURITY_DESCRIPTOR
and allocate dynamically.
(alloc_sd): Allocate acl dynamically.
security.h (sec_user_nih): Change first parameter to
SECURITY_ATTRIBUTES *.
(sec_user): Ditto.
* sigproc.cc (wait_sig): Define sa_buf as PSECURITY_ATTRIBUTES and
allocate dynamically.
* syscalls.cc (seteuid32): Define dacl_buf as PACL and allocate
dynamically.
* uinfo.cc (cygheap_user::init): Define sa_buf as PSECURITY_ATTRIBUTES
and allocate dynamically.
* winbase.h (ilockincr): Mark first argument of inline assembly as
earlyclobber.
(ilockdecr): Ditto.
2005-06-07 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::detach): Make error message a little more
detailed.
* fhandler.cc (fhandler_base::raw_read): Ditto for debug message.
* dcrt0.cc (do_exit): Add some more synchronization tests.
* fhandler_fifo.cc (fhandler_fifo::dup): Don't duplicate a nonexistent
handle. Use derived return value rather than always retuning 0.
* fhandler_netdrive.cc (fhandler_netdrive::exists): Wnet -> WNet.
* winsup.h (exit_states): Add a couple of new exit states.
2005-06-06 Corinna Vinschen <corinna@vinschen.de>
* path.cc (symlink_info::check): If GetFileAttributes returns
with ERROR_SHARING_VIOLATION, the file exists.
2005-06-06 Corinna Vinschen <corinna@vinschen.de>
* uname.cc (uname): Change "amd64" to "x86_64" as on Linux.
2005-06-06 Corinna Vinschen <corinna@vinschen.de>
* uname.cc (uname): Add missing break.
2005-06-05 Christopher Faylor <cgf@timesys.com>
* Makefile.in: Build sync.o with -fomit-frame-pointer and -O3.
2005-06-05 Christopher Faylor <cgf@timesys.com>
* sync.cc (muto::acquire): Remove unneeded brackets and fix whitespace.
2005-06-04 Christopher Faylor <cgf@timesys.com>
* malloc.cc: Update to Doug Lea's malloc v2.8.0.
2005-06-03 Max Kaehn <slothman@electric-cloud.com>
* dcrt0.cc (cygwin_dll_init): Initialize main_environ and cygtls. Add
comment to explain the caveats of this method.
* how-cygtls-works.txt: New file.
2005-06-02 Christopher Faylor <cgf@timesys.com>
* dlfcn.cc (get_full_path_of_dll): Use a relative path when converting
so that the standard Windows rules for finding a library will be used
if no path is given. Stop explicitly searching /usr/bin since that is
now in effect.
2005-06-01 Christopher Faylor <cgf@timesys.com>
Revert 2005-05-30 close_all_files changes.
* spawn.cc (spawn_guts): When execing, close all files after the child
has synced with us.
2005-06-01 Christopher Faylor <cgf@timesys.com>
* fhandler_disk_file.cc (fhandler_disk_file::fchown): Make sure that
disk open is called in case we're passed in a non-existent device.
2005-06-01 Christopher Faylor <cgf@timesys.com>
* include/machine/stdlib.h: New file.
2005-06-01 Christopher Faylor <cgf@timesys.com>
* thread.h (List_remove): Revert most of 2005-05-30 change.
2005-06-01 Christopher Faylor <cgf@timesys.com>
* cygwin.sc: Don't output .reloc or .rsrc sections. Clean up stuff
around .cygheap and use a workaround to get things working with newer
(broken?) binutils.
2005-05-31 Christopher Faylor <cgf@timesys.com>
* cygheap.cc (cygheap_end): Remove bogus section attribute.
* cygwin.sc: Make __cygheap_mid absolute. Remove unused _cygheap_foo.
2005-05-30 Christopher Faylor <cgf@timesys.com>
* child_info.h (child_info::cygheap_h): Delete.
(child_info::dwProcessId): New field.
* cygheap.cc (init_cheap): Delete.
(dup_now): Ditto.
(cygheap_setup_for_child): Ditto.
(cygheap_setup_for_child_cleanup): Ditto.
(cygheap_fixup_in_child): Simplify. Use new "child_copy" function to
copy heap from parent.
(_csbrk): Don't attempt allocation if within cygheap section. Fix so
that more than one allocation will succeed.
(cygheap_init): Reset possibly-nonzero region to zero.
* cygheap.h (cygheap_setup_for_child): Delete declaration.
(cygheap_setup_for_child_cleanup): Ditto.
(cygheap_start): Define as an array.
* cygwin.sc: Modernize. Remove unneeded sections. Define cygheap
here.
* dcrt0.cc (do_exit): Reflect argument change to close_all_files.
* dtable.cc (dtable::vfork_parent_restore): Ditto.
* dtable.h: Ditto.
* fhandler.h: Ditto.
* fork.cc (fork_copy): Call ReadProcessMemory if there is no thread
(indicating that we're execing).
(fork_child): Don't mess with hParent.
(fork_parent): Remove hParent stuff. It happens earlier now.
Remove call to cygheap_setup_for_child* stuff.
(fork): Put child_info_stuff in grouped structure. Issue error if
parent handle is not set.
(child_copy): New function.
* sigproc.cc (child_info::child_info): Put cygheap settings here. Set
parent handle.
(child_info::~child_info): Close parent handle if it exists.
* spawn.cc (spawn_guts): Reorganize so that ciresrv is allocated at
only the last minute so that cygheap changes are reflected. Delete
cygheap_setup* calls.
* syscalls.cc (close_all_files): Add an argument to flag when the fd
entry should be released.
* winsup.h (close_all_files): Add an argument to close_all_files
declaration. Declare child_copy.
2005-05-30 Vaclav Haisman <v.haisman@sh.cvut.cz>
* thread.h (List_remove): Make node parameter const. Use simple
comparison and assignment rather than InterlockedCompareExchangePointer
since access is already synchronized.
2005-05-30 Christopher Faylor <cgf@timesys.com>
* dlfcn.cc (set_dl_error): Use UNIX error rather than Windows error.
2005-05-29 Christopher Faylor <cgf@timesys.com>
* cygmagic: Remove debugging cruft missed on 2005-05-21.
2005-05-29 Corinna Vinschen <corinna@vinschen.de>
* path.cc (path_conv::check): Move component to function scope. Set
PATH_RO only on *real* FH_NETDRIVEs or on non-FH_NETDRIVE virtual
paths. Allow non-retrievable shares to be handled as files.
2005-05-29 Eric Blake <ebb9@byu.net>
* include/limits.h (LLONG_MIN, LLONG_MAX, ULLONG_MAX): Always define.
2005-05-28 Christopher Faylor <cgf@timesys.com>
* thread.h (pthread_key::set): Inline.
(pthread_key::get): Ditto.
* thread.cc (pthread::set): Delete.
(pthread::get): Ditto.
2005-05-28 Christopher Faylor <cgf@timesys.com>
* cygwin.din: Remove signal front end from pthread_[gs]etspecific.
2005-05-28 Christopher Faylor <cgf@timesys.com>
* fhandler_tty.cc (fhandler_tty_slave:tcflush): Use signed comparison.
2005-05-28 Christopher Faylor <cgf@timesys.com>
* times.cc (time_ms::usecs): Coerce comparison to signed or whole test
is a no-op.
2005-05-27 Christopher Faylor <cgf@timesys.com>
* cygheap.h: Reference _cygheap_start via .cygheap section.
* environ.cc: Fix force_into_environment typo throughout.
(spenvs): Export CYGWIN_DEBUG if DEBUGGING.
2005-05-26 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor number to 18.
2005-05-25 Pierre Humblet <pierre.humblet@ieee.org>
* fhandler.h (fhandler_base::mkdir): New virtual method.
(fhandler_base::rmdir): Ditto.
(fhandler_disk_file:mkdir): New method.
(fhandler_disk_file:rmdir): Ditto.
* dir.cc (mkdir): Implement with fhandlers.
(rmdir): Ditto.
* fhandler.cc (fhandler_base::mkdir): New virtual method.
(fhandler_base::rmdir): Ditto.
(fhandler_disk_file::mkdir): New method.
(fhandler_disk_file::rmdir): Ditto.
2005-05-24 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump API minor number to 129.
2005-05-24 Christopher Faylor <cgf@timesys.com>
* cygwin.din: Export mkdtemp.
* mktemp.cc: New file.
* Makefile.in (DLL_OFILES): Add mktemp.o
2005-05-23 Eric Blake <ebb9@byu.net>
* include/stdint.h (INTMAX_C, UINTMAX_C): Fix definition.
2005-05-21 Christopher Faylor <cgf@timesys.com>
* spawn.cc (find_exec): Accept a PATH-like string in place of an
environment variable.
* dlfcn.cc (get_full_path_of_dll): Search /usr/bin (for windows
compatibility) and /usr/lib (for UNIX compatibility) when looking for
shared libraries.
* environ.cc (conv_envvars): Put back LD_LIBRARY_PATH since it is used
by get_full_path_of_dll().
* errno.cc (errmap): Map MOD_NOT_FOUND to ENOENT.
* cygmagic: Remove debugging cruft.
2005-05-19 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/in.h: Add comment.
2005-05-19 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/in.h: Define IPPROTO_xxx values as macros to
accomodate SUSv3.
2005-05-19 Christopher Faylor <cgf@timesys.com>
* include/limits.h: Include features.h, as on linux.
2005-05-19 Christopher Faylor <cgf@timesys.com>
* include/endian.h: New file.
2005-05-19 Corinna Vinschen <corinna@vinschen.de>
* cygwin.sc: Add Dwarf-2 debug sections.
2005-05-19 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (mmap64): Make granularity an automatic variable.
2005-05-19 Christopher Faylor <cgf@timesys.com>
* fhandler.h (fhandler_cygdrive::seekdir): Delete declaration.
(fhandler_cygdrive::seekdir): Delete.
2005-05-19 Pierre Humblet <pierre.humblet@ieee.org>
* fhandler.h (fhandler_cygdrive::iscygdrive_root): Delete method.
(fhandler_cygdrive::telldir): Delete declaration.
* fhandler_disk_file.cc: Remove all uses of
fhandler_cygdrive::iscygdrive_root.
(fhandler_disk_file::mkdir): New method.
(fhandler_disk_file::rmdir): Ditto.
(fhandler_cygdrive::telldir): Delete.
2005-05-18 Christopher Faylor <cgf@timesys.com>
* external.cc: Move pids declaration to file scope and use less
enthusiastic constructor.
* pinfo.h (winpids::winpids): Remove default setting.
* fhandler_fifo.cc (fhandler_fifo::open_not_mine): Accommodate removal
of default setting.
* fhandler_proc.cc (fhandler_proc::readdir): Ditto.
2005-05-18 Christopher Faylor <cgf@timesys.com>
* cygtls.h (_local_storage::unknown_thread_name): New buffer.
* tlsoffsets.h: Regenerate.
* cygthread.cc (cygthread::name): Use new thread-local buffer.
* exceptions.cc (handle_exceptions): Avoid unnecessary initialization
of static variables to zero.
* fork.cc (slow_pid_reuse) Ditto.
2005-05-18 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (mmap64): Avoid compiler warning.
* ntea.cc (NTReadEA): Ditto.
* hires.h (hires_base): Remove useless usecs function.
2005-05-18 Corinna Vinschen <corinna@vinschen.de>
* fhandler_netdrive.cc (fhandler_netdrive::telldir): Remove since it's
equivalent to fhandler_virtual::telldir now anyway.
* fhandler.h (class fhandler_netdrive): Remove telldir.
2005-05-18 Corinna Vinschen <corinna@vinschen.de>
* fhandler_netdrive.cc (fhandler_netdrive::telldir): Implement.
(fhandler_netdrive::seekdir): Implement.
(fhandler_netdrive::closedir): Call rewinddir to have only one point
of calling WNetCloseEnum.
2005-05-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_netdrive): Add method rewinddir.
* fhandler_netdrive.cc (struct netdriveinf): New structure to
store thread arguments.
(thread_netdrive): Thread handling all potentially blocking
WNet... calls.
(create_thread_and_wait): Start and wait for above thread.
(fhandler_netdrive::exists): Change to call create_thread_and_wait
instead of calling WNet... function.
(fhandler_netdrive::readdir): Ditto. Fix error handling.
(fhandler_netdrive::rewinddir): New method.
2005-05-17 Corinna Vinschen <corinna@vinschen.de>
* external.cc (cygwin_internal): Avoid compiler warning.
2005-05-16 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (dll_crt0_0): Don't do fixup_after_exec if dynamically
loaded since the state of fds is unknown at this point.
2005-05-16 Christopher Faylor <cgf@timesys.com>
* include/sys/cygwin.h (enum cygwin_getinfo_types): Add CW_DEBUG_SELF.
* external.cc (cygwin_internal): Implement CW_DEBUG_SELF.
* init.cc (dll_entry): Minor rearrangement of code.
2005-05-16 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Remove embedded dots before slashes.
2005-05-16 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (conv_envvars): Remove LD_LIBRARY_PATH entirely.
It doesn't belong here.
2005-05-15 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (conv_envvars): Treat LD_LIBRARY_PATH as path list.
2005-05-14 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Check
return code from GetFileSize and set file size to 0 if necessary.
* fhandler_netdrive.cc (fhandler_netdrive::fstat): Set permissions
to read/execute for all.
2005-05-13 Christopher Faylor <cgf@timesys.com>
* path.cc (normalize_posix_path): Do normalization on . and .. after
a '//'.
2005-05-13 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_netdrive::readdir): Remove useless comment.
2005-05-13 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (WNetGetResourceParentA): Import.
(WNetOpenEnumA): Import.
(WNetEnumResourceA): Import.
(WNetCloseEnum): Import.
* fhandler.h (fhandler_netdrive::telldir): Add declaration.
(fhandler_netdrive::seekdir): Ditto.
(fhandler_netdrive::closedir): Ditto.
* fhandler_netdrive.cc: Drop explicit including windows.h. Include
winnetwk.h instead of shlwapi.h. Include dirent.h.
(fhandler_netdrive::readdir): Implement.
(fhandler_netdrive::telldir): New method.
(fhandler_netdrive::seekdir): New method.
(fhandler_netdrive::closedir): Ditto.
2005-05-13 Christopher Faylor <cgf@timesys.com>
Remove PC_FULL from path_conv usage throughout.
* path.h (enum pathconv_arg): Change PC_FULL to PC_NOFULL.
* path.cc (path_conv::check): Test for PC_NOFULL rather than !PC_FULL.
(cygwin_conv_to_win32_path): Use PC_NOFULL to force non-absolute path.
2005-05-13 Christopher Faylor <cgf@timesys.com>
* fhandler_netdrive.cc (fhandler_netdrive::exists): Assert that "//"
exists.
2005-05-12 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Eliminate compiler warning.
* dir.cc (mkdir): Check path for writability.
(rmdir): Ditto. Remove check for special directories.
* path.cc (path_conv::check): Set PATH_RO for virtual devices. Set
error if read-only and asked for writability.
* path.h (pathconv_arg): Add PC_WRITABLE.
(path_types): Add PATH_RO.
(path_conv::isro): Add (currently unused) check for read-only
filesystem. Return "ENOSHARE" when we know a share doesn't exist.
* include/sys/mount.h: Add MOUNT_RO flag.
* autoload.cc (WNetGetResourceInformationA): Import.
* fhandler_netdrive.cc (fhandler_netdrive::exists): Detect actual
existence of remote system rather than always assuming that it exists.
2005-05-11 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (do_global_dtors): Don't call dll_global_dtors here.
(__main): Reinstate atexit of do_global_dtors.
(cygwin_exit): Call dll_global_dtors here.
(do_exit): And here.
2005-05-10 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Clear exitsock after close.
* fhandler_console.cc (fhandler_console::write_normal): Store character
in a local variable for potential future inspection.
2005-05-10 Corinna Vinschen <corinna@vinschen.de>
* Makefile.in (DLL_OFILES): Add fhandler_mailslot.o.
* devices.h (FH_KMSG): Define new device.
* devices.in: Add "/dev/kmsg" entry.
* devices.cc: Regenerate.
* dtable.cc (build_fh_pc): Handle case FH_KMSG.
* fhandler.h (class fhandler_mailslot): New class.
(class select_stuff): Add device_specific_mailslot pointer.
* fhandler_mailslot.cc: New file.
* select.cc (peek_mailslot): New function.
(verify_mailslot): Ditto.
(struct mailslotinf): New stuct to handle select on mailslots.
(thread_mailslot): New function.
(start_thread_mailslot): Ditto.
(mailslot_cleanup): Ditto.
(fhandler_mailslot::select_read): New method.
* syslog.cc (klog_guard): New muto.
(dev_kmsg): Local mailslot for kernel message device.
(vklog): New function.
(klog): Ditto.
* winsup.h (vklog): Declare.
(klog): Ditto.
* include/sys/syslog.h: Define _PATH_KLOG.
2005-05-10 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (dll_crt0_1): Call cygwin_exit to ensure that destructors
are handled correctly.
2005-05-10 Corinna Vinschen <corinna@vinschen.de>
* path.cc (path_conv::check): Set correct file attributes for socket
files.
2005-05-09 Pierre Humblet <pierre.humblet@ieee.org>
* fhandler.h (class fhandler_netdrive): New class.
* fhandler_netdrive.cc (fhandler_netdrive::fhandler_netdrive): New constructor.
(fhandler_netdrive::exists): New method.
(fhandler_netdrive::fstat): Ditto.
(fhandler_netdrive::readdir): Ditto.
(fhandler_netdrive::open): Ditto.
* dtable.cc (build_fh_pc): Handle case FH_NETDRIVE.
* path.cc (isvirtual_dev): Add FH_NETDRIVE.
(mount_info::conv_to_win32_path): Detect netdrive device and bypass mount
search for network paths.
2005-05-08 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (get_cygwin_startup_info): New function pulled from
dll_crt0_0.
(dll_crt0_0): Use get_cygwin_startup_info to retrieve cygwin-specific
startup pointer.
* external.cc (cygwin_internal): Implement CW_ARGV and CW_ENVP.
* include/sys/cygwin.h: Implement CW_ARGV and CW_ENVP.
2005-05-07 Christopher Faylor <cgf@timesys.com>
* path.cc (normalize_posix_path): Don't treat '//' specially since
newer versions of bash now get this right.
2005-05-07 Christopher Faylor <cgf@timesys.com>
* devices.cc: Regenerate with correct name for dev_netdrive_storage.
2005-05-06 Christopher Faylor <cgf@timesys.com>
* Makefile.in (DLL_O_FILES): Add fhandler_netdrive.o.
* fhandler_netdrive.cc: Placeholder file for future development.
* devices.h (FH_NETDRIVE): Define new virtual device type.
(netdrive_dev): Define.
* devices.in (dev_netdrive_storage): Define.
* devices.cc: Regenerate.
2005-05-04 Corinna Vinschen <corinna@vinschen.de>
* cygerrno.h (__set_errno): Remove useless parentheses.
2005-05-04 Corinna Vinschen <corinna@vinschen.de>
* cygerrno.h (__set_errno): Define as inline function here.
(set_errno): Always define as call to __set_errno.
* debug.cc (__set_errno): Move to cygerrno.h.
2005-05-03 Christopher Faylor <cgf@timesys.com>
* shared.cc (user_shared_initialize): Rework locking so that nothing is
checked until cb is non-zero.
2005-05-03 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Don't treat
inability to open file as failure if only SetFileAttributes is
going to be called. Only call set_file_attribute if really necessary.
2005-05-03 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (get_inet_addr): Add missing __seterrno call.
2005-05-01 Christopher Faylor <cgf@timesys.com>
* fhandler_tty.cc (fhandler_tty_slave::read): Actually read input when
vmin == vtime == 0.
2005-04-30 Christopher Faylor <cgf@timesys.com>
* environ.cc (spenv::force_into_environment): Rename from add_always.
(spenv::add_if_exists): Rename from force.
(build_env): Accommodate name changes. Make sure that stuff that is
always supposed to be in the environment is actually added to the
environment.
* shared.cc (open_shared): Restore VirtualFree eliminated by 2005-04-28
change.
2005-04-30 Christopher Faylor <cgf@timesys.com>
* errno.cc (errmap): Sort table.
2005-04-29 Christopher Faylor <cgf@timesys.com>
* errno.cc (errmap): Map ERROR_NETNAME_DELETED to ENOSHARE.
2005-04-28 Corinna Vinschen <corinna@vinschen.de>
* shared_info.h (cygwin_shared_address): Bump to a higher value to avoid
collision with large data areas.
2005-04-28 Christopher Faylor <cgf@timesys.com>
* fhandler_console.cc (fhandler_console::get_tty_stuff): Accommodate
changes to open_shared arguments.
* fhandler_tape.cc (mtinfo_init): Ditto.
* pinfo.cc (pinfo::init): Use open_shared rather than win32 mmap calls.
* shared.cc (user_shared_initialize): Ditto.
(memory_init): Ditto.
(open_shared): Change to allow use a smore general mmap handler.
* shared_info.h (shared_locations): Add SH_JUSTCREATE, SH_JUSTOPEN.
(open_shared): Change declaration to match new usage.
* autoload.cc (LoadDLLfuncEx2): Define in terms of LoadDLLfuncEx3.
(LoadDLLfuncEx3): New macro.
2005-04-27 Christopher Faylor <cgf@timesys.com>
* fhandler.cc (fhandler_base::open_9x): Remove (broken) check for
O_CREAT|O_EXCL.
* syscalls.cc (open): Do O_CREAT|O_EXCL check here first.
2005-04-26 Christopher Faylor <cgf@timesys.com>
* environ.cc (build_env): Ensure that win32 array is properly filled in
when a missing value has to be generated.
2005-04-26 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor number to 17.
2005-04-24 Pavel Tsekov <ptsekov@gmx.net>
* how-to-debug-cygwin.txt: Fix typo.
2005-04-22 Christopher Faylor <cgf@timesys.com>
* shared.cc (user_shared_initialize): Implement locking similar to
shared_info when initializing shared region.
2005-04-22 Christopher Faylor <cgf@timesys.com>
* fhandler.h (dev_console::set_color): Define new function.
(dev_console::set_default_attr): Ditto, moved from fhandler_console.
(dev_console::fillin_info): Ditto. Accommodate this change throughout
this file.
(fhandler_console::get_win32_attr): Eliminate.
* fhandler_console.cc (fhandler_console::get_tty_stuff): Properly set
default attributes on initialization.
(fhandler_console::open): Set current attributes rather than default
color on open.
(fhandler_console::get_win32_attr): Eliminate.
(dev_console::set_color): New function. Move get_win32_attr stuff
here.
(dev_console::set_default_attr): New function, moved from
fhandler_console.
(dev_console::fillin_info): Ditto.
(fhandler_console::char_command): Call set_color to set screen
characteristics.
2005-04-22 Christopher Faylor <cgf@timesys.com>
* fhandler.cc (fhandler_base::read): Remove unused signal state tweaks.
* fhandler.h (fhandler_pipe::create_selectable): Declare.
(fhandler_fifo::close_one_end): Declare.
* fhandler_fifo.cc (fhandler_fifo::close_one_end): Define.
(fhandler_fifo::open_not_mine): Use close_one_end to close appropriate
end of pipe.
* pinfo.cc (_pinfo::commune_recv): Ditto.
* pipe.cc (fhandler_pipe::create_selectable): Rename from
create_selectable_pipe. Reorganize.
(fhandler_pipe::create): Use create_selectable.
2005-04-21 Christopher Faylor <cgf@timesys.com>
* shared.cc (shared_info::initialize): Test previous version of shared
memory magic rather than current version when determining if there has
been a shared memory mismatch.
2005-04-20 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (proc_subproc): Fix handling of waiting for pids with zero
value.
* strace.cc (strace::hello): Report parent pid of executing process.
2005-04-20 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Fix problem reading symlinks introduced
in below change by reverting the change and adding an additional test
for nonexistent files in /proc.
2005-04-20 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Punt when attempting to access a
nonexistent directory or file in /proc.
2005-04-19 Corinna Vinschen <corinna@vinschen.de>
* security.cc (alloc_sd): Remove DELETE bit from user's ACE if
allow_traverse is set.
2005-04-19 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (pselect): Export.
* select.cc (pselect): New function.
* include/cygwin/version.h: Bump API minor number.
* include/sys/select.h: Include signal.h. Declare pselect.
2005-04-18 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (enum conn_state): Add connect_failed state.
* fhandler_socket.cc (fhandler_socket::connect): Set connect_state to
connect_failed when connect failed.
* poll.cc (poll): Change errno to EINVAL if allocating memory fails,
according to SUSv3. Add socket descriptors always to except_fds. Test
for failed connect and set revents flags appropriately.
* select.cc (set_bits): Set connect_state to connect_failed when
select indicates failed nonblocking connect.
(fhandler_dev_null::select_except): Set except_ready to false so that
/dev/null is not always in except state.
(peek_socket): Fix bogus conditional.
(fhandler_socket::select_write): Treat all connect_states except
unconnected equivalent to return consistent results.
(fhandler_windows::select_except): Set except_ready to false so that
/dev/windows is not always in except state.
2005-04-18 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor number to 16.
2005-04-18 Pierre Humblet <pierre.humblet@ieee.org>
* grp.cc (initgroups32): Return the correct value.
2005-04-16 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::utimes_fs): Ignore
ERROR_NOT_SUPPORTED to workaround Win9x weirdness.
* path.cc (symlink_info::check): Remap ERROR_INVALID_FUNTION to
ERROR_FILE_NOT_FOUND for the same reason.
2005-04-16 Corinna Vinschen <corinna@vinschen.de>
Pierre Humblet <pierre.humblet@ieee.org>
* security.h (cygsidlist::addfromgr): Allow duplicate entries.
(get_server_groups): Declare new function.
* security.cc (is_group_member): Simplify.
(get_server_groups): New function.
(get_initgroups_sidlist): Call get_server_groups.
(verify_token): Allow token when supplementary sids are not in
/etc/group but are in the token.
Streamline the code.
* grp.cc (initgroups32): New implementation.
(getgroups32): Handle case where the supplementary groups are set.
2005-04-16 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (environ_init): Don't set traverse checking as default.
2005-04-16 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::utimes_fs): Drop touching
ChangeTime.
2005-04-16 Christopher Faylor <cgf@timesys.com>
* fhandler.cc (fhandler::dup): Duplicate flags, too.
* fhandler.h (fhandler_fifo::owner): Eliminate.
* fhandler_disk_file.cc (fhandler_base::fstat_fs): Handle on-disk
devices better.
(fhandler_base::fstat_helper): Ditto.
* fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Don't initialize
obsolete "owner".
(fhandler_fifo::open_not_mine): Add some debugging. Duplicate correct
handle when we own it.
(fhandler_fifo::open): Set flags from input, not from first pipe. Flag
that fork fixup is needed.
(fhandler_fifo::dup): Set errno correctly when DuplicateHandle fails.
* pinfo.cc (commune_send): Add debugging for fifo.
* cygwin/version.h: Bump API minor version to 127 to reflect exporting
of sigrelese.
2005-04-14 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
* syscalls.cc (setuid32): Correct debugging output.
2005-04-14 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (do_global_dtors): Run DLL dtors.
(__main): Don't rely on atexit to run dtors.
(do_exit): Specifically call do_global_dtors here.
(cygwin_exit): Ditto.
* dll_init.cc (dll_global_dtors): Make global. Only run dtors once.
(dll_list::init): Just set flag that dtors should be run. Don't rely on atexit.
* dll_init.h (dll_global_dtors): Declare.
* exceptions.cc (sigrelse): Define.
* path.h (is_fs_device): New method.
(is_lnk_special): Ditto.
* fhandler_disk_file.cc (fhandler_disk_file::link): Use
"is_lnk_special" rather than "is_lnk_symlink".
* syscalls.cc (rename): Ditto.
* hookapi.cc (ld_preload): Use colon as a separator rather than space.
2005-04-13 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_socket): Remove utimes.
* fhandler_socket.cc (fhandler_socket::utimes): Remove.
2005-04-13 Corinna Vinschen <corinna@vinschen.de>
* cygerrno.h (__seterrno_from_nt_status): Define. Always set Win32
error code as well as errno. Use throughout where errno is set from
NT status.
(set_errno): Evaluate val only once.
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Fix typo in
debug output.
* fhandler_mem.cc (fhandler_dev_mem::open): Rely on
__seterrno_from_nt_status setting Win32 error code in debug output.
* fhandler_proc.cc (format_proc_uptime): Ditto.
(format_proc_stat): Ditto.
* fhandler_process.cc (format_process_stat): Ditto.
* sysconf.cc (sysconf): Ditto.
2005-04-13 Christopher Faylor <cgf@timesys.com>
* fhandler.h (fhandler_base::utimes_fs): New method.
* fhandler.cc (fhandler_base::utimes): Call utimes_fs if on-disk
special file.
* fhandler_disk_file.cc (fhandler_disk_file::utimes): Use utimes_fs.
(fhandler_base::utimes_fs): Handle on-disk device files.
2005-04-13 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::utimes): Don't set errno
if open fails, it has already been set by open.
2005-04-12 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (NtQueryVolumeInformationFile): Add.
* fhandler.cc (fhandler_base::raw_write): Don't touch has_changed flag.
* fhandler.h (enum change_state): Remove.
(fhandler_base::status): Revert has_changed to a simple bit.
(fhandler_base::fstat_helper): Add nAllocSize parameter. Rename
ftCreationTime to ftChangeTime.
* fhandler_disk_file.cc: Call fstat_helper with additional
allocation size throughout.
(fhandler_base::fstat_by_handle): Use NT native functions to get
full file information on NT. Call fstat_helper with LastWriteTime
as ctime, if ChangeTime is not available.
(fhandler_base::fstat_by_name): Call fstat_helper with LastWriteTime
as ctime.
(fhandler_base::fstat_helper): Add comment. Drop special FAT
handling since it's useless. Use nAllocSize for st_blocks if available.
(fhandler_disk_file::touch_ctime): Only touch LastWriteTime.
(fhandler_disk_file::fchmod): Set has_changed on 9x only.
(fhandler_disk_file::fchown): Don't set has_changed.
(fhandler_disk_file::facl): Ditto.
(fhandler_disk_file::ftruncate): Ditto.
(fhandler_disk_file::link): Set has_changed on 9x only and on original
file only.
(fhandler_base::open_fs): Don't set has_changed in O_TRUNC case.
* ntdll.h (FILE_BASIC_INFORMATION): Define.
(FILE_STANDARD_INFORMATION): Define.
(FILE_INTERNAL_INFORMATION): Define.
(FILE_EA_INFORMATION): Define.
(FILE_ACCESS_INFORMATION): Define.
(FILE_POSITION_INFORMATION): Define.
(FILE_MODE_INFORMATION): Define.
(FILE_ALIGNMENT_INFORMATION): Define.
(FILE_NAME_INFORMATION): Don't define with arbitrary FileName size.
(FILE_ALL_INFORMATION): Define.
(FILE_INFORMATION_CLASS): Add FileAllInformation.
(FILE_FS_VOLUME_INFORMATION): Define.
(FS_INFORMATION_CLASS): Define.
(NtQueryVolumeInformationFile): Define.
2005-04-11 Corinna Vinschen <corinna@vinschen.de>
Revert previous patch.
* autoload.cc (GetVolumePathNamesForVolumeNameA): Remove.
(GetVolumeNameForVolumeMountPointA): Add.
* syscalls.cc (sync): Rewrite guid case to skip floppies also on
Windows 2000.
2005-04-11 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (sync): Use renamed has_get_volume_pathnames wincap.
* wincap.h (wincaps::has_get_volume_pathnames): Rename from
has_guid_volumes
* wincap.cc: Accomodate above rename throughout. Set to false on
Windows 2000.
2005-04-08 Christopher Faylor <cgf@timesys.com>
* pipe.cc (fhandler_pipe::open): Remove O_CREAT limitation.
2005-04-07 Corinna Vinschen <corinna@vinschen.de>
* syslog.cc (try_connect_guard): Remove useless conditionalized code.
2005-04-07 Corinna Vinschen <corinna@vinschen.de>
* syslog.cc: Include sys/socket.h.
(try_connect_guard): New static variable.
(syslogd_inited): Ditto.
(syslogd_sock): Ditto.
(try_connect_syslogd): New function to connect and write syslog to
local syslogd.
(vsyslog): Log to stderr if LOG_PERROR flag has been given to openlog.
Try logging to syslogd. Use Event Log resp. log file as fallback.
(closelog): Close socket to syslogd.
* include/sys/syslog.h (_PATH_LOG): Define.
(INTERNAL_NOPRI): Define if SYSLOG_NAMES is defined.
(INTERNAL_MARK): Ditto.
(struct _code): Ditto.
(prioritynames): Ditto.
(facilitynames): Ditto.
2005-04-06 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (get_inet_addr): Add type parameter to return
unix socket type. Read socket type from unix socket file.
(fhandler_socket::bind): Write socket type to unix socket file.
(fhandler_socket::connect): Return with errno EPROTOTYPE if
socket type of socket doesn't match socket type of unix socket
trying to connect to.
2005-04-06 Pierre Humblet <pierre.humblet@ieee.org>
* security.h (cygsidlist::addfromgr): Avoid duplicate entries.
* grp.cc (initgrousp): Add syscall_printf.
(setgroups): Add syscall_printf and make sure sids are added only once.
2005-04-06 Christopher Faylor <cgf@timesys.com>
* net.cc (cygwin_getservbyname): Return (possibly NULL) return value of
dup_ent rather than assuming that tls buffer is valid.
(cygwin_getservbyport): Ditto.
(cygwin_gethostbyname): Ditto.
(cygwin_gethostbyaddr): Ditto.
2005-04-05 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Don't free or close stuff if we're being
called in a "non-standard" way.
2005-04-05 Christopher Faylor <cgf@timesys.com>
* sync.h (muto::initforce): Delete flawed implementation.
* pwdgrp.h (pwdgrp::pglock): Make static.
* grp.cc (pwdgrp::pwdgrp): Eliminate use of initforce.
2005-04-05 Christopher Faylor <cgf@timesys.com>
* sync.h (muto::initforce): Force initialization even when name !=
NULL.
* grp.cc (pwdgrp::pwdgrp): Use initforce since the enclosing structure
is !NO_COPY.
2005-04-05 Christopher Faylor <cgf@timesys.com>
* sync.h (muto::operator int): New operator.
(locker): Remove unused class.
(new_muto): Delete.
(new_muto1): Ditto.
(new_muto_name): Ditto.
* cygheap.cc (cygheap_setup_for_child): Reflect use of static storage
for muto rather than pointer.
(_csbrk): Ditto.
(_cmalloc): Ditto.
(_cmalloc): Ditto.
(_cfree): Ditto.
* cygheap.h (cwdstuff::cwd_lock): Ditto.
(cwdstuff::get_drive): Ditto.
* cygmalloc.h (__malloc_lock): Ditto.
(__malloc_unlock): Ditto.
* cygtls.cc (sentry::lock): Ditto.
(sentry::sentry): Ditto.
(~sentry): Ditto.
(_cygtls::init): Ditto.
* dcrt0.cc: Ditto.
(cygwin_atexit): Ditto.
(cygwin_exit): Ditto.
* debug.cc (lock_debug::locker): Ditto.
(lock_debug::lock_debug): Ditto.
(lock_debug::unlock): Ditto.
(debug_init): Ditto.
* dtable.cc (dtable::init_lock): Ditto.
* dtable.h (dtable::lock_cs): Ditto.
(dtable::lock): Ditto.
(dtable::unlock): Ditto.
* exceptions.cc (mask_sync): Ditto.
(sighold): Ditto.
(set_process_mask_delta): Ditto.
(set_signal_mask): Ditto.
(events_init): Ditto.
* grp.cc (pwdgrp::pwdgrp): Ditto.
* malloc_wrapper.cc (mallock): Ditto.
(malloc_init): Ditto.
* path.cc (cwdstuff::cwd_lock): Ditto.
(cwdstuff::get_hash): Ditto.
(cwdstuff::get_hash): Ditto.
(cwdstuff::init): Ditto.
(cwdstuff::set): Ditto.
(cwdstuff::get): Ditto.
* pwdgrp.h (pwdgrp::pglock): Ditto.
(pwdgrp::refresh): Ditto.
* sigproc.cc (sync_proc_subproc): Ditto.
(get_proc_lock): Ditto.
(proc_subproc): Ditto.
(_cygtls::remove_wq): Ditto.
(proc_terminate): Ditto.
(sigproc_init): Ditto.
* timer.cc (lock_timer_tracker::protect): Ditto.
(lock_timer_tracker::lock_timer_tracker): Ditto.
(lock_timer_tracker::~lock_timer_tracker): Ditto.
* wininfo.cc (wininfo::_lock;): Ditto.
(wininfo::winthread): Ditto.
(operator HWND): Ditto.
(wininfo::lock): Ditto.
(wininfo::release): Ditto.
* wininfo.h (wininfo::_lock;): Ditto.
2005-04-04 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Only check for PC_NO_ACCESS_CHECK in end
component.
2005-04-04 Corinna Vinschen <corinna@vinschen.de>
* dcrt0.cc (dll_crt0_1): Don't call set_cygwin_privileges on 9x.
* fhandler.h (enum change_state): Add.
(fhandler_base::status): Add a bit to has_changed flag.
(fhandler_base::has_changed): Implement with type change_state.
* fhandler.cc (fhandler_base::raw_write): Accommodate type change
of has_changed.
* fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Also
touch modification time if has_changed == data_changed.
(fhandler_disk_file::fchmod): Also open on 9x, otherwise we can't
touch ctime. Accommodate type change of has_changed.
(fhandler_disk_file::fchown): Accommodate type change of has_changed.
(fhandler_disk_file::facl): Ditto.
(fhandler_disk_file::ftruncate): Ditto.
(fhandler_disk_file::link): Ditto.
(fhandler_base::open_fs): Ditto.
2005-04-03 Corinna Vinschen <corinna@vinschen.de>
* cygheap.cc (cygheap_init): Accommodate set_process_privilege change.
* cygheap.h (cygheap_user::curr_primary_token): New member.
(cygheap_user::primary_token): New method.
(cygheap_user::deimpersonate): Always revert to processes'
impersonation token.
(cygheap_user::reimpersonate): Set processes' or setuid token as
necessary.
(cygheap_user::has_impersonation_tokens): Look for curr_primary_token
value.
(cygheap_user::close_impersonation_tokens): Close curr_primary_token
here if necessary. Don't reset token values to NO_IMPERSONATION since
that's done in uinfo_init anyway.
(init_cygheap::luid): New LUID array keeping privilege LUIDs.
* cygtls.cc (_cygtls::init_thread): Call cygheap->user.reimpersonate.
* dcrt0.cc (hProcToken): New global variable to keep process token.
(hProcImpToken): Ditto for process impersonation token.
(dll_crt0_0): Open process token here once. Duplicate to create
hProcImpToken.
(dll_crt0_1): Call set_cygwin_privileges.
* environ.cc (allow_ntea): Drop duplicate declaration.
(allow_smbntsec): Ditto.
(set_traverse): Only set allow_traverse here.
(environ_init): Ditto.
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Drop call to
enable_restore_privilege.
(fhandler_disk_file::fchown): Ditto.
(fhandler_disk_file::facl): Ditto.
* fork.cc (fork_child): Move call to cygheap->user.reimpersonate after
syn with parent. Call set_cygwin_privileges.
* grp.cc (internal_getgroups): Use hProcImpToken instead of opening
process token.
* path.cc (fs_info::update): Bypass traverse checking when retrieving
volume information using push/pop_thread_privileges.
* registry.cc (load_registry_hive): Drop setting restore privilege
since it's already set if available.
* sec_helper.cc: Include cygtls.h.
(cygpriv): Privilege string array.
(privilege_luid): New function, evaluate LUID from cygpriv_idx.
(privilege_luid_by_name): New function, evaluate LUID from privilege
string.
(privilege_name): New function, evaluate privilege string from
cygpriv_idx.
(set_privilege): New static function called by set_process_privilege
and set_thread_privilege. Call privilege_luid to get privilege LUID.
Fix bug in return value evaluation. Improve debug output.
(set_cygwin_privileges): New function.
(set_process_privilege): Remove.
(enable_restore_privilege): Remove.
* security.cc (allow_traverse): New global variable.
(sys_privs): Change type to cygpriv_idx and store privilege indices
instead of strings.
(SYSTEM_PRIVILEGES_COUNT): Renamed from SYSTEM_PERMISSION_COUNT.
(get_system_priv_list): Don't use numerical constant in malloc call.
Use privilege_luid to get privilege LUIDs.
(get_priv_list): Call privilege_luid_by_name to get LUIDs. Improve
inner privilege LUID comparison loop.
(create_token): Enable create token privilege using
push/pop_self_privileges. Use hProcToken instead of opening process
token. Use default DACL when duplicating token.
(subauth): Enable tcb privilege using push/pop_self_privileges.
Use sec_none instead of homw made security attributes when duplicating
token.
(check_file_access): Don't duplicate access token, use active
impersonation token as is.
* security.h (enum cygpriv_idx): New enumeration type enumerating
possible privileges.
(privilege_luid): Declare new function.
(privilege_luid_by_name): Ditto.
(privilege_name): Ditto.
(allow_traverse): Declare.
(set_privilege): Declare function.
(set_process_privilege): Define as macro.
(enable_restore_privilege): Remove declaration.
(_push_thread_privilege): Define macro.
(push_thread_privilege): Ditto.
(pop_thread_privilege): Ditto.
(pop_self_privilege): Ditto.
* spawn.cc (spawn_guts): Use cygheap->user.primary_token instead of
cygheap->user.token.
* syscalls.cc (statvfs): Bypass traverse checking when retrieving
volume information using push/pop_thread_privileges. Rearrange code
to simplify push/pop bracketing.
(seteuid32): Use hProcToken instead of opening process token. Call
cygheap->user.deimpersonate instead of RevertToSelf. Create
impersonation token from primary internal or external token. Set
cygheap->user.curr_primary_token and cygheap->user.current_token
privileges once here. Drop "failed" and "failed_ptok" labels.
Drop setting DefaultDacl of process token.
(setegid32): Use hProcToken and hProcImpToken instead of opening
process token. Always reimpersonate afterwards.
* uinfo.cc (cygheap_user::init): Use hProcToken instead of opening
process token.
(internal_getlogin): Ditto. Set hProcImpToken, too.
(uinfo_init): Initialize cygheap->user.curr_primary_token.
* winsup.h (hProcToken): Declare.
(hProcImpToken): Declare.
2005-04-03 Corinna Vinschen <corinna@vinschen.de>
Unify usage of CYG_MAX_PATH throughout. Change buffers from
size CYG_MAX_PATH + 1 to CYG_MAX_PATH. Change length tests
accordingly.
2005-04-02 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor number to 15.
2005-04-01 Corinna Vinschen <corinna@vinschen.de>
* fork.cc (fork_child): Add missing __stdcall.
2005-04-01 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (create_signal_arrive): New (temporary?) function to
create signal_arrived event.
(sigproc_init): Use create_signal_arrived.
* fork.cc (fork_child): Create signal_arrived early.
2005-04-01 Corinna Vinschen <corinna@vinschen.de>
* fork.cc (fork_child): Fixup SYSV IPC shared memory before fixing
up fdtab.
2005-03-31 Corinna Vinschen <corinna@vinschen.de>
* gentls_offsets: Add '-m32' flag to native compiler call to satisfy
cross platform builds.
2005-03-31 Corinna Vinschen <corinna@vinschen.de>
* errno.cc (NO_SYSTEM_RESOURCES): Map to EAGAIN.
(NONPAGED_SYSTEM_RESOURCES): Ditto.
(PAGED_SYSTEM_RESOURCES): Ditto.
(WORKING_SET_QUOTA): Ditto.
(PAGEFILE_QUOTA): Ditto.
(COMMITMENT_LIMIT): Ditto.
2005-03-30 Christopher Faylor <cgf@timesys.com>
* environ.cc (spenvs): Re-force SYSTEMROOT to always be included in
environment.
(build_env): Ditto.
2005-03-30 Christopher Faylor <cgf@timesys.com>
* environ.cc (spenv::retrieve): Revert most of previous change.
(build_env): Ditto. Rework to track environment variables which need
to always be in the windows environment in a separate array.
2005-03-30 Igor Pechtchanski <pechtcha@cs.nyu.edu>
* path.cc (symlink_info::case_check): Ignore trailing characters
in paths when comparing case.
2005-03-30 Christopher Faylor <cgf@timesys.com>
* environ.h (win_env::immediate): Declare new field.
(win_env::operator = ): Declare new operator.
(win_env::reset): Declare new function.
(win_env::~win_env): Declare new destructor.
(getwinenv): Add optional third argument to declaration.
* environ.cc (conv_envvars): Accommodate immediate field.
(win_env::operator =): Define new operator.
(win_env::~win_env): Define new destructor.
(win_env::add_cache): Add value to environment immediately if
"immediate" is set.
(getwinenv): Accept optional third argument which will be used to store
"cached" values to avoid overwriting real cache.
(spenv::force): Declare new field.
(spenvs): Accommodate force field. Add "PATH=" with force set to true.
(spenv::retrieve): Avoid duping anything if we're not building an
envblock.
(build_env): Ditto. Use size of potentially constructed new
environment block to determine if we need to create an environment
block. Pass getwinenv temporary storage to avoid inappropriately
overwriting the environment cache.
2005-03-29 Eric Blake <ebb9@byu.net>
* include/limits.h (NAME_MAX): New define.
(PATH_MAX): POSIX allows PATH_MAX to include trailing NUL.
2005-03-29 Corinna Vinschen <corinna@vinschen.de>
* path.cc (is_floppy): Make externally available.
* path.h (is_floppy): Declare.
* syscalls.cc (sync): Check for floppies on A: and B: in guid case.
Don't call setmntent in non-guid case but evaluate drive bit mask
locally.
2005-03-29 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc: Re-add exename.
2005-03-28 Christopher Faylor <cgf@timesys.com>
* include/ctype.h: Accommodate building in newlib.
2005-03-28 Christopher Faylor <cgf@timesys.com>
* timer.cc (getitimer): Check that ovalue is a valid pointer, not just
NULL.
2005-03-28 Christopher Faylor <cgf@timesys.com>
* timer.cc (timer_tracker::settime): Set times to zero when just
cancelling a timer.
2005-03-28 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::detach): Revert to just waiting for thread
event since waiting for anything else is racy.
* timer.cc (timer_tracker::hcancel): Rename from cancel.
(timer_tracker::cancel): New method.
(timer_tracker::th): Remove.
(timer_tracker::~timer_tracker): Call cancel method.
(timer_tracker::timer_tracker): Ditto.
(timer_tracker::timer_tracker): Always, clear cancel, even though it is
probably not strictly necessary for ttstart.
(timer_thread): Accommodate cancel -> hcancel rename.
(timer_tracker::settime): Ditto.
(timer_tracker::gettime): Ditto.
(timer_delete): Ditto.
* cygwin.din: Export _ctype_.
* include/ctype.h: Mark that _ctype_ is imported.
2005-03-28 Christopher Faylor <cgf@timesys.com>
* timer.cc (timer_tracker::timer_tracker): Eliminate simple
constructor.
(ttstart): Fully initialize.
* errno.cc: Fix typo introduced in previous change.
2005-03-28 Eric Blake <ebb9@byu.net>
* errno.cc (FILENAME_EXCED_RANGE): Map to ENAMETOOLONG.
2005-03-27 Christopher Faylor <cgf@timesys.com>
* signal.cc (nanosleep): Revert tv_sec < 0 check as it is fixed
properly in the below change to hires.h.
2005-03-27 Pierre Humblet <pierre.humblet@ieee.org>
* times.cc (hires_ms::usecs): Compare the difference.
* hires.h: Add parentheses to HIRES_DELAY_MAX.
2005-03-26 Christopher Faylor <cgf@timesys.com>
* timer.cc (nanosleep): Treat tv_sec < 0 as invalid.
* include/search.h: Make declarations consistent with newlib.
2005-03-26 Pierre Humblet <pierre.humblet@ieee.org>
Christopher Faylor <cgf@timesys.com>
* wininfo.h (wininfo::timer_active): Delete.
(wininfo::itv): Ditto.
(wininfo::start_time): Ditto.
(wininfo::window_started): Ditto.
(wininfo::getitimer): Ditto.
(wininfo::setitimer): Ditto.
(wininfo::wininfo): Ditto.
(wininfo::lock): New method.
(wininfo::release): Ditto.
* window.cc: Use new lock/acquire wininfo methods throughout.
(wininfo::wininfo): Delete
(wininfo::getitimer): Ditto.
(wininfo::setitimer): Ditto.
(getitimer): Ditto.
(setitimer): Ditto.
(ualarm): Ditto.
(alarm): Ditto.
(wininfo::lock): Define new function.
(wininfo::release): Ditto.
(wininfo::process): Delete WM_TIMER handling.
* timer.cc (struct timetracker): Delete it, flags. Add it_interval,
interval_us, sleepto_us, running, init_muto(), syncthread, and
gettime().
(ttstart): Make NO_COPY.
(lock_timer_tracker): New class.
(timer_tracker::timer_tracker): Distinguish ttstart case.
(timer_tracker::~timer_tracker): New destructor. Clean out events, and
reset magic.
(timer_tracker::init_muto): New method.
(to_us): Round up as per POSIX.
(timer_thread): Reorganize to match timer_tracker::settime and
timer_tracker::gettime. Call sig_send without wait. Call
auto_release.
(timer_tracker::settime): Reorganize logic to avoid race. Call gettime
to recover old value.
(timer_tracker::gettime): New method.
(timer_create): Properly set errno on invalid timerid. Use new
lock_timer_tracker method.
(timer_delete): Ditto. Simplify code slightly.
(timer_gettime): New function.
(fixup_timers_after_fork): Reinit ttstart.
(getitimer): New implementation.
(setitimer): Ditto.
(ualarm): Ditto.
(alarm): Ditto.
* cygwin.din: Export timer_gettime.
* winsup.h: Remove has has_visible_window_station declaration.
2005-03-26 Christopher Faylor <cgf@timesys.com>
* Makefile.in (DLL_OFILES): Add lsearch.o.
* cygthread.h (cygthread::notify_detached): New element.
(cygthread::cygthread): Take optional fourth argument signifying event
to signal on thread completion.
* cygthread.cc (cygthread::stub): Signal notify_detached event, if it
exists.
(cygthread::cygthread): Initialize notify_detached from fourth argument.
(cygthread::detach): Wait for notify_detached field is present.
* lsearch.cc: New file.
* search.h: Ditto.
* include/cygwin/version.h: Bump API minor number to 126.
* cygwin.din: Export lsearch, lfind.
2005-03-23 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_socket::secret_event): Remove.
(fhandler_socket::af_local_set_secret): New function combining former
set_connect_secret and get_connect_secret into one function.
(fhandler_socket::af_local_setblocking): Rename from eid_setblocking.
(fhandler_socket::af_local_unsetblocking): Rename from
eid_unsetblocking.
(fhandler_socket::af_local_set_cred): New method.
(fhandler_socket::af_local_copy): New method.
(fhandler_socket::af_local_recv_secret): New method.
(fhandler_socket::af_local_send_secret): New method.
(fhandler_socket::af_local_recv_cred): Rename from eid_recv.
(fhandler_socket::af_local_send_cred): Rename from eid_send.
(fhandler_socket::af_local_accept): New method.
(fhandler_socket::af_local_set_sockpair_cred): Rename from
set_socketpair_eids.
(fhandler_socket::eid_accept): Remove.
(fhandler_socket::eid_connect): Remove.
(fhandler_socket::set_connect_secret): Remove.
(fhandler_socket::get_connect_secret): Remove.
(fhandler_socket::create_secret_event): Remove.
(fhandler_socket::check_peer_secret_event): Remove.
(fhandler_socket::signal_secret_event): Remove.
(fhandler_socket::close_secret_event): Remove.
(fhandler_socket::sec_event_accept): Remove.
(fhandler_socket::sec_event_connect): Remove.
* fhandler_socket.cc (secret_event_name): Remove.
(fhandler_socket::af_local_set_sockpair_cred): Rename from
set_socketpair_eids.
(fhandler_socket::af_local_setblocking): Rename from eid_setblocking.
(fhandler_socket::af_local_unsetblocking): Rename from
eid_unsetblocking.
(fhandler_socket::af_local_recv_secret): New function to receive
AF_LOCAL connect secret over socket itself.
(fhandler_socket::af_local_send_secret): New function to send AF_LOCAL
connect secret over socket itself.
(fhandler_socket::af_local_recv_cred): Rename from eid_recv.
(fhandler_socket::af_local_send_cred): Rename from eid_send.
(fhandler_socket::eid_connect): Remove.
(fhandler_socket::af_local_connect): Take over connect side handling
of AF_LOCAL secret and credential handshake.
(fhandler_socket::eid_accept): Remove.
(fhandler_socket::af_local_accept): New method, take over accept side
handling of AF_LOCAL secret and credential handshake.
(fhandler_socket::af_local_set_cred): New method, set eid credentials
to start values.
(fhandler_socket::af_local_copy): New method, copy secret and
credentials to another socket.
(fhandler_socket::af_local_set_secret): New function combining former
set_connect_secret and get_connect_secret into one function.
(fhandler_socket::create_secret_event): Remove.
(fhandler_socket::signal_secret_event): Remove.
(fhandler_socket::close_secret_event): Remove.
(fhandler_socket::check_peer_secret_event): Remove.
(fhandler_socket::sec_event_connect): Remove.
(fhandler_socket::sec_event_accept): Remove.
(fhandler_socket::fixup_after_fork): Drop secret_event handling.
(fhandler_socket::bind): Call af_local_set_secret.
(fhandler_socket::connect): Call af_local_set_cred and af_local_connect.
(fhandler_socket::listen): Call af_local_set_cred.
(fhandler_socket::accept): Call af_local_copy and af_local_accept on
accepted socket.
(fhandler_socket::close): Don't call close_secret_event.
(fhandler_socket::set_close_on_exec): Don't set secret_event
inheritance.
* net.cc (cygwin_getsockopt): Add debug output.
(socketpair): Call af_local_set_sockpair_cred instead of
set_socketpair_eids.
* select.cc (set_bits): Drop AF_LOCAL special handling in case
of except bit set.
2005-03-23 Christopher Faylor <cgf@timesys.com>
* include/ctype.h: Always define macros when inside cygwin.
(isblank): New macro.
2005-03-23 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_socket::eid_connect): Make private.
(fhandler_socket::set_connect_secret): Ditto.
(fhandler_socket::get_connect_secret): Ditto.
(fhandler_socket::create_secret_event): Ditto. Remove secret argument.
(fhandler_socket::check_peer_secret_event): Ditto.
(fhandler_socket::signal_secret_event): Make private.
(fhandler_socket::close_secret_event): Ditto.
(fhandler_socket::sec_event_accept): New private method.
(fhandler_socket::sec_event_connect): Ditto.
(fhandler_socket::af_local_connect): New public method.
* fhandler_socket.cc: Use 'struct sockaddr' and 'struct sockaddr_in'
rather than just 'sockaddr' and 'sockaddr_in' throughout.
(fhandler_socket::eid_connect): Drop AF_LOCAL/SOCK_STREAM test.
(fhandler_socket::create_secret_event): Remove secret argument.
Always use connect_secret instead.
(fhandler_socket::check_peer_secret_event): Ditto.
(fhandler_socket::sec_event_connect): New method, combining entire
secret event handshake on connect side.
(fhandler_socket::af_local_connect): New method, combining secret
event handshake and eid credential transaction on connect side, to
be called from select.
(fhandler_socket::sec_event_accept): New method, combining entire
secret event handshake on accept side.
(fhandler_socket::connect): Drop secret, use connect_secret instead.
Move entire secret event handshake to sec_event_connect.
(fhandler_socket::accept): Move entire secret event handshake to
sec_event_accept.
* select.cc (set_bits): Just call af_local_connect here.
2005-03-23 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Change comment for most recent API version
bump to reflect new additions to the DLL and to remove change obsoleted
by the previous checkin.
2005-03-23 Christopher Faylor <cgf@timesys.com>
* include/ctype.h: New file.
* ctype.cc: Ditto.
* Makefile.in: Add ctype.o to DLL_OFILES.
* cygwin.din: Remove _ctype_ptr (for now?).
2005-03-22 Christopher Faylor <cgf@timesys.com>
* Makefile.in (DLL_OFILES): Add hookapi.o. Eliminate some cruft.
* cygheap.h (cygheap_types): Add new enum: HEAP_1_HOOK.
(hook_chain): New struct.
(init_cygheap::hooks): Define new element.
* cygheap.cc (cygheap_fixup_in_child): Zero hook chain on exec.
* dcrt0.cc (dll_crt0_1): Call ld_preload just before calling main function.
* external.cc (cygwin_internal): Implement CW_HOOK.
* fork.cc (fork_child): Call fixup_hooks_after_fork.
* init.cc (cygwin_hmodule): Reinstate after a long absence.
* include/sys/cygwin.h: Define CW_HOOK.
* hookapi.cc: New file.
* select.cc (start_thread_socket): Add debugging output.
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): gcc 4.x
accommodation.
* fhandler_socket.cc (fhandler_socket::connect): Make sure that err is
initialized.
2005-03-22 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (__ctype_ptr): Export.
* include/cygwin/version.h: Bump API minor version.
2005-03-21 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class cygthread): Remove forward declaration.
2005-03-21 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class cygthread): Forward declare.
(fhandler_socket::sec_pipe): Remove.
(fhandler_socket::eid_pipe_name): Remove.
(fhandler_socket::eid_setblocking): New private method.
(fhandler_socket::eid_unsetblocking): Ditto
(fhandler_socket::eid_recv): Ditto
(fhandler_socket::eid_send): Ditto
(fhandler_socket::eid_accept): Ditto
(fhandler_socket::eid_connect): New public method.
* fhandler_socket.cc (ASYNC_MASK): Move to beginning of file.
(fhandler_socket::eid_pipe_name): Remove.
(fhandler_socket::set_socketpair_eids): Move down to fhandler_socket
methods.
(fhandler_socket::fhandler_socket): Drop initializing sec_pipe.
(fhandler_socket::~fhandler_socket): Drop closing sec_pipe.
(fhandler_socket::eid_setblocking): New method.
(fhandler_socket::eid_unsetblocking): New method.
(fhandler_socket::eid_recv): New method.
(fhandler_socket::eid_send): New method.
(fhandler_socket::eid_connect): New method.
(fhandler_socket::eid_accept): New method.
(fhandler_socket::dup): Drop sec_pipe handling.
(fhandler_socket::connect): Fix WinSock error handling. Prepare
eid credential transaction. Call eid_connect on successful connect.
(fhandler_socket::listen): Drop creating sec_pipe.
(fhandler_socket::accept): Slightly simplify code. Call eid_accept
on accepted socket.
(fhandler_socket::getpeereid): Reshuffle code for readability. Fix
test for invalid pid.
* select.cc (set_bits): Call eid_connect on successfully connected
socket.
2005-03-19 Christopher Faylor <cgf@timesys.com>
* child_info.h (fork_info): Use different method to alias variable.
(spawn_info): Ditto.
* cxx.cc (__cxa_guard_acquire): New function (needed for gcc 4.x).
(__cxa_guard_release): Ditto.
* devices.in: Make sure stuff is correctly bracketed (for gcc 4.x).
* devices.cc: Regenerate.
* fhandler.h (fhandler_disk_file::fchmod): Avoid left coercion (for gcc
4.x).
* smallprint.c (__rn): Declare as __fastcall since gcc 4.x complains
about use of regparm, for some reason.
* sync.h (sync::init_lock): Remove.
* sync.cc (sync::init_lock): Ditto.
2005-03-18 Christopher Faylor <cgf@timesys.com>
* net.cc (cygwin_getprotobyname): Don't try to be fancy with return
values.
(cygwin_getprotobynumber): Ditto.
2005-03-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::utimes): Handle opening
directories under 9x gracefully.
2005-03-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::connect): Always set sun_path
in case of a successful or pending connect.
(fhandler_socket::accept): Don't run secret event and eid credential
transactions if OS accept returned WSAEWOULDBLOCK.
2005-03-16 Christopher Faylor <cgf@timesys.com>
* fhandler_tape.cc (get_ll): This is a generally useful function so
move it
* winsup.h (get_ll): to here.
* security.cc (get_token_group_sidlist): Use get_ll to figure out the
long long version of the luid since QuadPart is not part of the
standard Windows API.
2005-03-16 Christopher Faylor <cgf@timesys.com>
* dir.cc: Rename opendir_* to dirent_* throughout.
(opendir_states): Move and rename.
* fhandler.h (dirent_states): to here.
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Use raw readdir
when skipping through entries since it is keeping track of "." and
"..".
(fhandler_cygdrive::seekdir): Use fhandler_disk_file::readdir to do
everything.
* fhandler_virtual.cc (fhandler_virtual::opendir): Set flag indicating
that we provide . and ..
(fhandler_virtual::seekdir): Ditto.
(fhandler_virtual::rewinddir): Ditto.
* fhandler_registry.cc (fhandler_registry::rewinddir): Ditto.
2005-03-16 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (free_local): New macro.
(_cygtls::remove): Use free_local to free known-malloced local
variables.
* cygtls.h: Mark some variables as "malloced".
* net.cc (enum struct_type): Rename from is_* to t_* for clarity.
(dump_protoent): Delete.
(dup_ent): New macro.
(__dup_ent): Renamed from dup_ent. Change arguments for convenience.
Replace first argument with newly alloced value. Allocate a rounded
number of bytes in an attempt to try to reuse space. Subsume
"dump_protent".
(cygwin_getprotobyname): Simplify using new dup_ent functionality.
(cygwin_getprotobynumber): Ditto.
(cygwin_getservbyname): Ditto.
(cygwin_getservbyport): Ditto.
(cygwin_gethostname): Ditto.
(cygwin_gethostbyname): Ditto.
* tlsoffsets.h: Regenerate.
* syslog.cc (openlog): Use NULL rather than 0, for consistency with the
rest of cygwin.
(pass_handler::initialize): Use unbuffered I/O in pass one.
2005-03-15 Christopher Faylor <cgf@timesys.com>
* errno.cc (errmap): Correct typo in previous change.
2005-03-15 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Free process_ident, if it exists.
* errno.cc (errmap): ERROR_DISK_CORRUPT -> EIO.
2005-03-11 Christopher Faylor <cgf@timesys.com>
* path.h (pathconv_arg): Define PC_NO_ACCESS_CHECK.
(path_types): Define PATH_NO_ACCESS_CHECK == PC_NO_ACCESS_CHECK.
* path.cc (symlink_info::check_sysfile): Move to symlink_info class and
eliminate arguments that are part of class. Use set_error.
(symlink_info::check_shortcut): Ditto.
(symlink_info::set_error): New function.
(path_conv::check): Pass PC_NO_ACCESS_CHECK to symlink_info::check.
(symlink_info::check): Preserve PC_NO_ACCESS_CHECK in pflags. Use
set_error.
2005-03-10 Corinna Vinschen <corinna@vinschen.de>
* path.cc (is_floppy): New function.
(setmntent): Drop floppy drives on A: and B: from logical drive DWORD.
* syscalls.cc (sync): Don't sync floppies on A: and B:.
2005-03-10 Christopher Faylor <cgf@timesys.com>
* autoload.cc (LoadDLLprime): Use nocopy segment or forked processes
will not initialize properly.
2005-03-10 Christopher Faylor <cgf@timesys.com>
* autoload.cc (LoadDLLprime): Scrap use of .linkonce and just use an
ifdef guard to load .foo_init into data segment.
* dcrt0.cc (initial_env): Allow colon or space as CYGWIN_DEBUG
separator for consistency.
2005-03-09 Christopher Faylor <cgf@timesys.com>
* pinfo.h (pinfo::pinfo): Clear more elements in the constructor.
2005-03-09 Christopher Faylor <cgf@timesys.com>
* net.cc (dup_ent): Revert older stupid test for null. Don't copy name
if it is NULL.
2005-03-09 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::eid_pipe_name): Fix format
string.
(fhandler_socket::connect): Set sun_path before running eid credential
transaction. Run transaction only if OS connect was successful.
(fhandler_socket::accept): Run transaction only if OS accept was
successful.
2005-03-09 Corinna Vinschen <corinna@vinschen.de>
* signal.cc (sigprocmask): Rename first parameter to "how".
(handle_sigprocmask): Ditto. Check "how" for being a valid "how" value.
Fix call order in case of wrong "how" value.
2005-03-09 Christopher Faylor <cgf@timesys.com>
* net.cc (dup_ent): Revert previous stupid change.
2005-03-09 Christopher Faylor <cgf@timesys.com>
* net.cc (dup_ent): Avoid dereferencing a null pointer in a debug_printf.
2005-03-09 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Treat ENOSHARE similarly to ENOENT when
determining if there was a problem with a symlink.
2005-03-08 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::listen): Don't limit the number
of pipe instances.
2005-03-08 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::exit): Right shift exit value by eight when not
started in a cygwin environment.
2005-03-07 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (mmap64): Handle MAP_AUTOGROW flag.
(fhandler_disk_file::mmap): Ditto. Clean conditional for readability.
* include/sys/mman.h: Add MAP_AUTOGROW flag.
* include/cygwin/version.h: Bump API minor version.
2005-03-08 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (dll_crt0_0): Eliminate muto::init call.
* sync.h (locker): New, currently unused class.
(muto::init): Eliminate.
* sync.cc (muto::init): Ditto.
(muto::init): Eliminate critical section lock and instead use name as a
guard to prevent against multiple attempts to initialize the same muto.
* pinfo.cc (pinfo::init): Set myself procinfo when not execing and pid
matches windows pid or cygwin pid.
2005-03-06 Pavel Tsekov <ptsekov@gmx.net>
* path.cc (mount_info::read_cygdrive_info_from_registry): Use the user
prefix if it exists.
2005-03-06 Christopher Faylor <cgf@timesys.com>
* sync.h (sync::init_lock): Declare new static member.
(sync::init()): Declare new static function.
* sync.cc (sync::init): Define.
(sync::init): Lock attempt to initialize a muto to stop multiple
threads from colliding.
* dcrt0.cc (dll_crt0_0): Initialize muto environment.
2005-03-06 Christopher Faylor <cgf@timesys.com>
* path.cc (special_name): Reorganize to always detect the use of
special names first, before detecting special characters.
2005-03-04 Christopher Faylor <cgf@timesys.com>
* fhandler_clipboard.cc: Use int for cygnativeformat rather than UINT
as that is what is returned by GetPriorityClipboardFormat.
(fhandler_dev_clipboard::read): Ditto for the format variable.
2005-03-04 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::open_9x): Satisfy query_open values.
2005-03-04 Pierre Humblet <pierre.humblet@ieee.org>
* fhandler_socket.cc (fhandler_socket::ioctl): Only cancel
WSAAsyncSelect when async mode is on.
2005-03-03 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (utmpxname): Export.
* syscalls.cc (utmpxname): Create export alias to utmpname.
* include/utmpx.h: Define ut_name and ut_xtime if not already defined.
(utmpxname): Add prototype.
* include/sys/utmp.h: Only define ut_name if not already defined.
* include/cygwin/version.h: Bump API minor version.
2005-03-03 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::detach): Use a slightly higher priority when
waiting for thread signalling.
2005-03-02 Christopher Faylor <cgf@timesys.com>
* autoload.cc (std_dll_init): Save and restore fpu control register
around LoadAddress to prevent loaded dlls (like msvcrt.dll) from
setting unwanted stuff.
2005-03-02 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::remove): Don't attempt any removal activities if
exitsock is zero.
2005-03-02 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (_cygtls::init_thread): Move exitsock setting later. It
should always be set.
(_cygtls::remove): Detect zero exitsock. Not quite sure why this is needed.
2005-03-02 Christopher Faylor <cgf@timesys.com>
* autoload.cc (LoadDLLprime): Mask error code to low-order 16 bits.
(noload): Preserve sign when returning error code.
2005-03-02 Christopher Faylor <cgf@timesys.com>
* spawn.cc (do_cleanup): Properly restore SIGINT/SIGQUIT even if they
had previously been SIG_DFL.
2005-03-01 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): Replace
GetSystemTime/SystemTimeToFileTime with GetSystemTimeAsFileTime.
* times.cc (time_as_timestruc_t): Ditto.
(time): Ditto.
2005-03-01 Christopher Faylor <cgf@timesys.com>
* include/cygwin/version.h: Bump DLL minor number to 14.
2005-03-01 Corinna Vinschen <corinna@vinschen.de>
* fhandler_clipboard.cc (fhandler_dev_clipboard::write): Never set
errno to 0.
(fhandler_dev_clipboard::read): Ditto.
* fhandler_windows.cc (fhandler_windows::read): Ditto.
* scandir.cc (scandir): Ditto.
* syscalls.cc (_fstat64_r): Ditto.
(_fstat_r): Ditto.
(_stat64_r): Ditto.
(_stat_r): Ditto.
* mmap.cc (mmap64): Fix /dev/zero mapping.
2005-02-28 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_socket): Declare new method
set_socketpair_eids.
* fhandler_socket.cc (fhandler_socket::set_socketpair_eids): New method.
(fhandler_socket::dup): Duplicate sec_pipe if necessary.
(fhandler_socket::listen): Only create sec_pipe if named pipes are
available. Initialized sec_peer_pid to 0 as on Linux.
(fhandler_socket::connect): Only run eid credential transaction if
named pipes are available. Fake otherwise. Initialized sec_peer_pid
to 0 as on Linux.
(fhandler_socket::accept): Ditto.
(fhandler_socket::close): Move closing sec_pipe handle from here...
(fhandler_socket::~fhandler_socket): ... to here.
* net.cc (socketpair): Set eid credentials by calling
fhandler_socket::set_socketpair_eids() on both socket ends.
* wincap.h (wincaps::has_named_pipes): New element.
* wincap.cc: Implement above element throughout.
2005-02-26 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (_pinfo::set_ctty): Move function
* pinfo.cc (_pinfo::set_ctty): to here.
* fhandler_mem.cc (fhandler_dev_mem::fstat): Don't fill out structure
if this is an on-disk device rather than an "auto" device.
* fhandler_raw.cc (fhandler_dev_raw::fstat): Ditto.
* path.cc (normalize_posix_path): Don't treat a standalone '//' as
introducing a UNC path.
(normalize_win32_path): Ditto.
2005-02-26 Christopher Faylor <cgf@timesys.com>
* debug.cc (delete_handle): Report on handle value in debugging output.
* pinfo.h (_pinfo::exists): Declare "new" function.
(_pinfo::kill): Ditto.
* fhandler_termios.cc (tty_min::kill_pgrp): Use _pinfo::exists rather
than proc_exists.
* pinfo.cc (pinfo::init): Ditto. Don't do a low_priority_sleep(0) when
looping to find exec'ed procinfo.
(pinfo::release): Be more careful about unmapping and closing.
* signal.cc (_pinfo::kill): Rename from kill_worker. Accommodate entry
into _pinfo class.
(kill0): Use _pinfo::kill rather than kill_worker.
(kill_pgrp): Ditto. Use _pinfo::exists rather than proc_exists.
* sigproc.cc (_pinfo::exists): Rename from proc_exists.
(pid_exists): Use _pinfo::exists rather than proc_exists.
(remove_proc): Ditto.
* sigproc.h (proc_exists): Delete declaration.
2005-02-25 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_base): Declare fixup_mmap_after_fork
with additional flags parameter. Change offset parameter to _off64_t.
(class fhandler_disk_file): Ditto.
(class fhandler_dev_mem): Ditto.
* fhandler_mem.cc (fhandler_dev_mem::fixup_mmap_after_fork):
Accommodate new parameters.
* mmap.cc: Include ntdll.h.
(class mmap_record): Add flags member.
(mmap_record::mmap_record): Add flags parameter.
(mmap_record::get_flags): New method.
(class map): Add next_anon_addr member to store next anonymous mapping
address suggestion.
(map::get_next_anon_addr): New method.
(map::set_next_anon_addr): New method.
(mmap64): Don't align offset and length to granularity in case of
MAP_ANONYMOUS on NT. Check for already existing mapping only on 9x.
Call mmap_record::mmap_record with additional flags argument.
(fhandler_base::fixup_mmap_after_fork): Accommodate new parameters.
(fhandler_disk_file::mmap): Use NtMapViewOfSection with
AT_ROUND_TO_PAGE flag for anonymous mappings on NT. If addr is NULL,
try to map adjacent to previous mapping.
(fhandler_disk_file::fixup_mmap_after_fork): Add flags argument.
Change offset parameter to _off64_t. Use NtMapViewOfSection to
re-create anonymous mappings on NT.
(fixup_mmaps_after_fork): Accommodate new parameters when calling
fhandler's fixup_mmaps_after_fork function.
* ntdll.h (AT_ROUND_TO_PAGE): New define.
2005-02-25 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (mmap64): Handle anonymous MAP_FIXED request on
non-granulation boundary.
2005-02-25 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (class mmap_record): Declare new map_pages method with
address parameter.
(mmap_record::map_pages): New method with address parameter.
(mmap64): Evaluate access mode before checking if already existing
mapping can be used.
Only use existing mapping if requested access mode matches the one
in the existing mapping.
Add check for existing mapping for anonymous MAP_FIXED case.
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
* localtime.cc: Implement setting __tzrule's offset member using
newlib's __gettzinfo () interface.
(__tzrule): Remove.
(timezone): Define as long according to POSIX.
2005-02-23 Eric Blake <ebb9@byu.net>
* devices.in (parsedisk): Fix typo.
* devices.cc: Regenerate.
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (getpeereid): Export.
* fhandler.h (class fhandler_socket): Add pipe and id members to
exchange eid credentials for AF_LOCAL sockets.
(eid_pipe_name): Declare new method.
(getpeereid): Ditto.
* fhandler_socket.cc (fhandler_socket::eid_pipe_name): New method.
(fhandler_socket::fhandler_socket): Initialize sec_pipe.
(fhandler_socket::connect): Exchange eid credentials with accepting
socket process.
(fhandler_socket::listen): Prepare eid credential transaction.
(fhandler_socket::accept): Exchange eid credentials with connecting
socket process.
(fhandler_socket::close): Close eid credentials pipe if open.
(fhandler_socket::getpeereid): New method.
* net.cc (cygwin_getsockopt): Add SO_PEERCRED handling.
(getpeereid): New function.
* include/asm/socket.h (SO_PEERCRED): Define.
* include/cygwin/socket.h (struct ucred): Define new type.
* include/cygwin/version.h: Bump API minor version.
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
* include/sys/statvfs.h (ST_RDONLY): Define.
(ST_NOSUID): Define.
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (fstatvfs): Export.
(statvfs): Export.
* syscalls.cc: Include sys/statvfs.h.
(statvfs): New function. Move statfs functionality here.
(fstatvfs): New function.
(statfs): Just call statvfs and copy structure. Check validity of
incoming struct statfs pointer.
* include/cygwin/types.h (fsblkcnt_t): Define.
(fsfilcnt_t): Define.
* include/cygwin/version.h: Bump API minor version.
* include/sys/statvfs.h: New file.
2005-02-23 Corinna Vinschen <corinna@vinschen.de>
* devices.h: Switch FH_ZERO and FH_PORT as on Linux. Add FH_FULL.
* devices.in: Add /dev/full.
* devices.cc: Regenerate.
* dtable.cc (build_fh_pc): Add FH_FULL.
* fhandler.cc (fhandler_base::fstat): Set FH_FULL permission bits
correctly.
* fhandler_zero.cc (fhandler_dev_zero::write): Set errno to ENOSPC
and return -1 if device is FH_FULL.
2005-02-22 Christopher Faylor <cgf@timesys.com>
* fhandler_disk_file.cc (fhandler_cygdrive::closedir): Return 0 when
closing cygdrive_root.
2005-02-22 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (basename): Export.
(dirname): Export.
* path.cc (basename): New function.
(dirname): New function.
* include/libgen.h: New file.
* include/cygwin/version.h: Bump API minor version.
2005-02-22 Corinna Vinschen <corinna@vinschen.de>
* select.cc (peek_pipe): Disable new pipe code until there's
a working substitute.
2005-02-22 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din (fdatasync): Export.
* fhandler.cc (fhandler_base::fsync): Return with EINVAL if no
handle is available.
* syscalls.cc (fdatasync): Create export alias to fsync.
* include/cygwin/version.h: Bump API minor version.
2005-02-20 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_base::fstat_helper): Declare with additional
dwVolumeSerialNumber argument. Drop default values for last three
arguments.
* fhandler_disk_file.cc (fhandler_base::fstat_by_handle): Pass
dwVolumeSerialNumber from GetFileInformationByHandle to fstat_helper.
(fhandler_base::fstat_by_name): Pass pc.volser () to fstat_helper.
Accommodate dropping default values for last three arguments of
fstat_helper.
(fhandler_base::fstat_helper): Add dwVolumeSerialNumber argument.
Use for st_dev member unless 0 in which case pc.volser () is used.
2005-02-20 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (FindFirstVolumeA): Add.
(FindNextVolumeA): Add.
(FindVolumeClose): Add.
(GetVolumePathNamesForVolumeNameA): Add.
* fhandler.h (class fhandler_base): Declare new method fsync.
* fhandler.cc (fhandler_base::fsync): New method.
* syscalls.cc (fsync): Move functionality into fhandler method fsync.
Just call this method from here.
(sync_worker): New static function.
(sync): Fill with life for NT systems.
* wincap.h (wincaps::has_guid_volumes): New element.
* wincap.cc: Implement above element throughout.
2005-02-20 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (enum query_state): Add query_write_attributes state.
(fhandler_base::status.query_open): Add a bit to make room for more
states.
(class fhandler_base): Declare new method utimes.
(class fhandler_socket): Ditto.
(class fhandler_disk_file): Ditto.
(fhandler_disk_file::fhandler_disk_file): Add constructor with
path_conv parameter.
* fhandler.cc (fhandler_base::open): Add query_write_attributes
handling.
(fhandler_base::utimes): New method.
* fhandler_disk_file.cc (fhandler_disk_file::link): Simplify.
Open file with query_write_attributes instead of query_write_control.
(fhandler_disk_file::utimes): New method.
(fhandler_disk_file::fhandler_disk_file): Add constructor with
path_conv parameter setting pc member immediately.
* fhandler_socket.cc (fhandler_socket::fchmod): Use new
fhandler_disk_file constructor.
(fhandler_socket::fchown): Ditto.
(fhandler_socket::facl): Ditto.
(fhandler_socket::link): Ditto.
(fhandler_socket::utimes): New method.
* times.cc: Include dtable.h.
(timeval_to_filetime): Make non-static.
(utimes): Move functionality into fhandler method utimes. Just call
this method from here.
* winsup.h: Simplify declarations of time helper functions.
(timeval_to_filetime): Add extern declaration.
2005-02-19 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_base): Declare new method link.
(class fhandler_socket): Ditto.
(class fhandler_disk_file): Ditto.
* fhandler.cc (fhandler_base::open): Add FILE_WRITE_ATTRIBUTES
to query_write_control access flags.
(fhandler_base::link): New method.
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Don't try to
open with O_WRONLY since query_write_control includes
FILE_WRITE_ATTRIBUTES.
(fhandler_disk_file::fchown): Ditto.
(fhandler_disk_file::facl): Ditto.
(fhandler_disk_file::link): New method. Touch st_ctime on successful
link.
* fhandler_socket.cc (fhandler_socket::link): New method.
* syscalls.cc (link): Move functionality into fhandler method link.
Just call this method from here.
2005-02-19 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (class fhandler_socket): Declare new methods fchown,
fchmod and facl.
* fhandler_socket.cc (fhandler_socket::fstat): Handle AF_LOCAL
sockets.
(fhandler_socket::fchmod): New method.
(fhandler_socket::fchown): New method.
(fhandler_socket::facl): New method.
2005-02-19 Corinna Vinschen <corinna@vinschen.de>
* localtime.cc: Temporary implementation of setting __tzrule's offset
member to be used by strftime.
(__tzrule): New global variable.
(tzparse): Set __tzrule's offset member appropriately.
2005-02-17 Christopher Faylor <cgf@timesys.com>
* path.cc (path_conv::check): Set fs flag when a unix-domain socket
is detected.
2005-02-17 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::fstat): Set st_ctime if
has_changed flag is set.
(fhandler_disk_file::touch_ctime): Reset has_changed flag on success.
2005-02-17 Corinna Vinschen <corinna@vinschen.de>
* times.cc (utimes): Open files with FILE_WRITE_ATTRIBUTES first,
if that fails, try opeing with GENERIC_WRITE. Fix comments.
2005-02-15 Christopher Faylor <cgf@timesys.com>
* path.h (path_conv::issocket): Return true if device == FH_UNIX rather
than expecting path_conv to set a flag.
2005-02-11 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::raw_write): Mark as changed on
successful write.
* fhandler.h (fhandler_base::status_flags): Add 'has_changed' flag.
* fhandler_disk_file.cc (fhandler_disk_file::fchmod): Call
fhandler_disk_file's own open and close instead of open_fs and
close_fs. Mark as changed on success.
(fhandler_disk_file::fchown): Ditto.
(fhandler_disk_file::facl): Ditto.
(fhandler_disk_file::ftruncate): Ditto.
(fhandler_base::open_fs): Mark as changed when O_TRUNC flag on existing
file is set.
(fhandler_disk_file::close): Set st_ctime if has_changed flag is set.
2005-02-11 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::release): Reset ev here if it exists.
(cygthread::terminate_thread): Eliminate racy code which reset ev and
thread_sync. Remove a few nonsensical inuse checks. Exit at the
bottom.
(cygthread::detach): Rewrite to again try to ensure that we don't say
we're signalled when we are not signalled.
* fhandler.cc (fhandler_base::raw_read): Revert to signalling read
success quickly.
* pipe.cc (fhandler_pipe::close): Use base method to close handle.
* sigproc.h (WAIT_SIG_PRIORITY): Just trundle along at normal priority
to allow the pipe thread to do its thing if possible.
* pinfo.h (pinfo::zap_cwd): Declare new function.
(pinfo::zap_cwd): Move 'cd out of the way code' here.
(pinfo::exit): Use it here.
* spawn.cc (spawn_guts): And here.
2005-02-11 Corinna Vinschen <corinna@vinschen.de>
* times.cc (utimes): Open files with GENERIC_WRITE on file systems
not supporting ACLs.
2005-02-09 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Fix checking
lseek return code.
2005-02-08 Corinna Vinschen <corinna@vinschen.de>
* times.cc (timeval_to_filetime): Define first parameter const.
(utimes): Define second parameter to const according to SUSv3.
(utime): Ditto.
* include/sys/utime.h (utime) : Change declaration accordingly.
2005-02-08 Corinna Vinschen <corinna@vinschen.de>
* cygthread.cc (cygthread::detach): Just test thread handle after
signal arrived, don't wait infinitely for it.
2005-02-08 Christopher Faylor <cgf@timesys.com>
* pipe.cc (fhandler_pipe::read): Remove hold over from old read_state
implementation.
2005-02-06 Yitzchak Scott-Thoennes <sthoenna@efn.org>
* net.cc (cygwin_gethostbyname): Be more picky about what's a numeric
address string, and use tls in that case too.
2005-02-07 Christopher Faylor <cgf@timesys.com>
* exceptions.cc: Make windows_system_directory non-static.
* pinfo.cc (pinfo::exit): Change innocuous cd'ed location to one that
is more likely to exist.
2005-02-06 Corinna Vinschen <corinna@vinschen.de>
* path.cc (path_conv::check): Leave symlink expansion loop in case
a not-ENOENT error happens.
* cygheap.h (cygheap_fdmanip::fhandler_pipe *): New cast operator.
* pinfo.cc (_pinfo::commune_recv): Add PICOM_PIPE_FHANDLER handling.
(_pinfo::commune_send): Ditto.
(_pinfo::pipe_fhandler): New method.
* pinfo.h (enum picom): Add PICOM_PIPE_FHANDLER.
(_pinfo::pipe_fhandler): Declare.
* pipe.cc (fhandler_pipe::open): Rewrite. Allow to open foreign
pipe handles.
2005-02-03 Christopher Faylor <cgf@timesys.com>
* cygthread.h (cygthread::terminate_thread): Reflect return value.
* cygthread.cc (cygthread::detach): Be more careful about ensuring that
sigwait is properly waited for to avoid later missynchronization.
(cygthread::terminate_thread): Return true if thread was actually
terminated and all handles were closed.
* fhandler_base.cc (fhandler_base::raw_read): Use signal_read_state
rather than raw calls to win32 api.
(fhandler_base::read): Ditto.
* fhandler.h (fhandler_pipe::fixup_after_exec): Use method to create
read_state signalling.
(fhandler_pipe::create): Ditto.
* Makefile.in: Make some more files -fomit-frame-pointer.
2005-02-02 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_base::ftruncate): Define new virtual method.
(fhandler_disk_file::ftruncate): Ditto.
* fhandler.cc (fhandler_base::ftruncate): New method.
* fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Ditto.
* syscalls.cc (ftruncate64): Move functionality into fhandlers.
Call fhandler method from here.
2005-02-02 Corinna Vinschen <corinna@vinschen.de>
* pipe.cc (fhandler_pipe::dup): Fix conditionals in case of error.
2005-02-02 Corinna Vinschen <corinna@vinschen.de>
* times.cc (utimes): Mark st_ctime for update according to SUSv3.
2005-02-01 Christopher Faylor <cgf@timesys.com>
* fhandler_proc.cc (format_proc_partitions): Remove PartitionType check
since it could skip over partitions that are actually interesting.
2005-02-01 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::terminate_thread): Wait briefly for
notification event in the event that the thread was actually in the
process of exiting.
* pipe.cc (fhandler_pipe::dup): read_state is not supposed to be
inheritable. Fix that.
* path.cc (path_conv::check): Set symlen = 0 to avoid a compiler
warning.
* devices.h (devices::parsedisk): Declare new function.
* devices.in (devices::parsedisk): Define new function.
* dtable.cc (dtable::init_std_file_from_handle): Use device numbers
rather than name.
* fhandler_proc.cc (format_proc_partitions): Use parsedisk to generate
disk names from numeric codes. (This was broken on two of my
systems previously and is still broken now)
2005-02-01 Corinna Vinschen <corinna@vinschen.de>
* pipe.cc (fhandler_pipe::open): Allow re-opening of /proc/<pid>/fd
pipes of the current process.
2005-02-01 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::get_proc_fd_name): Don't generate
"device:" entry.
* fhandler.h (fhandler_socket::open): New method.
(fhandler_pipe::open): New method.
* fhandler_proc.cc (fhandler_proc::exists): Return -2 in case of
/proc/self.
* fhandler_process.cc (fhandler_process::exists): Return -2 in
case of symlinks, -3 for pipes and -4 for sockets.
(fhandler_process::fstat): Handle pipes and sockets.
(fhandler_process::open): Handle opening /proc/<pid>/fd.
(fhandler_process::fill_filebuf): Generate empty names for
non exisiting file descriptors.
* fhandler_socket.cc (fhandler_socket::get_proc_fd_name): Always
generate "socket:[number]" strings as on Linux.
(fhandler_socket::open): New method.
(fhandler_socket::fstat): Always return socket type.
* path.cc (symlink_info::set): Remove unused second parameter.
(path_conv::check): Handle pipes and sockets in /proc.
Set correct device type for AF_LOCAL sockets.
* pinfo.cc (_pinfo::commune_recv): Generate empty names for
non exisiting file descriptors.
(_pinfo::fd): Ditto.
* pipe.cc (fhandler_pipe::open): New method.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* path.h (path_conv::set_name): Declare new function.
* path.cc (path_conv::set_name): Define new function.
* fhandler.h (fhandler_dev_null::open): Declare new function.
* fhandler.cc (fhandler_dev_null::open): Define new function.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* smallprint.c (rnarg): Use long rather than unsigned long so that we
get proper sign extension.
2005-01-31 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (set_traverse): New function.
(parse_thing): Add "traverse" option. Sort options alphabetically.
(environ_init): On NT, switch on traverse checking by default.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* smallprint.c (__rn): Regparmize.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* smallprint.c (rnarg): New macro.
(rnargLL): Ditto.
(__rn): Rename from 'rn', add a mask argument, and use the mask
argument to control how many significant digits to care about.
(__small_vsprintf): Use __rn, rnarg, rnargLL, as appropriate.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::exit): Only return low-order 16 bits when exiting.
2005-01-31 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc (format_process_maps): Get destbuf argument by
reference. Allow resizing of destbuf as necessary. Fix string
handling.
2005-01-31 Corinna Vinschen <corinna@vinschen.de>
* cygheap.h (class cygheap_fdenum): New class to enumerate used
fhandlers.
* dtable.h (class dtable): Add cygheap_fdenum as friend class.
* fhandler.h (fhandler_base::get_proc_fd_name): New virtual method
to return a name for /proc/<pid>/fd.
(fhandler_socket::get_proc_fd_name): Ditto.
(fhandler_pipe::get_proc_fd_name): Ditto.
(fhandler_virtual::opendir): Make virtual method.
(fhandler_process::opendir): New method.
* fhandler.cc (fhandler_base::get_proc_fd_name): New method.
* fhandler_process.cc: Include ctype.h.
(PROCESS_FD): Define.
(process_listing): Add "fd".
(fhandler_process::exists): Fix comment. Return 1 in case of "fd"
directory. Handle files below "fd".
(fhandler_process::fstat): Drop "self" handling. Set correct link
count for directories.
(fhandler_process::opendir): New method to handle "fd" directory.
(fhandler_process::readdir): Add "fd" handling.
(fhandler_process::open): Drop "self" handling.
(fhandler_process::fill_filebuf): Ditto. Add "fd" handling. Fix
"maps" output string.
* fhandler_registry.cc (fhandler_registry::fstat): Set correct link
count for directories.
* fhandler_socket.cc (fhandler_socket::get_proc_fd_name): New method.
* path.cc (symlink_info::set): Fix thinko.
* pinfo.cc (_pinfo::commune_recv): Rename pathbuf to path throughout.
Drop local path variable in PICOM_FIFO case. Fix debug output.
Close handles as early as possible. Add PICOM_FDS and PICOM_FD
handling.
(_pinfo::commune_send): Add PICOM_FDS and PICOM_FD handling.
(_pinfo::fd): New method.
(_pinfo::fds): New method.
* pinfo.h (enum picom): Add PICOM_FDS and PICOM_FD.
(_pinfo::fd): Declare.
(_pinfo::fds): Declare.
* pipe.cc (fhandler_pipe::get_proc_fd_name): New method.
2005-01-29 Corinna Vinschen <corinna@vinschen.de>
* smallprint.c (rn): Change uval to unsigned long long to fix 64 bit
handling.
* fhandler_process.cc (format_process_maps): Print major, minor and
inode numbers correctly.
2005-01-29 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (GetModuleFileNameExA): Add.
(GetModuleInformation): Add.
(QueryWorkingSet): Add.
* fhandler.h (fhandler_virtual::get_filebuf): New method.
* fhandler_proc.cc (PROC_SELF): Define.
(proc_fhandlers): Change type of self to FH_PROC.
(fhandler_proc::exists): Return -3 if self.
(fhandler_proc::fstat): Handle self as symlink.
(fhandler_proc::fill_filebuf): Handle self.
* fhandler_process.cc: Include psapi.h.
(PROCESS_EXENAME): Remove.
(PROCESS_MAPS): Define.
(PROCESS_ROOT): Define.
(PROCESS_EXE): Define.
(PROCESS_CWD): Define.
(process_listing): Remove "exename", add "maps, "root", "exe" and
"cwd" elements.
(fhandler_process::exists): Return -2 for symlinks.
(fhandler_process::fstat): Handle symlinks.
(fill_filebuf): Evaluate pid if pid is 0. Use exename handling for
exe. Handle maps, root and cwd.
(format_process_maps): New function evaluating "maps".
* path.cc (symlink_info::set): New method to fill symlink_info
with data matching virtual symlinks.
(path_conv::check): Handle virtual symlinks.
* pinfo.cc (_pinfo::commune_recv): Add PICOM_CWD and PICOM_ROOT
handling.
(_pinfo::commune_send): Ditto.
(_pinfo::root): New function.
(_pinfo::cwd): New function.
* pinfo.h (enum picom): Add PICOM_CWD and PICOM_ROOT.
(_pinfo::root): Declare.
(_pinfo::cwd): Declare.
2005-01-29 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (new): Add a little more debugging.
* thread.cc (pthread_null::exit): Add a _my_tls.remove() for safety.
2005-01-28 Christopher Faylor <cgf@timesys.com>
* cygtls.cc (cygtls::call2): Move socket cleanup.
(cygtls::remove): Move socket cleanup here. Don't use _my_tls to
reference it.
2005-01-26 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::init): Avoid a compiler warning.
2005-01-25 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (setpriority): Implement PRIO_PGRP, PRIO_USER and
setting priority in other Cygwin processes.
(getpriority): Implement PRIO_PGRP, PRIO_USER and getting nice value
from other processes.
2005-01-26 Pierre Humblet <pierre.humblet@ieee.org>
* path.cc (path_conv::check): Return ENOTDIR rather than ENOENT
when a component is not a directory. Remove unreachable code.
(digits): Delete.
2005-01-25 Christopher Faylor <cgf@timesys.com>
* pinfo.h (pinfo::init): Make third parameter non-optional and
propagate change throughout.
* pinfo.cc (set_myself): Pass INVALID_HANDLE_POINTER if h is NULL.
(pinfo::init): Make third parameter non-optional. Eliminate use of
PID_EXECED as an argument. Put setting of handle back inside loop but
reorganize to try to open it only when necessary.
2005-01-25 Corinna Vinschen <corinna@vinschen.de>
* cygwin.din: Export getpriority and setpriority.
* fork.cc (fork_parent): Copy parent's nice value into child.
* spawn.cc (spawn_guts): Ditto.
* miscfuncs.cc (winprio_to_nice): New function.
(nice_to_winprio): Ditto.
* pinfo.cc (pinfo_init): If parent is not a Cygwin process, set
default nice value according to current Win32 priority class.
* pinfo.h (class _pinfo): Add nice member.
* syscalls.cc (setpriority): New function, only implementing
PRIO_PROCESS for now.
(getpriority): Ditto.
(nice): Just call setpriority.
* wincap.h (wincaps::has_extended_priority_class): New element.
* wincap.cc: Implement above element throughout.
* winsup.h: Add prototypes for winprio_to_nice and nice_to_winprio.
* include/limits.h (NZERO): New define.
* include/cygwin/types.h (id_t): New datatype.
* include/cygwin/version.h: Bump API minor version.
* include/sys/resource.h: Add PRIO_XXX defines and prototypes for
getpriority and setpriority.
2005-01-25 Corinna Vinschen <corinna@vinschen.de>
* path.cc (realpath): Allow to expand with .exe suffix.
2005-01-22 Christopher Faylor <cgf@timesys.com>
* spawn.cc (spawn_guts): Perform same "cd" as in pinfo::exit below to
make sure that a stub process does not keep the current working
directory busy after the "execed" process has exited.
2005-01-22 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::init): Move everything but the MapViewOfFileEx out
of the loop since trying multiple times to call CreateFileMapping
doesn't make much sense. Try to structure the loop a little better so
that exiting with a break does the right thing.
(pinfo::release): Release shared memory area if it exists and close
handle if it exists.
2005-01-22 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::maybe_set_exit_code_from_windows): Make sure that
process has exited before getting an error code.
(pinfo::exit): "cd" to innocuous location before exiting to make sure
that process does not keep the current working directory busy while it
is in the process of really exiting.
2005-01-18 Corinna Vinschen <corinna@vinschen.de>
* autoload.cc (CoInitialize): Remove.
(CoUninitialize): Remove.
(CoCreateInstance): Remove.
(CoTaskMemFree): Add.
(SHGetDesktopFolder): Add.
* path.cc (shortcut_header): Remove.
(shortcut_initalized): Remove.
(GUID_shortcut): New static GUID.
(struct win_shortcut_hdr): New struct describing Windows shortcut
header structure.
(symlink_worker): Rewrite creating Windows shortcuts. Create
ITEMIDLIST if target exists. Only write once.
(cmp_shortcut_header): Use win_shortcut_hdr structure for comparison.
(check_shortcut): Rewrite to read only once from file. Allow skipping
an ITIMIDLIST in the file.
2005-01-16 Christopher Faylor <cgf@timesys.com>
* pinfo.h (maybe_set_exit_code_from_windows): Renamed from
set_exit_state.
* pinfo.cc (pinfo::exit): Use renamed function.
(proc_waiter): Ditto. Make a copy of input argument to avoid problems
when procs array is shuffled. Flag when copy is made so that
remove_proc knows when it is safe to reshuffle.
* sigproc.cc (proc_terminate): Don't flag process_state as PID_EXITED.
(remove_proc): Wait for waiter to finish copying pinfo element before
moving it (an actual wait should be an extremely rare event).
2005-01-15 Christopher Faylor <cgf@timesys.com>
* init.cc (dll_entry): Remove unused extern.
* include/sys/cygwin.h: Remove PID_ZOMBIE.
* pinfo.h: Rename EXITCODE_* defines.
(pinfo::set_exit_state): Remove parameter.
* pinfo.cc (set_exit_state): Remove parameter. Reverse sense of test
so that exitcode is checked for having been set rather than not having
been set. Set flag when exitcode has been established. Don't set
PID_STATE here.
(pinfo::init): Remove exitcode initialization.
(pinfo::exit): Reflect change in EXITCODE_* naming. Set flag when
exitcode has been established. Reflect change in arguments to
set_process_state.
(proc_waiter): Reflect change in arguments to set_process_state. Set
process_state here and only here.
* fhandler_process.cc (fhandler_process::fill_filebuf): Reflect removal
of PID_ZOMBIE define.
(format_process_stat): Ditto.
(format_process_status): Ditto.
* sigproc.cc (pid_exists): Ditto.
(stopped_or_terminated): Ditto. Make sure that only low-order 16 bits of
exitcode are used.
* spawn.cc (spawn_guts): Reflect change in EXITCODE_* naming.
2005-01-15 Christopher Faylor <cgf@timesys.com>
* sigproc.cc (sig_send): Don't complain if attempt to send signal to
myself fails after I've "execed".
2005-01-14 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_disk_file::facl): Pretend successful
SETACL if no acls are available.
* fhandler.cc (fhandler_base::facl): Implement to return sensible
values on GETACL and GETACLCNT. Pretend successful SETACL.
* fhandler_virtual.cc (fhandler_virtual::facl): Ditto.
2005-01-13 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_disk_file::touch_ctime): Declare.
* fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): New method
to set file's ctime.
(fhandler_disk_file::fchmod): Try opening file for writing first.
Set file's ctime on success.
(fhandler_disk_file::fchown): Ditto.
(fhandler_disk_file::facl): Ditto.
2005-01-13 Corinna Vinschen <corinna@vinschen.de>
* pinfo.cc (pinfo::exit): Don't access self after releasing it.
* path.h (path_conv::path_conv): Fill path with native device
name in case of device argument.
2005-01-13 Corinna Vinschen <corinna@vinschen.de>
* fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup
for child, not for parent.
2005-01-13 Christopher Faylor <cgf@timesys.com>
* init.cc (dll_entry): Nuke attempt to set exit code since parent will
use windows exit code if needed.
* pinfo.cc (pinfo::exit): Move release() here to minimize pid creation
race (suggested by Pierre Humblet).
2005-01-12 Christopher Faylor <cgf@timesys.com>
Reorganize header file inclusion throughout so that cygerrno.h comes
first.
* fhandler.h (select_record::thread_errno): Save any encountered errno
here.
(select_record::set_select_errno): New function.
(select_record::saw_error): New function.
(select_record::select_record): Initialize thread_errno to zero.
* select.cc (set_handle_or_return_if_not_open): Set thread_errno on
failure.
(select_stuff::wait): Record errno for later resurrection in calling
thread.
(peek_serial): Ditto.
2005-01-12 Christopher Faylor <cgf@timesys.com>
* syscalls.cc (system): Use "/bin/sh" as per linux and (sorta) SUSv3.
2005-01-12 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::exit): Don't assume that this == myself.
2005-01-11 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::init): Don't close input handle on temporary (?)
failure.
2005-01-11 Christopher Faylor <cgf@timesys.com>
* pinfo.h (_pinfo::set_exit_state): Declare new function.
(pinfo::exit): Move here from _pinfo::exit.
* sigproc.cc (child_info::sync): Use new function to set exitcode and
process_state.
* pinfo.cc (_pinfo::exit): Ditto.
(proc_waiter): Ditto.
(_pinfo::set_exit_state): Define new function.
(_pinfo::dup_proc_pipe): Close handle when there is no parent process
around to care about the exit value.
* dcrt0.cc (dll_crt0_0): Move subproc_ready synchronization later to
make sure that myself is still mapped in parent.
(do_exit): Reflect movement to pinfo::exit.
(__api_fatal): Ditto.
* exceptions.cc (signal_exit): Ditto.
* errno.cc (errmap): Map PROC_NOT_FOUND.
* init.cc (dll_entry): Release myself before exiting.
* sigproc.cc (proc_can_be_signalled): Set errno appropriately.
(sig_send): Ditto. Also remove ill-advised test for !myself->sendsig
since this is an indication of a process which is still initializating
-- it is not an error.
(child_info::sync): Don't set exitcode here. Assume that will happen
in proc_waiter, if necessary.
* spawn.cc (spawn_guts): Delay "wait_for_myself" logic until later.
Don't wait at all if the process has already exited. Reflect movement
to pinfo::exit.
2005-01-11 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (build_env): Disallow empty strings and strings starting
with '=' in Win32 environment.
2005-01-08 Pierre Humblet <pierre.humblet@ieee.org>
* syscalls.cc (seteuid32): Only change the default dacl when
seteuid succeeds. Do not close HKCU.
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc: Use strcasematch instead of strcasecmp
throughout.
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Fix behaviour in case of renaming directories
according to SUSv3.
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
* fhandler_disk_file.cc (fhandler_base::open_fs): Don't allow
opening directories for writing.
2005-01-06 Christopher Faylor <cgf@timesys.com>
* timer.cc (timer_thread): Pass sigev pointer value as per SuSv3 rather
than pointer to sigev.
2005-01-05 Christopher Faylor <cgf@timesys.com>
* dcrt0.cc (multiple_cygwin_problem): Reorganize error message to not
always talk about a "version" when it's not a version.
(dll_crt0_0): Change info passed to multiple_cygwin_problem to be a
little more precise.
* shared.cc (user_shared_initialize): Ditto.
(shared_info::initialize): Ditto.
2005-01-03 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (_pinfo::dup_proc_pipe): Can't close proc pipe when execing
or we will suffer an exit code race.
2005-01-03 Corinna Vinschen <corinna@vinschen.de>
* signal.cc (abort): Call _GLOBAL_REENT's __cleanup.
2005-01-03 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (setmode): Call _fwalk with _GLOBAL_REENT.
2005-01-01 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::stub): Set inuse to false when exiting.
(cygthread::cygthread): Actually pass name as argument to debugging
output to avoid SEGV when strace'ing.
(cygthread::release): Don't set stack_ptr to NULL, since it is only set
once on first entry to a stub not on each stub iteration.
(cygthead::exit_thread): Remove obsolete function.
* cygthread.h (cygthread::exit_thread): Ditto.
2005-01-01 Christopher Faylor <cgf@timesys.com>
* shared.cc (open_shared): Don't attempt VirtualAlloc magic if first
attempt to map memory fails.