2005-01-29 19:23:07 +08:00
|
|
|
2005-01-29 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* autoload.cc (GetModuleFileNameExA): Add.
|
|
|
|
(GetModuleInformation): Add.
|
|
|
|
(QueryWorkingSet): Add.
|
|
|
|
* fhandler.h (fhandler_virtual::get_filebuf): New method.
|
|
|
|
* fhandler_proc.cc (PROC_SELF): Define.
|
|
|
|
(proc_fhandlers): Change type of self to FH_PROC.
|
|
|
|
(fhandler_proc::exists): Return -3 if self.
|
|
|
|
(fhandler_proc::fstat): Handle self as symlink.
|
|
|
|
(fhandler_proc::fill_filebuf): Handle self.
|
|
|
|
* fhandler_process.cc: Include psapi.h.
|
|
|
|
(PROCESS_EXENAME): Remove.
|
|
|
|
(PROCESS_MAPS): Define.
|
|
|
|
(PROCESS_ROOT): Define.
|
|
|
|
(PROCESS_EXE): Define.
|
|
|
|
(PROCESS_CWD): Define.
|
|
|
|
(process_listing): Remove "exename", add "maps, "root", "exe" and
|
|
|
|
"cwd" elements.
|
|
|
|
(fhandler_process::exists): Return -2 for symlinks.
|
|
|
|
(fhandler_process::fstat): Handle symlinks.
|
|
|
|
(fill_filebuf): Evaluate pid if pid is 0. Use exename handling for
|
|
|
|
exe. Handle maps, root and cwd.
|
|
|
|
(format_process_maps): New function evaluating "maps".
|
|
|
|
* path.cc (symlink_info::set): New method to fill symlink_info
|
|
|
|
with data matching virtual symlinks.
|
|
|
|
(path_conv::check): Handle virtual symlinks.
|
|
|
|
* pinfo.cc (_pinfo::commune_recv): Add PICOM_CWD and PICOM_ROOT
|
|
|
|
handling.
|
|
|
|
(_pinfo::commune_send): Ditto.
|
|
|
|
(_pinfo::root): New function.
|
|
|
|
(_pinfo::cwd): New function.
|
|
|
|
* pinfo.h (enum picom): Add PICOM_CWD and PICOM_ROOT.
|
|
|
|
(_pinfo::root): Declare.
|
|
|
|
(_pinfo::cwd): Declare.
|
|
|
|
|
2005-01-29 13:39:07 +08:00
|
|
|
2005-01-29 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* cygthread.cc (new): Add a little more debugging.
|
|
|
|
* thread.cc (pthread_null::exit): Add a _my_tls.remove() for safety.
|
|
|
|
|
2005-01-29 11:09:50 +08:00
|
|
|
2005-01-28 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* cygtls.cc (cygtls::call2): Move socket cleanup.
|
|
|
|
(cygtls::remove): Move socket cleanup here. Don't use _my_tls to
|
|
|
|
reference it.
|
|
|
|
|
2005-01-27 02:21:22 +08:00
|
|
|
2005-01-26 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.cc (pinfo::init): Avoid a compiler warning.
|
|
|
|
|
2005-01-26 21:07:48 +08:00
|
|
|
2005-01-25 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* syscalls.cc (setpriority): Implement PRIO_PGRP, PRIO_USER and
|
|
|
|
setting priority in other Cygwin processes.
|
|
|
|
(getpriority): Implement PRIO_PGRP, PRIO_USER and getting nice value
|
|
|
|
from other processes.
|
|
|
|
|
2005-01-26 12:34:19 +08:00
|
|
|
2005-01-26 Pierre Humblet <pierre.humblet@ieee.org>
|
|
|
|
|
|
|
|
* path.cc (path_conv::check): Return ENOTDIR rather than ENOENT
|
|
|
|
when a component is not a directory. Remove unreachable code.
|
|
|
|
(digits): Delete.
|
|
|
|
|
2005-01-26 08:15:11 +08:00
|
|
|
2005-01-25 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.h (pinfo::init): Make third parameter non-optional and
|
|
|
|
propagate change throughout.
|
|
|
|
* pinfo.cc (set_myself): Pass INVALID_HANDLE_POINTER if h is NULL.
|
|
|
|
(pinfo::init): Make third parameter non-optional. Eliminate use of
|
|
|
|
PID_EXECED as an argument. Put setting of handle back inside loop but
|
|
|
|
reorganize to try to open it only when necessary.
|
|
|
|
|
2005-01-26 06:45:11 +08:00
|
|
|
2005-01-25 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* cygwin.din: Export getpriority and setpriority.
|
|
|
|
* fork.cc (fork_parent): Copy parent's nice value into child.
|
|
|
|
* spawn.cc (spawn_guts): Ditto.
|
|
|
|
* miscfuncs.cc (winprio_to_nice): New function.
|
|
|
|
(nice_to_winprio): Ditto.
|
|
|
|
* pinfo.cc (pinfo_init): If parent is not a Cygwin process, set
|
|
|
|
default nice value according to current Win32 priority class.
|
|
|
|
* pinfo.h (class _pinfo): Add nice member.
|
|
|
|
* syscalls.cc (setpriority): New function, only implementing
|
|
|
|
PRIO_PROCESS for now.
|
|
|
|
(getpriority): Ditto.
|
|
|
|
(nice): Just call setpriority.
|
|
|
|
* wincap.h (wincaps::has_extended_priority_class): New element.
|
|
|
|
* wincap.cc: Implement above element throughout.
|
|
|
|
* winsup.h: Add prototypes for winprio_to_nice and nice_to_winprio.
|
|
|
|
* include/limits.h (NZERO): New define.
|
|
|
|
* include/cygwin/types.h (id_t): New datatype.
|
|
|
|
* include/cygwin/version.h: Bump API minor version.
|
|
|
|
* include/sys/resource.h: Add PRIO_XXX defines and prototypes for
|
|
|
|
getpriority and setpriority.
|
|
|
|
|
2005-01-26 04:28:40 +08:00
|
|
|
2005-01-25 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* path.cc (realpath): Allow to expand with .exe suffix.
|
|
|
|
|
2005-01-23 05:47:04 +08:00
|
|
|
2005-01-22 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* spawn.cc (spawn_guts): Perform same "cd" as in pinfo::exit below to
|
|
|
|
make sure that a stub process does not keep the current working
|
|
|
|
directory busy after the "execed" process has exited.
|
|
|
|
|
2005-01-23 05:17:53 +08:00
|
|
|
2005-01-22 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.cc (pinfo::init): Move everything but the MapViewOfFileEx out
|
|
|
|
of the loop since trying multiple times to call CreateFileMapping
|
|
|
|
doesn't make much sense. Try to structure the loop a little better so
|
|
|
|
that exiting with a break does the right thing.
|
|
|
|
(pinfo::release): Release shared memory area if it exists and close
|
|
|
|
handle if it exists.
|
|
|
|
|
2005-01-23 02:07:10 +08:00
|
|
|
2005-01-22 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.cc (pinfo::maybe_set_exit_code_from_windows): Make sure that
|
|
|
|
process has exited before getting an error code.
|
|
|
|
(pinfo::exit): "cd" to innocuous location before exiting to make sure
|
|
|
|
that process does not keep the current working directory busy while it
|
|
|
|
is in the process of really exiting.
|
|
|
|
|
2005-01-18 21:00:18 +08:00
|
|
|
2005-01-18 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* autoload.cc (CoInitialize): Remove.
|
|
|
|
(CoUninitialize): Remove.
|
|
|
|
(CoCreateInstance): Remove.
|
|
|
|
(CoTaskMemFree): Add.
|
|
|
|
(SHGetDesktopFolder): Add.
|
|
|
|
* path.cc (shortcut_header): Remove.
|
|
|
|
(shortcut_initalized): Remove.
|
|
|
|
(GUID_shortcut): New static GUID.
|
|
|
|
(struct win_shortcut_hdr): New struct describing Windows shortcut
|
|
|
|
header structure.
|
|
|
|
(symlink_worker): Rewrite creating Windows shortcuts. Create
|
|
|
|
ITEMIDLIST if target exists. Only write once.
|
|
|
|
(cmp_shortcut_header): Use win_shortcut_hdr structure for comparison.
|
|
|
|
(check_shortcut): Rewrite to read only once from file. Allow skipping
|
|
|
|
an ITIMIDLIST in the file.
|
|
|
|
|
2005-01-17 12:12:08 +08:00
|
|
|
2005-01-16 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.h (maybe_set_exit_code_from_windows): Renamed from
|
|
|
|
set_exit_state.
|
|
|
|
* pinfo.cc (pinfo::exit): Use renamed function.
|
|
|
|
(proc_waiter): Ditto. Make a copy of input argument to avoid problems
|
|
|
|
when procs array is shuffled. Flag when copy is made so that
|
|
|
|
remove_proc knows when it is safe to reshuffle.
|
|
|
|
* sigproc.cc (proc_terminate): Don't flag process_state as PID_EXITED.
|
|
|
|
(remove_proc): Wait for waiter to finish copying pinfo element before
|
|
|
|
moving it (an actual wait should be an extremely rare event).
|
|
|
|
|
2005-01-17 01:00:27 +08:00
|
|
|
2005-01-15 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* init.cc (dll_entry): Remove unused extern.
|
|
|
|
|
|
|
|
* include/sys/cygwin.h: Remove PID_ZOMBIE.
|
|
|
|
* pinfo.h: Rename EXITCODE_* defines.
|
|
|
|
(pinfo::set_exit_state): Remove parameter.
|
|
|
|
* pinfo.cc (set_exit_state): Remove parameter. Reverse sense of test
|
|
|
|
so that exitcode is checked for having been set rather than not having
|
|
|
|
been set. Set flag when exitcode has been established. Don't set
|
|
|
|
PID_STATE here.
|
|
|
|
(pinfo::init): Remove exitcode initialization.
|
|
|
|
(pinfo::exit): Reflect change in EXITCODE_* naming. Set flag when
|
|
|
|
exitcode has been established. Reflect change in arguments to
|
|
|
|
set_process_state.
|
|
|
|
(proc_waiter): Reflect change in arguments to set_process_state. Set
|
|
|
|
process_state here and only here.
|
|
|
|
* fhandler_process.cc (fhandler_process::fill_filebuf): Reflect removal
|
|
|
|
of PID_ZOMBIE define.
|
|
|
|
(format_process_stat): Ditto.
|
|
|
|
(format_process_status): Ditto.
|
|
|
|
* sigproc.cc (pid_exists): Ditto.
|
|
|
|
(stopped_or_terminated): Ditto. Make sure that only low-order 16 bits of
|
|
|
|
exitcode are used.
|
|
|
|
* spawn.cc (spawn_guts): Reflect change in EXITCODE_* naming.
|
|
|
|
|
2005-01-16 07:43:42 +08:00
|
|
|
2005-01-15 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* sigproc.cc (sig_send): Don't complain if attempt to send signal to
|
|
|
|
myself fails after I've "execed".
|
|
|
|
|
2005-01-15 06:03:40 +08:00
|
|
|
2005-01-14 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* fhandler_disk_file.cc (fhandler_disk_file::facl): Pretend successful
|
|
|
|
SETACL if no acls are available.
|
|
|
|
* fhandler.cc (fhandler_base::facl): Implement to return sensible
|
|
|
|
values on GETACL and GETACLCNT. Pretend successful SETACL.
|
|
|
|
* fhandler_virtual.cc (fhandler_virtual::facl): Ditto.
|
|
|
|
|
2005-01-14 06:56:20 +08:00
|
|
|
2005-01-13 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* fhandler.h (fhandler_disk_file::touch_ctime): Declare.
|
|
|
|
* fhandler_disk_file.cc (fhandler_disk_file::touch_ctime): New method
|
|
|
|
to set file's ctime.
|
|
|
|
(fhandler_disk_file::fchmod): Try opening file for writing first.
|
|
|
|
Set file's ctime on success.
|
|
|
|
(fhandler_disk_file::fchown): Ditto.
|
|
|
|
(fhandler_disk_file::facl): Ditto.
|
|
|
|
|
2005-01-14 06:18:57 +08:00
|
|
|
2005-01-13 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* pinfo.cc (pinfo::exit): Don't access self after releasing it.
|
|
|
|
* path.h (path_conv::path_conv): Fill path with native device
|
|
|
|
name in case of device argument.
|
|
|
|
|
2005-01-14 04:10:04 +08:00
|
|
|
2005-01-13 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup
|
|
|
|
for child, not for parent.
|
|
|
|
|
2005-01-14 00:38:35 +08:00
|
|
|
2005-01-13 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* init.cc (dll_entry): Nuke attempt to set exit code since parent will
|
|
|
|
use windows exit code if needed.
|
|
|
|
* pinfo.cc (pinfo::exit): Move release() here to minimize pid creation
|
|
|
|
race (suggested by Pierre Humblet).
|
|
|
|
|
2005-01-13 06:40:46 +08:00
|
|
|
2005-01-12 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
Reorganize header file inclusion throughout so that cygerrno.h comes
|
|
|
|
first.
|
|
|
|
* fhandler.h (select_record::thread_errno): Save any encountered errno
|
|
|
|
here.
|
|
|
|
(select_record::set_select_errno): New function.
|
|
|
|
(select_record::saw_error): New function.
|
|
|
|
(select_record::select_record): Initialize thread_errno to zero.
|
|
|
|
* select.cc (set_handle_or_return_if_not_open): Set thread_errno on
|
|
|
|
failure.
|
|
|
|
(select_stuff::wait): Record errno for later resurrection in calling
|
|
|
|
thread.
|
|
|
|
(peek_serial): Ditto.
|
|
|
|
|
2005-01-13 04:06:17 +08:00
|
|
|
2005-01-12 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* syscalls.cc (system): Use "/bin/sh" as per linux and (sorta) SUSv3.
|
|
|
|
|
2005-01-13 02:05:07 +08:00
|
|
|
2005-01-12 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.cc (pinfo::exit): Don't assume that this == myself.
|
|
|
|
|
2005-01-12 00:58:31 +08:00
|
|
|
2005-01-11 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.cc (pinfo::init): Don't close input handle on temporary (?)
|
|
|
|
failure.
|
|
|
|
|
2005-01-11 23:31:04 +08:00
|
|
|
2005-01-11 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.h (_pinfo::set_exit_state): Declare new function.
|
|
|
|
(pinfo::exit): Move here from _pinfo::exit.
|
|
|
|
* sigproc.cc (child_info::sync): Use new function to set exitcode and
|
|
|
|
process_state.
|
|
|
|
* pinfo.cc (_pinfo::exit): Ditto.
|
|
|
|
(proc_waiter): Ditto.
|
|
|
|
(_pinfo::set_exit_state): Define new function.
|
|
|
|
(_pinfo::dup_proc_pipe): Close handle when there is no parent process
|
|
|
|
around to care about the exit value.
|
|
|
|
* dcrt0.cc (dll_crt0_0): Move subproc_ready synchronization later to
|
|
|
|
make sure that myself is still mapped in parent.
|
|
|
|
(do_exit): Reflect movement to pinfo::exit.
|
|
|
|
(__api_fatal): Ditto.
|
|
|
|
* exceptions.cc (signal_exit): Ditto.
|
|
|
|
* errno.cc (errmap): Map PROC_NOT_FOUND.
|
|
|
|
* init.cc (dll_entry): Release myself before exiting.
|
|
|
|
* sigproc.cc (proc_can_be_signalled): Set errno appropriately.
|
|
|
|
(sig_send): Ditto. Also remove ill-advised test for !myself->sendsig
|
|
|
|
since this is an indication of a process which is still initializating
|
|
|
|
-- it is not an error.
|
|
|
|
(child_info::sync): Don't set exitcode here. Assume that will happen
|
|
|
|
in proc_waiter, if necessary.
|
|
|
|
* spawn.cc (spawn_guts): Delay "wait_for_myself" logic until later.
|
|
|
|
Don't wait at all if the process has already exited. Reflect movement
|
|
|
|
to pinfo::exit.
|
|
|
|
|
2005-01-11 20:42:35 +08:00
|
|
|
2005-01-11 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* environ.cc (build_env): Disallow empty strings and strings starting
|
|
|
|
with '=' in Win32 environment.
|
|
|
|
|
2005-01-09 02:33:07 +08:00
|
|
|
2005-01-08 Pierre Humblet <pierre.humblet@ieee.org>
|
|
|
|
|
|
|
|
* syscalls.cc (seteuid32): Only change the default dacl when
|
|
|
|
seteuid succeeds. Do not close HKCU.
|
|
|
|
|
2005-01-07 07:00:08 +08:00
|
|
|
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* fhandler_process.cc: Use strcasematch instead of strcasecmp
|
|
|
|
throughout.
|
|
|
|
|
2005-01-07 06:10:08 +08:00
|
|
|
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* syscalls.cc (rename): Fix behaviour in case of renaming directories
|
|
|
|
according to SUSv3.
|
|
|
|
|
2005-01-07 01:43:55 +08:00
|
|
|
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* fhandler_disk_file.cc (fhandler_base::open_fs): Don't allow
|
|
|
|
opening directories for writing.
|
|
|
|
|
2005-01-06 22:09:14 +08:00
|
|
|
2005-01-06 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* timer.cc (timer_thread): Pass sigev pointer value as per SuSv3 rather
|
|
|
|
than pointer to sigev.
|
|
|
|
|
2005-01-06 05:40:08 +08:00
|
|
|
2005-01-05 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* dcrt0.cc (multiple_cygwin_problem): Reorganize error message to not
|
|
|
|
always talk about a "version" when it's not a version.
|
|
|
|
(dll_crt0_0): Change info passed to multiple_cygwin_problem to be a
|
|
|
|
little more precise.
|
|
|
|
* shared.cc (user_shared_initialize): Ditto.
|
|
|
|
(shared_info::initialize): Ditto.
|
|
|
|
|
2005-01-04 22:57:42 +08:00
|
|
|
2005-01-03 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* pinfo.cc (_pinfo::dup_proc_pipe): Can't close proc pipe when execing
|
|
|
|
or we will suffer an exit code race.
|
|
|
|
|
2005-01-04 02:06:26 +08:00
|
|
|
2005-01-03 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* signal.cc (abort): Call _GLOBAL_REENT's __cleanup.
|
|
|
|
|
2005-01-03 18:59:09 +08:00
|
|
|
2005-01-03 Corinna Vinschen <corinna@vinschen.de>
|
|
|
|
|
|
|
|
* syscalls.cc (setmode): Call _fwalk with _GLOBAL_REENT.
|
|
|
|
|
2005-01-02 10:22:25 +08:00
|
|
|
2005-01-01 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* cygthread.cc (cygthread::stub): Set inuse to false when exiting.
|
|
|
|
(cygthread::cygthread): Actually pass name as argument to debugging
|
|
|
|
output to avoid SEGV when strace'ing.
|
|
|
|
(cygthread::release): Don't set stack_ptr to NULL, since it is only set
|
|
|
|
once on first entry to a stub not on each stub iteration.
|
|
|
|
(cygthead::exit_thread): Remove obsolete function.
|
|
|
|
* cygthread.h (cygthread::exit_thread): Ditto.
|
|
|
|
|
2005-01-02 08:34:55 +08:00
|
|
|
2005-01-01 Christopher Faylor <cgf@timesys.com>
|
|
|
|
|
|
|
|
* shared.cc (open_shared): Don't attempt VirtualAlloc magic if first
|
|
|
|
attempt to map memory fails.
|
|
|
|
|