Thu Aug 29 17:26:37 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* devio.c (device_open_reply): After error from ports_create_port,
	unlock global_lock before returning.
	* users.c (trivfs_S_io_readable): Likewise before returning
	EBADF. 

Thu Aug 15 16:07:07 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c (trivfs_S_io_pathconf): Implement function.

	* term.h (QUEUE_HIWAT, QUEUE_LOWAT): New macros.
	* main.c (main): Use these new macros to create inputq, rawq, and
	outputq.

Thu Aug 15 15:32:47 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (trivfs_S_file_check_access): Renamed from
	`trivfs_S_file_access'.

Mon Aug 12 11:04:28 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* term.h (CTRL_BIT): Correct value is 0x40, not 0x20.

	* munge.c (poutput): Compute tab width using the same loop
	strategy as output_character and output_width.

Thu Aug  8 17:16:06 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* munge.c (echo_char): Compute non-ctrl version of control
	character correctly.
	* term.h (CHAR_SOH): Delete macro.
	(CTRL_BIT): New macro.

Mon Jul 29 02:46:12 1996  Roland McGrath  <roland@baalperazim.frob.com>

	* munge.c (input_character): In LAST_LNEXT case, jump to `alldone'
	after putting the char on the queue.

Fri Jul 19 23:46:39 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (trivfs_S_file_access): Implement locally always
	returning all access.  Eventually, this needs to do the right
	thing when trivfs wises up wrt modes.

Tue Jul 16 20:49:29 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (trivfs_S_io_read): Bother to set atime when
 	appropriate.

	* users.c (trivfs_modify_stat): Fill in st->st_mode, st->st_uid,
	and st->st_gid ourselves.
	(trivfs_S_file_chown): New routine, to override trivfs default.
	(trivfs_S_file_chmod): Likewise.
	* main.c (main): Initialize term_owner, term_group, and term_mode.
	* term.h (term_owner, term_group, term_mode): New variables.

Thu Jun 20 16:45:57 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* devio.c (devio_abandon_physical_output): Don't do anything if
 	carrier is off.

Thu Jun 20 16:26:07 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* Makefile (OBJS): Add ../libfshelp/libfshelp.a.

Sat May 11 01:18:41 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* iomux.c (parse_opt): Use ARGP_ERR_UNKNOWN instead of EINVAL.

Fri May 10 09:27:46 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c: Include <stdio.h>.

	* users.c (init_users): Order args correctly in call to
 	ports_create_port.

Thu May  9 19:32:50 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (call_asyncs): Provide sigcode arg in call to
 	nowait_msg_sig_post.

	* users.c (init_users): Use new ports_create_port.
	* devio.c (device_open_reply): Likewise.

Thu Apr 25 16:04:17 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* ptyio.c (pty_open_hook): Don't do increment of nptyperopens
 	here.
	(pty_po_create_hook): Increment nptyperopens here, but only if this is
	for O_READ or O_WRITE.
	(pty_po_destroy_hook): Only do decrement if this was for O_READ or
	O_WRITE.
	* users.c (open_hook): Don't circumvent pty_open_hook, not even
 	when FLAGS is clear.

Wed Apr 24 09:24:29 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (call_asyncs): Add DIR argument; all callers changed.
	* term.h: Include <fcntl.h>.

	* users.c (call_asyncs): Remove FORCE argument; all callers changed.
	* term.h (enqueue_internal): Go back to only using call_asyncs
	when inputq becomes non-empty.
	(SUPPRESS_ASYNC): Flag removed.

Tue Apr 23 17:44:25 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* term.h (enqueue_internal): Use call_asyncs on every character.
	(SUPPRESS_ASYNC): New flag.
	* users.c (po_create_hook, trivfs_S_io_set_some_openmodes,
 	trivfs_S_io_set_all_openmodes): If setting ICKY_ASYNC, then use
	call_asyncs.
	(call_asyncs): New argument, FORCE, which use.  All callers changed.
	(init_users): Give our self send rights to the async id ports, since
	hurd_sig_post uses COPY_SEND.
	(trivfs_S_io_get_icky_async_id): Renamed from ..._get_async_icky.
	(trivfs_S_file_set_size, trivfs_S_io_seek,
	trivfs_S_io_get_icky_async_id, trivfs_S_io_async): Add reply port args.

	* users.c (num_icky_async_peropens): New variable.
	(po_create_hook, po_destroy_hook, trivfs_S_io_set_all_openmodes,
	trivfs_S_io_set_some_openmodes, trivfs_S_io_clear_some_openmodes): Use
	it to enable ICKY_ASYNC to be turned off.

Tue Apr 23 14:26:22 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (call_asyncs): Delete local decl; no longer static.
	* term.h (dequeue_quote): If this is the outputq, send SIGIO as
 	appropriate with call_asyncs.
	(enqueue_internal): If this is the inputq, send SIGIO as appropriate
	with call_asyncs.
	(call_asyncs): Add decl.

Mon Apr 22 14:55:20 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* devio.c (real_speed_to_bogus_speed): EXTB should be 38400, not
 	24800.

Tue Apr  2 16:18:09 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* ptyio.c (pty_po_create_hook): Don't do anything here.
	(pty_open_hook): Increment nptyperopens here.

Wed Mar 27 11:51:43 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (trivfs_S_io_read): Call call_asyncs *before* we release
	GLOBAL_LOCK.
	(pi_destroy_hook): Leak the hook for now, to try and catch a bug. XXX

	* ptyio.c (pty_io_read): Block using hurd_condition_wait instead
	of condition_wait.

Sat Feb 24 13:56:46 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ptyio.c (ptyio_init): This can't be a constructor because it
 	frobs INPUTQ, which is assigned in main.
	* main.c (main): Call ptyio_init if appropriate.
	* term.h: Declare ptyio_init.

Wed Feb 14 14:02:54 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (trivfs_S_io_set_all_openmodes,
	trivfs_S_io_set_some_openmodes): Set ICKY_ASYNC in TERMFLAGS if
	O_ASYNC is set in BITS.

Thu Jan 25 22:54:04 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (main): Use trivfs_startup & trivfs_create_port instead
	of trivfs_handle_port.
	* devio.c (devio_assert_dtr): Use ports_create_port instead of
	ports_allocate_port.

Thu Jan 18 11:50:29 1996  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (report_carrier_off): Flush queues when carrier turns
 	off.

Tue Dec 26 16:58:55 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (trivfs_S_io_select): Ask for notification if our reply
	port dies.  Pass REPLY to pty_io_select().
	* ptyio.c (pty_io_select): Add new reply port parameter, and ask
	for notification if it dies.
	* term.h (pty_io_select): Add new reply port parameter.

Fri Dec 22 14:34:38 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (main): Set PEERCNTL to &PTYCTL if we're a slave, not 0.

Wed Dec 20 13:56:09 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (S_term_get_nodename, S_term_set_nodename): Get the node
	name from our cred->po->cntl->hook rather than NODENAME.
	* main.c (main): Put the nodename on ourcntl->hook rather than
	NODENAME, and also put our peer's nodname on peercntl->hook.
	* term.h (nodename): Variable removed.

	* ptyio.c (ptyopen, nptyperopens, pktnostop, output_stopped):
	Initialize to 0.

Tue Dec 19 19:57:53 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (trivfs_S_io_read): After a block on the input queue,
 	don't go back and check the input queue if there is a signal in
 	progress; wait for the signal to complete first.
	(send_signal): Release global_lock around signal RPC. Call
	report_sig_start and report_sig_end around signal RPC.
	(call_asyncs): Likewise.
	(report_sig_start, report_sig_end): New functions.
	(sigs_in_progress, input_sig_wait, input_sig_wakeup): New variables.

Thu Dec 14 12:48:08 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* ptyio.c (pty_io_read): When copying TIOCPKT_DATA; account for
 	size correctly.

	* ptyio.c (pty_io_write): Always tell the user everything was
 	written.

Wed Dec 13 19:32:52 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* ptyio.c (pty_io_write): Keep track of how mount we wrote.

Tue Dec 12 13:53:40 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* ptyio.c (ptyio_init): Make this a constructor function.

	* ptyio.c (pty_open_hook, pty_po_create_hook,
	pty_po_destroy_hook): New functions.
	(ptyopen, nptyperopens): New variables.
	* term.h (pty_open_hook, pty_po_create_hook, pty_po_destroy_hook):
	New declarations.
	* users.c (open_hook): If this is the pty, then call pty specific
 	function.
	(po_create_hook): Likewise.
	(po_destroy_hook): Likewise.
	(pi_create_hook): Don't do anything for pty.
	(pi_destroy_hook): Likewise.

	* users.c (open_hook): Don't require carrier for opens that don't
 	want to read or write.

	* users.c (S_tioctl_tiocgpgrp): Omit bogus extra attempt to lock
 	global_lock.

	* users.c (S_term_get_bottom_type): Return TERM_ON_MASTERPTY when
 	appropriate.

	* main.c (main): Set BOTTOM.

Tue Dec  5 15:30:36 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* main.c (main): Totally rework arg parsing and translator
 	linkage.  No longer support being started s a shell program.  Now
 	support pty's, though no attempt is made to deal nicely with the
 	node collision problem.

Mon Dec  4 20:09:21 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* term.h (pty_cntl_class, ptyctl): New variables.
	* main.c (main): Initialize pty_class, pty_cntl_class,
	trivfs_protid_portclasses[1], and trivfs_cntl_portclasses[1].
	(trivfs_protid_portclasses): Increase size to 2.
	(trivfs_cntl_portclasses): Likewise.
	(trivfs_protid_nportclasses): Increase initialization to 2.
	(trivfs_cntl_nportclasses): Likewise.

	* ptyio.c: Include <unistd.h>.
	(ptyio_set_bits): If the stop char state has changed, dinkle the
	stop bits in the control_byte accordingly.

	* term.h: Include <hurd/trivfs.h> and <sys/types.h>.
	(pty_io_write, pty_io_read, pty_io_readable, pty_io_select): New
	declarations.
	* ptyio.c: Include <fcntl.h>.
	(pty_io_read): Add CRED arg.
	(pty_io_write): Likewise.
	(pty_io_select): Likewise.
	* users.c (trivfs_S_io_write): If this is a pty master, call pty
 	routine to do the work.
	(trivfs_S_io_read): Likewise.
	(trivfs_S_io_readable): Likewise.
	(trivfs_S_io_select): Likewise.
	(S_tioctl_tiocmodg): Accept both pty and tty ports.
	(S_tioctl_tiocmods): Likewise.
	(S_tioctl_tiocexcl): Likewise.
	(S_tioctl_tiocnxcl): Likewise.
	(S_tioctl_tiocflush): Likewise.
	(S_tioctl_tiocgeta): Likewise.
	(set_state): Likewise.
	(S_tioctl_tiocgetd): Likewise.
	(S_tioctl_tiocsetd): Likewise.
	(S_tioctl_tiocdrain): Likewise.
	(S_tioctl_tiocswinsz): Likewise.
	(S_tioctl_tiocgwinsz): Likewise.
	(S_tioctl_tiocmget): Likewise.
	(S_tioctl_tiocmset): Likewise.
	(S_tioctl_tiocmbic): Likewise.
	(S_tioctl_tiocmbis): Likewise.
	(S_tioctl_tiocstart): Likewise.
	(S_tioctl_tiocstop): Likewise.
	(S_tioctl_tiocsti): Likewise.
	(S_tioctl_tiocoutq): Likewise.
	(S_tioctl_tiocspgrp): Likewise.
	(S_tioctl_tiocgpgrp): Likewise.
	(S_tioctl_tioccdtr): Likewise.
	(S_tioctl_tiocsdtr): Likewise.
	(S_tioctl_tioccbrk): Likewise.
	(S_tioctl_tiocsbrk): Likewise.
	(set_state): If this op is being done on the pty master, then
	flush output before beginning work.

Fri Dec  1 14:08:44 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* users.c (trivfs_S_interrupt_operation): Delete function.

	* users.c (S_tioctl_tiocdrain): Free reference on CRED before
	returning.

	* munge.c (input_character): Skip much processing if
	external_processing is on.
	(output_character): Don't do tab expansion of external_processing
	is on.
	(echo_p): Never echo if external_processing is on.
	* users.c (set_state): Make EXTPROC bit read only.  When
	external_processing, call set_bits even if CIGNORE.
	(S_tioctl_tiocext): Deleted function.
	* term.h (external_processing): New variable.

	* users.c (trivfs_S_io_readable): If remote_input_mode, then don't
 	include extra final character as input.
	trivfs_S_io_read): If remote_input_mode, copy characters without
	interpretation; treat last character left in queue as junk.
	(S_tioctl_tiocremote): Deleted function.
	* term.h (remote_input_mode): New variable.

	* users.c (S_tioctl_tiocsig, S_tioctl_tiocpkt,
 	S_tioctl_tiocucntl): Deleted functions.

	* term.h (ptyio_bottom, pty_class): New variables.
	* Makefile (SRCS): Added ptyio.c.
	* ptyio.c: New file.

	* term.h (struct bottomhalf): New member `notice_input_flushed'.
	* devio.c (devio_notice_input_flushed): New function.
	(devio_bottom): Add devio_notice_input_flushed.
	* users.c (po_destroy_hook): Call notice_input_flushed after
	flushing input queues.
	(S_tioctl_tiocflush): Likewise.
	(set_state): Likewise.

	* munge.c (input_character) [VSTOP]: Suspend physical output after
 	setting flag.
	* term.h (struct bottomhalf): New member `suspend_physical_output'.
	* users.c (S_tioctl_tiocstart): Start output after clearing
 	USER_OUTPUT_SUSP.
	(S_tioctl_tiocstop): Suspend physical output after setting flag.
	* devio.c (devio_start_output): Honor USER_OUTPUT_SUSP flag.
	Restart output if USER_OUTPUT_SUSP flag off and output_stopped true.
	(output_stopped): New variable.
	(devio_suspend_physical_output): New function.
	(devio_bottom): Add devio_suspend_physical_output.

	* users.c (trivfs_S_io_select): Return EINTR if we are cancelled.

	* munge.c (reprint_line): C-r is CHAR_DC2, not DC3.
	* term.h (CHAR_DC3): Correct value is '\023'.
	(CHAR_DC1, CHAR_DC2): New macros.

Thu Nov 30 15:50:01 1995  Michael I. Bushnell, p/BSG  <mib@gnu.ai.mit.edu>

	* devio.c (start_output): Add devio_ prefix; declare static.
	All callers changed.
	(set_break): Likewise.
	(clear_break): Likewise.
	(abandon_physical_output): Likewise.
	(pending_output_size): Likewise.
	(assert_dtr): Likewise.
	(desert_dtr): Likewise.
	(set_bits): Likewise.
	(mdmctl): Likewise.
	(mdmstate): Likewise.
	(devio_bottom): New variable.
	* term.h (struct bottomhalf): New type.
	(bottom, devio_bottom): New variables.
	(start_output, set_break, clear_break, abandon_physical_output,
	pending_output_size, assert_dtr, desert_dtr, set_bits, mdmctl,
	mdmstate): Deleted declarations.

	* devio.c (ports_do_mach_notify_send_once): New function.

Sun Nov  5 02:07:56 1995  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (main): Add flags arg to fsys_startup call.

Sat Sep 23 00:48:17 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* term.h: Include errno.h.

Mon Sep 18 14:51:40 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>

	* users.c (trivfs_S_file_set_size): Renamed from
	trivfs_S_file_truncate.

Sat Sep 16 13:03:40 1995  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (DIST_FILES): Added ourmsg.defs.
	(ourmsg_U.h ourmsgUser.c, ourmsg.defs): Targets removed.

Thu Sep  7 13:08:55 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* users.c (trivfs_S_io_write): Start pending output before
 	blocking.

Fri Sep  1 09:51:11 1995  Michael I. Bushnell, p/BSG  <mib@duality.gnu.ai.mit.edu>

	* munge.c (input_character): Clear input queues correctly for
	VINTR/VQUIT, VSUSP, and input queue full.

	* users.c (init_users): New function.
	* main.c (main): Call init_users.
	* term.h (init_users): New decl.

	* users.c (open_hook): Turn on NO_OWNER for fresh opens.
	* main.c (main): Assert NO_OWNER in initial state.

	* term.h (output_psize): Delete decl.
	(write_character): New decl.
	* munge.c (output_character): Don't set echo_qsize or echo_pstart
	here.
	(write_character): New function.
	(echo_char): Use write_character for closing '/' of hderase.
	(output_psize): New decl.
	* users.c (trivfs_S_io_write): Use write_character instead of
	output_character.
	* main.c (main): Don't initialize output_psize.


