2005-01-18 Corinna Vinschen * autoload.cc (CoInitialize): Remove. (CoUninitialize): Remove. (CoCreateInstance): Remove. (CoTaskMemFree): Add. (SHGetDesktopFolder): Add. * path.cc (shortcut_header): Remove. (shortcut_initalized): Remove. (GUID_shortcut): New static GUID. (struct win_shortcut_hdr): New struct describing Windows shortcut header structure. (symlink_worker): Rewrite creating Windows shortcuts. Create ITEMIDLIST if target exists. Only write once. (cmp_shortcut_header): Use win_shortcut_hdr structure for comparison. (check_shortcut): Rewrite to read only once from file. Allow skipping an ITIMIDLIST in the file. 2005-01-16 Christopher Faylor * pinfo.h (maybe_set_exit_code_from_windows): Renamed from set_exit_state. * pinfo.cc (pinfo::exit): Use renamed function. (proc_waiter): Ditto. Make a copy of input argument to avoid problems when procs array is shuffled. Flag when copy is made so that remove_proc knows when it is safe to reshuffle. * sigproc.cc (proc_terminate): Don't flag process_state as PID_EXITED. (remove_proc): Wait for waiter to finish copying pinfo element before moving it (an actual wait should be an extremely rare event). 2005-01-15 Christopher Faylor * init.cc (dll_entry): Remove unused extern. * include/sys/cygwin.h: Remove PID_ZOMBIE. * pinfo.h: Rename EXITCODE_* defines. (pinfo::set_exit_state): Remove parameter. * pinfo.cc (set_exit_state): Remove parameter. Reverse sense of test so that exitcode is checked for having been set rather than not having been set. Set flag when exitcode has been established. Don't set PID_STATE here. (pinfo::init): Remove exitcode initialization. (pinfo::exit): Reflect change in EXITCODE_* naming. Set flag when exitcode has been established. Reflect change in arguments to set_process_state. (proc_waiter): Reflect change in arguments to set_process_state. Set process_state here and only here. * fhandler_process.cc (fhandler_process::fill_filebuf): Reflect removal of PID_ZOMBIE define. (format_process_stat): Ditto. (format_process_status): Ditto. * sigproc.cc (pid_exists): Ditto. (stopped_or_terminated): Ditto. Make sure that only low-order 16 bits of exitcode are used. * spawn.cc (spawn_guts): Reflect change in EXITCODE_* naming. 2005-01-15 Christopher Faylor * sigproc.cc (sig_send): Don't complain if attempt to send signal to myself fails after I've "execed". 2005-01-14 Corinna Vinschen * fhandler_disk_file.cc (fhandler_disk_file::facl): Pretend successful SETACL if no acls are available. * fhandler.cc (fhandler_base::facl): Implement to return sensible values on GETACL and GETACLCNT. Pretend successful SETACL. * fhandler_virtual.cc (fhandler_virtual::facl): Ditto. 2005-01-13 Corinna Vinschen * fhandler.h (fhandler_disk_file::touch_ctime): Declare. * fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): New method to set file's ctime. (fhandler_disk_file::fchmod): Try opening file for writing first. Set file's ctime on success. (fhandler_disk_file::fchown): Ditto. (fhandler_disk_file::facl): Ditto. 2005-01-13 Corinna Vinschen * pinfo.cc (pinfo::exit): Don't access self after releasing it. * path.h (path_conv::path_conv): Fill path with native device name in case of device argument. 2005-01-13 Corinna Vinschen * fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup for child, not for parent. 2005-01-13 Christopher Faylor * init.cc (dll_entry): Nuke attempt to set exit code since parent will use windows exit code if needed. * pinfo.cc (pinfo::exit): Move release() here to minimize pid creation race (suggested by Pierre Humblet). 2005-01-12 Christopher Faylor Reorganize header file inclusion throughout so that cygerrno.h comes first. * fhandler.h (select_record::thread_errno): Save any encountered errno here. (select_record::set_select_errno): New function. (select_record::saw_error): New function. (select_record::select_record): Initialize thread_errno to zero. * select.cc (set_handle_or_return_if_not_open): Set thread_errno on failure. (select_stuff::wait): Record errno for later resurrection in calling thread. (peek_serial): Ditto. 2005-01-12 Christopher Faylor * syscalls.cc (system): Use "/bin/sh" as per linux and (sorta) SUSv3. 2005-01-12 Christopher Faylor * pinfo.cc (pinfo::exit): Don't assume that this == myself. 2005-01-11 Christopher Faylor * pinfo.cc (pinfo::init): Don't close input handle on temporary (?) failure. 2005-01-11 Christopher Faylor * pinfo.h (_pinfo::set_exit_state): Declare new function. (pinfo::exit): Move here from _pinfo::exit. * sigproc.cc (child_info::sync): Use new function to set exitcode and process_state. * pinfo.cc (_pinfo::exit): Ditto. (proc_waiter): Ditto. (_pinfo::set_exit_state): Define new function. (_pinfo::dup_proc_pipe): Close handle when there is no parent process around to care about the exit value. * dcrt0.cc (dll_crt0_0): Move subproc_ready synchronization later to make sure that myself is still mapped in parent. (do_exit): Reflect movement to pinfo::exit. (__api_fatal): Ditto. * exceptions.cc (signal_exit): Ditto. * errno.cc (errmap): Map PROC_NOT_FOUND. * init.cc (dll_entry): Release myself before exiting. * sigproc.cc (proc_can_be_signalled): Set errno appropriately. (sig_send): Ditto. Also remove ill-advised test for !myself->sendsig since this is an indication of a process which is still initializating -- it is not an error. (child_info::sync): Don't set exitcode here. Assume that will happen in proc_waiter, if necessary. * spawn.cc (spawn_guts): Delay "wait_for_myself" logic until later. Don't wait at all if the process has already exited. Reflect movement to pinfo::exit. 2005-01-11 Corinna Vinschen * environ.cc (build_env): Disallow empty strings and strings starting with '=' in Win32 environment. 2005-01-08 Pierre Humblet * syscalls.cc (seteuid32): Only change the default dacl when seteuid succeeds. Do not close HKCU. 2005-01-06 Corinna Vinschen * fhandler_process.cc: Use strcasematch instead of strcasecmp throughout. 2005-01-06 Corinna Vinschen * syscalls.cc (rename): Fix behaviour in case of renaming directories according to SUSv3. 2005-01-06 Corinna Vinschen * fhandler_disk_file.cc (fhandler_base::open_fs): Don't allow opening directories for writing. 2005-01-06 Christopher Faylor * timer.cc (timer_thread): Pass sigev pointer value as per SuSv3 rather than pointer to sigev. 2005-01-05 Christopher Faylor * dcrt0.cc (multiple_cygwin_problem): Reorganize error message to not always talk about a "version" when it's not a version. (dll_crt0_0): Change info passed to multiple_cygwin_problem to be a little more precise. * shared.cc (user_shared_initialize): Ditto. (shared_info::initialize): Ditto. 2005-01-03 Christopher Faylor * pinfo.cc (_pinfo::dup_proc_pipe): Can't close proc pipe when execing or we will suffer an exit code race. 2005-01-03 Corinna Vinschen * signal.cc (abort): Call _GLOBAL_REENT's __cleanup. 2005-01-03 Corinna Vinschen * syscalls.cc (setmode): Call _fwalk with _GLOBAL_REENT. 2005-01-01 Christopher Faylor * cygthread.cc (cygthread::stub): Set inuse to false when exiting. (cygthread::cygthread): Actually pass name as argument to debugging output to avoid SEGV when strace'ing. (cygthread::release): Don't set stack_ptr to NULL, since it is only set once on first entry to a stub not on each stub iteration. (cygthead::exit_thread): Remove obsolete function. * cygthread.h (cygthread::exit_thread): Ditto. 2005-01-01 Christopher Faylor * shared.cc (open_shared): Don't attempt VirtualAlloc magic if first attempt to map memory fails.