summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <cgf@redhat.com>2004-05-25 20:10:52 +0000
committerChristopher Faylor <cgf@redhat.com>2004-05-25 20:10:52 +0000
commit37a52a810053d052f153ddbe68b09c615aaa1720 (patch)
tree3e3d98d72592d649ca82802dc35b18a80e01e357
parent69a7b5f79888513741e65a54216d7756474b76c2 (diff)
downloadgdb-37a52a810053d052f153ddbe68b09c615aaa1720.tar.gz
Knock down version number.
-rw-r--r--winsup/cygwin/ChangeLog2515
-rw-r--r--winsup/cygwin/include/cygwin/version.h320
2 files changed, 2835 insertions, 0 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
new file mode 100644
index 00000000000..ccb0e83a1b7
--- /dev/null
+++ b/winsup/cygwin/ChangeLog
@@ -0,0 +1,2515 @@
+2004-05-25 Christopher Faylor <cgf@alum.bu.edu>
+
+ * winbase.h: Semi-revert previous patch as it caused strange behavior.
+ Use syntax similar to that recommended in mingw-dvlpr.
+
+2004-05-25 Christopher Faylor <cgf@alum.bu.edu>
+
+ * winbase.h: Add proper attributions for memory operands throughout.
+
+2004-05-24 Christopher Faylor <cgf@alum.bu.edu>
+
+ * include/cygwin/version.h: Bump api minor version number.
+
+2004-05-24 Christopher Faylor <cgf@alum.bu.edu>
+
+ * cygwin.din: Export atoll.
+
+2004-05-20 Christopher Faylor <cgf@alum.bu.edu>
+
+ * tty.cc (tty_list::allocate_tty): Leave tty_mutex armed on successful
+ return from !with_console
+ * fhandler_tty.cc (fhandler_pty_master::open): Release tty_mutex here
+ after all initialization is done.
+
+2004-05-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * grp.cc (getgrgid_r): Replace struct group by struct __group32 in
+ argument definition.
+ (getgrnam_r): Ditto.
+
+2004-05-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygwin.din: Add symbols flockfile, ftrylockfile, funlockfile,
+ getgrgid_r, getgrnam_r and getlogin_r.
+ * grp.cc (getgrgid_r): New function.
+ (getgrnam_r): Ditto.
+ * syscalls.cc (flockfile): Ditto.
+ (ftrylockfile): Ditto.
+ (funlockfile): Ditto.
+ * sysconf.cc (sysconf): Return LOGIN_NAME_MAX in case of
+ _SC_LOGIN_NAME_MAX.
+ * thread.cc (__cygwin_lock_trylock): Define int. Return value from
+ call to pthread_mutex_trylock.
+ * uinfo.cc (getlogin_r): New function.
+ * include/limits.h: Define LOGIN_NAME_MAX.
+ * include/cygwin/version.h: Bump API minor number.
+ * include/sys/lock.h: Add declarations for __cygwin_lock_xxx functions.
+ * include/sys/stdio.h: Add define for _ftrylockfile.
+
+2004-05-17 Christopher Faylor <cgf@alum.bu.edu>
+
+ * tty.cc (tty_list::init): Move hmaster initialization earlier to
+ prevent compilation error.
+
+2004-05-17 Christopher Faylor <cgf@alum.bu.edu>
+
+ Change the name "title_mutex" to "tty_mutex" throughout.
+ * tty.h (tty_list::allocate_tty): Turn argument into a boolean.
+ * tty.cc (tty_list::init): Protect entire allocation operation with
+ tty_mutex (formerly title_mutex) to protect against allocation races.
+
+2004-05-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_socket.cc (fhandler_socket::recvfrom): Use original flags
+ value in each WSARecvFrom call.
+ (fhandler_socket::recvmsg): Ditto. Reformat slightly.
+
+2004-05-15 Christopher Faylor <cgf@alum.bu.edu>
+
+ * cygthread.cc (cygthread::is): Eliminate.
+ * cygthread.h (cygthread::is): Eliminate declaratin.
+ * fhandler_console.cc (fhandler_console::read): Only wait for
+ signal_arrived in the main thread.
+ * fhandler_socket.cc: Include new "wininfo.h".
+ (fhandler_socket::ioctl): Use 'winmsg' rather than 'gethwnd()'.
+ * sync.cc (muto::grab): Define new function.
+ (muto::acquire): Use tls pointer rather than tid.
+ (muto::acquired): Ditto.
+ (muto::reset): Delete.
+ (muto::release): Ditto. Also implement "close on last release".
+ * sync.h (muto::tid): Delete.
+ (muto::tls): New field.
+ (muto::ismine): Delete.
+ (muto::owner): Delete.
+ (muto::unstable): Delete.
+ (muto::reset): Delete.
+ (muto::upforgrabs): New method.
+ (muto::grab): Ditto.
+ (new_muto_name): New define.
+ * wininfo.h: New file.
+ (wininfo): New class.
+ * window.cc: Rework throughout to use winfo class for controlling
+ invisible window operation.
+ (gethwnd): Delete definition.
+ * winsup.h (gethwnd): Delete declaration.
+
+2004-05-15 Christopher Faylor <cgf@alum.bu.edu>
+
+ * cygheap.h: Remove some parameter names from declarations throughout.
+ (cygheap::set): Reflect changes in declaration for arguments and return
+ value from previous checkin.
+
+2004-05-15 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * cygheap.h (cwdstuff::set): Modify return value and arguments.
+ * path.cc (chdir): Specify PC_POSIX. Do not call SetCurrentDirectory.
+ Set posix_cwd in a way that does not break find.exe. Change call to
+ cwd.set.
+ (cwdstuff::get_initial): Do not call GetCurrentDirectory here.
+ (cwdstuff::set): Call SetCurrentDirectory and GetCurrentDirectory as
+ needed.
+
+2004-05-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (path_conv::check): Don't bail out with error if path is "//".
+
+2004-05-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygheap.h (struct init_cygheap): Add mt_h member.
+ * fhandler_tape.cc (mt_h): Drop in favor of cygheap based handle.
+ (mtinfo_init): Use cygheap->mt_h handle. Protect it.
+
+2004-05-12 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * tty.h: Remove the %d or %x from all cygtty strings.
+ (tty::open_output_mutex): Only declare.
+ (tty::open_input_mutex): Ditto.
+ (tty::open_mutex): New definition.
+ * fhandler_tty.cc (fhandler_tty_slave::open): Declare buf with
+ size CYG_MAX_PATH and replace __small_printf calls by shared_name.
+ * tty.cc (tty::create_inuse): Ditto.
+ (tty::get_event): Ditto.
+ (tty::common_init): Ditto.
+ (tty::open_output_mutex): New method definition.
+ (tty::open_input_mutex): Ditto.
+ (tty::open_mutex): New method.
+
+2004-05-11 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Set file attributes to correct
+ value when creating files.
+ * path.h (class path_conv): Add write accessor for file_attributes.
+
+2004-05-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_socket): Add "owner" status flag.
+ * fhandler_socket.cc (wait): Take flag parameter to take FD_OOB into
+ account. Don't wait infinitely.
+ (fhandler_socket::recvfrom): Also wait for FD_OOB if socket owner.
+ (fhandler_socket::recvmsg): Ditto.
+ (fhandler_socket::sendto): Ditto.
+ (fhandler_socket::sendmsg): Ditto.
+ (fhandler_socket::fcntl): Set owner status flag if F_SETOWN with own
+ pid is called.
+
+2004-05-09 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * environ.cc (build_env): Only try to construct required-but-missing
+ variables while issetuid.
+
+2004-05-08 Pierre Humblet <pierre.humblet@ieee.org>
+ Christopher Faylor <cgf@timesys.com>
+
+ * syscalls.cc: Include environ.h.
+ (chroot): Set errno in case of path error. Call getwinenv.
+ * environ.cc: Remove the NO_COPY attribute of conv_envvars.
+
+2004-05-07 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_mem.cc (fhandler_dev_mem::fhandler_dev_mem): Move
+ initialization of "mem_size" from here...
+ (fhandler_dev_mem::open): ...to here. Fix typo in FH_PORT case.
+
+2004-05-07 Gerd Spalink <Gerd.Spalink@t-online.de>
+
+ * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::stop): Move delete of
+ bigwavebuffer_ so that it is always cleaned, also in child processes.
+ (fhandler_dev_dsp::Audio_in::stop): Ditto.
+ (fhandler_dev_dsp::close): Stop audio play immediately in case of
+ abnormal exit.
+
+2004-05-07 Corinna Vinschen <corinna@vinschen.de>
+
+ Revert code reversion from 2004-04-03. So, revert to async I/O again.
+ * fhandler.h (status): Add "closed" flag.
+ (prepare): New method declaration.
+ (wait): Ditto.
+ (release): Ditto.
+ * fhandler_socket.cc: Don't include wsock_event.h.
+ (fhandler_socket::prepare): New method, moved from wsock_event.
+ (fhandler_socket::wait): Ditto.
+ (fhandler_socket::release): New method.
+ (fhandler_socket::recvfrom): Simplify loop.
+ (fhandler_socket::recvmsg): Ditto.
+ (fhandler_socket::sendto): Ditto.
+ (fhandler_socket::sendmsg): Ditto.
+ * net.cc: Don't include wsock_event.h.
+ (wsock_event::prepare): Remove.
+ (wsock_event::wait): Ditto.
+ * wsock_event.h: Remove.
+
+2004-05-06 Christopher Faylor <cgf@alum.bu.edu>
+
+ * thread.cc (pthread::create): Move postcreate call to avoid a
+ potential race.
+ (pthread::cancelable_wait): Don't allow signal interrupt unless main
+ thread.
+
+2004-05-07 Pierre Humblet <pierre.humblet@ieee.org>
+ Christopher Faylor <cgf@timesys.com>
+
+ * path.cc (mount_info::conv_to_posix_path): Return proper status when
+ chrooted.
+
+2004-05-06 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (path_conv::check): Strip trailing dots and spaces and
+ return error if the final component had only dots and spaces.
+ (normalize_posix_path): Revert 2004-04-30.
+ (chdir): Do not check for trailing spaces. Do not set native_dir
+ to c:\ for virtual devices. Pass only native_dir to cwd.set.
+ (cwdstuff::set): Assume posix_cwd is already normalized.
+
+2004-05-04 Christopher Faylor <cgf@alum.bu.edu>
+
+ * path.cc (normalize_win32_path): Detect components with only dots.
+ Remove a final . if it follows '\\'.
+ (mount_info::conv_to_win32_path): Only backslashify the path when no
+ mount is found.
+ (chdir): Do not look for components with only dots.
+
+2004-05-04 Pierre Humblet <pierre.humblet@ieee.org>
+ Christopher Faylor <cgf@alum.bu.edu>
+
+ * path.cc (is_unc_share): Remove redundant tests.
+
+2004-05-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * crt0.o (mainCRTStartup): 16 byte align stack for main function.
+
+2004-05-04 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (check_sysfile): Don't scan string twice.
+
+2004-05-03 Corinna Vinschen <corinna@vinschen.de>
+
+ * dir.cc (writable_directory): Remove.
+ (mkdir): Remove call to writable_directory.
+ * syscalls.cc (unlink): Ditto.
+ (rename): Ditto.
+ * winsup.h (writable_directory): Remove declaration.
+
+2004-04-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Call path_conv::get_nt_native_path
+ for evaluating NT path.
+ * path.cc (normalize_posix_path): Remove trailing dots and spaces.
+ (path_conv::get_nt_native_path): New function.
+ * path.h (class path_conv): Declare get_nt_native_path method.
+
+2004-04-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Fix NT native path evaluation
+ to allow opening serial ports.
+
+2004-04-30 DJ Delorie <dj@redhat.com>
+
+ * init.cc (threadfunc_fe): Hack to make thread stacks always 16
+ byte aligned.
+
+2004-04-21 Yitzchak Scott-Thoennes <sthoenna@efn.org>
+
+ * syscalls.cc (lseek64): Fix debug_printf format string.
+ (truncate64): Ditto.
+
+2004-04-21 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::lseek): Force res to -1 on error.
+
+2004-04-20 Christopher Faylor <cgf@alum.bu.edu>
+
+ * path.cc (is_unc_share): Rename from slash_unc_prefix_p throughout.
+
+2004-04-20 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (normalize_posix_path): Process all Posix paths and map three
+ or more initial slashes to a single one. Simplify processing following
+ two initial slashes.
+ (normalize_win32_path): Make last argument non-optional and do not
+ check for NULL value.
+
+2004-04-20 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * fhandler_disk_file.cc (fhandler_base::open_fs): Change
+ set_file_attribute call to indicate that NT security isn't used.
+ (fhandler_disk_file::fchmod): Rearrange to isolate 9x related
+ statements.
+ Do not set FILE_ATTRIBUTE_SYSTEM.
+ (fhandler_disk_file::fchown): Check noop case first.
+ * fhandler.cc (fhandler_base::open9x): Remove ntsec related statements.
+ (fhandler_base::set_name): Do not set namehash.
+ * fhandler.h (fhandler_base::get_namehash): Compute and set namehash if
+ needed.
+ * syscalls.cc (access): Verify that fh is not NULL. Do not set PC_FULL.
+ (chmod): Ditto.
+ (chown_worker): Ditto.
+ (stat_worker): Ditto. Verify if the path exists.
+
+2004-04-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Remove special DEV_FLOPPY_MAJOR
+ treatment.
+ * fhandler_raw.cc (fhandler_dev_raw::open): Simplify write-only case.
+ * fhandler_tape.cc (fhandler_dev_tape::raw_write): Add accidentally
+ dropped condition.
+
+2004-04-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Add FILE_READ_ATTRIBUTES when
+ only GENERIC_WRITE access is requested.
+
+2004-04-19 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/cygwin/mtio.h (GMT_ASYNC): New define.
+ (MT_ST_ASYNC_WRITES): Remove "Not supported" comment.
+
+2004-04-19 Corinna Vinschen <corinna@vinschen.de>
+
+ * errno.cc (errmap): Handle ERROR_IO_PENDING.
+ * fhandler.cc (fhandler_base::open): Make tape I/O asynchronous.
+ * fhandler.h (class fhandler_dev_tape): Add mt_evt member.
+ * fhandler_tape.cc (mtinfo_drive::initialize): Initialize async_writes.
+ (mtinfo_drive::close): Handle async writes.
+ (mtinfo_drive::read): Add mt_evt parameter. Use overlapped I/O.
+ (mtinfo_drive::async_wait): New function.
+ (mtinfo_drive::write): Add mt_evt parameter. Use overlapped I/O.
+ Handle async writes.
+ (mtinfo_drive::_set_pos): Handle async writes.
+ (mtinfo_drive::set_partition): Ditto.
+ (mtinfo_drive::prepare): Ditto.
+ (mtinfo_drive::get_status): Drop useless "else". Handle async_writes
+ flag.
+ (mtinfo_drive::set_options): Handle async_writes flags.
+ (fhandler_dev_tape::close): Close mt_evt handle.
+ (fhandler_dev_tape::raw_read): Create mt_evt handle and use in call
+ to mtinfo_drive::read.
+ (fhandler_dev_tape::raw_write): Create mt_evt handle and use in call
+ to mtinfo_drive::write.
+ * mtinfo.h (MTINFO_VERSION): Bump.
+ (enum dirty_state): Add async_write_pending state.
+ (class mtinfo_drive): Add OVERLAPPED struct "ov". Add async_writes
+ flag.
+ (mtinfo_drive::async_wait): Add declaration.
+ (mtinfo_drive::read): Add mt_evt parameter.
+ (mtinfo_drive::write): Ditto.
+
+ * registry.cc (load_registry_hive): Call enable_restore_privilege
+ instead of set_process_privilege.
+
+2004-04-19 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_tape.cc (mtinfo_drive::_set_pos): Take additional dont_wait
+ parameter. Use in call to SetTapePosition.
+ (mtinfo_drive::set_pos): Accomodate _set_pos calls to above change.
+ (mtinfo_drive::set_partition): Ditto.
+ * mtinfo.h (mtinfo_drive::_set_pos): Change declaration accordingly.
+
+2004-04-16 Corinna Vinschen <corinna@vinschen.de>
+
+ * autoload.cc (NtCreateFile): Add.
+ * dir.cc (mkdir): Change set_file_attribute call to indicate that
+ NT security isn't used.
+ * fhandler.cc (fhandler_base::open_9x): New method, created from
+ fhandler_base::open.
+ (fhandler_base::open): Rearrange to use NtCreateFile instead of
+ CreateFile.
+ * fhandler.h (enum query_state): Redefine query_null_access to
+ query_stat_control. query_null_access isn't allowed in NtCreateFile.
+ (fhandler_base::open_9x): Declare.
+ * fhandler_disk_file.cc (fhandler_base::fstat_fs): Use
+ query_stat_control first, query_read_control if that fails.
+ (fhandler_disk_file::fchmod): Call enable_restore_privilege before
+ trying to open for query_write_control. Don't fall back to
+ opening for query_read_control.
+ (fhandler_disk_file::fchown): Ditto.
+ (fhandler_disk_file::facl): Only request restore privilege and query
+ access necessary for given cmd.
+ * fhandler_raw.cc (fhandler_dev_raw::open): Call fhandler_base::open
+ instead of opening device here.
+ * ntdll.h (NtCreateFile): Declare.
+ * path.cc (symlink_worker): Change set_file_attribute call to indicate
+ that NT security isn't used.
+ * sec_acl.cc (getacl): Fix bracketing.
+ * sec_helper.cc (enable_restore_privilege): New function.
+ * security.cc (str2buf2uni_cat): New function.
+ (write_sd): Don't request restore permission here.
+ * security.h (set_process_privileges): Drop stale declaration.
+ (str2buf2uni): Declare.
+ (str2buf2uni_cat): Declare.
+ (enable_restore_privilege): Declare.
+ * syscalls.cc (fchown32): Return immediate success on 9x.
+
+2004-04-15 Christopher Faylor <cgf@alum.bu.edu>
+
+ * autoload.cc (dll_chain1): Rename to dll_chain. Remove old dll_chain
+ code.
+ (wsock_init): Avoid unneeded winsock_active tests.
+ * winsup.h (winsock_active): Delete.
+
+2004-04-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Try opening
+ in query_read mode if query_write fails.
+ * fhandler_disk_file.cc (fhandler_disk_file::fchown): Ditto.
+ * fhandler_disk_file.cc (fhandler_disk_file::facl): Ditto.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * ntdll.h: Fix copyright date.
+ * sec_acl.cc (acl_worker): Delete allocated fhandler.
+ * syscalls.cc (chown_worker): Ditto.
+ (chmod): Ditto.
+ (stat_worker): Use get_namehash instead of hash_path_name.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * sec_acl.cc (getacl): Avoid compiler warning.
+ * security.cc (write_sd): Ditto. Fix error handling.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (fstat64): Use get_namehash instead of hash_path_name.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Simplify access evaluation
+ expression.
+ (fhandler_base::facl): New method.
+ * fhandler.h: Declare facl method in fhandler_base,
+ fhandler_disk_file and fhandler_virtual.
+ * fhandler_disk_file.cc (fhandler_disk_file::facl): New method.
+ * fhandler_virtual.cc (fhandler_virtual::facl): New method.
+ * sec_acl.cc: Remove forward declaration for aclsort32 and acl32.
+ (setacl): Remove static. Add and use handle parameter.
+ (getacl): Ditto.
+ (acl_worker): Reorganize to call fhandler's facl method eventually.
+ (facl32): Ditto.
+ * security.cc (get_nt_object_security): Remove static.
+ * security.h: Add extern declarations for get_nt_object_security,
+ aclsort32, acl32, getacl and setacl.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Accomodate query_write_control
+ query_state.
+ (fhandler_base::fchown): New method.
+ * fhandler.h: Declare fchown method in fhandler_base,
+ fhandler_disk_file and fhandler_virtual.
+ (enum query_state): Add query_write_control.
+ * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Set query_state
+ to query_write_control. Only remove FILE_ATTRIBUTE_READONLY if not
+ setting security descriptor.
+ (fhandler_disk_file::fchown): New method.
+ * fhandler_virtual.cc (fhandler_virtual::fchown): New method.
+ * sec_acl.cc (setacl): Call write_sd with additional handle attribute.
+ * security.cc (write_sd): Take handle argument. Only request owner
+ if getting SE_RESTORE_NAME privilege failed. Only open file if
+ NtSetSecurityObject failed or handle is NULL.
+ (set_nt_attribute): Call write_sd with additional handle attribute.
+ * security.h (write_sd): Declare with additional handle argument.
+ * syscalls.cc (chown_worker): Reorganize to call fhandler's fchown
+ method eventually.
+ (fchown): Ditto.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * autoload.cc (NtSetSecurityObject): Add.
+ * fhandler_disk_file.cc (fhandler_disk_file::fchmod): Only request
+ READ_CONTROL rights when opening the file.
+ * ntdll.h (NtSetSecurityObject): Add declaration.
+ * security.cc (write_sd): Call NtSetSecurityObject instead of
+ BackupWrite.
+ (get_nt_object_security): Don't free security descriptor here.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (ttyname): Use buffer of length TTY_NAME_MAX + 1.
+ * sysconf.cc (sysconf): Handle _SC_TTY_NAME_MAX request.
+ * include/limits.h: Define TTY_NAME_MAX and _POSIX_TTY_NAME_MAX.
+
+2004-04-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygwin.din: Export rand_r and ttyname_r.
+ * syscalls.cc (ttyname_r): New function.
+ (ttyname): Move functionality to ttyname_r. Call it from here.
+ * include/cygwin/version.h: Bump API minor number.
+
+2004-04-14 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.h (path_conv::set_symlink): Add argument.
+ (path_conv::get_symlink_length): New method.
+ (path_conv::symlink_length): New member.
+ * path.cc (path_conv::check): Pass symlen to set_symlink.
+ * fhandler_disk_file.cc (fhandler_base::fstat_helper): For symlinks
+ set st_size from get_symlink_length.
+
+2004-04-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * security.cc (set_nt_attribute): Only call get_nt_object_security
+ if handle is NULL.
+
+2004-04-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * dir.cc (mkdir): Call set_file_attribute with additional handle
+ argument.
+ * fhandler.cc (fhandler_base::fchmod): New method.
+ * fhandler.h: Declare fchmod method in fhandler_base,
+ fhandler_disk_file and fhandler_virtual.
+ * fhandler_disk_file.cc (fhandler_disk_file::fchmod): New method.
+ (fhandler_base::open_fs): Call set_file_attribute with additional
+ handle argument.
+ * fhandler_virtual.cc (fhandler_virtual::fchmod): New method.
+ * path.cc (symlink_worker): Call set_file_attribute with additional
+ handle argument.
+ * security.cc (get_nt_object_security): New function.
+ (get_nt_object_attribute): Call get_nt_object_security.
+ (set_nt_attribute): Add handle argument. Call get_nt_object_security
+ first, read_sd only if that fails.
+ (set_file_attribute): Add handle argument.
+ * security.h (set_file_attribute): Declare with additional handle
+ argument.
+ * syscalls.cc (stat_suffixes): Move to beginning of file.
+ (chown_worker): Call set_file_attribute with additional handle argument.
+ (chmod): Reorganize to call fhandler's fchmod method eventually.
+ (fchmod): Ditto.
+
+2004-04-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * autoload.cc (NtQuerySecurityObject): Add.
+ * ntdll.h (STATUS_BUFFER_TOO_SMALL): Add definition.
+ (NtQuerySecurityObject): Add declaration.
+ * security.cc (get_nt_object_attribute): Always use
+ NtQuerySecurityObject to retrieve security descriptor.
+
+2004-04-13 Gerd Spalink <Gerd.Spalink@t-online.de>
+
+ * fhandler_dsp.cc (fhandler_dev_dsp::Audio_out::stop): Add optional
+ boolean argument so that playing can be stopped without playing
+ pending buffers.
+ (fhandler_dev_dsp::ioctl): Stop playback immediately for
+ SNDCTL_DSP_RESET. Do not reset audio parameters in this case.
+ Add support for ioctl SNDCTL_DSP_GETISPACE.
+ (fhandler_dev_dsp::Audio_out::emptyblocks): Now returns the number of
+ completely empty blocks.
+ (fhandler_dev_dsp::Audio_out::buf_info): p->fragments is now the number
+ of completely empty blocks. This conforms with the OSS specification.
+ (fhandler_dev_dsp::Audio_out::parsewav): Ignore wave headers that are
+ not aligned on four byte boundary.
+ (fhandler_dev_dsp::Audio_in::buf_info): New, needed for
+ SNDCTL_DSP_GETISPACE.
+
+2004-04-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * winsup.h (IMPLEMENT_STATUS_FLAG): New macro to define status flag
+ accessor methods unambiguously.
+ * fhandler.h: Use IMPLEMENT_STATUS_FLAG throughout where possible.
+ * fhandler_termios.cc (fhandler_termios::tcinit): Call corrected
+ accessor for initialized status flag.
+ * mtinfo.h (class mtinfo_drive): Use IMPLEMENT_STATUS_FLAG throughout.
+ * path.cc (fs_info::update): Remove duplicate call to flags().
+ * path.h (struct fs_info): Use IMPLEMENT_STATUS_FLAG where possible.
+ (path_conv::is_auto_device): Fix spacing.
+ * tty.h (class tty_min): Use IMPLEMENT_STATUS_FLAG throughout.
+
+2004-04-12 Christopher Faylor <cgf@alum.bu.edu>
+
+ * thread.cc (pthread::thread_init_wrapper): Wait later to get more
+ parallel behavior.
+
+2004-04-12 Christopher Faylor <cgf@alum.bu.edu>
+
+ * thread.cc (pthread::create): Use thread mutex to control
+ synchronization rather than creating a suspended thread. Wait for
+ "cancellation event" to indicate that started thread has been properly
+ initialized.
+ (pthread::thread_init_wrapper): Use set_tls_self_pointer() to set tid
+ and cygtls. Signal with cancel_event when done.
+
+2004-04-12 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (path_conv::check): Fix "tail filling" logic.
+
+2004-04-11 Christopher Faylor <cgf@alum.bu.edu>
+
+ * cygheap.h: Replace inexplicably removed closing brace.
+
+2004-04-11 Christopher Faylor <cgf@alum.bu.edu>
+
+ * cygheap.h (CYGHEAP_SLOP): Reduce drastically to avoid collisions.
+
+2004-04-11 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * dtable.cc (dtable::extend): Change order of memcpy and cfree.
+
+2004-04-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * syscalls.cc (sync): Define void according to SUSv3.
+
+2004-04-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * sec_acl.cc (setacl): Use correct offset when trying to combine
+ standard and default entry of same type.
+
+2004-04-10 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * fhandler.cc (rootdir): Add and use second argument.
+ * winsup.h (rootdir): Add second argument in declaration.
+ * path.cc (fs_info::update): Modify call to rootdir.
+ * syscalls.cc (check_posix_perm): Ditto.
+ (statfs): Ditto. Move syscall_printf near top.
+
+2004-04-10 Corinna Vinschen <corinna@vinschen.de>
+
+ * Use new unified status_flag accessor methods from classes fhandler_*,
+ tty_min, mtinfo and fs_info thoroughout.
+ * fhandler.h: Redefine all set_close_on_exec methods to take a bool
+ argument.
+ (enum conn_state): Rename from connect_state.
+ (class fhandler_base): Rename some status flags to align with
+ accessor method names. Drop encoded flag entirely. Unify status
+ accessor methods. Const'ify all read accessor methods.
+ (class fhandler_socket): Ditto.
+ (class fhandler_dev_raw): Ditto.
+ * fhandler_disk_file.cc (fhandler_base::fstat_fs): Use fs.fs_is_fat()
+ instead of evaluating FATness of file system here.
+ (fhandler_disk_file::opendir): Drop call to set_encoded().
+ (fhandler_disk_file::readdir): Use pc.isencoded() directly.
+ * mtinfo.h (class mtinfo_drive): Const'ify all read accessor methods.
+ * path.cc (fsinfo_cnt): Add.
+ (fs_info::update): Accomodate class changes. Evaluate file system
+ name specific flags right here. Add thread safety for reading and
+ writing global fsinfo array.
+ * path.h (enum path_types): Drop values for flags kept in fs already.
+ (struct fs_info): Move status informatin into private struct type
+ status_flags. Add accessor methods. Remove path and file system
+ name string arrays in favor of status bits.
+ (class path_conv): Use new fs_info status information where
+ appropriate.
+ (path_conf::fs_has_ea): Rename from fs_fast_ea.
+ (path_conf::fs_has_acls): New method.
+ (path_conf::root_dir): Remove.
+ (path_conf::volname): Remove.
+ * syscalls (statfs): Evaluate root dir locally.
+ * tty.h (class tty_min): Unify status accessor methods. Const'ify
+ all read accessor methods.
+
+2004-04-09 Thomas Pfaff <tpfaff@gmx.net>
+
+ * thread.h (pthread::init_mainthread): Remove parameter forked.
+ (pthread::set_tls_self_pointer): New static function.
+ * thread.cc (MTinterface::fixup_after_fork): Change call to
+ pthread::init_mainthread.
+ (pthread::init_mainthread): Remove parameter forked. Simplify thread
+ self pointer handling.
+ (pthread::self): Set thread self pointer to null_pthread if thread has
+ not been initialized.
+ (pthread::set_tls_self_pointer): New static function.
+
+2004-04-05 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (path_conv::check): Optimize symlink replacements.
+
+2004-04-09 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (normalize_posix_path): Add "tail" argument and set it.
+ Always have a final slash for directories. Pass 3rd argument to
+ normalize_win32_path.
+ (path_conv::check): Pass tail to normalize_posix_path. Set
+ need_directory and remove final slash after that call. Remove last
+ argument to mount_table->conv_to_win32_path(). Remove noop dostail
+ check. Remove fs.update() from inner loop. Improve tail finding
+ search.
+ (normalize_win32_path): Add and set tail argument.
+ (mount_item::build_win32): Avoid calling strcpy.
+ (mount_info::conv_to_win32_path): Remove third argument and simplify
+ because the source is normalized. Keep /proc path in Posix form. Call
+ win32_device_name() only once.
+ (mount_info::conv_to_posix_path): Add and use 3rd argument to
+ normalize_win32_path to avoid calling strlen.
+ (cwdstuff::set): Add 3rd argument to normalize_posix_path and remove
+ final slash if any.
+ * shared_info.h (mount_info::conv_to_win32_path): Remove last argument
+ in declaration.
+
+2004-04-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_dev_raw): Move status bits into protected
+ bitfield struct type status_flags. Drop unused has_written bit.
+ Add accessor methods.
+ (fhandler_dev_raw::clear): Remove.
+ (fhandler_dev_raw::reset_devbuf): Remove.
+ * fhandler_floppy.cc (fhandler_dev_floppy::lseek): Use accessor method
+ for is_writing.
+ * fhandler_raw.cc: Use status accessor methods throughout.
+ (fhandler_dev_raw::clear): Remove.
+ (fhandler_dev_raw::fhandler_dev_raw): Drop clear call.
+ (fhandler_dev_raw::~fhandler_dev_raw): Ditto.
+ * fhandler_tape.cc: Use mtinfo::status accessor methods throughout.
+ (mtinfo_drive::close): Fix conditional to enable BSD semantics
+ correctly.
+ (mtinfo_drive::get_status): Rename from mtinfo_drive::status.
+ * mtinfo.h (class mtinfo_drive): Move status bits into private bitfield
+ struct type status_flags. Add accessor methods.
+ Rename status method to get_status.
+
+2004-04-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (fsinfo): Global storage for file system information.
+ (fs_info::update): Store file system information also in fsinfo and
+ short circuit GetVolumeInformation by using alredy stored file system
+ information.
+
+2004-04-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_base::status): Declare private.
+ (fhandler_base::open_status): Ditto.
+ (class fhandler_socket): Move status bits into private bitfield struct
+ type status_flags. Change accessor methods appropriately.
+ * fhandler_socket.cc (fhandler_socket::fhandler_socket): Accomodate
+ above status bit changes.
+ * tty.h: Remove status bit enumerator.
+ (TTYISSETF): Remove.
+ (TTYSETF): Remove.
+ (TTYCLEARF): Remove.
+ (TTYCONDSETF): Remove.
+ (tty_min::status): Define as private bitfield struct type status_flags.
+ Add appropriate accessor methods.
+ * fhandler_console.cc: Use tty_min::status accessor methods throughout.
+ * fhandler_termios.cc: Ditto.
+ * winsup.h (__ISSETF): Remove.
+ (__SETF): Remove.
+ (__CLEARF): Remove.
+ (__CONDSETF): Remove.
+
+2004-04-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::write): Use bool parameter in calls to
+ set_did_lseek.
+ (fhandler_base::fhandler_base): Accomodate new status and open_status
+ constructor.
+ * fhandler.h: Remove status bit enumerator.
+ (FHDEVN): Remove.
+ (FHISSETF): Remove.
+ (FHSETF): Remove.
+ (FHCLEARF): Remove.
+ (FHCONDSETF): Remove.
+ (FHSTATOFF): Remove.
+ (UNCONNECTED, CONNECT_PENDING, CONNECTED): Substitute by enum
+ connect_state.
+ (fhandler_base::status): Define as bitfield struct type status_flags.
+ Remove unused flags entirely. Accomodate all status access methods.
+ (open_status): Define as bitfield struct type status_flags.
+ (fhandler_socket): Move socket related status bits to here. Redefine
+ had_connect_or_listen to be part of these status bits. Accomodate
+ related access methods.
+ * fhandler_disk_file.cc (fhandler_base::fstat_helper): Use pc.issymlink
+ instead of dropped method get_symlink_p.
+ (fhandler_base::open_fs): Remove setting dropped status flags.
+ * fhandler_socket.cc: Use values from enum connect_state throughout.
+ (fhandler_socket::fhandler_socket): Initialize status bits.
+ * fhandler_virtual.cc (fhandler_virtual::open): Remove setting dropped
+ status flags.
+ * net.cc: Use values from enum connect_state throughout.
+ * select.cc: Ditto.
+ * shared_info.h: Protect struct console_state using _FHANDLER_H_
+ instead of FHDEVN.
+
+2004-04-09 Corinna Vinschen <corinna@vinschen.de>
+
+ * security.cc (get_file_attribute): Fix conditional.
+
+2004-04-08 Christopher Faylor <cgf@bosbc.com>
+
+ * child_info.h: Update CHILD_INFO_MAGIC after 2004-04-03 change.
+
+2004-04-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * path.cc (hash_path_name): Replace hash algorithm with SDBM.
+
+2004-04-08 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.cc (fhandler_base::open): Set query access mode according
+ to query_open setting.
+ (fhandler_base::fhandler_base): Initialize query_open.
+ * fhandler.h (FH_QUERYOPEN): Drop.
+ (enum query_state): Add.
+ (class fhandler_base): Add query_open member.
+ (fhandler_base::get_query_open): Redefine to use query_open.
+ (fhandler_base::set_query_open): Ditto.
+ * fhandler_disk_file.cc (fhandler_base::fstat_fs): Remove O_DIROPEN
+ from open_flags since it's added in open_fs anyway. Remove
+ query_open_already. Use new query_open settings. Rearrange slightly.
+ (fhandler_base::fstat_helper): Add get_io_handle as parameter to
+ get_file_attribute.
+ * security.cc (get_nt_object_attribute): Make returning an int.
+ Return -1 on error, 0 otherwise.
+ (get_file_attribute): Take an object handle as argument. Move down
+ to allow calling get_nt_object_attribute in case a non-NULL handle
+ is given.
+ * security.h (get_file_attribute): Add handle to argument list.
+ * syscalls.cc (chown_worker): Accomodate new definition of
+ get_file_attribute.
+
+2004-04-07 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * path.cc (path_prefix_p): Optimize test order.
+
+2004-04-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * Makefile.in (EXTRALIBS): Add libtextreadmode.a.
+ (INSTOBJS): Add textreadmode.o.
+ * textreadmode.c: New file.
+
+2004-04-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_base::fstat_helper): Request
+ compressed size only if the matching attributes are set. Use
+ NtQueryInformationFile instead of GetCompressedFileSize.
+ (fhandler_base::fstat_by_handle): Remove NT 3.5 cruft since
+ local.dwVolumeSerialNumber isn't used subsequently.
+ * ntdll.h: Add typedefs for FILE_COMPRESSION_INFORMATION and
+ FILE_INFORMATION_CLASS.
+
+2004-04-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_raw.cc (fhandler_dev_raw::open): Actually use "options".
+
+2004-04-04 Gerd Spalink <Gerd.Spalink@t-online.de>
+
+ * fhandler_dsp.cc (fhandler_dev_dsp::ioctl): Add implementation
+ for ioctl codes SNDCTL_DSP_CHANNELS and SNDCTL_DSP_GETCAPS.
+
+2004-04-03 Christopher Faylor <cgf@bosbc.com>
+
+ * child_info.h (child_info::cygheap_reserve_sz): Rename from
+ cygheap_alloc_sz.
+ * cygheap.cc: Rename alloc_sz to reserve_sz throughout.
+
+2004-04-03 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_socket): Remove has_been_closed member.
+ * fhandler_socket.cc (fhandler_socket::recvfrom): Revert to
+ overlapped I/O.
+ (fhandler_socket::recvmsg): Ditto.
+ (fhandler_socket::sendto): Ditto.
+ (fhandler_socket::sendmsg): Ditto.
+ * net.cc (wsock_event::prepare): Ditto.
+ (wsock_event::wait): Ditto. Evaluate overlapped result also after
+ calling CancelIo (thanks to Patrick Samson <p_samson@yahoo.com>).
+ (wsock_event::release): Remove.
+ * wsock_event.h: Revert to overlapped I/O.
+
+2004-04-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (wsock_event::release): Use NULL handle in call to
+ WSAEventSelect to resolve KB 168349.
+
+2004-04-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_socket.cc (fhandler_socket::recvfrom): Rearrange loop
+ so that WSARecvFrom is always called before waiting.
+ (fhandler_socket::recvmsg): Ditto.
+
+2004-04-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (wsock_event::wait): Make wsa_err an int. Don't set
+ ret to 0 if any error has happened.
+
+2004-04-01 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_socket.cc (fhandler_socket::sendto): Drop out of loop if
+ has_been_closed gets set.
+ (fhandler_socket::sendmsg): Ditto.
+ * net.cc (wsock_event::wait): Don't initialize evts. Don't try to
+ evaluate network events if WSAEnumNetworkEvents fails.
+ (wsock_event::release): Save last WSA error and set it again unless
+ resetting to blocking socket fails.
+ * wsock_event.h (class wsock_event): Remove destructor.
+
+2004-03-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_tape.cc (mtinfo::initialize): Fix fatal error message.
+
+2004-03-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_socket.cc (fhandler_socket::recvfrom): Always initialize
+ ret to 0 when using in Winsock call.
+ (fhandler_socket::recvmsg): Ditto.
+ (fhandler_socket::sendto): Ditto.
+ (fhandler_socket::sendmsg): Ditto.
+
+2004-03-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_tape.cc (mtinfo_drive::get_pos): Only set partition if
+ GetTapePosition returned a non-zero partition number.
+ (mtinfo_drive::create_partitions): Reinitialize to partition 0.
+ Support TAPE_DRIVE_INITIATOR and TAPE_DRIVE_FIXED partitioning.
+ (mtinfo_drive::set_partition): Initialize new partition.
+ (mtinfo_drive::status): Readd accidentally dropped setting of mt_resid.
+
+ * net.cc (wsock_event::prepare): Always print debug output in case
+ of error.
+
+2004-03-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_socket.cc (fhandler_socket::sendmsg): Add SIGPIPE handling.
+
+2004-03-31 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_socket.cc (fhandler_socket::recvfrom): Initialize res to
+ SOCKET_ERROR. Use SOCKET_ERROR instead of -1 throughout.
+ (fhandler_socket::recvmsg): Ditto.
+ (fhandler_socket::sendto): Ditto.
+ (fhandler_socket::sendmsg): Ditto.
+ * net.cc (wsock_event::prepare): Call WSASetLastError instead of
+ SetLastError.
+ (wsock_event::wait): Use SOCKET_ERROR instead of -1.
+
+2004-03-30 Thomas Pfaff <tpfaff@gmx.net>
+
+ * thread.h (pthread::init_mainthread): Add parameter forked. Set
+ forked default to false..
+ * thread.cc (MTinterface::fixup_after_fork): Call
+ pthread::init_mainthread with forked = true.
+ (pthread::init_mainthread): Add parameter forked. Do not change thread
+ self pointer when forked.
+
+2004-03-30 Corinna Vinschen <corinna@vinschen.de>
+
+ * shm.cc (shmat): If shmid is unknown, call a special variation
+ of shmget to retrieve the shared memory segment from Cygserver
+ instead of failing immediately.
+ * include/cygwin/ipc.h (IPC_KEY_IS_SHMID): New internal flag for
+ shmget when called from shmat.
+
+2004-03-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (class fhandler_socket): Add has_been_closed member.
+ * fhandler_socket.cc (fhandler_socket::fhandler_socket): Initialize
+ has_been_closed to 0.
+ (fhandler_socket::recvfrom): Use new asynchronous I/O driven
+ wsock_event methods.
+ (fhandler_socket::recvmsg): Ditto.
+ (fhandler_socket::sendto): Ditto.
+ (fhandler_socket::sendmsg): Ditto.
+ * net.cc (wsock_event::prepare): Reimplement using asynchronous I/O.
+ (wsock_event::wait): Ditto.
+ (wsock_event::release): New method.
+ * wsock_event.h (class wsock_event): Remove ovr member. Accomodate
+ new implementation of prepare and wait methods. Add release method.
+
+2004-03-29 Thomas Pfaff <tpfaff@gmx.net>
+
+ * thread.cc (pthread::atforkprepare): Call
+ MT_INTERFACE->fixup_before_fork at the end of atforkprepare.
+
+2004-03-29 Corinna Vinschen <corinna@vinschen.de>
+
+ * net.cc (wsock_event::wait): Change scope of local "len" variable.
+
+2004-03-28 Corinna Vinschen <corinna@vinschen.de>
+
+ * shm.cc (shmat): Return (void *) -1 on error instead of NULL.
+
+2004-03-27 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler_nodevice.cc (fhandler_nodevice::open): Assume that errno has
+ already been set if pc.error is nonzero.
+
+2004-03-26 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (cygheap_fixup_in_child): Improve strace output.
+
+2004-03-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * errno.cc (errmap): Map ERROR_SHARING_VIOLATION to EBUSY,
+ ERROR_EOM_OVERFLOW and ERROR_NO_DATA_DETECTED to EIO. Add mappings
+ for ERROR_NO_MEDIA_IN_DRIVE, ERROR_DEVICE_REQUIRES_CLEANING and
+ ERROR_DEVICE_DOOR_OPEN.
+ * fhandler.h (class fhandler_dev_raw): Drop varblkop member.
+ (fhandler_dev_raw::is_eom): De-virtualize.
+ (fhandler_dev_raw::is_eof): Ditto.
+ (class fhandler_dev_tape): Drop lasterr and dp member. Add mt_mtx
+ member. Drop all private methods formerly used by ioctl.
+ (fhandler_dev_tape::is_rewind_device): Use get_minor for clarity.
+ (fhandler_dev_tape::driveno): New method.
+ (fhandler_dev_tape::drive_init): New method.
+ (fhandler_dev_tape::clear): Remove method.
+ (fhandler_dev_tape::is_eom): Ditto.
+ (fhandler_dev_tape::is_eof): Ditto.
+ (fhandler_dev_tape::write_file): Ditto.
+ (fhandler_dev_tape::read_file): Ditto.
+ (fhandler_dev_tape::_lock): New method.
+ (fhandler_dev_tape::unlock): New method.
+ (fhandler_dev_tape::raw_read): New method.
+ (fhandler_dev_tape::raw_write): New method.
+ * fhandler_raw.cc (fhandler_dev_raw::is_eom): New method.
+ (fhandler_dev_raw::is_eof): New method.
+ (fhandler_dev_raw::open): Allow setting write through option by
+ using the O_TEXT flag as ... flag.
+ (fhandler_dev_raw::writebuf): Remove usage of varblkop and other
+ tape specific code.
+ (fhandler_dev_raw::raw_read): Ditto.
+ (fhandler_dev_raw::dup): Ditto.
+ * fhandler_tape.cc: Rewrite tape operations entirely. Implement
+ new tape driver classes mtinfo, mtinfo_drive and mtinfo_part.
+ Reduce fhandler_dev_tape methods to mostly just calling appropriate
+ mtinfo_drive methods.
+ (mtinfo_init): New function adding the mtinfo shared memory area.
+ * mtinfo.h: New file, containing the definition of the new tape
+ driver classes.
+ * shared.cc: Include mtinfo.h.
+ (offsets): Add entry for mtinfo shared memory area.
+ (memory_init): Call mtinfo_init.
+ * shared_info.h (shared_locations): Add SH_MTINFO shared location.
+ * include/cygwin/mtio.h: Change and add various comments. Add GMT_xxx
+ macros for new generic flags. Add MT_ST_xxx bitfield definitions
+ for MTSETDRVBUFFER ioctl.
+ * include/cygwin/version.h: Bump API minor version number.
+
+2004-03-26 Christopher Faylor <cgf@redhat.com>
+
+ * path.cc (path_conv::check): Use 'strchr' rather than 'strrchr' to
+ find end of string, for efficiency.
+
+2004-03-26 Thomas Pfaff <tpfaff@gmx.net>
+
+ * include/cygwin/_types.h: New file.
+ * include/sys/lock.h: Ditto.
+ * include/sys/stdio.h: Ditto.
+ * thread.cc: Include sys/lock.h
+ (__cygwin_lock_init): New function.
+ (__cygwin_lock_init_recursive): Ditto.
+ (__cygwin_lock_fini): Ditto.
+ (__cygwin_lock_lock): Ditto.
+ (__cygwin_lock_trylock): Ditto.
+ (__cygwin_lock_unlock): Ditto.
+ (pthread::atforkprepare): Lock file pointer before fork.
+ (pthread::atforkparent): Unlock file pointer after fork.
+ (pthread::atforkchild): Ditto.
+
+2004-03-26 Corinna Vinschen <corinna@vinschen.de>
+
+ * sem.cc (semget): Fix debug string.
+ (semop): Ditto.
+ * shm.cc (fixup_shms_after_fork): Ditto.
+ (shmat): Ditto.
+ (shmdt): Ditto.
+ (shmget): Ditto.
+
+2004-03-26 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (wait_sig): Make sure that SIGCHLD is handled regardless
+ of whether a signal is queued.
+
+2004-03-26 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (wait_sig): Report if not trying to send signal due to
+ queued signal.
+
+2004-03-25 Christopher Faylor <cgf@redhat.com>
+
+ * path.cc (normalize_posix_path): Reorganize to short circuit to DOS
+ path handling whenever a '\' is detected.
+
+ * signal.cc (sigaction): Make strace output more informative.
+ * sigproc.cc (pending_signals::add): Just index directly into signal
+ array rather than treating the array as a heap.
+ (pending_signals::del): Ditto.
+ (wait_sig): Don't send signal if we already have a similar signal
+ queued.
+ * sigproc.h (call_signal_handler_now): Remove obsolete declaration.
+
+2004-03-23 Gerd Spalink <Gerd.Spalink@t-online.de>
+
+ * fhandler_dsp.cc (fhandler_dev_dsp::write): Remove type
+ cast from argument to audio_out_->parsewav() to make reference
+ work properly. Now .wav file headers are properly discarded.
+
+2004-03-23 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_disk_file.cc (fhandler_base::fstat_fs): Use created
+ handle regardless of nohandle state. Clean up afterwards.
+
+2004-03-23 Gerd Spalink <Gerd.Spalink@t-online.de>
+
+ * autoload.cc: Load eight more functions for waveIn support.
+ * fhandler.h (class fhandler_dev_dsp): Add class Audio, class Audio_in
+ and class Audio_out members and audio_in_, audio_out_ pointers so
+ that future changes are restricted to file fhandler_dsp.cc.
+ * fhandler_dsp.cc (fhandler_dev_dsp::Audio): Add this class to treat
+ things common to audio recording and playback.
+ Add more format conversions.
+ (fhandler_dev_dsp::Audio::queue): New queues for buffer management
+ to fix incomplete cleanup of buffers passed to the wave device.
+ (fhandler_dev_dsp::Audio_in): New, added class to implement audio
+ recording.
+ (fhandler_dev_dsp::Audio_out): Rework to use functionality provided
+ by fhandler_dev_dsp::Audio. Allocate memory audio buffers late,
+ just before write.
+ (fhandler_dev_dsp::Audio_out::start): Size of wave buffer allocated
+ here depends on audio rate/bits/channels.
+ (fhandler_dev_dsp::Audio_in::start): Ditto.
+ (fhandler_dev_dsp::setupwav): Replaced by following function.
+ (fhandler_dev_dsp::Audio_out::parsewav): Does not setup wave device
+ any more. Discard wave header properly.
+ (fhandler_dev_dsp::open): Add O_RDONLY and_RDWR as legal modes.
+ Protect against re-open. Activate fork_fixup.
+ (fhandler_dev_dsp::ioctl): Protect against actions when audio is
+ active. SNDCTL_DSP_GETFMTS only returns formats supported by
+ mmsystem wave API, not all supported formats. SNDCTL_DSP_GETBLKSIZE
+ result now depends on current audio format.
+ (fhandler_dev_dsp::fixup_after_fork): Call fork_fixup for the Audio
+ classes to let them duplicate the CRITICAL_SECTION.
+
+2004-03-19 Pierre Humblet <pierre.humblet@ieee.org>
+ Christopher Faylor <cgf@redhat.com>
+
+ * init.cc (munge_threadfunc): Handle all instances of search_for.
+ (prime_threads): Test threadfunc_ix[0].
+
+2004-03-21 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (init_cheap): Set initial_sz to something or suffer
+ spurious output.
+ (cygheap_fixup_in_child): Set alloc_sz to passed in size to ensure that
+ children will have the right size heap.
+ (_csbrk): Make output conditional on DEBUGGING.
+
+2004-03-21 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (init_cheap): Conditionalize debugging code.
+
+2004-03-21 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (init_cheap): Add ability to specify minimal cygwin heap
+ size when debugging.
+ (_csbrk): Report error in allocation to stderr.
+ (ccalloc): Ditto.
+ * dtable.cc (dtable::find_fifo): Remove use of atoms.
+ * dtable.h (dtable::find_fifo): Ditto.
+ * fhandler.h (fhandler_fifo): Ditto.
+ * fhandler_fifo.cc (fhandler_fifo::fhandler_fifo): Ditto.
+ (fhandler_fifo::set_use): Ditto.
+ (fhandler_fifo::open_not_mine): Ditto.
+ (fhandler_fifo::open): Ditto.
+ * pinfo.cc (_pinfo::commune_recv): Ditto.
+ (_pinfo::commune_send): Ditto.
+
+2004-03-19 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * dir.cc (rmdir): Reorganize error handling to reduce indentation.
+
+2004-03-19 Christopher Faylor <cgf@redhat.com>
+
+ * include/cygwin/version.h: Bump DLL minor number to 10.
+
+2004-03-18 Christopher Faylor <cgf@redhat.com>
+
+ * child_info.h (CURR_CHILD_INFO_MAGIC): Reset to new value.
+ (child_info::cygheap_alloc_sz): New field.
+ * cygheap.cc (init_cheap): Reduce size of cygwin stack until minimal
+ hit when attempting initial allocation.
+ (cygheap_setup_for_child): Use alloc_sz to create secondary memory
+ mapped entry. Store alloc_sz in cygheap_alloc_sz.
+ (cygheap_fixup_in_child): Use cygheap_alloc_sz to map parent's cygheap.
+ * cygheap.h (_CYGHEAPSIZE_SLOP): New define.
+ (CYGHEAPSIZE): Use _CYGHEAPSIZE_SLOP.
+
+2004-03-18 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_proc.cc (format_proc_meminfo): On NT, try to figure out
+ real swap file usage by requesting SystemPagefileInformation. Use
+ GlobalMemoryStatus as fallback.
+ * ntdll.h (_SYSTEM_INFORMATION_CLASS): Add SystemPagefileInformation.
+ (struct _SYSTEM_PAGEFILE_INFORMATION): Define.
+
+2004-03-17 Christopher Faylor <cgf@redhat.com>
+
+ * pipe.cc (fhandler_pipe::dup): Fix debugging message.
+
+2004-03-17 Christopher Faylor <cgf@redhat.com>
+
+ * include/cygwin/version.h: Bump DLL minor number to 9.
+
+2004-03-16 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (proc_terminate): Release sync_proc_subproc when done
+ terminating or suffer potential hangs.
+ (get_proc_lock): Reorganize debugging output slightly.
+
+2004-03-15 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_cygtls::fixup_after_fork): Just manipulate the signal
+ stack if a signal occurred during the parent's fork. Otherwise leave
+ it alone.
+
+2004-03-15 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (try_to_debug): Report on tid of caller.
+
+ * sync.cc (muto::acquire): Fix some races.
+ * sync.h (muto): Expose some fields for easier debugging.
+
+2004-03-15 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler.h (fhandler_dev_tape::tape_get_pos): Declare with extra
+ parameter for partition number.
+ (fhandler_dev_tape::_tape_set_pos): Ditto.
+ (fhandler_dev_tape::tape_partition): New method.
+ (fhandler_dev_tape::tape_set_partition): New method.
+ * fhandler_tape.cc (fhandler_dev_tape::open): Call private methods
+ directly instead of ioctl.
+ (fhandler_dev_tape::ioctl): Use long erase on MTERASE by default.
+ Don't use absolute positioning on MTSEEK. Call tape_set_partition
+ on MTSETPART, tape_partition on MTMKPART.
+ (fhandler_dev_tape::tape_get_pos): Add partition number parameter.
+ Prefer logical position information over absolute position information.
+ Return partition number.
+ (fhandler_dev_tape::_tape_set_pos): Add partition number parameter.
+ Use in SetTapePosition.
+ (fhandler_dev_tape::tape_set_pos): Remove special TAPE_ABSOLUTE_BLOCK
+ handling.
+ (fhandler_dev_tape::tape_erase): Rewind before erasing.
+ (fhandler_dev_tape::tape_status): Rearrange slightly. Try to get a
+ MediaType even if no tape is loaded. Store active partition in
+ mt_resid as on Linux.
+ (fhandler_dev_tape::tape_partition): New method.
+ (fhandler_dev_tape::tape_set_partition): New method.
+ * include/cygwin/mtio.h: Fix copyright. Add comment to explain
+ mt_resid content.
+ * include/cygwin/version.h: Bump API minor number.
+
+2004-03-14 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_cygtls::remove): Call remove_wq even when we can't
+ necessarily get the cygtls table lock.
+ * cygtls.h (_cygtls::remove_wq): Add wait argument.
+ * sigproc.cc (_cygtls::remove_wq): Honor wait argument when acquiring
+ lock.
+ (proc_terminate): Don't NULL sync_proc_subproc since other threads may
+ still try to access it.
+
+2004-03-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * errno.cc (errmap): Map ERROR_BEGINNING_OF_MEDIA and
+ ERROR_SETMARK_DETECTED to EIO instead of ESPIPE.
+ Handle ERROR_FILEMARK_DETECTED.
+ * fhandler_tape.cc (TAPE_FUNC): Add comment that ERROR_BUS_RESET
+ has still to be handled correctly.
+ (fhandler_dev_tape::open): Accomodate fact that get.mt_dsreg
+ also contains density code.
+ (fhandler_dev_tape::ioctl): Rearrange slightly. Reset devbuf also on
+ MTNOP, MTWSM, MTSETBLK, MTSETDRVBUFFER, MTSETPART and MTMKPART.
+ (fhandler_dev_tape::tape_set_pos): Rearrange. Match behaviour to
+ the Linux tape driver.
+ (fhandler_dev_tape::tape_status): Call IOCTL_STORAGE_GET_MEDIA_TYPES_EX
+ if available. Return device type and density code in appropriate
+ mtget members.
+ * wincap.h (wincaps::has_ioctl_storage_get_media_types_ex): New element.
+ * wincap.cc: Implement above element throughout.
+ * include/cygwin/mtio.h: Add tape device types as returned by
+ IOCTL_STORAGE_GET_MEDIA_TYPES_EX.
+ (MT_TAPE_INFO): Use above type codes.
+ (struct mtget): Change mt_dsreg comment.
+
+2004-03-14 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * dir.cc (rmdir): Construct real_dir with flag PC_FULL.
+ Use a loop instead of recursion to handle the current directory.
+
+2004-03-14 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_cygtls::remove): Call remove_wq to ensure that wait stuff
+ is removed from proc_subproc linked list.
+ * cygtls.h (_cygtls::remove_wq): Declare.
+ * sigproc.cc (_cygtls::remove_wq): Define.
+ (proc_subproc): Label event handle appropriately.
+ * spawn.cc (spawn_guts): Return -1 when wait() fails for spawn types
+ that require waiting.
+
+2004-03-13 Corinna Vinschen <corinna@vinschen.de>
+
+ * errno.cc (errmap): Handle ERROR_BUS_RESET.
+ * fhandler.h (fhandler_dev_raw::write_file): New method, created
+ from former static function.
+ (fhandler_dev_raw::read_file): Ditto.
+ (reset_devbuf): New inline method.
+ (class fhandler_dev_tape): Add TAPE_GET_DRIVE_PARAMETERS
+ member `dp'.
+ (fhandler_dev_tape::write_file): New method.
+ (fhandler_dev_tape::read_file): Ditto.
+ (fhandler_dev_tape::tape_get_feature): Convert to inline method.
+ (fhandler_dev_tape::tape_error): New method, created from former
+ static function.
+ (fhandler_dev_tape::tape_get_blocksize): Remove declaration.
+ * fhandler_raw.cc (fhandler_dev_raw::write_file): New method, created
+ from former static function.
+ (fhandler_dev_raw::read_file): Ditto.
+ (fhandler_dev_raw::writebuf): Accomodate the fact that no devbuf
+ exists under variable block size condition.
+ (fhandler_dev_raw::raw_read): Ditto. Add local p pointer to simplify
+ pointer arithmetic.
+ (fhandler_dev_raw::raw_write): Always set devbufend to 0 when starting
+ with writing. Accomodate the fact that no devbuf exists under
+ variable block size condition.
+ * fhandler_tape.cc: Various formatting changes.
+ (TAPE_FUNC): New macro. Use throughout as tape function loop.
+ (get_ll): Convert into macro.
+ (IS_EOM): New macro.
+ (IS_EOF): New macro.
+ (fhandler_dev_tape::is_eom): Use IS_EOM macro.
+ (fhandler_dev_tape::is_eof): Use IS_EOF macro.
+ (fhandler_dev_tape::write_file): New method.
+ (fhandler_dev_tape::read_file): New method.
+ (fhandler_dev_tape::open): Get drive information block here once.
+ (fhandler_dev_tape::lseek): Remove unneeded duplicate code.
+ (fhandler_dev_tape::dup): Duplicate drive information block.
+ (fhandler_dev_tape::ioctl): Remove drvbuf in variable block size mode.
+ Return ERROR_INVALID_BLOCK_LENGTH instead of ERROR_MORE_DATA if
+ buffer contains data which would get lost on buffer size changing.
+ Use absolute tape positioning also if drive only supports logical
+ block positioning.
+ (fhandler_dev_tape::tape_error): New method, created from former
+ static function.
+ (fhandler_dev_tape::tape_get_pos): Allow logical block reporting.
+ Workaround tape driver bug.
+ (fhandler_dev_tape::_tape_set_pos): Reset device buffer and flags
+ after successful repositioning.
+ (fhandler_dev_tape::tape_set_pos): Allow logical block positioning.
+ Workaround tape driver bug.
+ (fhandler_dev_tape::tape_erase): Use dp instead of calling
+ GetTapeParameters.
+ (fhandler_dev_tape::tape_prepare): Ditto.
+ (fhandler_dev_tape::tape_get_blocksize): Remove.
+ (fhandler_dev_tape::tape_set_blocksize): Don't call tape_get_blocksize.
+ Error handling already done in fhandler_dev_tape::ioctl.
+ (fhandler_dev_tape::tape_status): Remove local `dp' variable.
+ Accomodate logical tape reporting. Call tape_get_feature instead
+ of accessing feature words directly.
+ (fhandler_dev_tape::tape_compression): Use dp instead of calling
+ GetTapeParameters. Fix resetting datcompression.
+
+2004-03-12 Christopher Faylor <cgf@redhat.com>
+
+ * wait.cc (wait4): Initialize pointer on entry. Avoid calling
+ call_signal_handler twice since that guarantees exiting with errno set
+ to EINTR.
+
+2004-03-12 Corinna Vinschen <corinna@vinschen.de>
+
+ * exceptions.cc (sigpacket::process): Simplify code slightly.
+
+2004-03-11 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.h (waitq): Declare structure here.
+ (_cygtls::wq): Declare.
+ * cygtls.cc (_cygtls::fixup_after_fork): Clear wq.thread_ev to avoid
+ using an invalid event handle in forked process.
+ * dcrt0.cc (waitq_storage): Delete.
+ (threadstuff): Remove waitq_storage.
+ * perthread.h (per_thread_waitq): Delete.
+ (waitq_storage): Delete declaration.
+ * sigproc.cc (sigproc_init): Remove perthread waitq consideration.
+ * sigproc.h (waitq): Delete declaration.
+ * wait.cc (wait4): Use _my_tls waitq structure rather than per_thread.
+
+2004-03-11 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * cygtls.h (_cygtls::newmask): Delete member.
+ (_cygtls::deltamask): New member.
+ * gendef (_sigdelayed): Replace the call to set_process_mask by a call
+ to set_process_mask_delta.
+ * exceptions.cc (handle_sigsuspend): Do not filter tempmask. Or
+ SIG_NONMASKABLE in deltamask as a flag.
+ (_cygtls::interrupt_setup): Set deltamask only.
+ (set_process_mask_delta): New function.
+ (_cygtls::call_signal_handler): Replace the first call to
+ set_process_mask by a call to set_process_mask_delta.
+ * tlsoffsets.h: Regenerate.
+
+2004-03-11 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_cygtls::fixup_after_fork): Remove unneeded setting of
+ oldmask.
+ * exceptions.cc: Remove some __I386__ conditionals.
+ (handle_exceptions): Move ppid test to outside of a loop for
+ efficiency.
+ (setup_handler): Make debugging output more wordy.
+ (_cygtls::call_signal_handler): To avoid a race, use lock/unlock to
+ synchronize with signal thread and ensure that signal_arrived event has
+ actually been set.
+ * gendef (_sigfe): Use ebx for all sigstack manipulations to ensure
+ that the register is saved. Move setting of incyg to within stack lock
+ to avoid setup_handler confusion.
+ (_sigbe): Use ebx for all sigstack manipulations to ensure that the
+ register is saved.
+ (_cygtls::pop): Ditto.
+ (_cygtls::lock): Ditto.
+ (stabilize_sig_stack): Ditto.
+ (setjmp): Ditto.
+ (longjmp): Ditto.
+
+2004-03-08 Jaakko Hyvatti <jaakko.hyvatti@iki.fi>
+
+ * fhandler_serial.cc (fhandler_serial::ioctl): Implement TIOCSBRK and
+ TIOCCBRK.
+ * include/sys/termios.h: Define TIOCSBRK and TIOCCBRK.
+
+2004-03-08 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (setup_handler): Avoid suspending a thread if it is in
+ a cygwin function, in an exception, spinning, or locked.
+ * gendef (_sigfe): Move incyg setting earlier.
+ (sigreturn): Set incyg flag to avoid interrupting called cygwin
+ functions.
+ (sigdelayed): Ditto.
+ (stabilize_sig_stack): Ditto.
+
+ * sigproc.cc (proc_subproc): Don't restore process lock early in exec
+ case.
+
+ * cygtls.h: Reorganize fields in _cygtls slightly.
+ * tlsoffsets.h: Regenerate.
+
+2004-03-06 Christopher Faylor <cgf@redhat.com>
+
+ * fork.cc (fork_parent): Save parent pid in a temporary variable since
+ child could conceivably exit before function returns, rendering the
+ child's shared memory area invalid.
+
+ * cygtls.h (_cygtls::incyg): Declare new field.
+ (_cygtls::in_exception): Define new function.
+ * exceptions.cc (setup_handler): Remove locked flag. Use 'incyg' flag
+ and in_exception function to determine when we're in a cygwin function.
+ (_cygtls::call_signal_handler): Decrement incyg flag prior to calling a
+ handler. Increment it on return.
+ * gendef (_sigfe): Increment incyg flag. Use testl for zero testing
+ rather than orl, for consistency.
+ (_sigbe): Decrement incyg flag. Use testl for zero testing rather than
+ orl, for consistency.
+ (_cygtls::pop): Use testl for zero testing rather than orl, for
+ consistency.
+ (stabilize_sig_stack): Ditto.
+
+ * tlsoffsets.h: Regenerate.
+
+2004-03-05 Christopher Faylor <cgf@redhat.com>
+
+ * gendef (sigdelayed): Handle return here rather than going through
+ sigbe to ensure that flags are properly restored.
+
+2004-03-04 Thomas Pfaff <tpfaff@gmx.net>
+
+ * include/pthread.h (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP): New
+ define.
+ (PTHREAD_NORMAL_MUTEX_INITIALIZER_NP): Ditto.
+ (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Ditto.
+ * thread.cc (pthread_mutex::is_good_initializer): Check for all
+ posssible initializers
+ (pthread_mutex::is_good_initializer_or_object): Ditto.
+ (pthread_mutex::is_good_initializer_or_bad_object): Ditto.
+ (verifyable_object_isvalid): Support up to three static initializers.
+ (verifyable_object_isvalid (void const *,long)): Remove.
+ (pthread_cond::is_good_initializer_or_bad_object): Remove unneeded
+ objectState var.
+ (pthread_cond::init): Condition remains unchanged when creation has
+ failed.
+ (pthread_rwlock::is_good_initializer_or_bad_object): Remove unneeded
+ objectState var.
+ (pthread_rwlock::init): Rwlock remains unchanged when creation has
+ failed.
+ (pthread_mutex::init): Remove obsolete comment. Mutex remains
+ unchanged when creation has failed. Add support for new initializers.
+ (pthread_mutex_getprioceiling): Do not create mutex, just return
+ ENOSYS.
+ (pthread_mutex_lock): Simplify.
+ (pthread_mutex_trylock): Remove unneeded local themutex.
+ (pthread_mutex_unlock): Just return EPERM if mutex is not initialized.
+ (pthread_mutex_setprioceiling): Do not create mutex, just return
+ ENOSYS.
+ * thread.h (verifyable_object_isvalid): Support up to three static
+ initializers.
+ (verifyable_object_isvalid (void const *,long)): Remove prototype.
+ (pthread_mutex::init): Add optional initializer to parameter list.
+
+2004-03-03 Christopher Faylor <cgf@redhat.com>
+
+ * gendef (sigreturn): Call stabilize_sig_stack to ensure that there are
+ no pending signals. Restore edx later.
+ (sigdelayed): Save edx earlier.
+
+ * malloc_wrapper.cc (malloc_init): Add some more debugging output.
+
+2004-03-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * fhandler_raw.cc (fhandler_dev_raw::raw_read): When reading with
+ variable block size, read only one block, read directly into user
+ supplied buffer, return ENOMEM if user supplied buffer is smaller
+ than size of next block to read. Use read2 instead of bytes_to_read
+ to count number of bytes read.
+ * fhandler_tape.cc (fhandler_dev_tape::open): Add debug output.
+
+2004-02-26 Brian Ford <ford@vss.fsi.com>
+
+ * miscfuncs.cc (check_invalid_virtual_addr): Assure the last page
+ in the range is always tested. Add appropriate const.
+ * mmap.cc (mmap_record::alloc_fh): Remove unused static path_conf object.
+
+2004-02-25 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (setup_handler): Signal event for any sigwaitinfo, if it
+ exists, to force signal to be handled. Zero event here to prevent
+ races.
+ * signal.cc (sigwaitinfo): Use local handle value for everything since
+ signal thread could zero event element at any time. Detect when
+ awaking due to thread not in mask and set return value and errno
+ accordingly. Don't set signal number to zero unless we've recognized
+ the signal.
+ * sigproc.cc (sigq): Rename from sigqueue throughout.
+
+ * thread.cc (pthread::join): Handle signals received while waiting for
+ thread to terminate.
+
+2004-02-25 Christopher Faylor <cgf@redhat.com>
+
+ * cygwin.din: Export sighold, sigqueue.
+ * exceptions.cc (sighold): Define new function.
+ * signal.cc (handle_sigprocmask): Set correct errno for invalid signal.
+ Simplify debugging output.
+ (sigqueue): Define new function.
+ * include/cygwin/signal.h (sighold): Declare new function.
+ (sigqueue): Ditto.
+ * include/cygwin/version.h: Bump API minor version number.
+ * include/limits.h (TIMER_MAX): Define.
+ (_POSIX_TIMER_MAX): Ditto.
+
+2004-02-25 Brian Ford <ford@vss.fsi.com>,
+ Corinna Vinschen <corinna@vinschen.de>
+
+ * miscfuncs.cc (check_invalid_virtual_addr): New function.
+ * winsup.h (check_invalid_virtual_addr): Declare.
+ * mmap.cc (munmap): Call check_invalid_virtual_addr instead of
+ IsBadReadPtr.
+
+2004-02-24 Christopher Faylor <cgf@redhat.com>
+
+ * gendef (stabilize_sig_stack): Correctly align this pointer for call
+ to _cygtls::call_signal_handler.
+ * gentls_offsets: Output sizeof field.
+ * tlsoffsets.h: Regenerate.
+
+2004-02-24 Christopher Faylor <cgf@redhat.com>
+
+ * dcrt0.cc (_dll_crt0): Don't check sync_startup if threadfunc_ix is set.
+
+ * external.cc (cygwin_internal): Implement CW_GET_BINMODE.
+ * include/sys/cygwin.h: Declare CW_GET_BINMODE.
+
+2004-02-24 Christopher Faylor <cgf@redhat.com>
+
+ * dcrt0.cc (_dll_crt0): Add some stern internal errors.
+
+2004-02-24 Corinna Vinschen <corinna@vinschen.de>
+
+ * thread.cc (pthread::cancelable_wait): Rearrange slightly.
+ Add do_sig_wait parameter. Wait for signal_arrived if set to true.
+ Return WAIT_SIGNALED if signal arrived.
+ (pthread_cond::wait): Accomodate change to pthread::cancelable_wait.
+ (pthread::join): Ditto.
+ (semaphore::_timedwait): Ditto.
+ (semaphore::_wait): Ditto. Change to return int to allow status
+ feedback.
+ (semaphore::wait): Return return value from semaphore::_wait.
+ * thread.h (WAIT_SIGNALED): New definition.
+ (pthread::cancelable_wait): Change declaration. Define do_sig_wait
+ as false by default to not interfere with existing calls accidentally.
+ (semaphore::_wait): Declare int.
+
+2004-02-21 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (sigpacket::process): Make sure that tls is filled in
+ for SIGSTOP condition.
+ (_cygtls::call_signal_handler): Restore signal mask using saved oldmask
+ rather than current oldmask.
+
+2004-02-20 Christopher Faylor <cgf@redhat.com>
+
+ * path.cc (conv_path_list): Return error condition.
+ (copy1): New function.
+ (copyenc): New function.
+ (mount_item::fnmunge): Return error condition. Use new functions to
+ copy strings.
+ (mount_item::build_win32): Ditto.
+ (mount_info::conv_to_win32_path): Return error condition.
+ (cygwin_conv_to_posix_path): Return result of path conversion.
+ (cygwin_conv_to_full_posix_path): Ditto.
+ (return_with_errno): New macro.
+ (cygwin_win32_to_posix_path_list): Use new macro to potentially set
+ errno.
+ (cygwin_posix_to_win32_path_list): Ditto.
+ * path.h (mount_item::fnmunge): Add size argument.
+ (mount_item::build_win32): Ditto.
+
+2004-02-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * getopt.c: Avoid useless compiler warnings.
+
+2004-02-20 Corinna Vinschen <corinna@vinschen.de>
+
+ * getopt.c: Replace with latest vanilla(!) OpenBSD version 1.16.
+
+2004-02-18 Christopher Faylor <cgf@redhat.com>
+
+ * fork.cc (fork_child): Invert sense of test which defeated correct
+ handling in a fork from a non-main thread.
+
+ * dcrt0.cc (initial_env): Eliminate parameter and just send DebugBreak
+ when appropriate.
+ (dll_crt0_0): Reflect parameter change to initial_env.
+ (dll_crt0_1): Don't call initial_env.
+
+2004-02-18 Christopher Faylor <cgf@redhat.com>
+
+ * gendef (stabilize_sig_stack): New function.
+ (setjmp): Import, add sig stack handling. Store sig stack info.
+ (longjmp): Call stabilize_sig_stack. Restore sig stack info.
+ * config/i386/setjmp.c: Remove.
+
+2004-02-17 Corinna Vinschen <corinna@vinschen.de>
+
+ * fork.cc (fork_child): Move fixup_shms_after_fork so that
+ signal_arrived is initialized when calling it.
+
+2004-02-17 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in (clean): Clean libserver, too.
+
+ * fhandler.cc (fhandler_base::~fhandler_base): Remove path_conv cleanup.
+ * syscalls.cc (chroot): Ditto.
+ * path.cc (path_conv::~path_conv): Define new destructor.
+ (conv_path_list_buf_size): Remove explicit path_conv cleanup.
+ * path.h (path_conv::~path_conv): Declare new destructor.
+
+2004-02-16 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Compile flock.o with -fomit-frame-pointer.
+
+2004-02-16 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Compile dlfcn.o with -fomit-frame-pointer.
+
+2004-02-16 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Compile delqueue.o with -fomit-frame-pointer.
+
+2004-02-16 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * syscalls.cc (rename): Do not test the MoveFile error code
+ where MoveFileEx exists.
+
+2004-02-15 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (_csbrk): Report more debugging details on failing
+ condition.
+
+2004-02-14 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Compile syscalls.o with -fomit-frame-pointer.
+
+ * sigproc.cc: Eliminate unused variable.
+
+2004-02-14 Corinna Vinschen <corinna@vinschen.de>
+
+ * getopt.c: Replace with latest NetBSD version 1.16. Keep Cygwin
+ specific changes as minimal as possible.
+
+2004-02-13 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (proc_subproc): Change warning back to silent debug
+ output.
+
+2004-02-13 Christopher Faylor <cgf@redhat.com>
+
+ * dcrt0.cc (alloc_stack_hard_way): Revert to previous implementation.
+ (alloc_stack): Ditto.
+ * exceptions.cc (ctrl_c_handler): Add debugging output.
+
+2004-02-13 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in (clean): Remove sigfe.s.
+ (sigfe.s): Ensure that sigfe.s will be regenerated if it does not exist.
+ * dll_init.cc (dll_dllcrt0): Simplify initializing tests.
+
+ * exceptions.cc (setup_handler): Detect when stub caller is either
+ spinning or has acquired the lock after being suspended to avoid
+ windows problems with suspending a win32 API call.
+
+ * cygtls.h (_cygtls::spinning): Declare new element.
+ * gendef: Remove unused _siglist_index and _siglist declaration.
+ (_sigfe): Set spinning element when potentially looping, waiting for lock.
+ (_sigbe): Ditto.
+ (_cygtls::lock): Ditto.
+ (_longjmp): Ditto.
+ * tlsoffsets.h: Regenerate.
+ * pinfo.cc (_pinfo::exit): Set final exit state here. Call sigproc_terminate if
+ invoked with 'norecord'. Clear any residual _cygtls stuff.
+ * winsup.h (exit_states): Define ES_FINAL.
+ * spawn.cc (spawn_guts): Don't call proc_terminate specifically when
+ execing. Let _pinfo::exit handle that case.
+
+ * sigproc.cc (wait_subproc): Always exit loop early when proc_loop_wait.
+
+ * init.cc (munge_threadfunc): Eliminate unused argument.
+ (dll_entry): Reflect above change in call to munge_threadfunc.
+
+2004-02-11 Christopher Faylor <cgf@redhat.com>
+
+ * gendef (_sigbe): Zero location on pop.
+ (_cygtls::pop): Ditto.
+
+2004-02-11 Christopher Faylor <cgf@redhat.com>
+
+ * dcrt0.cc (alloc_stack_hard_way): Eliminate second argument.
+ (alloc_stack): Remove use of 'b' throughout.
+
+2004-02-11 Christopher Faylor <cgf@redhat.com>
+
+ Rename _threadinfo to _cygtls, throughout.
+ * cygtls.h (_cygtls::call_signal_handler): Rename from
+ call_signal_handler_now.
+ (_cygtls::push): Make second argument mandatory.
+ (_cygtls::fixup_after_fork): Declare new function.
+ (_cygtls::lock): Ditto.
+ * cygtls.cc (_cygtls::fixup_after_fork): Define new function.
+ * dcrt0.cc (cygwin_finished_initializing): Define as bool.
+ (alloc_stack): Use _tlstop rather than arbitrary variable in probably
+ vain attempt to avoid strange fork problem on CTRL-C.
+ (dll_crt0_0): Remove obsolete winpids::init call.
+ * dll_init.cc (dll_dllcrt0): Detect forkee condition as equivalent to
+ initializing.
+ * winsup.h (cygwin_finished_initializing): Declare as bool.
+ * exceptions.cc (handle_exceptions): Rely on
+ cygwin_finished_initializing to determine how to handle exception
+ during process startup.
+ (_cygtls::call_signal_handler): Rename from call_signal_handler_now.
+ (_cygtls::interrupt_now): Fill in second argument to push.
+ (signal_fixup_after_fork): Eliminate.
+ (setup_handler): Initialize locked to avoid potential inappropriate
+ unlock. Resume thread if it has acquired the stack lock.
+ (ctrl_c_handler): Just exit if ctrl-c is hit before cygiwn has finished
+ initializing.
+ * fork.cc (sync_with_child): Don't call abort since it can cause exit
+ deadlocks.
+ (sync_with_child): Change debugging output slightly.
+ (fork_child): Set cygwin_finished_initializing here. Call _cygtls fork
+ fixup and explicitly call sigproc_init.
+ (fork_parent): Release malloc lock on fork failure.
+ (vfork): Call signal handler via _my_tls.
+ * sigproc.cc (sig_send): Ditto.
+ * syscalls.cc (readv): Ditto.
+ * termios.cc (tcsetattr): Ditto.
+ * wait.cc (wait4): Ditto.
+ * signal.cc (nanosleep): Ditto.
+ (abort): Ditto.
+ (kill_pgrp): Avoid killing self if exiting.
+ * sync.cc (muto::acquire): Remove (temporarily?) ill-advised
+ exiting_thread check.
+ * gendef (_sigfe): Be more agressive in protecting stack pointer from
+ other access by signal thread.
+ (_cygtls::locked): Define new function.
+ (_sigbe): Ditto.
+ (_cygtls::pop): Protect edx.
+ (_cygtls::lock): Use guaranteed method to set eax to 1.
+ (longjmp): Aggressively protect signal stack.
+ * miscfuncs.cc (low_priority_sleep): Reduce "sleep time" for secs == 0.
+ * pinfo.cc (winpids::set): Counterintuitively use malloc's lock to
+ protect simultaneous access to the pids list since there are
+ pathological conditions which can cause malloc to call winpid.
+ (winpids::init): Eliminate.
+ * pinfo.h (winpids::cs): Eliminate declaration.
+ * pinfo.h (winpids::init): Eliminate definition.
+
+2004-02-11 Corinna Vinschen <corinna@vinschen.de>
+
+ * security.cc (get_nt_object_attribute): Fix error handling.
+
+2004-02-09 Ralf Habacker <ralf.habacker@freenet.de>
+
+ * fhandler_socket.cc (fhandler_socket::ioctl): Add FIONREAD handling.
+
+2004-02-08 Christopher Faylor <cgf@redhat.com>
+
+ * debug.h (console_printf): Define for non-debugging condition.
+
+ * cygtls.h (_threadinfo::lock): Remove wait argument.
+ (_threadinfo::interrupt_setup): Remove retaddr argument.
+ * exceptions.cc (_threadinfo::interrupt_setup): Ditto.
+ (_threadinfo::interrupt_now): Accommodate change to interrupt_setup
+ argument.
+ (setup_handler): Ditto. Always lock sig stack prior to determining
+ interrupt method.
+ * gendef (_sigfe): Correct thinko regarding cmpxchg.
+ (_sigbe): Ditto.
+ (_threadinfo::lock): Ditto.
+ (_threadinfo::pop): Eliminate left-over stack unlock.
+ * sigproc.cc (proc_subproc): Change debugging output to printed
+ warning.
+
+2004-02-08 Christopher Faylor <cgf@redhat.com>
+
+ * localtime.cc (localtime_r): Call tzset.
+
+ * Makefile.in: Make version.h/cygwin.din version check a warning since
+ it is not foolproof.
+
+ * cygheap.h (CYGHEAPSIZE): Bump size down.
+
+ * cygtls.h (_threadinfo::stacklock): New element.
+ (_threadinfo::pop): Make regparm.
+ (_threadinfo::lock): New function.
+ (_threadinfo::unlock): New function.
+ * cygtls.cc (_threadinfo::push): Wait for a lock on the stack before
+ performing the operation.
+ (_threadinfo::pop): Move to another file.
+ * cygwin.din: More SIGFE changes.
+ * exceptions.cc (try_to_debug): Always display messages on console.
+ (handle_exceptions): Unwind stack only when actually about to call
+ sig_send.
+ (setup_handler): Lock stack prior to performing any operations.
+ * gendef (_sigfe): Ditto.
+ (_sigbe): Ditto.
+ (_threadinfo::pop): Ditto. Move here.
+ * gen_tlsoffsets: Generate positive offsets.
+ * tlsoffsets.h: Regenerate.
+
+2004-02-06 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygserver.h (CYGWIN_SERVER_VERSION_API): Bump.
+ * cygserver_ipc.h (struct proc): Add signal_arrived member.
+ (ipc_set_proc_info): Inititalize blk.signal_arrived.
+
+2004-02-06 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * uinfo.cc (cygheap_user::init): Use sec_user_nih to build a
+ security descriptor. Set both the process and the default DACLs.
+ * fork.cc (fork_parent): Use sec_none_nih security attributes.
+ * spawn.cc (spawn_guts): Ditto.
+
+2004-02-05 Christopher Faylor <cgf@redhat.com>
+
+ * cygwin.din: Make many more functions SIGFE.
+ * include/cygwin/version.h (CYGWIN_VERSION_SHARED_DATA): Bump.
+
+2004-02-05 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * security.h (SID): New macro.
+ (well_known_*_sid): Change type to cygpsid.
+ (cygsid::init): Delete declaration.
+ * sec_helper.cc (well_known_*_sid): Define using above SID macro.
+ (cygsid::init): Delete.
+ * dcrt0.cc (dll_crt0_0): Do not call cygsid::init.
+ * security.cc (get_user_local_groups): Change the second argument type
+ to cygpsid.
+
+2004-02-03 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.h (_local_storage::signamebuf): Increase size to prevent
+ overflow on really odd values.
+ * tlsoffsets.h: Regenerate.
+
+2004-02-03 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in (DLL_OFILES): Add strsig.o.
+ * cygtls.h (_local_storage::signamebuf): New element.
+ * sysconf.cc (sysconf): Implement _SC_RTSIG_MAX.
+ * tlsoffsets.h: Regenerate.
+ * include/limits.h (_POSIX_RTSIG_MAX): New define.
+ (RTSIG_MAX): Ditto.
+ * include/cygwin/signal.h (SIGRTMIN): New define.
+ (SIGRTMAX): Ditto.
+ (NSIG): Bump.
+ * strsig.cc: New file.
+
+2004-02-03 Jason Tishler <jason@tishler.net>
+
+ * window.cc (Winmain): Show windows error code in error output when
+ RegisterClass fails.
+
+2004-02-02 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler.h (*::fixup_after_exec): Eliminate unused handle argument.
+ * fhandler.h (dtable::fixup_after_exec): Eliminate unused handle
+ argument.
+ * dcrt0.cc (dll_crt0_1): Reflect elimination of unused handle argument
+ to fixup_after_exec.
+ * dtable.cc (dtable::fixup_after_exec): Ditto.
+ * fhandler_console.cc (fhandler_console::fixup_after_exec): Ditto.
+ * fhandler_dsp.cc (fhandler_dsp::fixup_after_exec): Ditto.
+ * fhandler_raw.cc (fhandler_raw::fixup_after_exec): Ditto.
+ * fhandler_socket.cc (fhandler_socket::fixup_after_exec): Ditto.
+ * fhandler_virtual.cc (fhandler_virtual::fixup_after_exec): Ditto.
+ * pipe.cc (fhandler_pipe::fixup_after_exec): Ditto.
+
+2004-02-02 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * spawn.cc (spawn_guts): Do not set ciresrv.parent.
+ * child_info.h (child_info_spawn::~child_info_spawn): Do not close
+ parent. Update CURR_CHILD_INFO_MAGIC.
+ * dcrt0.cc (dll_crt0_0): Do not close spawn_info->parent. Pass NULL to
+ cygheap->fdtab.fixup_after_exec().
+
+2004-02-02 Christopher Faylor <cgf@redhat.com>
+
+ Throughout, change name from set_inheritance to set_no_inheritance to
+ better reflect input arguments of this function.
+
+ * cygheap.h (CYGHEAPSIZE): Increase size of cygheap to something closer
+ to the 21st century.
+
+2004-02-02 Corinna Vinschen <corinna@vinschen.de>
+
+ * cygerrno.h (set_errno): Replace semicolon with comma in non-DEBUGGING
+ version to avoid compile time error.
+
+2004-02-01 Christopher Faylor <cgf@redhat.com>
+
+ * cygerrno.h (set_errno): Set global errno whenever setting thread
+ specific version.
+ * debug.cc (__set_errno): Ditto.
+
+ * exceptions.cc (handle_sigsuspend): Remove spurious
+ sig_dispatch_pending call.
+ (set_signal_mask): When there seem to be pending signals to dispatch,
+ tell signal_dispatch_pending/sig_send not to specifically call any
+ handlers.
+ * sigproc.h (sig_dispatch_pending): Change declaration to void.
+ * sigproc.cc (sig_dispatch_pending): Change definition to void. Take
+ an argument to determine whether to tell sig_send to wait for handler
+ to be called.
+ * sigproc.cc (sig_send): Don't call signal handler when sig ==
+ __SIGFLUSHFAST.
+ (wait_sig): Honor __SIGFLUSHFAST. Guard against sigpacket::process
+ nuking si_signo.
+ * sigproc.h (__SIGFLUSHFAST): Define new special signal.
+ (sig_dispatch_pending): Change declaration to void. Take optional
+ boolean argument.
+
+ * fork.cc (vfork): Add debugging output.
+
+2004-01-26 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (sig_handle_tty_stop): Avoid races by waiting for both
+ signal_arrived and for sigCONT.
+ (sigpacket::process): Enforce sending of both signal_arrived and
+ sigCONT, where appropriate.
+ * gendef (sigreturn): Save tls pointer in ebx so that it can jump into
+ sigdelayed and use the same register.
+
+2004-01-26 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_threadinfo::init_thread): Add more local reent stdio
+ initialization.
+ * dcrt0.cc (initial_env): Can it really be true that XP doesn't allow
+ attaching a debugger during DLL attach? Add temporary workaround.
+ (dll_crt0_0): Ensure that _impure_ptr stdio is initialized before any
+ threads.
+ (dll_crt0_1): Move _impure_ptr initialization to dll_crt0_0.
+ * exceptions.cc (try_to_debug): Reinstate old method for looping while
+ debugging.
+ * syscalls.cc (_cygwin_istext_for_stdio): Regularize debugging output.
+ Remove hopefully extraneous check.
+ (setmode_helper): Add debugging output for improbable case. Use
+ "binary" rather "raw" for consistency.
+
+2004-01-25 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler.cc (fhandler_base::fhaccess): Avoid always setting errno to
+ EACCESS when return value is < 0. Rely on errno being set properly.
+
+2004-01-25 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (proc_subproc): Don't protect *child's* handle.
+
+2004-01-24 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler.h (fhandler_base::fhaccess): Return int for compatibility
+ with access.
+ * fhandler.cc (fhandler_base::fhaccess): Return int. Use consistent
+ variable name for exit value. Exit at bottom, printing debugging
+ information, like other cygwin functions.
+
+2004-01-23 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (init_cygheap::close_ctty): Protect YA vforkism.
+ * fhandler.h (fhandler_base::has_acls): Make pass through for path_conv
+ method.
+ (fhandler_base::isremote): Ditto.
+ (fhandler_base::is_fs_special): Ditto.
+ (fhandler_base::has_attribute): Ditto. Define new function.
+ (fhandler_base::fhaccess): Declare new function based on access_worker.
+ (fhandler_base::set_has_acls): Eliminate obsolete function.
+ (fhandler_base::set_isremote): Ditto.
+ * fhandler.cc (fhandler_base::fhaccess): Move from syscalls.cc and into
+ fhandler_base class. Use fhandler methods to access data rather than
+ path_conv stuff.
+ (fhandler_base::device_access_denied): Use fhaccess method.
+ * fhandler_disk_file.cc (fhandler_disk_file::opendir): Ditto.
+ (fhandler_base::open_fs): Remove calls to obsolete functions.
+ * fhandler_virtual.cc (fhandler_virtual::open): Ditto.
+ * winsup.h (access_worker): Remove obsolete access_worker declaration.
+ *syscalls.cc (access_worker): Move function to fhandler.cc.
+ (access): Use fhaccess method.
+
+ * pinfo.cc (_pinfo::set_ctty): Clarify debugging output.
+ * sigproc.cc (sig_dispatch_pending): Ditto.
+ * syscalls.cc (setsid): Perform minor rearrangement.
+
+2004-01-23 Pierre Humblet <pierre.humblet@ieee.org>
+
+ * fhandler_socket.cc (fhandler_socket::create_secret_event): Avoid
+ creating multiple handles. Always allow event inheritance but set the
+ handle inheritance appropriately. Improve error handling.
+ (fhandler_socket::check_peer_secret_event): Improve error handling.
+ (fhandler_socket::close_secret_event): Simply call CloseHandle.
+ (fhandler_socket::set_close_on_exec): Set secret event inheritance.
+
+2004-01-23 Christopher Faylor <cgf@redhat.com>
+
+ * configure.in: Remove NEWVFORK default.
+ * configure: Regenerate.
+ * dcrt0.cc: Conditionalize vfork stuff throughout.
+ * dtable.cc: Ditto.
+ * perthread.h: Ditto.
+ * pipe.cc (fhandler_pipe::close): Ditto.
+ * spawn.cc (spawnve): Ditto.
+ * syscalls.cc (setsid): Ditto.
+ * exceptions.cc (sigpacket::process): Use macro to refer to vfork pid.
+
+ * debug.cc (verify_handle): Define new function.
+ * debug.h (VerifyHandle): Define new macro.
+ (verify_handle): Declare new function
+ * fhandler.cc (fhandler_base::dup): Verify that dup'ed handle is not
+ supposed to be in use.
+ (fhandler_base::set_inheritance): Ditto.
+ (fhandler_base::fork_fixup): Ditto.
+ * fhandler_socket.cc (fhandler_socket::dup): Ditto.
+ * fhandler_tty.cc (fhandler_tty_slave::open): Ditto.
+ * net.cc (set_socket_inheritance): Ditto.
+ * pinfo.cc (pinfo_fixup_after_exec): Ditto.
+ * sigproc.cc (proc_subproc): Ditto.
+ (sig_send): Ditto.
+ * spawn.cc (spawn_guts): Ditto.
+ * thread.cc (pthread::init_mainthread): Ditto.
+ * pipe.cc (fhandler_pipe::close): Close read_state with
+ ForceCloseHandle since it was protected.
+ (fhandler_pipe::fixup_after_exec): Protect read_state handle.
+ (fhandler_pipe::dup): Correctly close open handles on error condition.
+ Verify that dup'ed handle is not supposed to be in use.
+ (fhandler_pipe::create): Protect read_state.
+
+2004-01-23 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (sig_handle_tty_stop): Fix boneheaded mistake by using
+ correct check for parent state rather than inverted check mistakenly
+ introduced on 2003-09-15.
+
+2004-01-22 Brian Ford <ford@vss.fsi.com>
+
+ * fhandler_serial.cc (fhandler_serial::raw_write): Prevent a deadlock
+ when the input buffer overflows.
+ (fhandler_serial::raw_read): Correct to print the actual error and only
+ call PurgeComm when necessary.
+
+2004-01-22 Christopher Faylor <cgf@redhat.com>
+
+ * dcrt0.cc (reent_data): Make global.
+ * cygwin.din: Reexport reent_data.
+
+2004-01-22 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_threadinfo::remove): Don't assume that we are removing
+ _my_tls.
+ * exceptions.cc (setup_handler): Improve debugging output.
+ (call_signal_handler_now): Remove ill-advised debugger call.
+ * sigproc.cc (sigcomplete_main): Delete.
+ (sig_send): Honor FIXME and avoid using main thread's completion event
+ for everything or suffer races.
+ (pending_signals::add): Default stored mask to current process mask
+ rather than mask at time of signal send.
+ (wait_sig): Add debugging output.
+ * sigproc.h (sigpacket::mask_storage): Delete.
+
+2004-01-22 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler.cc (fhandler_base::open): Revert isfs change.
+
+2004-01-21 Christopher Faylor <cgf@redhat.com>
+
+ * devices.in: Change raw com device to more correct form.
+
+2004-01-21 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler.cc (fhandler_base::open): Use major numbers rather than
+ device numbers to control special behavior for devices which take
+ units.
+ * fhandler_raw.cc (fhandler_dev_raw::writebuf): Ditto.
+ (fhandler_dev_raw::fstat): Ditto.
+ (fhandler_dev_raw::open): Ditto.
+ (fhandler_dev_raw::ioctl): Ditto.
+
+2004-01-21 Nicholas Wourms <nwourms@netscape.net>
+
+ * signal.cc (sigaction): Fix if-statement typo.
+
+2004-01-21 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (handle_threadlist_exception): Change logic, improve
+ debugging output.
+
+2004-01-21 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler_tty.cc (fhandler_tty::ioctl): Semi-revert 2003-09-26 change
+ for TIOCSWINSZ. It is not an error for ioctl_request_event to be
+ missing.
+
+2004-01-20 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (pending_signals::save): New function.
+ (pending_signals::restore): Ditto.
+ (sig_clear): Save/restore current queue pointer.
+ (wait_sig): Delete signals marked as such.
+ * sigproc.h (__SIGDELETE): New enum.
+
+2004-01-20 Christopher Faylor <cgf@redhat.com>
+
+ * include/cygwin/version.h: Bump DLL minor number to 8.
+
+ * cygmalloc.h: Make more concessions to attempts to get debugging
+ malloc working.
+ * debug.h: Ditto.
+ * dlmalloc.cc: Ditto.
+ * dlmalloc.h: Ditto.
+ * malloc_wrapper.cc: Ditto.
+
+ * perthread.h (perthread::create): Use calloc to ensure zeroed memory.
+
+2004-01-20 Christopher Faylor <cgf@redhat.com>
+
+ * sec_acl.cc (setacl): Make sure sd_ret is large enough.
+
+2004-01-19 Christopher Faylor <cgf@redhat.com>
+
+ * sigproc.cc (sigproc_terminate): Don't close sendsig handle when
+ execing since we're not closing what we think we're closing.
+ (sig_send): Improve debugging when exiting due to no_signals_available.
+
+ * wincap.h (wincaps::cant_debug_dll_entry): New element.
+ * wincap.cc: Implement above element throughout.
+ * dcrt0.cc (initial_env): Accommodate changes necessary to allow
+ initial debugging for systems which do not allow debugging in
+ dll_entry.
+ (dll_crt0_0): Add initial_env call back here.
+
+ * Makefile.in (install-man): Use mandir as target for installation.
+
+2004-01-19 Christopher Faylor <cgf@redhat.com>
+
+ * include/cygwin/version.h: Bump DLL minor number to 7 (should have been
+ done earlier).
+
+2004-01-19 Christopher Faylor <cgf@redhat.com>
+
+ * cygwin/include/signal.h: Add copyright notice.
+
+ * cygwin.din: Make clock SIGFE. Add clock_gettime, sigwaitinfo,
+ timer_create, timer_delete, timer_settime.
+ * include/cygwin/version.h: Reflect above additions.
+ * fork.cc (fork_child): Call fixup_timers_after_fork.
+ * signal.cc (sigwait): Remove unused variable.
+ * timer.cc: New file.
+ (clock_gettime): Define new function.
+ (timer_tracker): Define new struct used by timer functions.
+ (timer_tracker::timer_tracker): New function.
+ (to_us): New function.
+ (timer_thread): New function.
+ (timer_tracker::settime): New function.
+ (timer_create): New function.
+ (timer_settime): New function.
+ (timer_delete): New function.
+ (fixup_timers_after_fork): New function.
+ * cygthread.cc: Bump thread count.
+
+2004-01-17 Christopher Faylor <cgf@redhat.com>
+
+ * signal.cc (sigwaitinfo): Define new function.
+ (sigwait): Redefine based on sigwaitinfo.
+ * include/cygwin/signal.h (sigwaitinfo): Declare.
+ (sigwait): Ditto.
+
+2004-01-17 Christopher Faylor <cgf@redhat.com>
+
+ * dtable.cc (dtable::vfork_parent_restore): Avoid double close of ctty
+ when ctty == ctty_on_hold.
+
+2004-01-16 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.h (_threadinfo::threadkill): New element.
+ (_threadinfo::set_threadkill): Declare new function.
+ (_threadinfo::reset_threadkill): Declare new function.
+ * dcrt0.cc (dcrt0_1): Call here so that it will be possible to attach
+ to running process with #(*& Windows Me/9x.
+ (initial_env): Try to initialize strace if uninitialized.
+ * gendef: Don't zero signal if threadkill is set since that will happen
+ in the called function.
+ * signal.cc (sigwait): Ensure cleanup in error conditions.
+ * sigproc.cc (sig_send): Clear packet mask storage.
+ (wait_subproc): Fill in child exit code in siginfo_t structure.
+ * thread.cc (pthread_kill): Set threadkill flag.
+ * tlsoffsets.h: Regenerate.
+
+2004-01-16 Christopher Faylor <cgf@redhat.com>
+
+ Throughout, use siginfo_t to fill out all signal information for
+ "kernel" signals.
+ * cygtls.h (_threadinfo::set_siginfo): Declare new function.
+ * cygtls.cc (_threadinfo::set_siginfo): Define new function.
+ * dcrt0.cc (do_exit): Accommodate siginfo_t considerations.
+ * exceptions.cc (handle_exceptions): Ditto.
+ (sig_handle_tty_stop): Ditto.
+ (ctrl_c_handler): Use killsys() to send signal.
+ (sigpacket::process): Rename from sig_handle. Use siginfo_t field from
+ sigpacket for everything.
+ (tty_min::kill_pgrp): Accommodate siginfo_t considerations.
+ (fhandler_termios::bg_check): Ditto.
+ * fhandler_tty.cc (fhandler_tty_slave::ioctl): Use killsys() to send signal.
+ * signal.cc (kill_worker): Rewrite to use siginfo_t second argument.
+ (kill_pgrp): Ditto.
+ (kill0): Define new function pulled from kill().
+ (kill): Rewrite as frontend to kill0.
+ (killsys): Define new function.
+ * sigproc.cc (sigelem): Eliminate.
+ (sigpacket): Move to sigproc.h. Subsume sigelem.
+ (pending_signals): Use sigpacket rather than sigelem for everything.
+ (sig_clear): Ditto.
+ (wait_sig): Ditto.
+ (sig_send): Rewrite to use siginfo_t argument.
+ (sig_send): New function wratpper to sig_send with siginfo_t argument.
+ (wait_subproc): Accommodate siginfo_t considerations.
+ * thread.cc (pthread_kill): Ditto.
+ * sigproc.h (sigpacket): Move here.
+ (sigpacket::process): Declare "new" function.
+ (sig_handle): Eliminate declaration.
+ (sig_send): Declare with new paramaters.
+ (killsys): Declare new function.
+ (kill_pgrp): Declare.
+ * winsup.h: Move some signal-specific stuff to sigproc.h.
+ * include/cygwin/signal.h: Tweak some siginfo_t stuff.
+
+2004-01-16 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler_console.cc (fhandler_console::close): Remove obsolete test
+ for vfork_cleanup.
+ * pipe.cc (fhandler_pipe::close): Add comment.
+
+2004-01-16 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.cc (init_cygheap::close_ctty): Don't NULL ctty if it is still
+ active.
+
+2004-01-16 Christopher Faylor <cgf@redhat.com>
+
+ * dtable.cc (dtable::vfork_parent_restore): Store ctty_on_hold prior to
+ calling close_all_files since it will be zeroed.
+
+2004-01-15 Christopher Faylor <cgf@redhat.com>
+
+ * gentls_offsets: Reinstate unlink of temp files.
+
+2004-01-14 Christopher Faylor <cgf@redhat.com>
+
+ * fhandler_console.cc (fhandler_console::close): Fix debugging output.
+ (fhandler_console::fixup_after_fork): Decrement open_fhs prior to call
+ to fhandler_console::open since this would cause incrementing too much
+ incrementing in child processes. (Probably needs to be handled more
+ elegantly someday)
+ (fhandler_console::fixup_after_exec): Ditto.
+
+2004-01-14 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.h (_threadinfo::call): Remove regparm declaration to work
+ around compiler bug.
+
+2004-01-13 Christopher Faylor <cgf@redhat.com>
+
+ * autoload.cc (TryEnterCriticalSection): Remove.
+ * dcrt0.cc (dll_crt0_0): Delete inappropriate setting of
+ _my_tls.stackptr to NULL since it has really bad consequences. Make
+ 'si' an automatic variable.
+
+2004-01-13 Christopher Faylor <cgf@redhat.com>
+
+ * cygtls.cc (_threadinfo::init_thread): Correct thinko which caused
+ thread list to be allocated every time.
+ * cygtls.h (CYGTLS_PADSIZE): Define as const int.
+ * sync.h: Make multiple inclusion safe.
+ (muto::next): Eliminate.
+ (muto::exiting_thread): New variable.
+ (muto::set_exiting_thread): New function.
+ (new_muto): Change to use different section for mutos since c++ give
+ inexplicable warning in some cases otherwise.
+ (new_muto1): Ditto.
+ * dcrt0.cc (do_exit): Call muto::set_exiting_thread here.
+ * sync.cc (muto_start): Eliminate.
+ (muto::acquire): Always give exiting thread a lock. Never give thread
+ a lock if exiting.
+ (muto::release): Ditto for releasing.
+ * dtable.cc (dtable::init_lock): Unline function and define here.
+ * dtable.h (lock_cs): Define as a muto since critical sections seem to
+ work oddly on Windows Me.
+ (lock): Accommodate switch to muto.
+ (unlock): Ditto.
+ * exceptions.cc (setup_handler): Don't worry about acquiring mutos
+ since that hasn't mattered for a long time.
+ (signal_exit): Ditto: muto stuff will be handled automatically on exit
+ now.
+
+2004-01-12 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in (DLL_IMPORTS): Link advapi32 to ensure proper DLL
+ initialization.
+ * autoload.cc (RegCloseKey): Arbitrarily choose this function as a
+ "seed" to pull the advapi32 link library in. So, comment out the
+ autoloading.
+ * cygtls.cc (_threadinfo::init_thread): Just clear CYGTLS_PADSIZE.
+ (_threadinfo::remove): Add debugging.
+ (_threadinfo::find_tls): Ditto.
+ * cygtls.h (_threadinfo::padding): Make zero length (for now?).
+ * dcrt0.cc (dll_crt0_0): Move more initialization here from dll_crt0_1.
+ (dll_crt0_1): See above.
+ * dtable.h (dtable::lock): Remove commented out critical section
+ locking.
+ * dtable.h (dtable::init_lock): Remove commented out critical section
+ locking.
+ * dtable.h (dtable::unlock): Remove commented out critical section
+ locking.
+ * exceptions.cc (interruptible): bool'ize.
+ * init.cc (threadfunc_fe): Revert to storing threadfunc at stack
+ bottom.
+ (munge_threadfunc): Ditto. Avoid adding overhead to
+ calibration_thread.
+ (prime_threads): Don't initialize tls stuff.
+ (dll_entry): Make minor change to initialization order.
+ * tlsoffsets.h: Regenerate.
+
+ * sigproc.cc (wait_sig): Add sanity check for end of process thread
+ exit.
+
+ * select.h: Make minor formatting change.
+
+2004-01-10 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Add still more -fomit-frame-pointer functions.
+ * dtable.h (dtable::lock): New function.
+ (dtable::unlock): New function.
+ (dtable::init_lock): New function.
+ * cygheap.h (HEAP_TLS): Declare new enum value.
+ (init_cygheap::threadlist): Declare new array.
+ (init_cygheap::sthreads): Declare new variable.
+ (cygheap_fdmanip::~cygheap_fdmanip): Use new dtable lock/unlock
+ functions.
+ (cygheap_fdnew::cygheap_fdnew): Ditto.
+ (cygheap_fdget::cygheap_fdget): Ditto.
+ * dtable.cc (dtable_init): Initialize fdtab critical section.
+ (dtable::fixup_after_fork): Ditto.
+ (dtable::fixup_after_exec): Ditto.
+ (dtable::dup2): Use lock/unlock calls to protect access to fdtab.
+ (dtable::find_fifo): Ditto.
+ (dtable::fixup_before_fork): Ditto.
+ (dtable::fixup_before_exec): Ditto.
+ (dtable::set_file_pointers_for_exec): Ditto.
+ (dtable::vfork_child_dup): Ditto.
+ (dtable::vfork_parent_restore): Ditto.
+ * syscalls.cc (close_all_files): Ditto.
+ * sync.h (muto::acquired): Declare new function.
+ (new_muto1): Declare new macro used to specify name of muto storage.
+ * sync.cc (muto::acquired): Define new function.
+
+ * cygthread.cc (cygthread::stub): Remove signal chain removal call
+ since it is handled during initialization now.
+ * cygthread.cc (cygthread::simplestub): Remove signal chain removal
+ call since it is handled during initialization now.
+ * cygtls.cc (sentry): New class used for locking. Use throughout.
+ (_threadinfo::reset_exception): Don't pop stack.
+ (_threadinfo::find_tls): Move from exceptions.cc.
+ (_threadinfo::init_thread): Initialize array of threads rather than
+ linked list. Take second argument indicating thread function for this
+ thread.
+ (_threadinfo::remove): Search thread array rather than linked list.
+ Use sentry to lock. Only unlock if we got the lock.
+ (_threadinfo::find_tls): Ditto for first two.
+ (handle_threadlist_exception): Handle exceptions when manipulating the
+ thread list in case of premature thread termination.
+ (_threadinfo::init_threadlist_exceptions): Ditto.
+ * cygtls.h (TLS_STACK_SIZE): Decrease size.
+ (_threadinfo::padding): Add element to avoid overwriting lower part of
+ stack.
+ (_threadinfo::remove): Add a "wait" argument to control how long we
+ wait for a lock before removing.
+ * exceptions.cc (init_exception_handler): Make global. Take argument
+ to control exception handler being set.
+ (ctrl_c_handler): Wait forever when removing self from signal chain.
+ (_threadinfo::find_tls): Move to cygtls.cc.
+ (sig_handle): Reorganize detection for thread-specific signals.
+ * heap.cc (heap_init): Rework slightly. Make fatal error more verbose.
+ Remove malloc initialization since it can't happen during dll attach.
+ * init.cc (search_for): Move address to search for on stack here.
+ (threadfunc_ix): Ditto for stack offset. Make shared so that stack
+ walk potentially only has to be done once when cygwin processes are
+ running.
+ (threadfunc_fe): Use standard tls to store thread function (may change
+ back later).
+ (calibration_thread): New function. Potentially called to find
+ threadfunc_ix.
+ (munge_threadfunc): Search for "search_for" value on stack. Output
+ warning when thread func not found on stack. Use standard tls to store
+ thread function.
+ (prime_threads): New function. Called to prime thread front end.
+ (dll_entry): Call dll_crt0_0 here when DLL_PROCESS_ATTACH. Call
+ prime_threads here. Try to remove thread from signal list here.
+ * sigproc.cc (wait_sig): Initialize threadlist exception stuff here.
+ * thread.cc (pthread::exit): Pass argument to signal list remove
+ function.
+ * thread.h: Remove obsolete *ResourceLock defines.
+
+ * tlsoffsets.h: Regenerate.
+
+ * winsup.h (spf): Define temporary debug macro to be deleted later.
+
+ * dcrt0.cc (dll_crt0_0): New function, called during DLL
+ initialization. Mainly consists of code pulled from dll_crt0_1.
+ (dll_crt0_1): See above.
+ (_dll_crt0): Wait for initial calibration thread to complete, if
+ appropriate. Move some stuff to dll_crt0_0.
+ (initialize_main_tls): Accommodate argument change to
+ _thread_info::init_thread.
+ * fork.cc (fork_child): Ditto.
+ (sync_with_child): Fix debug message.
+ * external.cc (cygwin_internal): Remove special considerations for
+ uninitialized dll since initialization happens during dll attach now.
+
+ * dlfcn.cc (dlopen): Remove obsolete *ResourceLock calls.
+ (dlclose): Ditto.
+
+2004-01-05 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.h (init_cygheap::close_ctty): Declare new function.
+ * cygheap.cc (init_cygheap::close_ctty): Define new function.
+ * syscalls.cc (close_all_files): Use close_ctty.
+ (setsid): Ditto.
+
+ * cygthread.cc (cygthread::stub): Remove exception initialization.
+ * cygthread.cc (cygthread::stub): Remove exception initialization.
+ (cygthread::simplestub): Ditto.
+ * thread.cc (pthread::thread_init_wrapper): Ditto.
+ * cygtls.cc (_last_thread): Make static.
+ (_threadinfo::call2): Initialize exception handler here.
+ (_threadinfo::find_tls): Move here.
+ * exceptions.cc (_threadinfo::find_tls): Move.
+
+ * dcrt0.cc (__api_fatal): Add prefix info to message here rather than
+ including it in every call to function.
+ * winsup.h (api_fatal): Accommodate above change.
+ * debug.cc (add_handle): Don't do anything if cygheap not around.
+ (mark_closed): Ditto.
+
+ * dll_init.cc (dll_list::detach): Fix debug output.
+ * fork.cc (sync_with_child): Ditto.
+ (vfork): Improve debug output.
+ * heap.cc (heap_init): Ditto.
+
+ * exceptions.cc (try_to_debug): Clarify message when debugger attaches.
+
+2004-01-03 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc (_threadinfo::interrupt_now): Avoid double call to
+ sigdelayed.
+ * pinfo.cc (_pinfo::commune_send): Avoid inexplicable test which caused
+ most pids to be shown as "<defunct>" on Win9x.
+
+2004-01-02 Christopher Faylor <cgf@redhat.com>
+
+ * cygheap.h (init_cygheap): Play more vfork shell games and move
+ ctty_on_hold and open_fhs_on_hold (back) here.
+ * dcrt0.cc (_dll_crt0): Just set impure_ptr_ptr here and let later
+ initialization deal with tls.
+ * dtable.cc (dtable::vfork_child_fixup): Move ctty considerations here.
+ (dtable:vfork_parent_restore): And here.
+ * fork.cc (vfork): Reflect change to ctty handling.
+ * perthread.h (vfork_save::fhctty): Eliminate.
+
+ * cygwin.din: Make more exports NOSIGFE that will never be interrupted
+ by a signal.
+
+ * init.cc (dll_entry): Set stackptr to NULL to catch problems earlier.
diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h
new file mode 100644
index 00000000000..4d3e75db07e
--- /dev/null
+++ b/winsup/cygwin/include/cygwin/version.h
@@ -0,0 +1,320 @@
+/* version.h -- Cygwin version numbers and accompanying documentation.
+
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+/* Cygwin versioning is relatively complicated because of its status
+ as a shared library. Let's start with how versioning used to be done.
+
+ Historical versioning in Cygwin 16.0 to 19.5:
+
+ In the olden days of Cygwin, we had a dll major and minor version
+ and a registry version. The major number started at 16 because the
+ "b15" GNU-Win32 release of the compiler tools was out when this
+ scheme was started. We incremented the DLL name frequently (for
+ every official release) and towards the end of this period every
+ release used a different shared memory area to prevent DLLs from
+ interfering with each other (embedding a build timestamp into the
+ name of the shared memory area). This turned out to be a Bad Idea
+ (tm) because people needed to mingle separate releases and have
+ them work together more than we thought they would. This was
+ especially problematic when tty info needed to be retained when an
+ old Cygwin executable executed a newer one.
+
+ In the old scheme, we incremented the major number whenever a
+ change to the dll invalidated existing executables. This can
+ happen for a number of reasons, including when functions are
+ removed from the export list of the dll. The minor number was
+ incremented when a change was made that we wanted to record, but
+ that didn't invalidate existing executables. Both numbers were
+ recorded in the executable and in the dll.
+
+ In October 1998 (starting with Cygwin 19.6), we started a new method
+ of Cygwin versioning: */
+
+ /* The DLL major and minor numbers correspond to the "version of
+ the Cygwin shared library". This version is used to track important
+ changes to the DLL and is mainly informative in nature. */
+
+#define CYGWIN_VERSION_DLL_MAJOR 1005
+#define CYGWIN_VERSION_DLL_MINOR 9
+
+ /* Major numbers before CYGWIN_VERSION_DLL_EPOCH are
+ incompatible. */
+
+#define CYGWIN_VERSION_DLL_EPOCH 19
+
+ /* CYGWIN_VERSION_DLL_COMBINED gives us a single number
+ representing the combined DLL major and minor numbers. */
+
+ /* WATCH OUT FOR OCTAL! Don't use, say, "00020" for 0.20 */
+
+#define CYGWIN_VERSION_DLL_MAKE_COMBINED(maj, min) (((maj) * 1000) + min)
+#define CYGWIN_VERSION_DLL_COMBINED \
+ CYGWIN_VERSION_DLL_MAKE_COMBINED (CYGWIN_VERSION_DLL_MAJOR, CYGWIN_VERSION_DLL_MINOR)
+
+ /* Every version of cygwin <= this uses an old, incorrect method
+ to determine signal masks. */
+
+#define CYGWIN_VERSION_DLL_BAD_SIGNAL_MASK 19005
+
+ /* API versions <= this had a termios structure whose members were
+ too small to accomodate modern settings. */
+#define CYGWIN_VERSION_DLL_OLD_TERMIOS 5
+#define CYGWIN_VERSION_DLL_IS_OLD_TERMIOS \
+ (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
+ CYGWIN_VERSION_DLL_OLD_TERMIOS)
+
+#define CYGWIN_VERSION_DLL_MALLOC_ENV 28
+ /* Old APIs had getc/putc macros that conflict with new CR/LF
+ handling in the stdio buffers */
+#define CYGWIN_VERSION_OLD_STDIO_CRLF_HANDLING \
+ (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
+ 20)
+
+#define CYGWIN_VERSION_CHECK_FOR_S_IEXEC \
+ (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) >= \
+ 36)
+
+#define CYGWIN_VERSION_CHECK_FOR_OLD_O_NONBLOCK \
+ (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) <= \
+ 28)
+
+#define CYGWIN_VERSION_CHECK_FOR_USING_BIG_TYPES \
+ (CYGWIN_VERSION_DLL_MAKE_COMBINED (user_data->api_major, user_data->api_minor) >= \
+ 79)
+ /* We used to use the DLL major/minor to track
+ non-backward-compatible interface changes to the API. Now we
+ use an API major/minor number for this purpose. */
+
+ /* API_MAJOR 0.0: Initial version. API_MINOR changes:
+ 1: Export cygwin32_ calls as cygwin_ as well.
+ 2: Export j1, jn, y1, yn.
+ 3: Export dll_noncygwin_dllcrt0.
+ 4: New socket ioctls, revamped ifconf support.
+ 5: Thread support/exports.
+ 6: Change in termios handling.
+ 7: Export scandir and alphasort.
+ 8: Export _ctype_, _sys_errlist, _sys_nerr.
+ 9: Mount-related changes, new cygwin_umount export.
+ Raw device support (tape, floppies).
+ 10: Fast math routine support added.
+ 11: Export seekdir, telldir.
+ 12: Export pthread_join, pthread_detach.
+ 13: Export math funcs gamma and friends, also _j0, _j1, etc.
+ 14: Export snprintf and vnsprintf.
+ 15: Export glob
+ 16: Export cygwin_stackdump
+ 17: Export fast math stuff
+ 18: Stop exporting _strace_wm
+ 19: Export fchown, lchown, lacl
+ 20: regsub, inet_network
+ 21: incompatible change to stdio cr/lf and buffering
+ 22: Export cygwin_logon_user, cygwin_set_impersonation_token.
+ geteuid, getegid return effective uid/gid.
+ getuid, getgid return real uid/gid.
+ seteuid, setegid set only effective uid/gid.
+ setuid, setgid set effective and real uid/gid.
+ 23: Export new dll_crt0 interface and cygwin_user_data for use
+ with crt0 startup code.
+ 24: Export poll and _poll.
+ 25: Export getmode and _getmode.
+ 26: CW_GET_CYGDRIVE_PREFIXES addition to external.cc
+ 27: CW_GETPINFO_FULL addition to external.cc
+ 28: Accidentally bumped by cgf
+ 29: Export hstrerror
+ 30: CW_GET_CYGDRIVE_INFO addition to external.cc
+ 31: Export inet_aton
+ 32: Export getrlimit/setrlimit
+ 33: Export setlogmask
+ 34: Separated out mount table
+ 35: Export drand48, erand48, jrand48, lcong48, lrand48,
+ mrand48, nrand48, seed48, and srand48.
+ 36: Added _cygwin_S_IEXEC, et al
+ 37: [f]pathconv support _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY
+ 38: vscanf, vscanf_r, and random pthread functions
+ 39: asctime_r, ctime_r, gmtime_r, localtime_r
+ 40: fchdir
+ 41: __signgam
+ 42: sys_errlist, sys_nerr
+ 43: sigsetjmp, siglongjmp fixed
+ 44: Export dirfd
+ 45: perprocess change, gamma_r, gammaf_r, lgamma_r, lgammaf_r
+ 46: Remove cygwin_getshared
+ 47: Report EOTWarningZoneSize in struct mtget.
+ 48: Export "posix" regex functions
+ 49: Export setutent, endutent, utmpname, getutent, getutid, getutline.
+ 50: Export fnmatch.
+ 51: Export recvmsg, sendmsg.
+ 52: Export strptime
+ 53: Export strlcat, strlcpy.
+ 54: Export __fpclassifyd, __fpclassifyf, __signbitd, __signbitf.
+ 55: Export fcloseall, fcloseall_r.
+ 56: Make ntsec on by default.
+ 57: Export setgroups.
+ 58: Export memalign, valloc, malloc_trim, malloc_usable_size, mallopt,
+ malloc_stats
+ 59: getsid
+ 60: MSG_NOSIGNAL
+ 61: Export getc_unlocked, getchar_unlocked, putc_unlocked,
+ putchar_unlocked
+ 62: Erroneously bumped
+ 63: Export pututline
+ 64: Export fseeko, ftello
+ 65: Export siginterrupt
+ 66: Export nl_langinfo
+ 67: Export pthread_getsequence_np
+ 68: Export netdb stuff
+ 69: Export strtof
+ 70: Export asprintf, _asprintf_r, vasprintf, _vasprintf_r
+ 71: Export strerror_r
+ 72: Export nanosleep
+ 73: Export setreuid32, setreuid, setregid32, setregid
+ 74: Export _strtold a64l hcreate hcreate_r hdestroy hdestroy_r hsearch
+ hsearch_r isblank iswalnum iswalpha iswblank iswcntrl iswctype
+ iswdigit iswgraph iswlower iswprint iswpunct iswspace iswupper
+ iswxdigit l64a mbrlen mbrtowc mbsinit mbsrtowcs mempcpy
+ on_exit setbuffer setlinebuf strndup strnlen tdelete tdestroy
+ tfind towctrans towlower towupper tsearch twalk wcrtomb wcscat
+ wcschr wcscpy wcscspn wcslcat wcslcpy wcsncat wcsncmp wcsncpy
+ wcspbrk wcsrchr wcsrtombs wcsspn wcsstr wctob wctob wctrans
+ wctype wmemchr wmemcmp wmemcpy wmemmove wmemset
+ 75: Export exp2 exp2f fdim fdimf fma fmaf fmax fmaxf fmin fminf lrint
+ lrintf lround lroundf nearbyint nearbyintf remquo remquof
+ round roundf scalbln scalblnf sincos sincosf tgamma tgammaf
+ truncf
+ 76: mallinfo
+ 77: thread-safe exit/at_exit
+ 78: Use stat and fstat rather than _stat, and _fstat.
+ Export btowc and trunc.
+ 79: Export acl32 aclcheck32 aclfrommode32 aclfrompbits32 aclfromtext32
+ aclsort32 acltomode32 acltopbits32 acltotext32 facl32
+ fgetpos64 fopen64 freopen64 fseeko64 fsetpos64 ftello64
+ _open64 _lseek64 _fstat64 _stat64 mknod32
+ 80: Export pthread_rwlock stuff
+ 81: CW_CHECK_NTSEC addition to external.cc
+ 82: Export wcscoll wcswidth wcwidth
+ 83: Export gethostid
+ 84: Pty open allocates invisible console. 64 bit interface
+ 85: Export new 32/64 functions from API 0.79 only with leading
+ underscore. No problems with backward compatibility since no
+ official release has been made so far. This change removes
+ exported symbols like fopen64, which might confuse configure.
+ 86: Export ftok
+ 87: Export vsyslog
+ 88: Export _getreent
+ 89: Export __mempcpy
+ 90: Export _fopen64
+ 91: Export argz_add argz_add_sep argz_append argz_count argz_create
+ argz_create_sep argz_delete argz_extract argz_insert
+ argz_next argz_replace argz_stringify envz_add envz_entry
+ envz_get envz_merge envz_remove envz_strip
+ 92: Export getusershell, setusershell, endusershell
+ 93: Export daemon, forkpty, openpty, iruserok, ruserok, login_tty,
+ openpty, forkpty, revoke, logwtmp, updwtmp
+ 94: Export getopt, getopt_long, optarg, opterr, optind, optopt,
+ optreset, __check_rhosts_file, __rcmd_errstr.
+ 95: Export shmat, shmctl, shmdt, shmget.
+ 96: CW_GET_ERRNO_FROM_WINERROR addition to external.cc
+ 97: Export sem_open, sem_close, sem_timedwait, sem_getvalue.
+ 98: Export _tmpfile64.
+ 99: CW_GET_POSIX_SECURITY_ATTRIBUTE addition to external.cc.
+ 100: CW_GET_SHMLBA addition to external.cc.
+ 101: Export err, errx, verr, verrx, warn, warnx, vwarn, vwarnx.
+ 102: CW_GET_UID_FROM_SID and CW_GET_GID_FROM_SID addition to external.cc.
+ 103: Export getprogname, setprogname.
+ 104: Export msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop.
+ 105: Export sigwait.
+ 106: Export flock.
+ 107: Export fcntl64.
+ 108: Remove unused (hopefully) reent_data export.
+ 109: Oh well. Someone uses reent_data.
+ 110: Export clock_gettime, sigwaitinfo, timer_create, timer_delete,
+ timer_settime
+ 111: Export sigqueue, sighold.
+ 112: Redefine some mtget fields.
+ 113: Again redefine some mtget fields. Use mt_fileno and mt_blkno as
+ on Linux.
+ 114: Export rand_r, ttyname_r.
+ 115: Export flockfile, ftrylockfile, funlockfile, getgrgid_r, getgrnam_r,
+ getlogin_r.
+ 116: Export atoll.
+ */
+
+ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
+
+#define CYGWIN_VERSION_API_MAJOR 0
+#define CYGWIN_VERSION_API_MINOR 116
+
+ /* There is also a compatibity version number associated with the
+ shared memory regions. It is incremented when incompatible
+ changes are made to the shared memory region *or* to any named
+ shared mutexes, semaphores, etc. The arbitrary starting
+ version was 0 (cygwin release 98r2).
+ Bump to 4 since this hasn't been rigorously updated in a
+ while. */
+
+#define CYGWIN_VERSION_SHARED_DATA 4
+
+ /* An identifier used in the names used to create shared objects.
+ The full names include the CYGWIN_VERSION_SHARED_DATA version
+ as well as this identifier. */
+
+#define CYGWIN_VERSION_DLL_IDENTIFIER "cygwin1"
+
+ /* The Cygwin mount table interface in the Win32 registry also
+ has a version number associated with it in case that is
+ changed in a non-backwards compatible fashion. Increment this
+ version number whenever incompatible changes in mount table
+ registry usage are made.
+
+ 1: Original number version.
+ 2: New mount registry layout, system-wide mount accessibility.
+ */
+
+#define CYGWIN_VERSION_MOUNT_REGISTRY 2
+
+ /* Identifiers used in the Win32 registry. */
+
+#define CYGWIN_INFO_CYGNUS_REGISTRY_NAME "Cygnus Solutions"
+#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin"
+#define CYGWIN_INFO_PROGRAM_OPTIONS_NAME "Program Options"
+#define CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME "mounts v2"
+#define CYGWIN_INFO_CYGDRIVE_FLAGS "cygdrive flags"
+#define CYGWIN_INFO_CYGDRIVE_PREFIX "cygdrive prefix"
+#define CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/cygdrive"
+
+ /* In addition to the above version number strings, the build
+ process adds some strings that may be useful in
+ debugging/identifying a particular Cygwin DLL:
+
+ The mkvers.sh script at the top level produces a .cc file
+ which initializes a cygwin_version structure based on the
+ above version information and creates a string table for
+ grepping via "fgrep '%%%' cygwinwhatever.dll" if you are
+ using GNU grep. Otherwise you may want to do a
+ "strings cygwinwhatever.dll | fgrep '%%%'" instead.
+
+ This will produce output such as:
+
+ %%% Cygwin dll_identifier: cygwin
+ %%% Cygwin api_major: 0
+ %%% Cygwin api_minor: 0
+ %%% Cygwin dll_major: 19
+ %%% Cygwin dll_minor: 6
+ %%% Cygwin shared_data: 1
+ %%% Cygwin registry: b15
+ %%% Cygwin build date: Wed Oct 14 16:26:51 EDT 1998
+ %%% Cygwin shared id: cygwinS1
+
+ This information can also be obtained through a call to
+ cygwin_internal (CW_GETVERSIONINFO).
+ */
+
+#define CYGWIN_VERSION_MAGIC(a, b) ((unsigned) ((((unsigned short) a) << 16) | (unsigned short) b))
+#define CYGWIN_VERSION_MAGIC_VERSION(a) ((unsigned) ((unsigned)a & 0xffff))