libc/winsup/cygwin/ChangeLog

504 lines
19 KiB
Plaintext

2005-02-02 Corinna Vinschen <corinna@vinschen.de>
* fhandler.h (fhandler_base::ftruncate): Define new virtual method.
(fhandler_disk_file::ftruncate): Ditto.
* fhandler.cc (fhandler_base::ftruncate): New method.
* fhandler_disk_file.cc (fhandler_disk_file::ftruncate): Ditto.
* syscalls.cc (ftruncate64): Move functionality into fhandlers.
Call fhandler method from here.
2005-02-02 Corinna Vinschen <corinna@vinschen.de>
* pipe.cc (fhandler_pipe::dup): Fix conditionals in case of error.
2005-02-02 Corinna Vinschen <corinna@vinschen.de>
* times.cc (utimes): Mark st_ctime for update according to SUSv3.
2005-02-01 Christopher Faylor <cgf@timesys.com>
* fhandler_proc.cc (format_proc_partitions): Remove PartitionType check
since it could skip over partitions that are actually interesting.
2005-02-01 Christopher Faylor <cgf@timesys.com>
* cygthread.cc (cygthread::terminate_thread): Wait briefly for
notification event in the event that the thread was actually in the
process of exiting.
* pipe.cc (fhandler_pipe::dup): read_state is not supposed to be
inheritable. Fix that.
* path.cc (path_conv::check): Set symlen = 0 to avoid a compiler
warning.
* devices.h (devices::parsedisk): Declare new function.
* devices.in (devices::parsedisk): Define new function.
* dtable.cc (dtable::init_std_file_from_handle): Use device numbers
rather than name.
* fhandler_proc.cc (format_proc_partitions): Use parsedisk to generate
disk names from numeric codes. (This was broken on two of my
systems previously and is still broken now)
2005-02-01 Corinna Vinschen <corinna@vinschen.de>
* pipe.cc (fhandler_pipe::open): Allow re-opening of /proc/<pid>/fd
pipes of the current process.
2005-02-01 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_base::get_proc_fd_name): Don't generate
"device:" entry.
* fhandler.h (fhandler_socket::open): New method.
(fhandler_pipe::open): New method.
* fhandler_proc.cc (fhandler_proc::exists): Return -2 in case of
/proc/self.
* fhandler_process.cc (fhandler_process::exists): Return -2 in
case of symlinks, -3 for pipes and -4 for sockets.
(fhandler_process::fstat): Handle pipes and sockets.
(fhandler_process::open): Handle opening /proc/<pid>/fd.
(fhandler_process::fill_filebuf): Generate empty names for
non exisiting file descriptors.
* fhandler_socket.cc (fhandler_socket::get_proc_fd_name): Always
generate "socket:[number]" strings as on Linux.
(fhandler_socket::open): New method.
(fhandler_socket::fstat): Always return socket type.
* path.cc (symlink_info::set): Remove unused second parameter.
(path_conv::check): Handle pipes and sockets in /proc.
Set correct device type for AF_LOCAL sockets.
* pinfo.cc (_pinfo::commune_recv): Generate empty names for
non exisiting file descriptors.
(_pinfo::fd): Ditto.
* pipe.cc (fhandler_pipe::open): New method.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* path.h (path_conv::set_name): Declare new function.
* path.cc (path_conv::set_name): Define new function.
* fhandler.h (fhandler_dev_null::open): Declare new function.
* fhandler.cc (fhandler_dev_null::open): Define new function.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* smallprint.c (rnarg): Use long rather than unsigned long so that we
get proper sign extension.
2005-01-31 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (set_traverse): New function.
(parse_thing): Add "traverse" option. Sort options alphabetically.
(environ_init): On NT, switch on traverse checking by default.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* smallprint.c (__rn): Regparmize.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* smallprint.c (rnarg): New macro.
(rnargLL): Ditto.
(__rn): Rename from 'rn', add a mask argument, and use the mask
argument to control how many significant digits to care about.
(__small_vsprintf): Use __rn, rnarg, rnargLL, as appropriate.
2005-01-31 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::exit): Only return low-order 16 bits when exiting.
2005-01-31 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc (format_process_maps): Get destbuf argument by
reference. Allow resizing of destbuf as necessary. Fix string
handling.
2005-01-31 Corinna Vinschen <corinna@vinschen.de>
* cygheap.h (class cygheap_fdenum): New class to enumerate used
fhandlers.
* dtable.h (class dtable): Add cygheap_fdenum as friend class.
* fhandler.h (fhandler_base::get_proc_fd_name): New virtual method
to return a name for /proc/<pid>/fd.
(fhandler_socket::get_proc_fd_name): Ditto.
(fhandler_pipe::get_proc_fd_name): Ditto.
(fhandler_virtual::opendir): Make virtual method.
(fhandler_process::opendir): New method.
* fhandler.cc (fhandler_base::get_proc_fd_name): New method.
* fhandler_process.cc: Include ctype.h.
(PROCESS_FD): Define.
(process_listing): Add "fd".
(fhandler_process::exists): Fix comment. Return 1 in case of "fd"
directory. Handle files below "fd".
(fhandler_process::fstat): Drop "self" handling. Set correct link
count for directories.
(fhandler_process::opendir): New method to handle "fd" directory.
(fhandler_process::readdir): Add "fd" handling.
(fhandler_process::open): Drop "self" handling.
(fhandler_process::fill_filebuf): Ditto. Add "fd" handling. Fix
"maps" output string.
* fhandler_registry.cc (fhandler_registry::fstat): Set correct link
count for directories.
* fhandler_socket.cc (fhandler_socket::get_proc_fd_name): New method.
* path.cc (symlink_info::set): Fix thinko.
* pinfo.cc (_pinfo::commune_recv): Rename pathbuf to path throughout.
Drop local path variable in PICOM_FIFO case. Fix debug output.
Close handles as early as possible. Add PICOM_FDS and PICOM_FD
handling.
(_pinfo::commune_send): Add PICOM_FDS and PICOM_FD handling.
(_pinfo::fd): New method.
(_pinfo::fds): New method.
* pinfo.h (enum picom): Add PICOM_FDS and PICOM_FD.
(_pinfo::fd): Declare.
(_pinfo::fds): Declare.
* pipe.cc (fhandler_pipe::get_proc_fd_name): New method.
2005-01-29 Corinna Vinschen <corinna@vinschen.de>
* smallprint.c (rn): Change uval to unsigned long long to fix 64 bit
handling.
* fhandler_process.cc (format_process_maps): Print major, minor and
inode numbers correctly.
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 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-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-26 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::init): Avoid a compiler warning.
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 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-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-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-25 Corinna Vinschen <corinna@vinschen.de>
* path.cc (realpath): Allow to expand with .exe suffix.
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-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-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 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-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-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-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-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-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-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-13 Corinna Vinschen <corinna@vinschen.de>
* fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup
for child, not for parent.
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-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-12 Christopher Faylor <cgf@timesys.com>
* syscalls.cc (system): Use "/bin/sh" as per linux and (sorta) SUSv3.
2005-01-12 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::exit): Don't assume that this == myself.
2005-01-11 Christopher Faylor <cgf@timesys.com>
* pinfo.cc (pinfo::init): Don't close input handle on temporary (?)
failure.
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 Corinna Vinschen <corinna@vinschen.de>
* environ.cc (build_env): Disallow empty strings and strings starting
with '=' in Win32 environment.
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-06 Corinna Vinschen <corinna@vinschen.de>
* fhandler_process.cc: Use strcasematch instead of strcasecmp
throughout.
2005-01-06 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (rename): Fix behaviour in case of renaming directories
according to SUSv3.
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 Christopher Faylor <cgf@timesys.com>
* timer.cc (timer_thread): Pass sigev pointer value as per SuSv3 rather
than pointer to sigev.
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-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-03 Corinna Vinschen <corinna@vinschen.de>
* signal.cc (abort): Call _GLOBAL_REENT's __cleanup.
2005-01-03 Corinna Vinschen <corinna@vinschen.de>
* syscalls.cc (setmode): Call _fwalk with _GLOBAL_REENT.
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-01 Christopher Faylor <cgf@timesys.com>
* shared.cc (open_shared): Don't attempt VirtualAlloc magic if first
attempt to map memory fails.