* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): For MACH_SEND_INTERRUPTED
and other errors that indicate a pseudo-receive happened, grok through
the message buffer for port rights that need references fixed up.
(input, output): Functions removed.
(mach_open_devstream): Use devstream_{read,write} as cookie functions,
using only the vanilla fopencookie interface.
* hurd/fopenport.c [! USE_IN_LIBIO] (cookie_io_functions_t): Define
as macro for __io_functions.
(funcsio): Use cookie_io_functions_t type name.
(fopenport): Renamed from __fopenport. Rewrite to call fopencookie.
* libio/iofopncook.c (_IO_cookie_init): New function, broken out of
fopencookie.
(fopencookie): Use it.
* libio/libio.h: Declare _IO_cookie_init.
* hurd/vpprintf.c (vpprintf) [USE_IN_LIBIO]: Implement using
_IO_cookie_init.
* libio/libio.h (__io_seek_fn): Fix second argument type
to be a pointer, in line with the manual and the old stdio.
* libio/iofopncook.c (_IO_cookie_seek): Fix (sole) caller.
* sysdeps/generic/bits/stdio-lock.h: New file.
This is a stub with #error, but that's better than no file at all.
* sysdeps/unix/sysv/linux/alpha/syscall.S:
* manual/message.texi (Using gettextized software):
* manual/filesys.texi (File Size):
* manual/charset.texi (glibc iconv Implementation):
* locale/programs/ld-collate.c (collate_output):
* manual/stdio.texi (Output Conversion Syntax):
* hurd/fopenport.c [! USE_IN_LIBIO] (cookie_io_functions_t): Define
as macro for __io_functions.
(funcsio): Use cookie_io_functions_t type name.
(fopenport): Renamed from __fopenport. Rewrite to call fopencookie.
* hurd/hurdsig.c (_hurdsig_init): If __hurd_threadvar_stack_mask is
nonzero, use cthread_fork to create the signal thread.
* hurd/msgportdemux.c (_hurd_msgport_receive): Initialize
_hurd_msgport_thread here (to self).
* sysdeps/mach/hurd/fork.c (__fork): When __hurd_sigthread_stack_end
is zero, instead compute child signal thread's starting SP from parent
signal thread's current SP and the threadvar_stack variables.
* hurd/Versions (GLIBC_2.1.3): Add cthread_fork, cthread_detach.
These are now referenced weakly by _hurdsig_init.
* hurd/report-wait.c (_S_msg_report_wait): Fix typo:
&_hurd_itimer_thread not &_hurd_msgport_thread.
1999-10-01 Roland McGrath <roland@baalperazim.frob.com>
* hurd/hurdfchdir.c (_hurd_change_directory_port_from_fd): Rewrite
without HURD_DPORT_USE to clean up warnings.
* hurd/dtable.c (get_dtable_port): Likewise.
* hurd/hurdioctl.c (rectty_dtable): Renamed to install_ctty.
(install_ctty): Do the changing of the cttyid port cell here, inside
the critical section while we holding the dtable lock.
(_hurd_setcttyid, tiocsctty, tiocnotty): Use that instead of changing
the port cell and calling rectty_dtable.
(_hurd_locked_install_cttyid): New function, split out of install_ctty.
(install_ctty): Use it inside a critical section, with the lock held.
* sysdeps/mach/hurd/setsid.c (__setsid): Use
_hurd_locked_install_cttyid to effect the cttyid and dtable changes
after proc_setsid, having held the dtable lock throughout.
* hurd/dtable.c (ctty_new_pgrp): With the dtable lock held, check the
cttyid port for null and bail out early if so. The dtable lock
serializes us after any cttyid change and its associated dtable update.
* sysdeps/mach/hurd/wait4.c (__wait4): When proc_wait returns EAGAIN,
return zero to indicate no children died yet (assuming WNOHANG).
* sysdeps/mach/hurd/setsid.c: #include <hurd/fd.h>.
1999-09-17 Roland McGrath <roland@baalperazim.frob.com>
* hurd/port2fd.c (_hurd_port2fd): Never change CTTYID port.
* sysdeps/mach/hurd/setsid.c (__setsid): Fix return type -> pid_t.
Return _hurd_pgrp instead of 0.
* hurd/new-fd.c (_hurd_new_fd): Initialize fcntl flags.
* hurd/port2fd.c (_hurd_port2fd): Reset the fcntl flags when
installing PORT in the descriptor cell.
1999-08-19 Roland McGrath <roland@baalperazim.frob.com>
* sysdeps/mach/hurd/i386/intr-msg.h (INTR_MSG_TRAP): Mark OPTION and
TIMEOUT as outputs of the asm to indicate that the signal thread
might mutate them.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Short circuit to plain
mach_msg if only sending or only receiving (i.e., not an RPC). When
making an RPC that might get interrupted, save OPTION and the portion
of the message buffer that gets clobbered by an EINTR reply message,
and properly restore them before attempting to retry the request
message send.
* sysdeps/mach/hurd/i386/intr-msg.h (INTR_MSG_TRAP): Mark OPTION and
TIMEOUT as outputs of the asm to indicate that the signal thread
might mutate them.
* hurd/intr-msg.c (_hurd_intr_rpc_mach_msg): Short circuit to plain
mach_msg if only sending or only receiving (i.e., not an RPC). When
making an RPC that might get interrupted, save OPTION and the portion
of the message buffer that gets clobbered by an EINTR reply message,
and properly restore them before attempting to retry the request
message send.
* sysdeps/mach/_strerror.c: Include <libintl.h>.
1999-07-19 Roland McGrath <roland@baalperazim.frob.com>
* hurd/hurdsig.c (_hurd_internal_post_signal): If a
hurd_signal_preemptor matches but its `preemptor' field is null, use
its `handler' field directly. This is to comply with behavior
documented in <hurd/sigpreempt.h>.
hurd/hurd/threadvar.h, hurd/hurd/userlink.h: Instead of
_EXTERN_INLINE, use a macro specific to each file,
_HURD_FD_H_EXTERN_INLINE and the like.
* hurd/Makefile (inline-headers): New variable.
(routines): Remove hurdinline. Add $(inlines).
(inlines): New variable.
($(inlines:%=$(objpfx)%.c)): New static pattern rule to generate them.
(generated): Append those here.
* hurd/hurdinline.c: File removed.
* sysdeps/mach/hurd/read.c (__libc_read): Just call __pread with
OFFSET argument of (off_t) -1.
* sysdeps/mach/hurd/write.c (__libc_write): Just call __pwrite with
OFFSET argument of (off_t) -1.
* sysdeps/mach/hurd/pwrite.c: New file.
* sysdeps/mach/hurd/pread.c: New file.
* hurd/fd-read.c (_hurd_fd_read): Take new parameter OFFSET and
pass it in the RPC instead of always -1.
* hurd/fd-write.c (_hurd_fd_write): Likewise.
* hurd/hurd/fd.h: Update decls.
* hurd/hurdinit.c (_hurd_new_proc_init): Don't do initial SIGTRAP if
EXEC_SIGTRAP was set in the incoming exec flags--that indicates the
exec server simulated a SIGTRAP before we even started up, so gdb is
already happy.
* hurd/STATUS: File removed. Moved items that are still relevant into
TODO list in hurd source.
1999-03-26 Mark Kettenis <kettenis@gnu.org>
* sysdeps/mach/hurd/bits/time.h: New file.
* sysdeps/mach/hurd/getrusage.c: New file.
* sysdeps/mach/hurd/clk_tck.c: New file.
* sysdeps/mach/hurd/Versions (libc) [GLIBC_2.1.1]: Add __libc_clk_tck.
* sysdeps/mach/hurd/Makefile [$(subdir) = posix]
(sysdep_routines): Add clk_tck.
* sysdeps/mach/hurd/times.c: Removed, since getrusage is now
implemented.
* sysdeps/mach/hurd/ioctl.c (__ioctl): Move the marshalling of the
arguments into the request message buffer inside `send_rpc'
subfunction. We must repeat the marshalling when retrying the RPC
after a SIGTTOU delivery.
* hurd/ctty-input.c (_hurd_ctty_input): Use early short-circuit code
path when there is no ctty port.
* hurd/ctty-output.c (_hurd_ctty_output): Likewise.
Move sigstate check inside loop so we recheck after handling a signal.
* sysdeps/mach/hurd/bits/fcntl.h
[__USE_GNU] (O_NOFOLLOW, O_DIRECTORY): New macros.
* hurd/hurdlookup.c (__hurd_file_name_lookup): If O_NOFOLLOW is set,
set O_NOTRANS as well.
(__hurd_file_name_lookup_retry): At successful end of lookup,
if O_NOFOLLOW set, io_stat the resultant port and fail with ENOENT if
it is a translated node not owned by root.
(__hurd_file_name_lookup): If O_DIRECTORY is set, put a trailing slash
on the file name passed to LOOKUP.
* sysdeps/mach/hurd/pselect.c: New file.
* sysdeps/mach/hurd/poll.c: New file.
* hurd/Makefile (routines): Add hurdselect.
* hurd/hurdselect.c: New file.
(_hurd_select): New function, guts taken from ...
* sysdeps/mach/hurd/select.c (__select): ... here.
Now work by just calling _hurd_select.
* hurd/hurd/fd.h: Declare _hurd_select.
1998-12-05 Roland McGrath <roland@baalperazim.frob.com>
* time/strptime.c: Fix unterminated comment in last change.
* argp/argp.h: Add __restrict.
Provide backwards binary compatibility for the Hurd.
* hurd/geteuids.c [PIC && DO_VERSIONING]: Make __getuids a weak
alias for geteuids.
* hurd/Versions [GLIBC_2.0]: Add __getuids,
__hurd_file_name_lookup and _hurd_umask.
[GLIBC_2.1]: Add _hurd_proc_init.
* hurd/Makefile [versioning] (routines): Add compat-20.
(shared-only-routines): Likewise.
* hurd/hurdinit.c (_hurd_new_proc_init): Renamed from
_hurd_proc_init. Use it as the default _hurd_proc_init version
for GLIBC_2.1.
* hurd/compat-20.c: New file.
* mach/Versions [GLIBC_2.0]: Add __vm_allocate.
* mach/Versions [libc, GLIBC_2.0]: Add __spin_lock,
__spin_lock_init, __mutex_lock, __mutex_trylock,
__mutex_unlock.
Remove get_priviliged_ports. Moved to hurd/Versions.
* hurd/Versions [libc, GLIBC_2.0]: Add _end. This makes the Hurd
brk implementation see the end of the data segment of the program
instead of the shared library.
Add __hurd_errno_location. This inline function is used in user
programs.
Add _hurd_critical_section_lock, _hurd_critical_section_unlock,
_hurd_fd_get, _hurd_port_free, _hurd_port_get,
_hurd_port_locked_get. These inline functions are used by macros
used in mail.local in the Hurd distribution.
Add get_privileged_ports. Moved here from mach/Versions.
Remove __hurd_file_name_lookup, __hurd_file_name_lookup_retry,
__hurd_file_name_split, __hurd_file_name_path_lookup. These are
not used outside libc.
1998-11-30 Mark Kettenis <kettenis@phys.uva.nl>
* hurd/hurdstartup.c: Really include set-hooks.h with <> instead
of "".
* hurd/hurdstartup.c: Do not include hurdmalloc.h; _hurd_startup
does not use any of malloc/realloc/free anymore. Include
set-hooks.h with <> instead of "".
* hurd/hurdsig.c (_hurdsig_init): Take new args, INTARRAY and
INTARRAYSIZE. Initialize main thread's sigstate from INIT_SIG* ints.
* hurd/hurd/signal.h: Update _hurdsig_init decl.
* hurd/hurdinit.c (_hurd_proc_init): Take new args, INTARRAY and
INTARRAYSIZE, pass them down to _hurdsig_init.
* hurd/hurd.h: Update _hurd_proc_init decl.
* sysdeps/mach/hurd/dl-sysdep.c (__getcwd): New weak function.
* mach/Versions, hurd/Versions: Add numerous symbols.
Remove libmachuser and libhurduser sections, punt
versioning for those libraries for now.
* misc/Versions: Add reboot here; it exists on all platforms.
* sysdeps/unix/sysv/linux/Versions: Remove reboot here.