* login/utmp_file.c (pututline_file): Correctly decide whether
LAST_ENTRY matches DATA.
Don't depend on ut_id ever being set.
(proc_utmp_eq): New function.
(internal_getut_r): Renamed from internal_getutid_r.
Use proc_utmp_eq.
* login/logout.c (logout): Change type of entry to be DEAD_PROCESS.
Tue Feb 25 19:42:50 1997 Miles Bader <miles@gnu.ai.mit.edu>
* sysdeps/mach/hurd/fcntlbits.h (O_NORW): New macro.
* sysdeps/mach/hurd/readlink.c (__readlink): Use io_read rather
than file_get_translator.
* sysdeps/mach/hurd/defs.c, sysdeps/stub/defs.c, sysdeps/posix/defs.c
(_cleanup): Use __fcloseall instead of fclose with a NULL stream.
Thu Feb 20 01:28:39 1997 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/fchroot.c (fchroot): Reparent DIR to make it a real root.
* sysdeps/mach/hurd/chroot.c (chroot): Likewise.
Wed Feb 19 13:56:04 1997 Miles Bader <miles@gnu.ai.mit.edu>
* sysdeps/mach/hurd/accept.c (accept): Don't segv if ADDR_LEN == 0
but ADDR also == 0.
* hurd/report-wait.c (_hurd_itimer_thread): Make a weak alias for
now instead of a weak extern, as some old programs expect it to be
defined by ld.so.
Tue Feb 18 15:39:08 1997 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/hurdfault.c (_hurdsig_fault_preempter): New weak alias.
* sysdeps/mach/hurd/dl-sysdep.c (__hurd_threadvar_max,
__hurd_threadvar_stack_offset): Restore initialized versions, so
startup works correctly.
* malloc/thread-m.h (mutex_trylock): Invert sense of return value.
Mon Feb 17 10:58:14 1997 Miles Bader <miles@gnu.ai.mit.edu>
* malloc/thread-m.h (mutex_trylock): Define to be __mutex_trylock,
not __mutex_try_lock.
(tsd_setspecific): Cast DATA to (unsigned long) before storing.
(tsd_getspecific): Case variable to (void *) before returning.
* hurd/hurdinit.c (__libc_argv): Remove extern.
(__libc_argc): New variable.
Sat Feb 15 10:23:32 1997 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/hurd/threadvar.h (enum __hurd_threadvar_index): Add
_HURD_THREADVAR_MALLOC.
* malloc/thread-m.h
[_LIBC && !PTHREAD_MUTEX_INITIALIZER && MUTEX_INITIALIZER]
(__x_mutex_lock, __x_mutex_unlock): Functions removed.
(mutex_lock, mutex_unlock): Defined in terms of __mutex_*.
(tsd_key_create, tsd_setspecific, tsd_setspecific): Change to
hurd-specific definitions, using __hurd_threadvar_location.
(tsd_keys_alloced): New static variable.
<hurd/threadvar.h>: New include.
* hurd/report-wait.c (_hurd_itimer_thread): Make a weak extern.
(_S_msg_report_wait): Check to see if _hurd_itimer_thread is
defined before using it.
* sysdeps/mach/hurd/i386/init-first.c (__libc_argv, __libc_argc):
Make extern.
* hurd/hurdinit.c (__libc_argv): Make extern.
* hurd/getdport.c (_default_hurd_getdport_fn): New variable.
(_hurd_getdport_fn): Now a weak alias to _default_hurd_getdport_fn.
* sysdeps/mach/hurd/i386/init-first.c (__hurd_threadvar_max,
__hurd_threadvar_stack_offset,
__hurd_threadvar_stack_mask): New variables.
* hurd/hurdsig.c (__hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_stack_variables):
New variables (moved here from hurdstartup.c).
* hurd/hurdstartup.c (__hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_stack_variables):
Variables removed (moved to hurdsig.c).
(__hurd_threadvar_max, __hurd_threadvar_stack_offset,
__hurd_threadvar_stack_mask): Variables removed.
* sysdeps/mach/hurd/dl-sysdep.c (__hurd_sigthread_stack_base,
__hurd_sigthread_stack_end, __hurd_sigthread_stack_variables,
__hurd_threadvar_max, __hurd_threadvar_stack_offset,
__hurd_threadvar_stack_mask): Variables removed.
Fri Feb 14 14:07:19 1997 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/hurd.h (_hurd_pids_changed_stamp, _hurd_pids_changed_sync):
Declare extern.
* malloc/thread-m.h
[_LIBC && !PTHREAD_MUTEX_INITIALIZER && MUTEX_INITIALIZER]
(mutex_t): Type removed.
(mutex_t): New macro.
(mutex_trylock): New macro.
(__x_mutex_lock, __x_mutex_unlock): New functions.
(mutex_lock, mutex_unlock): New macros, redefining the behavior of
the cthread definitions.
(tsd_key_t): Typedef to cthread_key_t instead of pthread_key_t.
(tsd_key_create, tsd_setspecific, tsd_getspecific): New macros.
(mutex_lock, mutex_unlock, mutex_trylock, mutex_init): Macros removed.
(__pthread_initialize): New macro, work around assumption of pthreads.
1997-02-11 05:27 Ulrich Drepper <drepper@cygnus.com>
* locale/weight.h (collate_rules): It's an u_int32_t array.
(get_weight): Compute initial SLOT value correctly.
* sysdeps/mach/hurd/dl-sysdep.c (__open): Use open_file.
(open_file): New function, contents mostly from __open.
(_dl_sysdep_read_whole_file): New function.
* login/pututline_r.c (pututline_r): Only call getutid_r if ID has a
valid ut_id field.
* login/getutid_r.c (getutid_r): Mark UTMP_DATA->loc_utmp invalid
if a search fails.
* locale/programs/locfile.c (write_locale_data): Deal with missing
UIO_MAXIOV.
* sysdeps/mach/hurd/socket.c (socket): Make TYPE an int.
* sysdeps/mach/hurd/socketpair.c (socketpair): Likewise.
* sysdeps/mach/hurd/select.c (__select): Don't poll on the last
call __io_select unless there's only a single descriptor, as each
descriptor now has its own reply port.
If there is only a single descriptor, just use its reply port for
everything and don't bother creating the port set.
Wed Jul 17 11:29:26 1996 Miles Bader <miles@gnu.ai.mit.edu>
* stdio/linewrap.c (lwupdate): Fix boundary condition where a
word extends right up to rmargin.
* stdio/linewrap.c (lwupdate): When we've done a word wrap and
output the wrap margin, set point_col to wmargin.
Use negative point_col to deal with a wmargin of 0.
(line_wrap_point): Return 0 for a negative point_col.
(line_wrap_stream): Make wmargin ssize_t.
* stdio/linewrap.h (struct line_wrap_data): Make wmargin &
point_col ssize_t.
(line_wrap_stream): Make wmargin ssize_t.
(line_wrap_point): Return 0 for a negative point_col.
Tue Jul 16 00:18:19 1996 Miles Bader <miles@gnu.ai.mit.edu>
* stdio/linewrap.c (__line_wrap_update): Add hackery from flshfp
to fiddle __put_limit in conjunction with __linebuf_active.
* linewrap.c (lwupdate): Update D->point_offs when done.
Use memmove instead of memcpy where overlap is possible (not
necessary using current implementation of memcpy, but...).
(__line_wrap_update): Don't update D->point_offs (lwupdate does it).
Fri May 31 11:48:46 1996 Miles Bader <miles@gnu.ai.mit.edu>
* linewrap.c (lwupdate): New function, mostly was __line_wrap_update.
Use POINT_COL field instead of POINT.
(__line_wrap_output): Use lwupdate.
(__line_wrap_update): New function.
(ensure_unwrapped, ensure_wrapped): New functions.
(line_wrap_set_lmargin, line_wrap_set_rmargin,
line_wrap_set_wmargin, line_wrap_point): Use __line_wrap_update.
* linewrap.h (struct line_wrap_data): Rename POINT field to POINT_COL.
Add POINT_OFFS field.
(__line_wrap_update): New decl.
(line_wrap_set_lmargin, line_wrap_set_rmargin,
line_wrap_set_wmargin, line_wrap_point): Use __line_wrap_update.
* login/logout.c (logout): Do nothing if getutline_r returns ESRCH.
* login/pututline_r.c (pututline_r): Since we assign RESULT from
lseek now, check that it's >= 0, not == 0.
Wed Jul 3 13:28:04 1996 Miles Bader <miles@gnu.ai.mit.edu>
* login/login.c (login): Make a copy of *UT, fill in various
fields that we supply (ut_line, ut_type, ut_pid), and use the copy
in place of UT.
* login/getutline_r.c (getutline_r): When we return ESRCH, mark
UTMP_DATA->ubuf invalid (by setting UTMP_DATA->loc_utmp to 0).
* login/login.c (login): Only Frob OLD->ut_type if getutline_r
actually found any entry.
* login/pututline_r.c (pututline_r): If not located after any
entry don't use UTMP_DATA->ubuf, and seek to the end before adding.
Lock the file before stating.
* sysdeps/mach/hurd/getcwd.c
(_hurd_canonicalize_directory_name_internal): Don't deallocate
DOTID & DOTDEVID until we're finished with them (we need to keep
them at least until we've fetched the next level of id ports, so
that mach will be able to use the same name if they're the same).
Add inner_errlose: label, which deallocates DOTID & DOTDEVID and
jumps to errlose, for those places where such cleanup is needed.
Thu Jun 13 14:29:56 1996 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/hurdsig.c (_hurd_internal_post_signal): Rename `deliver:'
label to `deliver_pending:' to match goto.
Fri Jun 7 11:02:22 1996 Miles Bader <miles@gnu.ai.mit.edu>
* login/login.c (tty_name): New function.
(login): Use it.
(PATH_MAX): MACRO removed.
<stdlib.h>: New include.
Thu Jun 6 07:32:14 1996 Miles Bader <miles@gnu.ai.mit.edu>
* resolv/gethnamaddr.c (struct hstorage): Make NAME field a pointer.
(_gethtbyname2): Remove ALIAS variable.
Initialize NAME field of SELF and TARGET to 0.
Add SELF_NAME_SIZE static variable.
Add loop to call gethostname until the space we allocated is enough.
Use malloced strings instead of fixed size buffers.
<stdlib.h>, <unistd.h>: New includes.
* sysdeps/generic/sys/socket.h (PF_INET6, AF_INET6): New macros.
* sysdeps/mach/hurd/errlist.c (_sys_errlist): Add EILSEQ.
(_sys_nerr): Initialize to 107.
Update _HURD_ERRNOS consistency check.
* stdlib/canonicalize.c (canonicalize): Use pathconf for PATH_MAX,
not sysconf.
* login/login.c [!PATH_MAX] (PATH_MAX): Define to be 1024 if not
already defined.
* sysdeps/mach/hurd/setitimer.c (timer_thread): Supply SIGCODE
argument to __msg_sig_post_request.
* hurd/hurdmalloc.c: Changes to bring in line with the hurd
libthreads/malloc.c:
(more_memory): Use assert_perror instead of MACH_CALL.
"cthread_internals.h": Include removed.
(realloc): Use LOG2_MIN_SIZE.
(LOG2_MIN_SIZE): New macro.
(realloc): Don't bother allocating a new block if the
new size request fits in the old one and doesn't waste any space.
Only free the old block if we successfully got a new one.
[MCHECK] (struct header): New type.
(union header): Only define if !MCHECK.
(HEADER_SIZE, HEADER_NEXT, HEADER_FREE, HEADER_CHECK): New macros.
[MCHECK] (MIN_SIZE): Add correct definition for this case.
(more_memory, malloc, free, realloc): Use above macros, and add
appropiate checks & frobs in MCHECK case.
Wed Jun 5 15:42:51 1996 Miles Bader <miles@gnu.ai.mit.edu>
* mach/Machrules (%_server.uh, %_server.__h): New rules, so that the
corrsponding .defs file with without the `_server' will be used.
* mach/Makefile (mach/mach_interface.defs): Renamed from mach_interface.defs.
(mach/memory_object_user.defs): New variable.
Wed Apr 10 14:13:45 1996 Miles Bader <miles@gnu.ai.mit.edu>
* hurd/sigunwind.c (_hurdsig_longjmp_from_handler): Store
MACH_PORT_DEAD in the thread reply-port variable before destroying
the signal handler's reply port, to avoid infinite recursion.
Fri Apr 5 17:43:41 1996 Miles Bader <miles@gnu.ai.mit.edu>
* sysdeps/mach/hurd/i386/sigreturn.c (__sigreturn): Store
MACH_PORT_DEAD in the thread reply-port variable before destroying
the signal handler's reply port to avoid infinite recursion.
* sysdeps/mach/hurd/mig-reply.c (__mig_dealloc_reply_port): Only
attempt to destroy PORT if it's a valid port name.
Mon Mar 4 17:35:35 1996 Miles Bader <miles@gnu.ai.mit.edu>
* sysdeps/mach/hurd/select.c (__select):
Don't increment GOT only because READ/WRITE/EXCEPTFDS is 0!
Don't return without frobbing the bitmasks after a timeout.
When clearing the bitmasks, only loop from FIRSTFD to LASTFD.