2000-07-27 DJ Delorie * testsuite/winsup.api/winsup.exp: ignore stdout by default * testsuite/winsup.api/crlf.c: non-verbose by default * winsup.h: prune out windows headers we don't normally need * assert.cc: add wingdi.h and winuser.h * fhandler_console.cc: ditto * fhandler_windows.cc: ditto * select.cc: ditto * spawn.cc: ditto * strace.cc: ditto * tty.cc: ditto * window.cc: ditto * hinfo.cc: add winsock.h * syscalls.cc: add winnls.h * uinfo.cc: ditto Thu Jul 27 10:24:36 2000 Egor Duda * fhandler.cc (fhandler_disk_file::fstat): Allow block calculation to succeed for files >= 2GB and <= 4GB. Wed Jul 26 16:05:04 2000 Christopher Faylor * exceptions.cc (signal_exit): Renamed from "really_exit". Always sets EXIT_SIGNAL bit and reorganizes exit value for backwards cygwin handling. (handle_exceptions): Call signal_exit. Set "core dumped" bit. (sig_handle): Call signal_exit. Set "core dumped" bit appropriately. Wed Jul 26 20:44:00 2000 Corinna Vinschen * environ.cc (posify): Revert previous patch. (_addenv): Remove check_null_empty_path from here. (putenv): Call check_nullempty_path. (setenv): Call check_nullempty_path for name as well here. Don't report an error if value is empty string. (environ_init): Revert usage of newp. Wed Jul 26 14:32:38 2000 Egor Duda * syscalls.cc (stat_worker): Make stat return correct st_blocks for files with size bigger than 2Gb and less than 4Gb Wed Jul 26 17:43:00 2000 Corinna Vinschen * security.cc (lookup_name): Search on local machine first if myself->domain is not empty. 2000-07-26 DJ Delorie * fhandler_console.cc (fhandler_console::read): Explicitly set cursor to make it visible while waiting in WaitForMultipleObjects. Wed Jul 26 10:59:00 2000 Corinna Vinschen * passwd.cc: Change name of passwd_in_memory_p to passwd_state. Change type to enum. Change storage class to static. Adjust comments. (read_etc_passwd): Set passwd_state to different values when loaded from file in contrast to being emulated. (search_for): Return default passwd entry if passwd is emulated or it's a request for the current user. Otherwise return NULL. Tue Jul 25 21:50:42 2000 Christopher Faylor * syscalls.cc (statfs): Use path_conv method to convert input path. Tue Jul 25 21:40:51 2000 Christopher Faylor * syscalls.cc (_link): Avoid extraneous call to cygwin_conv_to_win32_path. Tue Jul 25 21:11:15 2000 Christopher Faylor * environ.cc (_addenv): New function. Subsumes functionality of putenv/setenv. Does not allocate space for putenv case. (putenv): Use _addenv to add a value to the environment. (setenv): Ditto. (environ_init): Don't malloc space for each entry in the environment table. Just use the space from GetEnvironmentStrings. (posify): Don't free the src argument since it is no longer malloced. Mon Jul 24 21:10:00 2000 Corinna Vinschen * syscalls.cc (_link): Corrected previous patch. Mon Jul 24 13:26:00 2000 Corinna Vinschen * fhandler.h (class fhandler_dev_random): Add members for managing pseudo randomness. * fhandler_random.cc: Rearrange. Use pseudo random number generator as entropy source if system entropy isn't available and if device is used as /dev/urandom. Allow initializing device by calling write(). Sun Jul 23 23:11:00 2000 Corinna Vinschen * fhandler.h: Add comment. Sun Jul 23 20:00:00 2000 Corinna Vinschen * fhandler.h (class fhandler_dev_raw): Add private member `varblkop' to be set when variable blocksize mode is on. * fhandler_raw.cc: Eliminate `\n' from trace output. (clear): Set `varblkop' to 0. (dup): Copy varblkop as well. (writebuf): Care for variable blocksize. (open): Ditto. (raw_read): Ditto. (raw_write): Ditto. * fhandler_tape.cc (open): Ditto. (ioctl): Ditto. Some cleanups. Sat Jul 22 18:40:00 2000 Corinna Vinschen Patch suggested by Kazuhiro Fujieda . * winsup.h: Add new macros sys_wcstombs and sys_mbstowcs. * syscalls.cc (_link): Replace calls to mbstowcs by call to sys_mbstowcs. * uinfo.cc (internal_getlogin): Replace calls to wcstombs and mbstowcs by calls to sys_wcstombs and sys_mbstowcs. Replace usage of constants by meaningful defines. Use result of GetSystemDirectory for HOMEPATH and HOMEDRIVE as a last resort. Fri Jul 21 21:33:00 2000 Corinna Vinschen * spawn.cc (span_guts): Retrieve security attributes before setting psid to NULL. Fri Jul 21 12:03:00 2000 Corinna Vinschen * security.cc (acl_worker): Use stat_suffixes in call to path_conv just as in `stat_worker'. Wed Jul 19 22:24:00 2000 Corinna Vinschen * spawn.cc (spawn_guts): Don't restore impersonation in case of _P_OVERLAY. Clean up slightly. Accomodate comments. Wed Jul 19 22:11:00 2000 Corinna Vinschen * shared.h (class pinfo): New members `root' and `rootlen'. * syscalls.cc (chroot): Set new root for process. * path.cc (getcwd_inner): Add parameter to force use of new root from chroot() call. (ischrootpath): New macro. (normalize_posix_path): Care for changed root dir. (normalize_win32_path): Ditto. (getcwd_inner): Ditto. (chdir): Eliminate trailing path component consisting entirely of dots. * fork.cc (fork): Copy pinfo members regarding chroot(). * spawn.cc (_spawnve): Ditto. * dir.cc (opendir): Don't use computed win32 path if chroot() took place. Mon Jul 17 22:21:34 2000 Christopher Faylor * dll_init.cc (dll_list::alloc): Fix debugging output. Mon Jul 17 14:57:53 2000 Christopher Faylor Throughout, eliminate third argument to path_conv and use new PC_* constants for second argument. * dcrt0.cc (dll_crt0_1): Reorganize to allow more initialization prior to returning due to dynamic loading. * path.h: Generalize SYMLINK_* constants to PC_*. (path_conv): Create a new method. Fold third argument into second. * dll_init.cc (dll_list::alloc): Try harder to find space to allocate dll struct. (dll_dllcrt0): Don't check sanity if we've already called dll_crt0. * path.cc (path_conv::check): Don't check for a null or empty path unless specifically told with a flag setting. (check_null_empty_path): New function, adapted from macro. * syscalls.cc (_rename): Use already-determined file attributes rather than checking again. * lib/cygwin/cygwin_attach.dll.c (cygwin_attach_dll): Use a static per_process structure since this is apparently supposed to be zeroed. * lib/cygwin_crt0.c (cygwin_crt0): Zero per_process structure sent to older DLLs. Mon Jul 17 19:39:00 2000 Corinna Vinschen Patch suggested by Eric Fifer * poll.cc (poll): Fix erroneous negations. Mon Jul 17 17:56:00 2000 Corinna Vinschen * environ.cc (setenv): Use __cygwin_environ instead of environ after reallocating environment space. Sun Jul 16 20:23:21 2000 Christopher Faylor * _cygwin_crt0_common.cc: Undef 'environ' or suffer compiler error. Sun Jul 16 16:03:00 2000 Christopher Faylor * environ.cc: Use new definition of "environ" throughout. (environ_init): Explicitly initialize __cygwin_environ. (cur_environ): New function. Detects when user has updated their environment. * exec.cc: Use 'environ' define throughout rather than __cygwin_environ. * spawn.cc: Ditto. * winsup.h: Declare cur_environ, main_environ, environ. Sun Jul 16 13:23:04 2000 Christopher Faylor * acconfig.h: Add support for NEWVFORK. * config.h.in: Ditto. * configure.in: Add --enable-vfork option. * configure: Regenerate. * dcrt0.cc (quoted): Detect and fix up quoted backslashes. * sigproc.cc (proc_subproc): Correctly name handle of newly added child process to avoid erroneous debugging messages about closing the wrong handle. Sun Jul 16 02:30:09 2000 Christopher Faylor * spawn.cc (spawn_guts): Use \ for quoting '"'. * dcrt0.cc (quoted): Understand \ quoting for '"'. Sun Jul 16 00:32:58 2000 Christopher Faylor * dcrt0.cc (build_argv): Strip quotes from argv[0] since it should never be globified. Sat Jul 15 00:32:41 2000 Christopher Faylor * dll_init.cc (dll_list::alloc): Round correctly. Use VirtualAlloc since shared file mapping is unnecessary. (dll_list::detach): Release memory via VirtualFree since there we no longer use shared file mapping. Fri Jul 14 22:40:22 2000 Christopher Faylor * hinfo.cc (hinfo::linearize_fd_array): Make max_used_fd an int so that we can detect when there are no fds to pass. * dcrt0.cc (host_dependent_constants::init): Revert Sat Mar 18 01:32:04 2000 change. (dll_crt0_1): Set "cygwin_finished_initializing" flag. (dll_crt0): Don't perform memcpy if uptr is already set to internal structure. (_dll_crt0): Remember location of programs envptr. * dll_init.h (per_module, dll, dll_list): Revamp. * dll_init.cc: Revamp. Use new classes. * fork.cc (fork): Use new revamped dll, dll_list, and per_module stuff. * environ.cc: Use __cygwin_environ throughout rather than the user_data->envptr. * exec.cc: Ditto. * spawn.cc: Ditto. * winsup.h: Declare update_envptrs, cygwin_finished_initializing. * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Revert previous change. * lib/cygwin_attach_dll.cc (cygwin_attach_dll): Always pass in own per_process structure or we end up overwriting information from the main program. Wed Jul 12 00:46:00 2000 Christopher Faylor * debug.cc (thread_stub): Use impure_ptr in place of reent_data. * dll_init.cc (dll_dllcrt0): Replace erroneous use of local symbol with correct __cygwin_user_data->impure_ptr. Wed Jul 12 00:01:03 2000 Christopher Faylor * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Don't reset environ if already set. Mon Jul 10 19:07:03 2000 Christopher Faylor * fhandler_console.cc (fhandler_console::read): Unicode interface to ReadConsoleInput only exists on W2K, so use workaround from Kazuhiro Fujieda . Mon Jul 10 11:30:00 2000 Christopher Faylor * Makefile.in (install): Install textmode.o as well as binmode.o. * fhandler_console.cc (fhandler_console::read): Use UNICODE when reading from the console and translate to ASCII from that. Sun Jul 9 21:52:00 2000 Corinna Vinschen * spawn.cc (spawn_guts): Close handle `hToken' only if it's not copied from myself->token. * syscalls.cc (seteuid): Replace CopySid by memcpy which is foolproof here. Sun Jul 9 01:19:06 2000 Christopher Faylor * cygwin.din: Export _getmode and getmode to allow querying of binary state of an fd. * external.cc (cygwin_internal): Add handling of perfile_table setting. * fhandler.cc (perfile_table): New global. (fhandler_base::get_default_fmode): New method to return a file's default mode based on its name. (fhandler_base::open): Use get_default_mode method to determine a file's mode. Record file mode in file flags. * fhandler.h (fhandler_base): Declare get_default_fmode * syscalls.cc (getmode): New function. * sys/cygwin.h (__cygwin_perfile): New structure. (cygwin_getinfo_types): Move outside of WINVER conditional. (per_process): Move inside of WINVER conditional. Sat Jul 8 00:15:01 2000 Christopher Faylor * external.cc (cygwin_internal): Export __cygwin_user_data. * include/sys/cygwin.h: Allow definition of per_process even when not compiling with C++. (cygwin_getinfo_types): Add CW_USER_DATA. * lib/_cygwin_crt0_common.cc (_cygwin_crt0_common): Get __cygwin_user_data pointer from cygwin_internal. If it doesn't exist, return failure. Use either this pointer or passed in pointer throughout. Clear forkee. * lib/crt0.h: Accomodate argument changes to _cygwin_crt0_common. * lib/cygwin_attach_dll.c (cygwin_attach_dll): Reorganize to allow use of newer binaries with older DLLs. Detect older DLLs when _cygwin_crt0_common returns 0 and allocate space for a per_process structure on the stack. * lib/cygwin_crt0.c (cygwin_crt0): Ditto. Fri Jul 7 10:31:00 2000 Corinna Vinschen * include/sys/cygwin.h: Hide internal data types in per_process when not __INSIDE_CYGWIN__. Wed Jul 5 18:56:58 2000 Christopher Faylor * dcrt0.cc (__cygwin_user_data): Initialize. (dll_crt0_1): Eliminate user_data initialization. (dll_crt0): Set up impure_ptr_ptr for older executables. (cygwin_dll_init): Eliminate user_data initializations. (__api_fatal): Don't check for user_data initialization. * dll_init.cc (struct dll): Store entire contents of per_process rather than just a pointer. (add): Ditto. (initOneDll): Don't check for user_data initialization. (DllList::recordDll): Store contents of per_process argument. (DllList::detachDll): Pass address of per_process field. (DllList::initAll): Ditto. (DllList::doGlobalDestructorsOfDlls): Ditto. (DllListIterator::operator *): Ditto. (dll_dllcrt0): Default to __cygwin_user_data if arg is NULL. * include/sys/cygwin.h: Reorganize per_process to eliminate obsolete fields and accomodate new way of initializing. * lib/_cygwin_crt0_common: Initialize _impure_ptr from __cygwin_user_data.impure_ptr. 2000-07-04 Vadim Egorov * exceptions.cc (try_to_debug): Prevent recursive spawning of JIT debugger. Treat special event from debugger as command to continue. Mon Jul 4 19:29:00 2000 Corinna Vinschen * poll.cc (poll): Zero out `open_fds' as well. Mon Jul 4 1:22:00 2000 Corinna Vinschen * include/cygwin/version.h: Bump API minor version to 24. 2000-07-04 Kazuhiro Fujieda * security.cc (read_sd): Eliminate OemToChar. Mon Jul 4 18:57:00 2000 Corinna Vinschen * poll.cc: New file. Implement `poll' system call. * include/poll.h: Ditto. * include/sys/poll.h: Ditto. * Makefile.in: Add poll.o as dependency. * cygwin.din: Add poll and _poll symbols. 2000-07-04 Kazuhiro Fujieda * dcrt0.cc (dll_crt0_1): Eliminate SetFileApisToOEM and CharToOem. * (dummy_autoload): Add functions used in fhandler_console. * fhandler_console.cc (fhandler_console::read): Use ENCHANCED_KEY flag to distinguish extended keys. Translate an input character from the OEM code page to the ANSI code page. * (fhandler_console::write_normal): Translate output characters from the ANSI code page to the OEM code page. * syscalls.cc (_link): Use MultiByteToWideChar instead of OemToCharW. Mon Jul 3 16:09:16 2000 Christopher Faylor * exceptions.cc (stack_info::walk): Use method to find offset. (handle_exceptions): Be more assertive in finding ebp for use under W2K. Create a dummy stack frame for cases where program is dying and a stack dump is being output. (sig_handle): Fill out a GetThreadContext for use with a user-generated "core dump". Mon Jul 3 10:53:00 2000 Corinna Vinschen * include/cygwin/socket.h: Remove SOCK_PACKET define since it's not supported by Windows sockets. Sun Jul 2 21:50:48 2000 Christopher Faylor * dcrt0.cc (user32_init): Add primitive guard against concurrent attempts to call this function. Also add temporary debugging code to display a message if the function is called multiple times. (api32_init): Ditto. Sun Jul 2 10:39:00 2000 Corinna Vinschen * winsup.h: Define MAX_SID_LEN and new MAX_HOST_NAME. * fork.cc (fork): Use above defines instead of numerical constants. * shared.cc (sec_user): Ditto. * shared.h (class pinfo): Ditto. * syscall.cc (seteuid): Ditto. * spawn.cc (_spawnve): Ditto. Eliminate conditional. (spawn_guts): Set child->uid = USHRT_MAX when user context will be changed in child process. * uinfo.cc (uinfo_init): Check for myself->uid instead of myself->psid to avoid reloading of /etc/passwd on process startup if ntsec is off. Use above defines instead of numerical constants. * security.cc: Move define for MAX_SID_LEN to winsup.h. Sun Jul 2 1:57:00 2000 Corinna Vinschen * uinfo.cc (uinfo_init): Eliminate calls to read_etc_group() and read_etc_passwd(). 2000-06-28 Kazuhiro Fujieda * assert.cc (__assert): Reduce dependency on newlib. * exec.cc: Eliminate unnecessary inclusion of ctype.h. * glob.c: Ditto. * hinfo.cc: Ditto. * init.cc: Ditto. * strace.cc: Ditto. * tty.cc: Ditto. * grp.cc (parse_grp): Eliminate atoi. * passwd.cc (grab_int): Ditto. * grp.cc (getgroups): Eliminate str{n,}casecmp. * path.cc (get_raw_device_number): Ditto. * path.cc (sort_by_native_name): Ditto. * spawn.cc (iscmd): Ditto. * uinfo.cc (internal_getlogin): Ditto. Sat Jul 1 11:43:32 2000 Christopher Faylor * binmode.c (cygwin_premain0): Fix erroneous clearing of bit. * textmode.c (cygwin_premain0): Ditto. Sat Jul 1 00:24:04 2000 Christopher Faylor * dcrt0.cc (_dll_crt0): Renamed from dll_crt0 (). * winsup.h: Accomodate above change. * cygwin.din: Ditto. * lib/cygwin_crt0.c: Ditto. Fri Jun 30 23:21:40 2000 Christopher Faylor * Makefile.in: Use variables rather than configure constructs where appropriate. (LIBCOS): Find additional stub library stuff in their own subdirectory. * dcrt0.cc: Convert user_data pointer to static __cygwin_user_data area. (do_global_ctors): Check magic_bisquit for initialization. (dll_crt0_1): First group of premain functions prior to fd initialization. Run second group before calling main. (dll_crt0 ()): New function, called from new initialization code. (dll_crt0 (per_process *uptr)): Call new dll_crt0 () function on initialization. * debug.cc (thread_stub): Initialize bottom of stack with per-thread info. * environ.cc (parse_thing): Use binmode global to control CYGWIN=binmode behavior. * fhandler.cc (fhandler_base::open): Allow explicit setting of __fmode to O_BINARY or O_TEXT to override disk mount settings. * libcmain.cc: Move to lib subdirectory. * libccrt0.cc: Ditto. * dll_main.cc: Ditto. * dll_entry.cc: Ditto. * getopt.c: Ditto. * thread.cc (thread_init_wrapper): Call ExitThread explicitly rather than returning, as a preliminary step towards placing per thread info at the bottom of the stack. * winsup.h: Move per_process class to include/sys/cygwin.h. Declare new dll_crt0(). * include/cygwin/version.h: Bump API minor version. * binmode.c: New file. * textmode.c: Ditto. * perthread.h: Ditto. * lib/_cygwin_crt0_common.cc: Ditto. * lib/crt0.h: Ditto. * lib/cygwin_attach_dll.c: Ditto. * lib/cygwin_crt0.c: Ditto. * lib/dll_entry.cc: Ditto. * lib/dll_main.cc: Ditto. * lib/getopt.c: Ditto. * lib/libcmain.c: Ditto. * lib/premain0.c: Ditto. * lib/premain1.c: Ditto. * lib/premain2.c: Ditto. * lib/premain3.c: Ditto. Wed Jun 28 19:36:00 2000 Corinna Vinschen * syscalls.cc (seteuid): Initialize pi.token before calling internal_getlogin(). * uinfo.cc (internal_getlogin): Use impersonation token instead of process token in case of active impersonation. Add some comments. (uinfo_init): Initializing myself->token and myself->impersonated before calling internal_getlogin(). Add some comments. Mon Jun 26 18:32:41 2000 Christopher Faylor * windows.cc (setitimer): Round up when < 1000 usecs. Mon Jun 26 17:34:54 2000 Christopher Faylor * hinfo.cc (hinfo::dup2): Eliminate compiler warning. Mon Jun 26 11:25:29 2000 Christopher Faylor * hinfo.cc (hinfo::dup2): Guard against out of bounds newfd. Sat Jun 24 23:43:06 2000 Christopher Faylor * grp.cc (read_etc_group): Open file in text mode. * pwd.cc (read_etc_passwd): Ditto. * shared.h: Bump PROC_MAGIC. Sat Jun 24 19:30:00 2000 Corinna Vinschen * fork.cc (fork): Fix error in copying SID pointer. * spawn.cc (_spawnve): Ditto. * passwd.cc: Remove static from `passwd_in_memory_p'. (read_etc_passwd): Remove static. * uinfo.cc: Move global declaration of `read_etc_group' and `group_in_memory_p' into `uinfo_init'. (internal_getlogin): Try to get SID from current process first. (uinfo_init): Don't set uid and gid if `myself' has a valid SID. Only load /etc/passwd and /etc/group in that case. Sat Jun 24 12:29:59 2000 Christopher Faylor * shared.cc (shared_info::initialize): Improve error message clarity. * mkvers.sh: Eliminate debugging output. Thu Jun 22 17:50:59 2000 Christopher Faylor * Makefile.in: Autogenerate cygwin.def when appropriate. * include/sys/cygwin.h: Correct prototype. Thu Jun 22 17:05:04 2000 Christopher Faylor * include/sys/cygwin.h: Don't define parts of this file that rely on Windows headers unless the Windows header was previously included. Thu Jun 22 20:45:00 2000 Corinna Vinschen * registry.cc (load_registry_hive): Use HKEY_USERS when checking for existing user hive. Use MAX_PATH instead of numerical constant for array size. Use return code of RegLoadKeyA instead of GetLastError for error output. Thu Jun 22 14:27:04 2000 Christopher Faylor * Makefile.in: Add new-libcygwin.a back to all_host target. Wed Jun 21 14:32:42 2000 Christopher Faylor * Makefile.in: Add *.def to clean operation. Wed Jun 21 13:18:23 2000 Christopher Faylor * Makefile.in: Add *.exe to clean operation. Wed Jun 21 01:02:38 2000 Christopher Faylor * mkvers.sh: Fix sed usage for older seds. Tue Jun 20 20:46:28 2000 Christopher Faylor * Makefile.in: Don't touch winver_stamp if mkvers.sh was unsuccessful. Tue Jun 20 17:41:30 2000 Christopher Faylor * mkvers.sh: Fix problem with handling of CVS tags causing .rc syntax errors. Tue Jun 20 13:38:12 2000 Christopher Faylor * Makefile.in: Change to build the DLL during a cross-compiler build. Mon Jun 19 20:46:33 2000 Christopher Faylor * select.cc (socket_cleanup): Shutdown I/O on dummy sockets prior to closing them. Mon Jun 19 19:35:00 2000 Corinna Vinschen * dcrt0.cc: Add load statements for `GetSidIdentifierAuthority' and `RegLoadKeyA'. * registry.cc (get_registry_hive_path): New function. (load_registry_hive): Ditto. * security.cc (convert_sid_to_string_sid): New function. (get_ssid): Renamed to `convert_string_sid_to_sid'. (get_pw_sid): Call `convert_string_sid_to_sid' instead of `get_ssid'. (get_gr_sid): Ditto. (get_admin_sid): Ditto. (get_system_sid): Ditto. (get_creator_owner_sid): Ditto. (get_world_sid): Ditto. * shared.h: New prototypes for `get_registry_hive_path' and `load_registry_hive'. * spawn.cc (spawn_guts): Set child->psid to NULL to force calling `internal_getlogin' from child process in case of changing user context. Call `load_registry_hive' in case of changing user context. (_spawnve): Copy user infos only if user context remains the same. * uinfo.cc: Add load statement for `NetUserGetInfo'. Remove load statement for `NetGetDCName'. (internal_getlogin): Rewrite to speed up process startup and to correct user environment in case user context changes. (uinfo_init): Call internal_getlogin only if myself->psid is NULL, that is user context changes. * winsup.h: Add prototypes for `convert_sid_to_string_sid', `convert_string_sid_to_sid' and `get_pw_sid'. Sun Jun 18 13:42:50 2000 Christopher Faylor * fhandler.h (set_name): Don't use 'unix' as name since this is defined by gcc now. * fhandler.cc (set_name): Ditto. 2000-06-17 Kazuhiro Fujieda * winsup.h (isabspath): Don't report `C:foo' as an absolute path. Sat Jun 17 13:51:48 2000 Christopher Faylor * configure.in: Detect "cross-hosting" situation and set appropriate variables in Makefile to avoid building excess stuff. * configure: Regenerate. * Makefile.in: Accomodate above change. Sat Jun 17 19:52:00 2000 Corinna Vinschen * pinfo.cc (pinfo_init): Revert previous patch. Sat Jun 17 13:29:00 2000 Corinna Vinschen * pinfo.cc (pinfo_init): Add missing initializers. * uinfo.cc (internal_getlogin): Request domain infos only when ntsec is ON. Fri Jun 16 19:27:27 2000 Christopher Faylor * Makefile.in: Just use library files from this tree when building cygrun.exe. * path.cc (chdir): Don't set cache to offending chdir. Change comment to reflect current reality. Fri Jun 16 20:55:00 2000 Corinna Vinschen * cygwin.din: Define symbols for `cygwin_logon_user' and `cygwin_set_impersonation_token'. * dcrt0.cc (dll_crt0_1): Eliminate superfluous conditional statements. Add load statements for `ImpersonateLoggedOnUser', `LogonUserA' and `RevertToSelf'. * fork.cc (fork): Care for correct impersonation of parent and child process. * security.cc (cygwin_set_impersonation_token): New function. (cygwin_logon_user): Ditto. shared.h (class pinfo): New members `orig_uid', `orig_gid', `real_uid' nad `real_gid'. spawn.cc (spawn_guts): Care for impersonation when starting child process in a different user context. * syscalls.cc (setgid): Call `setegid' now. Set real_gid. (setuid): Call `seteuid' now. Set real_uid. (seteuid): Functionality moved from setuid to here. Care for correct impersonation. (setegid): Functionality moved from setgid to here. * uinfo.cc (uinfo_init): Initialization of additional pinfo members. (getuid): Return real uid. (getgid): Return real gid. (geteuid): Return effective uid. (getegid): Return effective gid. include/sys/cygwin.h: Add prototypes for `cygwin_logon_user' and `cygwin_set_impersonation_token'. include/cygwin/version.h: Bump API minor version to 22. Thu Jun 15 15:43:50 2000 Christopher Faylor * path.cc (normalize_posix_path): Convert path to POSIX if it seems to be a Windows path. 2000-06-15 Kazuhiro Fujieda * path.cc (mount_info::add_item): Eliminate a trailing backslash included in a native path starting with '//[A-Za-z]/...'. * path.cc (mount_info::del_item): Accept a native path as its target. Wed Jun 14 23:47:19 2000 Christopher Faylor * environ.cc (conv_envvars): Detect and convert all environment variables used by libiberty's choose-temp.c Tue Jun 13 12:41:41 2000 Kazuhiro Fujieda * path.cc (mount_info::add_item): The previous patch can't handle the case of overwriting a mount entry. Tue Jun 13 00:17:04 2000 Christopher Faylor * thread.h: Shorten "current_directory" variables to "cwd_*" throughout. * path.cc: Ditto. (normalize_posix_path): Add some extra debugging info. (chdir): Ditto. Store chdir'ed posix and MS-DOS directory names in "cache" here rather than trying to derive them later. Sun Jun 11 15:57:00 2000 Corinna Vinschen * fhandler_random.cc (read): Call CryptAquireContext with CRYPT_VERIFYCONTEXT. Thu Jun 8 22:49:00 2000 Corinna Vinschen * path.cc (path_conv::check): Erase two lines checked in by mistake. Thu Jun 8 15:53:00 2000 Corinna Vinschen * fhandler.cc (fhandler_disk_file::open): Check for directory to set O_DIROPEN on directories anyway. 2000-06-07 Kazuhiro Fujieda * path.cc (mount_info::init): Eliminate the mount_slash feature. (mount_slash): Eliminated. (mount_info::read_mounts): Eliminate looking up existing entries. The loop for deleting cygpath entries is done only when such entries exist. (mount_info::from_registry): Eliminate sorting. (mount_info::add_item): Call add_reg_mount if necessary. Check nmounts more precisely. Use strcasematch in looking up existing entries. (mount_info::del_item): Call del_reg_mount if necessary. Use strcasematch. Use memmove instead of memcpy. (mount_info::import_v1_registry): Everything is done in this method. (mount_info::to_registry): Eliminated. (mount_info::from_v1_registry): Eliminated. (cygwin_umount): Simply call del_item. * shared.h: Modify the declaration of add_item and del_item. Remove the declaration of from_v1_registry. Wed Jun 7 23:56:10 2000 Christopher Faylor * include/cygwin/version.h: Bump DLL minor version number to 3. 2000-06-07 DJ Delorie * cygwin.din: add cygwin_dll_init * dcrt0.cc (cygwin_dll_init): new (dll_crt0_1): short circuit if manually loaded * path.cc (mount_info::init): don't init if manually loaded Wed Jun 7 13:47:00 2000 Corinna Vinschen * include/netinet/in_systm.h: New file. * include/cygwin/in_systm.h: Ditto. Thu Jun 1 01:55:45 2000 Christopher Faylor * exceptions.cc: Remove unneeded include. * dcrt0.cc: Wrap LoadDLLfunc stuff in dummy function. * init.cc: Ditto. * uinfo.cc: Ditto. 2000-05-31 DJ Delorie * include/cygwin/version.h: use decimal, NOT octal Wed May 31 16:40:00 2000 Corinna Vinschen * fhandler.cc (fhandler_disk_file::open): Check for executable even if ntsec is on if filesystem doesn't support ACLs. Wed May 31 15:57:00 2000 Corinna Vinschen * dcrt0.cc: Use LoadDLLfuncEx for loading Crypto API functions with parameter `notimp' set to 1. Tue May 30 16:58:33 2000 Christopher Faylor * path.cc (mount_info::conv_to_win32_path): Previous patch was too aggressive in adding a trailing slash. Mon May 29 20:31:01 2000 Christopher Faylor * Makefile.in: Remove libadvapi32.a. * autoload.h: Add additional field to autoload block for handling unimplemented functions. (LoadDLLfuncEx): New function which accepts additional parameter for controlling unimplemented function behavior. (LoadDLLfunc): Use LoadDLLfuncEx. * dcrt0.cc: Use new arguments for LoadDLLfunc. Add advapi32 routines. (noload): Rewrite in assembler. Handle new unimplemented function type. * exceptions.cc: Eliminate another vestige of StackWalk stuff. * net.cc: Use new arguments for LoadDLLfunc. * uinfo.cc: Ditto. Mon May 29 20:18:47 2000 Christopher Faylor * config.h.in: Remove obsolete define. * path.h (isdrive): New macro. * dcrt0.cc (globify): Use new macro to determine if a string refers to an MS-DOS drive. * environ.cc (winenv): Ditto. * spawn.cc (find_exec): Ditto. * path.cc (get_raw_device_number): Ditto. (mount_info::conv_to_posix_path): Ditto. (chdir): Ditto. (cygwin_posix_path_list_p): Ditto. (cygwin_split_path): Ditto. (path_conv::check): Move tmp_buf to beginning of function since it can be used earlier in the loop. Use tmp_buf rather than 'root' to hold root information. (mount_info::conv_to_win32_path): Add trailing slash to end of mount path when it translates to a drive. Add defensive code to avoid writing beyond the end of 'dst'. Sat May 27 15:57:00 2000 Corinna Vinschen * fhandler_random.cc (read): Use CRYPT_MACHINE_KEYSET in call to CryptAcquireContext() to serve users that did not log in interactively. Fri May 26 11:16:00 2000 Corinna Vinschen * errno.cc (errmap): Map ERROR_BAD_NET_NAME to errno ENOSHARE. Fri May 26 02:23:35 2000 Christopher Faylor * sigproc.h (sigframe::set): Accept a default frame pointer. * sigproc.cc (sig_send): Use passed in frame pointer, if appropriate. Thu May 25 17:44:25 2000 Christopher Faylor * dir.cc (rmdir): Use file attributes that have already been discovered by path_conv. 2000-05-25 Kazuhiro Fujieda * dir.cc (rmdir): Correct the manner in checking the target directory. Wed May 24 21:59:00 2000 Corinna Vinschen * dir.cc (writable_directory): Comment out previous code, return always 1 for now. (mkdir): Call set_file_attribute explicitely with S_IFDIR mode bit. * syscalls.cc (chown_worker): Ditto. (chmod): Ditto. * security.cc (get_nt_attribute): Fix error in debug output. Never set FILE_DELETE_CHILD for files. Construct appropriate inherit attribute according to file type. 2000-05-23 DJ Delorie * syscalls.cc (_cygwin_istext_for_stdio): New, for newlib * include/cygwin/version.h: Bump API number for detect old programs using old getc/putc macros 2000-05-23 DJ Delorie * dir.cc (writable_directory): handle root directories Tue May 23 10:09:26 2000 Christopher Faylor * uname.cc (uname): Use a "s" to denote a snapshot to avoid confusion with the number "5". Tue May 23 10:01:07 2000 Christopher Faylor * path.cc (mount_info::conv_to_posix_path): Avoid putting a trailing slash on a directory name when the ms-dos path spec is a root directory of a device. * registry.cc (reg_key::build_reg): Set 'key_is_invalid' flag rather than using an INVALID_HANDLE_KEY. (reg_key::get_int): Test for key validity before performing registry operations. (reg_key::set_int): Ditto. (reg_key::get_string): Ditto. (reg_key::set_string): Ditto. (reg_key::kill): Ditto. (reg_key::~reg_key): Ditto. Tue May 23 01:13:33 2000 Christopher Faylor * mkvers.sh: Use snapshot date as build date since it is more interesting. * uname.cc (uname): Detect if this is a snapshot build and add an "S" to the version number. Report the snapshot date as the release date. Mon May 22 17:11:25 2000 Christopher Faylor * environ.cc (regopt): Scan HKLM if HKCU scan fails. Mon May 16 23:39:00 2000 Corinna Vinschen * dir.cc (rmdir): Care for misleading error messages when trying to remove a directory on a samba share. Eliminate superfluous else branch. * syscalls.cc (_rename): Additional check for ERROR_FILE_EXISTS if MoveFile fails. Sun May 21 20:51:44 2000 Christopher Faylor * dcrt0.cc (dll_crt0_1): Move uinfo_init call to before sigproc_init to avoid a race. (noload): Add an extra argument for debugging. * uinfo.cc (uinfo_init): Eliminate test for multiple calls. (getlogin): Assume that uinfo_init has already been called. Sat May 20 01:34:57 2000 Christopher Faylor * exceptions.cc (interruptible): Add an argument to control whether function just checks for validity. Flag module handle == 0 as noninterrupible. (call_handler): Always acquire and release ebp lock. Loop for only a fixed amount of time attempting to grab mutos and find an interruptible PC. 2000-05-19 DJ Delorie * syscalls.cc (setmode): change mode of any matching FILE* also. Thu May 18 17:28:19 2000 Christopher Faylor * Makefile.in: Remove external.h dependency. * dcrt0.cc (sigthread::init): Move here from sigproc.h. * sigproc.h (sigthread): Move init to dcrt0.cc. Thu May 18 01:28:02 2000 Christopher Faylor * select.cc (thread_pipe): Add paranoid check to ensure thread termination. * external.cc: Eliminate obsolete include. * getopt.c (getopt_long): Fix compiler warning. * shared.h: Moved PID_ definitions to include/sys/cygwin so that they can be used by external programs. * include/sys/cygwin.h: Move external definitions here. Include sys/resource.h to avoid having to do this everywhere. Thu May 18 01:04:02 2000 Christopher Faylor * sigproc.h (sigframe): Don't set frame info unless tid matches this thread id. Wed May 17 23:13:32 2000 Christopher Faylor * dcrt0.cc (dll_crt0_1): Initialize mainthread stuff here before anything needs it. * sigproc.cc (sigproc_init): Move mainthread initialization out of here. * sigproc.h (sigthread): Add init() method. (sigframe): Don't try to initialize muto. * sync.cc: Undef WaitForSingleObject to avoid recursion. 2000-05-17 DJ Delorie * testsuite/winsup.api/crlf.c: New * testsuite/winsup.api/iospeed.c: New Wed May 17 01:05:52 2000 Christopher Faylor * path.cc (mount_info::cygdrive_posix_path): Don't add trailing slash if referring to something like c:\. * dcrt0.cc (dll_crt0_1): Move uinfo initialization prior to sig_send initialization to give signal thread a chance to finish. * debug.cc (WFSO): Move to sigproc.cc (WFMO): Ditto. * exceptions.cc (interruptible): Allocate slightly more space for directory just for paranoia's sake. (call_handler): Eliminate nonmain argument. Determine if main thread has set a frame pointer and use it if so. (sig_handle): Eliminate nonmain argument. * net.cc: Record frame information in appropriate routines throughout. * select.cc (select): Ditto. * sigproc.cc: Use sigthread structure to record mainthread id throughout. (sig_send): Record frame information for signal handler. (wait_sig): Reflect argument change in sig_handle. (WFSO): Move here and record frame information for signal handler. (WFMO): Ditto. * sigproc.h: Implement new "sigthread" class. Implement "sigframe" class for manipulating signal frame info. * thread.cc (__pthread_kill): Use standard _kill() function rather than calling sig_send directly. * winsup.h: Eliminate ebp element from signal_dispatch class. Tue May 16 23:39:00 2000 Corinna Vinschen Patch suggested by John Rowley * fhandler_tape.cc (fhandler_dev_tape::ioctl): Check for filemark feature on MTWEOF operation. Tue May 16 11:49:13 2000 Christopher Faylor * include/cygwin/in.h (AF_INET6): Use correct in6_addr struct. Mon May 15 00:35:35 2000 Christopher Faylor * include/cygwin/version.h: Bump DLL minor version number to 2. Sun May 14 23:41:24 2000 Christopher Faylor * shared.h: Bump PROC_MAGIC. * include/cygwin/version.h: Bump API minor to accomodate two recent exports. 2000-05-13 Mumit Khan * include/cygwin/socket.h (AF_INET6): Use same value as winsock2. 2000-05-12 Mumit Khan * include/cygwin/in.h (struct in6_addr): Fix spelling. * include/cygwin/socket.h (AF_INET6, PF_INET6): Define macros. (AF_MAX, PF_MAX): Bump to 32 to leave room for future expansion. Fri May 12 21:35:54 2000 Christopher Faylor * dcrt0.cc (build_argv): Remove unneeded variable. * select.cc (peek_pipe): Don't check for "ready" if it's already set. (peek_console): Ditto. (peek_serial): Ditto. (peek_socket): Ditto. (peek_windows): Ditto. Fri May 12 20:31:00 2000 Corinna Vinschen * fhandler_raw.cc (write_file, read_file): New wrapper functions for WriteFile and ReadFile to get rid of ERROR_MEDIA_CHANGED and ERROR_BUS_RESET in case of first access to tape. (fhandler_dev_raw::raw_write): Use write_file instead of WriteFile. (fhandler_dev_raw::raw_read): Use read_file instead of ReadFile. Fri May 12 01:04:57 2000 Christopher Faylor * Makefile.in (DLL_OFILES): Sort. * fhandler_tty.cc (fhandler_tty_slave::send_ioctl_request): Eliminate. (fhandler_tty_slave::ioctl): Rewrite to avoid races. 2000-05-11 Mumit Khan * mmap.cc (list::erase): Increment loop counter. (map::erase): Likewise. Thu May 11 00:54:00 2000 Charles Wilson * cygwin.din: insure that regsub() is included in cygwin1.dll Tue May 9 18:59:41 2000 Christopher Faylor * Makefile.in: Use appropriate VARIABLE to refer to cygwin.def in load line. Thu May 9 23:53:00 2000 Corinna Vinschen * fhandler.cc (fhandler_base::puts_readahead): Change while condition to disallow wild runs. Thu May 9 15:24:00 2000 Corinna Vinschen Patch suggested by * window.cc (setitimer): Check for overflow condition in tv_sec. Thu May 9 0:47:00 2000 Corinna Vinschen Patch suggested by Eric Fifer * errno.cc: Change mapping of ERROR_BAD_PATHNAME to ENOENT. Thu May 9 0:47:00 2000 Corinna Vinschen * path.cc (symlink::info): Treat non readable files as normal non symlink files. 2000-05-08 Paul K. Fisher * include/pthread.h (pthread_detach): Add missing prototype. (pthread_join): same. 2000-05-08 DJ Delorie * fhandler.cc (lock): use signed math to allow checking ranges properly. Sat May 6 23:22:25 2000 Christopher Faylor * dcrt0.cc (insert_file): Eliminate unused parameter. (build_argv): Ditto. * exceptions.cc (stack): Eliminate unused parameters. (stackdump): Ditto. (cygwin_stackdump): Reflect above changes. (sig_handle): Ditto. * fhandler.cc (fhandler_base::set_inheritance): Use kludge to avoid unused parameter warning. 2000-05-06 Mumit Khan * include/wchar.h (wcscmp, wcslen): Fix prototypes. * syscalls.cc (wcslen, wcscmp): Adjust. Fri May 5 23:32:07 2000 Christopher Faylor * errno.cc (errmap): Correct DIRECTORY mapping to ENOTDIR. 2000-05-04 Mumit Khan * Makefile.in (install): Install profile startup and library. Wed May 3 21:54:11 2000 Christopher Faylor * configure.in: Use -gstabs+ as compile debug option. This seems to promote better handling of symbols. * configure: Regenerate. * delqueue.cc (delqueue_list::process_queue): Allow ERROR_ACCESS_DENIED to indicate that a file is being shared under Windows 95. * syscalls.cc (_unlink): Use full path name. Take special action for Windows 95. Assume that an ERROR_ACCESS_DENIED indicates a sharing violation unless it's on a remote drive. Punt if there is an ERROR_ACCESS_DENIED on a remote drive. Wed May 3 18:07:00 2000 Corinna Vinschen * errno.cc (errmap): Map ERROR_BAD_NETPATH to new errno ENOSHARE. (_sys_errlist): Add entry for ENOSHARE. (strerror): Add case for ENOSHARE. * syscalls.cc (stat_worker): Check for errno ENOSHARE. Wed May 3 17:28:00 2000 Corinna Vinschen * Makefile.in: Add dependencies for fhandler_random.o * fhandler.h: Add device type FH_RANDOM. Add class fhandler_dev_random. * fhandler_random.cc: New file. Implementation of fhandler_dev_random. * hinfo.cc (build_fhandler): Add case for FH_RANDOM. * path.cc: Add device names for random devices to windows_device_names. (get_device_number): Add if branch for random devices. (win32_device_name): Add device name generation for random devices. winsup.h: Include . 2000-05-02 Kazuhiro Fujieda * path.cc (mount_info::conv_to_win32_path): Previous patch failed to set flags on a win32 path. Tue May 2 11:34:00 2000 Corinna Vinschen * security.cc (read_sd): Return 1 on success because we can't rely on the returned SD size from GetFileSecurity. Tue May 2 2:22:00 2000 Corinna Vinschen * dcrt0.cc: Add dynamic load code for `OemToCharA' from user32.dll. * security.cc (read_sd): Call `OemToCharA' to make `GetFileSecurity' happy on filenames with umlauts. Wed Apr 26 23:23:23 2000 Christopher Faylor * path.cc (normalize_win32_path): Don't add a trailing slash when one already exists. (mount_info::conv_to_win32_path): Use existing code for dealing with relative path names when input is already a win32 path. 2000-04-26 DJ Delorie * Makefile.in (install): install regexp.h Wed Apr 26 16:20:00 2000 Corinna Vinschen * syscalls.cc (stat_worker): Previous patch could succeed in stating a non-existant file. Wed Apr 26 01:07:16 2000 Christopher Faylor * exceptions.cc (interruptible): Allocate slightly more space for directory name check. Windows 95 seems to null-terminate the directory otherwise. (interrupt_on_return): Issue a fatal error if we can't find the caller's stack. Tue Apr 25 16:50:54 2000 Christopher Faylor * spawn.cc (find_exec): Accept a path_conv argument rather than a buffer so that the caller can find things out about a translated path. (perhaps_suffix): Ditto. (spawn_guts): Allocate path_conv stuff here so that we can find out stuff about the translated path (this is work in progress). * environ.cc (environ_init): Accept an as-yet unused argument indicating whether we were invoked from a cygwin parent or not. (winenv): Ditto. (posify): Accept an argument indicating whether the path has already been translated. * dlfcn.cc (check_access): Provide a path_conv buffer to find_exec. * exec.cc (sexecvpe): Ditto. * path.cc (path_conv::check): Rename from path_conv::path_conv. (mount_item::getmntent): Recognize "Cygwin executable" bit. (symlink_info::check): Remove debugging statements. * path.h (class path_conv): Add iscygexec method. Rewrite constructor to call "check" method to allow multiple operations on a path_conv variable. * pinfo.cc (pinfo_init): Pass argument to environ_init. * shared.h: Bump PROC_MAGIC. * winsup.h: Reflect above changes to function arguments. * include/sys/mount.h: Add MOUNT_CYGWIN_EXEC type. Thu Apr 25 21:35:00 2000 Corinna Vinschen * syscalls.cc (stat_worker): Previous patch failed to stat each drives root dir on 9X. Thu Apr 25 16:37:00 2000 Corinna Vinschen * fhandler.cc (fhandler_disk_file::open): Check for allow_ntsec when determining exec flag. * path.cc (symlink_info::check): Remove call to get_file_attribute(). * security.cc (read_sd): Rename, ditto for variables to conform to common naming convention. Use GetFileSecurity() instead of BackupRead() to avoid permission problems when reading ACLs. (write_sd): Same renaming as for read_sd(). (alloc_sd): Change default permissions according to Linux permissions for group and world when write permission is set. * syscalls.cc (stat_worker): Avoid different permission problems when requesting file informations. Thu Apr 25 10:50:00 2000 Corinna Vinschen * net.cc: Avoid a warning in declaration inet_network. Mon Apr 24 17:38:25 2000 Thorsten Otto * fhandler_console.cc (fhandler_console::read): Detect extended keycode information for Windows 9x so that function keys will work correctly. 2000-04-24 Vadim Egorov * net.cc (cygwin_inet_network): new function. * cygwin.din (inet_network): new export Fri Apr 21 10:37:08 2000 Christopher Faylor * path.cc (normalize_posix_path): Previous two patches were still incorrect so rewrite this function to deal with trailing dots. (mount_info::conv_to_win32_path): Just check for '/' where appropriate. Eliminate nofinalslash call since it is handled in normalize_posix_path now. Thu Apr 20 17:32:42 2000 Christopher Faylor * exceptions.cc (handle_exceptions): Search further for stack info to accomodate Windows 95. Thu Apr 20 16:39:18 2000 Christopher Faylor * path.cc (normalize_posix_path): Previous change failed to take root access into account. Thu Apr 20 11:26:00 2000 Corinna Vinschen * syscalls.cc (_link): Check new link path for trailing dot. Thu Apr 20 00:32:03 2000 Christopher Faylor * fhandler.h (fhandler_base::hclose): New virtual method. (fhandler_base::set_inheritance): Make this a method so that we can use the appropriate close methods. * fhandler.cc (fhandler_base::set_inheritance): Ditto. * path.cc (normalize_posix_path): Eliminate /. trailing path component. Wed Apr 20 0:19:00 2000 Corinna Vinschen * syscalls.cc (setuid): Allow switching user context after successful call to ImpersonateLogedOnUser (NT only). (setgid): Ditto. (seteuid): Call setuid. (setegid): Call setgid. Wed Apr 19 22:00:00 2000 Corinna Vinschen * uinfo.cc (internal_getlogin): Use NetGetDCName() instead of NetGetAnyDCName(). Mon Apr 17 12:08:47 2000 Kazuhiro Fujieda * syscalls.cc (_rename): Try MoveFile() at first before MoveFileEx(..., MOVEFILE_REPLACE_EXISTING). Tue Apr 18 19:15:29 2000 Christopher Faylor * dcrt0.cc (globify): Don't use \ quoting when apparently quoting a DOS path spec, even within a quoted string. Sun Apr 16 18:54:21 2000 Christopher Faylor * init.cc (dll_entry): Use better check for determining when to set thread specific stuff. * syscalls.cc (_unlink): Continue with chmod'ing file even if DELETE_ON_CLOSE succeeds, if file still exists. Fri Apr 14 23:51:15 2000 Christopher Faylor * fhandler_console.cc (keytable): Add support for keypad 5 key, which MS seems to think is equivalent to VK_CLEAR. * debug.cc (thread_stub): Eliminate initialization of reent stuff. * init.cc (dll_entry): Move it here. Thu Apr 13 18:32:26 2000 Christopher Faylor * dcrt0.cc (insert_file): Avoid freeing previously allocated argument list. * path.cc (symlink_info::check): Rename from symlink_check_one. Use new symlink_info struct for communication. (path_conv::path_conv): Use symlink_info structure for communication with symlink_info::check. Fix typo which resulted in symbolic links always being resolved. (readlink): Use stat_suffixes array when resolving a link. * syscalls.cc (stat_suffixes): Make global. Thu Apr 13 20:50:00 2000 Corinna Vinschen * include/cygwin/version.h: Bump minor api to reflect export change. Thu Apr 13 8:48:00 2000 Corinna Vinschen * path.cc (conv_to_win32_path): Detect a win32 path if path contains backslashes. * cygwin.din: Add symbol for `lacl'. * security.cc (ReadSD): Add debug output. (acl_worker): New static function. (acl): Call acl_worker now. (lacl): New function. (facl): Call acl_worker now. * include/cygwin/acl.h: Add prototype for `lacl'. Wed Apr 12 18:48:33 2000 Christopher Faylor * path.cc (path_conv::path_conv): Ensure that suffix is correctly copied to path when we've found a symlink but aren't following symlinks. Sat Apr 8 00:46:14 2000 Christopher Faylor * fhandler.cc (fhandler_disk_file::fstat): Allocate enough space for root dir determination or overflow an array. Sat Apr 8 00:08:53 2000 Christopher Faylor * exceptions.cc (sigsave): Copy on fork so that we can restore correct behavior in forked process. (interruptible): Flag as interruptible when running in main process module. (interrupt_setup): Save return address and address of return address. (signal_fixup_after_fork): New function. Uses above two values to restore proper behavior to forked process. (interrupt_on_return): Pass return address address to interupt_setup. (interrupt_now): Pass NULL for return address address to interrupt_setup. * fork.cc (fork): Call signal_fixup_after_fork. * shared.h: Lint cleanups. * winsup.h: Ditto. Mon Apr 3 14:10:44 2000 Christopher Faylor * fhandler.h (select_stuff): Eliminate use of 'total'. * select.cc (cygwin_select): Ditto. (select_stuff::wait): Use maximum size for w4 rather than calculating what will fit. Mon Apr 03 13:58:00 2000 Corinna Vinschen * grp.cc (parse_grp): Save empty array instead of NULL in gr_mem if no supplementary group is given. Sun Apr 02 16:02:00 2000 Corinna Vinschen * syscalls.cc (chown_worker): Use previous uid/gid if new uid/gid is -1. Fry Mar 31 22:55:00 2000 Corinna Vinschen * syscalls.cc (chown_worker): New static function with chown functionality. (chown): Call chown_worker with SYMLINK_FOLLOW. (fchown): New function. Call chown_worker with SYMLINK_FOLLOW. (lchown): New function. Call chown_worker with SYMLINK_IGNORE. * cygwin.din: Add symbols for fchown, lchown. Fry Mar 31 11:18:00 2000 Corinna Vinschen * path.cc (symlink): Call `set_file_attribute()' and `SetFileAttributeA()' instead of `chmod()' to set uid/gid correct. Wed Mar 29 22:49:56 2000 Christopher Faylor * fhandler.h (select_record): Explicitly zero elements of this class. (select_stuff): Ditto. * select.cc (cygwin_select): Eliminate memset zero of sel. Tue Mar 28 16:45:42 2000 Christopher Faylor * Makefile.in: Use default rules when compiling cygrun.o. * dcrt0.cc (host_dependent_constants::init): Limit non-NT platforms to 32K chunks when copying regions during a fork. * path.cc (symlink_check_one): Add temporary debugging output. Simplify PATH_EXEC test. * syscalls.cc (stat_suffixes): Null terminate this list. Sat Mar 25 20:46:39 2000 Christopher Faylor * path.cc (symlink_check_one): Recognize symlink settings from the mount table. * path.h: Make PATH_SYMLINK an alias for MOUNT_SYMLINK. * syscalls.cc (stat_worker): Use extension search mechanism in path_conv to look for .exe rather than trying to special case it here. * mount.h: Make MOUNT_SYMLINK a real option. Sat Mar 25 00:22:32 2000 Christopher Faylor * environ.cc: Add TMPDIR to the list of environment variables which are converted to POSIX format. * sigproc.cc (proc_terminate): Don't attempt to delete when a muto pointer is NULL. Sun Mar 19 12:01:00 2000 Corinna Vinschen * syscalls.cc (stat_worker): Set st_nlink to 1 on remote drives. Sat Mar 18 23:04:27 2000 Christopher Faylor * times.cc: Fix extern declarations for variables that are exported but used by this modules. Sat Mar 18 01:32:04 2000 Christopher Faylor * dcrt0.cc (host_dependent_constants::init): Eliminate DELETE flag from shared constant. Sat Mar 18 01:24:25 2000 Christopher Faylor * delqueue.cc (delqueue_list::queue_file): Add some debugging. * path.h (class path_conv): Add a char * operator for the most common case. * syscalls.cc (_unlink): Rewrite to use FILE_FLAG_DELETE_ON_CLOSE when possible (i.e., on NT). Fri Mar 17 18:16:00 2000 Corinna Vinschen Patch suggested by Eric Fifer * fhandler.cc (fhandler_base::open): Call set_file_attribute() only if a file is really created. Thu Mar 16 14:15:00 2000 Corinna Vinschen * security.cc (set_process_privileges): Remove `static'. (get_nt_attribute): Returns uid and gid additionally. Remove call to set_process_privileges(). (get_file_attribute): Returns uid and gid additionally. Don't call ntea if ntsec is ON. (set_nt_attribute): Remove call to set_process_privileges(). Don't call ntea if ntsec is ON. (acl): Remove call to set_process_privileges(). * dcrt0.cc (dll_crt0_1): Call set_process_privileges(). * winsup.h: New prototype for set_process_privileges(), changed prototype for get_file_attribute(). * fhandler.cc (get_file_owner): Discard function. (get_file_group): Ditto. (fhandler_disk_file::fstat): Discard calls to get_file_owner() and get_file_group(). * path.cc (path_conv::path_conv): New debugging output for result of GetVolumeInformation(). (mount_info::conv_to_win32_path): Call backslashify() with pathbuf instead of src_path. * syscalls.cc (chown): Reformat slightly. (chmod): Replace get_file_owner() and get_file_group() calls by a call to get_file_attribute(). Discard local variable has_acls. Reformat slightly. (stat_worker): Root dir check now done by a call to rootdir(). Don't call num_entries() on remote drives. Discard local variable has_acls. Wed Mar 15 20:38:06 2000 Corinna Vinschen * errno.cc: Map ERROR_NOACCESS to EFAULT. Wed Mar 15 14:25:38 2000 Christopher Faylor * spawn.cc (spawn_guts): Restore dependency on signal_arrived. It's needed to wake up the WaitForSingleObject. Tue Mar 14 23:41:16 2000 Christopher Faylor Pipe changes throughout suggested by Eric Fifer * debug.cc (threadname_init): Pass name of lock as arg 2 of new_muto. * malloc.cc (malloc_init): Ditto. * sigproc.cc (sigproc_init): Ditto. * exceptions.cc (events_init): Ditto. (call_handler): Eliminate special case for hExeced. Report locked thread in debugging output. * fhandler.cc (fhandker_pipe::fhandler_pipe): Propagate device type to base class. * fhandler.h (fhandler_pipe): Ditto. * hinfo.cc (hinfo::build_fhandler): Pass specific type of pipe to constructor. * spawn.cc (spawn_guts): Eliminate dependency on signal when waiting for subprocess. * strace.cc: Remove obsolete #ifdef. * sync.cc (muto::muto): Save the name of the muto. (muto:~muto): Also release the muto. * sync.h: Add a muto name field. * select.cc (peek_pipe): Avoid doing a PeekNamedPipe on the write end of a pipe. Sun Mar 12 01:14:33 2000 Christopher Faylor * fhandler.cc (fhandler_base::get_readahead_into_buffer): New function. * fhandler.h: Declare new function. Add extra argument to process_slave_output. * fhandler_console.cc (fhandler_console::read): Move read ahead code to new function. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Move common code here. (fhandler_tty_slave::read): Understand readahead. (fhandler_pty_master::read): Move code to process_slave_output. * select.cc (peek_pipe): Avoid performing certain checks when non-read and on inappropriate fh types. Sat Mar 11 22:47:43 2000 Christopher Faylor * fhandler_console.cc (fhandler_console::read): Don't even think about breaking on interrupt if executing in a "cygwin" thread. * fhandler_tty.cc (fhandler_pty_master::process_slave_output): Streamline, simplify code. * sigproc.cc (sig_send): Remove debugging statement. Fri Mar 10 13:20:50 2000 Christopher Faylor * sigproc.cc: Set wait_sig priority to normal. Fri Mar 10 13:03:06 2000 Christopher Faylor * sigproc.cc (wait_sig): Add addtional debugging output. Thu Mar 9 15:25:01 2000 Christopher Faylor * environ.cc: Eliminate oldstack CYGWIN option. * exceptions.cc (sfta): Eliminate obsolete function. (sgmb): Eliminate obsolete function. (class stack_info): Remove MS method for walking the stack. (stack_info::init): Just initialize required fields. (stack_info::brute_force): Rename to stack_info::walk. (handle_exceptions): Pass derived frame pointer to sig_send. (interrupt_setup): Clear saved frame pointer here. (interrupt_on_return): thestack is no longer a pointer. (call_handler): Accept a flag to indicate when a signal was sent from other than the main thread. Use saved frame pointer for determining where to place signal handler call. (sig_handle): Accept "nonmain" argument. Pass it to call_handler. * fhandler_tty.cc (fhandler_tty_common::__acquire_output_mutex): Change debugging output slightly. * (fhandler_tty_common::__release_output_mutex): Ditto. (fhandler_tty_slave::read): Fix a comment, remove a goto. * sigproc.cc (sig_send): Accept an optional frame pointer argument for use when suspending the main process. sigcomplete_main is an autoreset event now. Save frame pointer for non-main operation. (wait_sig): Make sigcomplete_main an autoreset event. Eliminate NOSIGQUEUE. Pass rc to sig_handle to signify if this was a nonmain process. * sigproc.h: Reflect change to sig_send argument. * syscalls.cc (swab): Eliminate swab function since it is now available in newlib. * winsup.h (signal_dispatch): Change CONTEXT cx to DWORD ebp. Tue Mar 7 13:31:10 2000 Christopher Faylor * sigproc.cc (sig_send): Eliminate sync_sig_send synchronization since it didn't seem to affect the "bash hangs" problem. Tue Mar 7 13:17:56 2000 Christopher Faylor * mcount.c: Remove strace.h include. Tue Mar 7 00:29:34 2000 Christopher Faylor Throughout use strace class in place of individual functions and variables. * cygwin.din: Eliminate _strace_wm. * sigproc.cc (wait_sig): Temporarily add more debugging output. * include/cygwin/version.h: Bump minor api to reflect export change. Sun Mar 5 01:17:05 2000 Christopher Faylor * exceptions.cc (call_handler): Streamline to use only one call to ResumeThread. * sigproc.cc (sig_send): Use a muto around the ReleaseSemaphore. Remove priority setting since it didn't solve anything. Tue Feb 29 00:46:09 2000 Christopher Faylor * sigproc.cc (sig_send): Temporarily set priority to highest while sending a signal. Mon Feb 28 11:23:29 2000 Christopher Faylor * pinfo.cc (set_myself): Add build date to strace output. Mon Feb 28 11:17:30 2000 Eric Fifer * sigproc.cc (proc_subproc): Only clear wait event when not attending to a signal. Mon Feb 28 00:08:09 2000 Christopher Faylor * configure.in: Remove --enable-strace-hhmmss option. * configure: Regenerate. Sun Feb 27 23:11:57 2000 Christopher Faylor * dcrt0.cc (set_os_type): Record OS name string. (getprogname): Eliminate obsolete function. (dll_crt0_1): Move initial strace initialization output to set_myself. * exceptions.cc (interruptible): Add debugging output. (interrupt_setup): New function. (interrupt_now): Use interrupt_setup to set up common interrupt handler stuff. (interrupt_on_return): Ditto. (call_handler): Move signal_arrived arm and clear threads to region where signalled thread is suspended or suffer races. * pinfo.cc (set_myself): Output interesting information when strace is first initialized. Initialize progname here. * sigproc.cc (sig_dispatch_pending): Modify to ensure that flush signal are sent synchronously. * strace.cc (strace_vsprintf): Move code into strace program. * uname.cc (uname): Use 'osname' global to construct cygwin name + Windows type + version. Fri Feb 25 19:26:42 2000 Christopher Faylor * exceptions.cc (interruptible): Make a little more structured. (call_handler): Allow signals to be sent even if signalled thread is stopped. Change order of signal_arrived arming/waiting threads clearing to eliminate a race. (reset_signal_arrived): New helper function. * malloc.cc (malloc_init): Use mutos so that signal handler can keep track of who owns the lock. (__malloc_lock): Ditto. (__malloc_unlock): Ditto. * sync.h (new_muto): Actually use a muto for the "buffer". * Makefile.in: Fix a dependency. 2000-02-25 DJ Delorie * Makefile.in: fix "make check" support and cygrun. Thu Feb 24 15:56:00 2000 Christopher Faylor * syscalls.c (_read): Clear errno before doing any read operation. Thu Feb 24 14:45:06 2000 Christopher Faylor * exceptions.cc (call_handler): Use new muto linked list to look for all potential mutos owned by suspended thread. Clear waiting threads while thread is stopped. (proc_subproc): Clarify debugging output. * sync.h (class muto): Add 'next' field. (new_muto): Keep linked list alive. Thu Feb 24 00:59:15 2000 Christopher Faylor Fix final round of gcc warnings relating to unused parameters. * debug.cc (iscygthread): New function. * debug.h: Declare it. * exceptions.cc (set_process_mask): Flush pending signals. (handle_sigsuspend): No need to flush pending signals. (call_handler): Refine previous tests of muto ownership. Only clear wait()'s when we have definitely responded to a signal. * fhandler_console.cc (fhandler_console::read): Don't set EINTR if executing in a "cygwin" thread. * sigproc.cc (proc_subproc): Use second argument to control whether CLEARWAIT actually sets "signalled" flag. * sync.h (muto): Add 'unstable' method. Wed Feb 23 21:59:44 2000 Christopher Faylor * hinfo.cc (hinfo::extend): Clean up debugging output. Wed Feb 23 21:34:58 2000 Christopher Faylor * exceptions.cc (interruptible): Change method for determining if something is interruptible. (call_handler): Avoid suspending a thread if it owns a muto. Only set signal_arrived if the thread was actually interrupted. (events_init): Initialize module information needed by interruptible(). * init.cc (dll_entry): Record module handle of main for use by interruptible(). (proc_subproc): Reorganize handling of terminated child so that the bulk of the processing comes from the signal thread. (wait_sig): Force processing of waiting threads if SIGCHLD is not processed. Tue Feb 22 23:06:01 2000 Christopher Faylor Respond to more g++ warnings relating to initializing structures. Mon Feb 21 18:36:37 2000 Christopher Faylor * fhandler.cc (set_inheritance): Revert previous patch which got rid of 'name' parameter. Mon Feb 21 00:19:40 2000 Christopher Faylor Respond to a multitude of new g++ warnings. Sun Feb 20 22:10:21 2000 Christopher Faylor * environ.cc (getwinenv): Make __stdcall. (winenv): Ditto. * malloc.cc (strdup): New function. Occludes newlib version. (_strdup_r): Ditto. * winsup.h: Reflect above __stdcall changes. Sun Feb 20 21:31:00 2000 Corinna Vinschen * fhandler.cc (fhandler_disk_file::fstat): Modify get_file_attribute return value if FILE_ATTRIBUTE_READONLY is set. Thu Feb 17 11:00:23 2000 Christopher Faylor * environ.cc (environ_init): Cosmetic change. Mon Feb 7 16:50:44 2000 Christopher Faylor * Makefile.in: cygrun needs libshell32.a. Sun Feb 6 22:17:58 2000 Christopher Faylor * sigproc.cc (proc_subproc): Simplify case for when a child process is stopped since new signal handler ensures the desired behavior. Sun Feb 6 21:52:33 2000 Christopher Faylor * Makefile.in: Fix install target so that directories will be created when necessary. Sun Feb 6 18:12:17 2000 Christopher Faylor * Makefile.in: exceptions.cc should depend on autoload.h. * exceptions.cc: Undef DECLSPEC_IMPORT prior to including imagehlp.h to avoid defining StackWalk as "import". (call_handler): Minor optimizations. (sig_handle_tty_stop): Fix typo in previous checkin. * sigproc.cc (sigproc_init): Ditto, for signal_arrived initialization. Sat Feb 5 15:37:37 2000 Christopher Faylor * dcrt0.cc (isquote): Convert to inline function. Sat Feb 5 00:26:01 2000 Christopher Faylor Throughout, rename global_signal_arrived to signal_arrived. Throughout, eliminate use of arm_signals and __signal_arrived. Throughout, revert to use of simple call to WaitForSingleObject or WaitForMultipleObjects. * debug.h: Eliminate obsolete function declaration. * exceptions.cc (sigWaitForSingleObject): Eliminate obsolete function definition. * fhandler.h: Reflect change to select_stuff wait method. * fhandler_tape.cc (get_ll): Accomodate new w32api LARGE_INTEGER definition. * ntea.c (NTReadEARaw): Ditto. (NTWriteEA): Ditto. * security.cc (ReadSD): Ditto. (WriteSD): Ditto. * syscalls.cc (_link): Ditto. * uname.cc (uname): Eliminate PPC switch. 2000-02-01 Salvador Eduardo Tropea * include/io.h: add return type to setmode() 2000-01-27 DJ Delorie * include/netdb.h (h_errno): change __imp_ to dllimport * cygwin.din (reent_data): add DATA Thu Jan 27 01:07:14 2000 Christopher Faylor * exceptions.cc (call_handler): Add debugging output. * select.cc (MAKEready): Arm signals earlier. * sigproc.cc (__signal_arrived:arm): Move debugging version of this method here. (__signal_arrived::release): Ditto. * sigproc.h: Recognize debugging versions of above two methods. (arm_signals::WaitForMultipleObjects): Don't release signal lock unless signal arrived. (arm_signals::WaitForMultipleSingleObject): Ditto. (arm_signals::MsgWaitForMultipleObjects): Ditto. Thu Jan 27 00:19:26 2000 Christopher Faylor * sync.h (new_muto): Workaround change in gcc behavior. Wed Jan 26 12:57:13 2000 Christopher Faylor * Makefile.in: Ensure that all required libraries are built prior to linking cygrun.exe. Tue Jan 25 21:26:57 2000 Christopher Faylor * exceptions.cc (sig_handle): Crudely work around potential problem when main thread has a lock but is killed by a fatal signal. * fhandler_tty.cc (fhandler_pty_master::write): Don't perform line editing on the pty master (so why do we need the second argument to line_edit, then?) * thread.cc: Reformat to GNU standards. 2000-01-11 DJ Delorie * ROADMAP: new 2000-01-11 DJ Delorie * fhandler_zero.cc: new, emulate /dev/zero * testsuite/winsup.api/devzero.c: new, test /dev/zero * Makefile.in: build fhandler_zero.o * fhandler.h: add support for /dev/zero * hinfo.cc: ditto * path.cc: ditto 2000-01-11 DJ Delorie * mmap.cc (mmap): MSDN says *one* of FILE_MAP_*, fix flags for MAP_PRIVATE. Mon Jan 10 01:11:00 2000 Corinna Vinschen * security.cc (acl_access): New function. * syscalls.cc (access): Call acl_access if ntsec is on. Mon Jan 10 01:11:00 2000 Corinna Vinschen * fhandler.cc (get_file_owner): Use of ReadSD() instead of GetFileSecurity(). (get_file_group): Ditto. Sun Jan 9 15:43:07 2000 Christopher Faylor * debug.cc (struct thread_start): Add a flag to determine whether a field is in use. Eliminate thread_start_ix since it was not thread-safe. (thread_stub): Use notavail flag to control whether the entry in start_buf can be reused. (makethread): Ditto. Sun Jan 9 20:18:00 2000 Corinna Vinschen * security.cc (alloc_sd): Rearrange order of ACE creation. (setacl): Optimize creation of ACEs related to inheritance. Code cleanup. (aclcheck): Disable check for existance of DEF_)CLASS_OBJ. Sat Jan 8 18:42:32 2000 Christopher Faylor * mkvers.h: Reorg fix. Sat Jan 8 20:00:00 2000 Corinna Vinschen * cygwin.din: Add new acl API calls. * grp.cc (getgroups): Change to work for any username. * security.cc (get_id_from_sid): Change to work with acl API. (is_grp_member): New function. (get_nt_attribute): Rewritten. (add_access_allowed_ace): New function. (add_access_denied_ace): Ditto. (alloc_sd): Rewritten. (setacl): New function. (getace): Ditto. (searchace): Ditto. (getacl): Ditto. (acl): Ditto. (facl): Ditto. (aclcheck): Ditto. (acecmp): Ditto. (aclsort): Ditto. (acltomode): Ditto. (aclfrommode): Ditto. (acltopbits): Ditto. (aclfrompbits): Ditto. (permtostr): Ditto. (acltotext): Ditto. (permfromstr): Ditto. (aclfromtext): Ditto. * syscalls.cc (access): Set errno again when needed. * include/cygwin/acl.h: New file. * include/sys/acl.h: Ditto. Sat Jan 8 14:46:19 2000 Christopher Faylor * Makefile.in: Add cygwin DLL specific CFLAGS define. Fri Jan 7 21:01:57 2000 Christopher Faylor * exceptions.cc (interrupt_on_return): Properly coerce assignment of sigsave.func. 2000-01-07 Mumit Khan * acconfig.h: New file. * configure.in Add check for memset builtin. (AC_CONFIG_HEADER): Use. (STRACE_HHMMSS): Define instead of substituting. (_MT_SAFE): Likewise. (_CYG_THREAD_FAILSAFE): Likewise. (DEBUGGING): Likewise. (MT_SAFE): Substitute as a yes/no variable. * Makefile.in: Remove DEBUGGING, STRACE_HHMMSS, and THREAD_FAILSAFE variables and add DEFS. Update usage of MT_SAFE to reflect yes/no values. Add config.h to winsup.h dependency. (CFLAGS_CONFIG): Update. (INCLUDES): Prepend `-I.'. * utils/Makefile.in (INCLUDES): Likewise. * winsup.h: Conditionally include config.h. * thread.cc: Likewise. * config.h.in: Generate new file. * configure: Regenerate. Fri Jan 7 16:21:01 2000 Christopher Faylor * dcrt0.cc (dll_crt0): Allow signal handling for dynamically loaded case. Thu Jan 6 00:30:12 2000 Corinna Vinschen * path.cc (symlink_check_one): Initialize local variable `unixattr' before calling `get_file_attribute'. * syscalls.cc (chown): Ditto. * security.cc (get_nt_attribute): Eliminate attribute copying from world to user/group in case of missing ACEs. (alloc_sd): Set special rights for administrators group only if it's neither owner nor group. * utils/mkpasswd.c: Create entry for local group administrators (SID 544). Thu Jan 6 00:21:31 2000 Christopher Faylor Change function calls to __stdcall throughout. * exceptions.cc (handle_exceptions): Probe stack for return address to use with new signal method. Fill out sigsave.cx with this information. (call_handler): Use sigsave.cx if it is available, rather than trying to find the context of the main thread. (interrupt_on_return): Use address of context rather than pass-by-reference. (interrupt_now): Ditto. Thu Jan 6 00:21:31 2000 Corinna Vinschen * grp.cc (getgroups): Return supplementary groups now. * include/limits.h: Define NGROUP_MAX as 16 now.