later. Add a comment.
* fork.cc (resume_child): Make void.
(frok::parent): Only zero pi when necessary. Explicitly zero si. Set
this_errno when child_copy fails. Accommodate change to resume_child.
* sigproc.cc (sigalloc): Move global_sigs initialization here.
(sigproc_init): Move global_sigs.
(sig_send): Just check for flush signals once.
* wincap.h: Define supports_setconsolectrlhandler_null throughout.
* wincap.cc: Ditto.
previously initialized.
* cygtls.h (_cygtls::initialized): Move nearer the end to catch situation when
Windows 98 mysteriously changes pieces of cygtls when thread is detaching.
* gendef (__sigfe_maybe): Simplify slightly.
* tlsoffsets.h: Regenerate.
(CYGTLSMAGIC): Delete.
* dcrt0.cc (dll_crt0_0): Call sigproc_init during init startup.
(_dll_crt0): Don't worry about sync_startup. Just wait for sigthread here.
* dll_init.cc (cygwin_detach_dll): Only pick up tls version of retaddr if we
have a valid tls.
* fork.cc (frok::child): Remove sigproc_init initialization since it happens
much earlier now.
* gendef: Recognize SIGFE_MAYBE.
(fefunc): Generate calls to _sigfe_maybe, if appropriate.
(_sigfe_maybe): New function.
* init.cc (search_for): Always initialize search_for, even on fork.
(calibration_thread): Delete.
(calibration_id): Delete.
(prime_threads): Delete.
(munge_threadfunc): Remove calibration_thread special case. Avoid calling
thread function if we haven't yet hit the "search_for" thread.
(dll_entry): Remove prime_threads call. Only call munge_threadfunc when
hwait_sig is active. Ditto. for _my_tls.remove ();
* sigproc.cc (hwait_sig): Make global.
(sigproc_init): Don't bother with sync_startup.
(sig_send): Treat flush as a no-op when signals are held.
(wait_sig): Cause signals to be held after fork.
(NtOpenDirectoryObject): Define.
(NtQueryDirectoryObject): Define.
* fhandler_proc.cc: Include ctype.h and wchar.h.
(format_proc_partitions): Revamp loop over existing harddisks by
scanning the NT native \Device object directory and looking for
Harddisk entries.
* ntdll.h: Rearrange system call declarations alphabetically.
(DIRECTORY_QUERY): Define.
(struct _DIRECTORY_BASIC_INFORMATION): Define.
(NtOpenDirectoryObject): Declare.
(NtQueryDirectoryObject): Declare.
* dll_init.cc (cygwin_detach_dll): Use new tls function to find return address
since this function is now signal guarded.
(update_envptrs): Remove unneeded braces.
* syscalls.cc (statvfs): Coerce full_path to avoid a gcc warning.
* fhandler_disk_file.cc (fhandler_disk_file::opendir): Move storing
fhandler in file descriptor table to some point very late in function
to avoid double free'ing. Add comment to explain what happens.
Add label free_mounts and don't forget to delete __DIR_mounts structure
if NtOpenFile fails.
dirent_saw_dev and dirent_saw_proc.
(fhandler_cygdrive::open): Declare.
(fhandler_cygdrive::close): Declare.
* fhandler_disk_file.cc (class __DIR_mounts): Move to beginning of file.
(__DIR_mounts::check_mount): New parameter to indicate if inode number
is needed in calling function or not. Add /proc and /cygdrive handling.
(__DIR_mounts::check_missing_mount): Ditto.
(path_conv::ndisk_links): Use __DIR_mounts class to create correct
hardlink count for directories with mount points in them.
(fhandler_disk_file::readdir_helper): Remove /dev, /proc and /cygdrive
handling.
(fhandler_cygdrive::open): New method.
(fhandler_cygdrive::close): New method.
(fhandler_cygdrive::fstat): Always return fixed inode number 2 and
fixed link count of 1. Drop call to set_drives.
(fhandler_cygdrive::opendir): Drop call to get_namehash.
(fhandler_cygdrive::readdir): Handle "." entry to return fixed inode
number 2.
* cygthread.cc (cygthread::callfunc): Revert below change. Make ev a manual
reset event again. so that it will be reset by WaitFor*Object as appropriate.
(cygthread::stub): Ditto.
(cygthread::terminate_thread): Reset ev if it was found to have been set.
it will be reset by WaitFor*Object as appropriate.
(cygthread::stub): Ditto.
(cygthread::terminate_thread): Remove forced setting of thread termination.
__d_internal.
* fhandler_disk_file.cc (struct __DIR_cache): Remove useless "typedef".
(d_dirname): Remove useless "struct".
(d_cachepos): Ditto.
(d_cache): Ditto.
(class __DIR_mounts): New class, implementing mount point tracking
for readdir.
(d_mounts): New macro for easy access to __DIR_mounts structure.
(fhandler_disk_file::opendir): Allocate __DIR_mounts structure and
let __d_internal element of dir point to it.
(fhandler_disk_file::readdir_helper): Add mount points in the current
directory, which don't have a real directory backing them.
Don't generate an inode number for /dev. Add comment, why.
(fhandler_disk_file::readdir): Move filling fname to an earlier point.
Check if current entry is a mount point and evaluate correct inode
number for it.
(fhandler_disk_file::readdir_9x): Ditto.
(fhandler_disk_file::rewinddir): Set all mount points in this directory
to "not found" so that they are listed again after calling rewinddir().
(fhandler_disk_file::closedir): Deallocate __DIR_mounts structure.
* path.cc (mount_info::get_mounts_here): New method to evaluate a list
of mount points in a given parent directory.
* shared_info.h (class mount_info): Declare get_mounts_here.
under NT or suffer memory corruption.
(fhandler_disk_file::readdir_helper): Avoid else with a return. Just calculate
extension location once when doing symlink checks.
(fhandler_disk_file::readdir): Make debug output more useful.
(fhandler_disk_file::readdir_9x): Ditto. Eliminate redundant variable.
(sig_dispatch_pending): Don't check sigq since that's racy.
(sig_send): Set sigheld flag if __SIGHOLD is specified, reset it if __SIGNOHOLD
is specified. Ignore flush signals if we're holding signals.
* exceptions.cc (inside_kernel): Reverse return values to reflect function
name. Return true if we're in cygwin1.dll or if we're executing in dll_entry.
(_cygtls::interrupt_now): Reflect reversal of inside_kernel return value.
* hookapi.cc (cygwin_hmodule): Remove declaration.
* init.cc (dll_entry): Use in_dllentry global to record that we are executing
in dllentry.
path_conv::hasgood_inode.
(path_conv::is_samba): New method.
(fhandler_base::fstat_by_handle): Don't even try to use
FileIdBothDirectoryInformation on Samba.
* path.h (class path_conv): Declare is_samba method.
* exceptions.cc (sigset): New function.
(sigignore): New function.
* include/cygwin/signal.h (SIG_HOLD): Define.
(sigignore): Declare.
(sigset): Declare.
* include/cygwin/version.h: Bump API minor number to 154.
on NT since it is the logical start time of the "process".
* pinfo.cc (set_myself): Don't set start time when it should have already been
set previously.
spawn to determine environment variables which should be converted back to
windows form.
(cygwin_internal): Reflect setup_winenv -> sync_winenv name change.
* include/sys/cygwin.h: Ditto.
sys_wcstombs.
* fhandler_disk_file.cc (fhandler_disk_file::readdir): Call sys_wcstombs
instead of just wcstombs to accomodate OEM codepages.
* miscfuncs.cc (sys_wcstombs): Split len argument in source and target
length. Always 0-terminate result in target string.
* security.cc (lsa2wchar): Remove unused function.
(lsa2str): Ditto.
(get_lsa_srv_inf): Ditto.
(get_logon_server): Accomodate new argument order in call to
sys_wcstombs.
(get_user_groups): Ditto.
(get_user_local_groups): Ditto.
(get_priv_list): Call sys_wcstombs directly instead of lsa2str.
* uinfo.cc (cygheap_user::ontherange): Accomodate new argument order
in call to sys_wcstombs.
* winsup.h (sys_wcstombs): Change prototype to match new argument order.