Wed Nov 16 14:56:23 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* users.c: Include "ourmsg_U.h" instead of <hurd/msg.h>.
	(check_selects): Call nowait_io_select_done instead of io_select_done.
	(call_asyncs): Call nowait_sig_post instead of sig_post.
	* Makefile (OBJS): Add ourmsgUser.o.
	(users.o): Depend on ourmsg_U.h.
	(our%_U.h our%User.c): New rule to make ourmsg_U.h and ourmsgUser.c.

Fri Nov  4 11:59:18 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* users.c (S_tioctl_tiocseta): If changing from ICANON to !ICANON,
	call copy_rawq.  If changing from !ICANON to ICANON, call
	rescan_inputq.
	(drain_finished) [TIOCSETAW]: Likewise.
	* term.h: Declare rescan_inputq.
	* input.c (rescan_inpuq): New function.

Fri Oct 28 00:26:01 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* term.h: Declare copy_rawq.
	* input.c (copy_rawq): New function.

Tue Oct 25 10:52:46 1994  Michael I Bushnell  <mib@churchy.gnu.ai.mit.edu>

	* users.c (S_termctty_open_terminal): Don't clear O_NONBLOCK.

Sat Sep 10 05:56:53 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* users.c (S_tioctl_tiocswinsz): Return ERR, not always zero.
	When SIZE differs from the present setting, send SIGWINCH to the pgrp.
	(S_tioctl_tiocgwinsz): Remove gratuitous variable ERR.

	* users.c: Include tioctl_S.h.
	(trivfs_S_io_read): Cast *BRK to cc_t in comparison.
	(wakeup_readers): Likewise.
	(S_tioctl_tiocgeta): Fixed arg types.
	(S_tioctl_tiocsetaw): Likewise.
	(S_tioctl_tiocgwinsz): Take a struct winsize instead of an array.
	Just assign it directly from `window_size'.
	(S_tioctl_tiocswinsz): Likewise.

Tue Aug 30 12:54:24 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* main.c (main): Call file_name_lookup instead of path_lookup.

	* main.c (main): Use new file_set_translator interface.

	* main.c: Include <hurd/fsys.h>.

Tue Aug 23 09:51:27 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile (LDFLAGS): New variable.

Mon Aug 22 14:56:18 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* input.c (input_character): If we get VSUSP, don't then put
	it on a queue and echo it a second time; just leap to alldone.

Fri Aug 19 10:40:55 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* users.c (abort_rpcs): Clear pending_reads_tail/pending_writes_tail
	if we remove the last element of the corresponding list.
	(trivfs_S_interrupt_operation): Likewise.

	* users.c (abort_rpcs): We need to interrupt anonymous operations
	here too, just to make sure we synchronize correctly with them too.

 	* Makefile (OBJS): Removed interruptServer.o.
	(users.o): Don't depend on interrupt_S.h.
	* main.c (ports_demuxer): Don't call interrupt_server.
	* users.c: Don't include "interrupt_S.h".
	(trivfs_S_interrupt_operation): Renamed from `S_interrupt_operation'.

	* users.c (S_tioctl_tiocgpgrp): If NO_OWNER, then return error.
	(trivfs_S_io_get_owner): Likewise.

	* term.h (port_type): New type PT_CTTYID.
	* main.c (ports_cleanroutines) [PT_CTTYID]: New pointer to null_clean.
	(ports_demuxer) [PT_CTTYID]: New case; call term_server.
	* users.c (cttyid): Declare as a full-fledged port_info.
	(init_user_state): Allocate cttyid with ports_allocate_port.
	(S_term_getctty): Use ports_get_right to created returned right.
	(S_termctty_open_terminal): Validate arg using ports library.
	(send_signal): Use ports library to get send-right for cttyid.

Fri Aug 19 02:55:39 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* main.c (ports_demuxer: PT_TTY): Call interrupt_server first,
	so trivfs_demuxer doesn't answer interrupt_operation.

Thu Aug 18 11:19:49 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* input.c (echo_char): *Add* offset to convert ctrl char to
	letter; not subtract.

	* term.h (nonecho_output): Doc fix.
	* users.c (trivfs_S_io_write): Call nonecho_output *after*
	doing the output, and only if we actually wrote something.
	(emit_pending_writes): Likewise.

	* users.c (fg_p): Enable function.

	* input.c (input_character) [VKILL && !ISLASH]: Clear
	echo_qsize and reset echo_pstart.

	* main.c (main): In passive translator startup case,
	eliminate local var `ctl' and use global `termctl' instead.

	* users.c (S_termctty_open_terminal): New function.
	(init_user_state): Initialize cttyid; put it in 
	_libports_request_portset.

Wed Aug 17 19:31:23 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* users.c (struct select_req): Add member `replytype'.
	(trivfs_S_io_select): Take poly arg for notify port; set replytype
	to that.
	(check_selects): Use SEL->replytype in io_select_done call.

	* users.c (S_tioctl_tiocgpgrp): Negate foreground_id for *PGRP.

Tue Aug 16 14:46:32 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile (OBJS): Added interruptServer.o.
	(users.o): Added interrupt_S.h.
	* users.c: Include "interrupt_S.h".
	(struct write_req): New member `user'.
	(struct read_req): New member `user'.
	(trivfs_S_io_write): Initialize WR->user.
	(emit_pending_writes): Release WR->user when freeing struct.
	(discard_output): Likewise.
	(trivfs_S_io_read): Initialize RR->user.
	(wakeup_readers): Release RR->user when freeing struct.
	(abort_read, abort_write): New functions.
	(abort_rpcs): Use abort_read and abort_write instead of doing it
	here. 
	(S_interrupt_operation): New function.
	* main.c (ports_demuxer): Remove S_ from declarations.
	Call interrupt_server.

Mon Aug 15 14:36:58 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* main.c (main): If we have a bootstrap port, then do translator
	style startup.

Sat Jul 23 02:59:54 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* Makefile (MIGSFLAGS): Variable removed.

Fri Jul 22 20:04:19 1994  Roland McGrath  <roland@churchy.gnu.ai.mit.edu>

	* devio.c: Remove S_ from device_reply server functions.

	* Makefile (MIGSFLAGS): New variable.

	* main.c (ports_demuxer): Remove S_ from
	{term,tioctl,device_reply}_server.

Fri Jul 22 15:05:12 1994  Michael I Bushnell  <mib@geech.gnu.ai.mit.edu>

	* Makefile: Rewritten to use new scheme.
	* users.c: Include "io_reply_U.h" instead of "io_reply.h".

Tue Jul 19 12:46:33 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (term): Don't use variable $(link) anymore.

Mon Jul 11 13:18:23 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (users.o): Depends on <hurd/trivfs.h>.

	* term.h (termctl): New variable.
	* main.c (main): Set termctl.
	* users.c (trivfs_S_io_write): Call trivfs_set_mtime after
	successful write completes.  Call trivfs_set_mtime after
	writing a little and then queueing up the rest.
	(emit_pending_writes): Call trivfs_set_mtime before returning
	if we wrote anything.
	(wakeup_readers): Call trivfs_set_atime before returning
	data.
	(trivfs_S_io_read): Likewise.

	* input.c (input_character): Record VDISCARD state in inputstate,
	not in lflag.  Call discard_output and stop_discarding_output
	as appropriate.
	(IS_FLUSNO): New macro.
	* term.h (discard_output, stop_discarding_output): New functions. 

	* users.c (OUTPUT_DROP): New macro.
	(discard_output, stop_discarding_output): New functions.
	(trivfs_S_io_write): Return immediately without doing anything 
	if OUTPUT_DROP is set.
	(emit_pending_writes): Abort here if there are pending writes
	and OUTPUT_DROP is set.
	(check_selects, call_asyncs): Output is always possible if
	OUTPUT_DROP is set.

	* input.c (input_character): In cases where we need to flush
	input, return 1.
	* devio.c (S_device_read_reply_inband): When input_character
	return true, stop calling it.

	* users.c (call_asyncs): Call abort_all_rpcs before sending 
	normal async signals; call abort_rpcs before sending icky 
	async signal.
	(send_signal): Call abort_rpcs instead of interrupt_pid.
	(abort_rpcs): Renamed from interrupt_pid.  Return all RPC's
	if pid is zero.

Fri Jul  8 11:50:27 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* users.c (EXCLUSIVE_USE): New macro.
	(check_open_block): Report EBUSY if EXCLUSIVE_USE and there
	is already someone holding it open.
	* Makefile (input.o): Depend on tioctl_S.h
	* input.c: Include "tioctl_S.h", <fcntl.h>, and <hurd/trivfs.h>.
	(S_tioctl_tiocstart, S_tioctl_tiocstop): New functions.
	* users.c (S_tioctl_tiocmodg, S_tioctl_tiocmods,
	S_tioctl_tiocexcl, S_tioctl_tiocnxcl, S_tioctl_tiocflush,
	S_tioctl_tiocgetd, S_tioctl_tiocsetd, S_tioctl_tiocdrain, 
	S_tioctl_tiocsig, S_tioctl_tiocext, S_tioctl_tiocucntl,
	S_tioctl_tiocswinsz, S_tioctl_tiocgwinsz, S_tioctl_tiocremote,
	S_tioctl_tiocmget, S_tioctl_tiocmset, S_tioctl_tiocmbic,
	S_tioctl_tiocmbis, S_tioctl_tiocpkt, S_tioctl_tiocsti,
	S_tioctl_tiocoutq, S_tioctl_tiocspgrp, S_tioctl_tiocgpgrp,
	S_tioctl_tioccdtr, S_tioctl_tiocsdtr, S_tioctl_tioccbrk,
	S_tioctl_tioccbrk): New functions.

	* input.c [XON, VSTOP]: Set IS_VSTOP bit when doing suspension.

	* term.h (struct lowerhalf): New entries `mdmstate' and `outsize'.
	* devio.c (devio_mdmstate, devio_outsize): New functions.
	(devio_table): Added devio_mdmstate and devio_outsize.

	* input.c (IS_EOFWAIT): Removed macro.
	(eoftmpq): Removed variable.
	(initialize_input): Don't create eoftmpq.
	(input_character) [VEOF]: Don't do special processing here.
	After echo_char, backspace over VEOF.  Note that EOF is now placed
	on the regular input queue.
	[ICANON final processing]: Eliminate variable `canqp'; just
	use inputq.
	(input_eof_read): Deleted function.
	* users.c (watchchars): New variable.
	(set_watchchars): New function.
	(init_user_state): Call set_watchchars.
	(S_tioctl_tiocseta): Likewise.
	(drain_finished) [TIOCSETAW]: Likewise.
	(trivfs_S_io_read): When successfully returning read,
	look for characters in watchchars and interpret them appropriately.
	(wakeup_readers): Likewise.  
	(RETURN_EOF): Delete macro.
	(trivfs_S_io_read): Eliminate RETURN_EOF processing.
	(wakeup_readers): Likewise.
	(trivfs_S_io_select): Likewise.
	(check_selects): Likewise.
	(call_asyncs): Likewise.
	(next_read_eof): Deleted function.
	* term.h (next_read_eof, next_read_eof): Deleted declarations. 
	(inputq) Doc fix.

Wed Jul  6 12:36:16 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* users.c (trivfs_S_io_mod_owner): Turn off NO_OWNER.
	(trivfs_S_io_get_owner): Return 0 if NO_OWNER is set.

	* term.h (interrupt_pid): New declaration.
	* users.c (struct write_req): New members `pid' and `pgrp'.
	(struct read_req): Likewise.
	(trivfs_S_io_read): Initialize RR->pid and RR->pgrp.
	(trivfs_S_io_write): Initialize WR->pid and WR->pgrp.
	(interrupt_pid): New function.
	(send_signal): Call interrupt_pid before sending signal.

	* users.c: Include "tioctl_S.h".
	(S_tioctl_tiocgeta): New function.
	(S_tioctl_tiocseta): New function.
	(S_tioctl_tiocsetaw): New function.
	(S_tioctl_tiocsetaf): New function.
	(drain_finished [TIOCTSETAW]): New case to support functions
	above.
	(ondrainstate, ondrainstatevalid): New global variables.
	* Makefile (OBJS): Include tioctlServer.o.
	(users.o): Add dependency on tioctl_S.h.
	(tioctlServer.o tioctl_S.h): New rule.
	* main (ports_demuxer [PT_TTY]): Try S_tioctl_server.

	* Makefile (termServer.o term_S.h): Find term.defs in installed
	header location, not in ../hurd.

	* term.h (struct lowerhalf): Declare set_bits member function to
	return void; Posix doesn't even *allow* errors here.  
	* devio.c (devio_set_bits): Declare to return void.
	Instead of returning error in various states, just mutate
	termstate to be like the hardware.

	* devio.c (S_device_open_reply): Don't try and set speeds 
	if CIGNORE is set; in that case just fetch them from the
	device and return them back.
	(devio_set_bits): Abort if CIGNORE is set here.
	* users.c (init_user_state): Don't call set_bits routine
	if CIGNORE is set.

	* input.c (echo_char): Don't reset echo_pstart at increment
	step.  Do reset echo_pstart when clearing it.
	(reprint_line): Reset echo_pstart when clearing echo_qsize.
	(erase_1): If we decrement echo_qsize to zero, then reset
	echo_pstart.
	(nonecho_output): Reset echo_pstart.

	* input.c (input_character) [VKILL, ECHOKE]: Don't clear th
	whole line; only clear back to the start of the echo.

	* Makefile (DIST_FILES): Removed plan.
	* plan: Deleted file.

	* input.c (echo_qsize): Doc fix.
	(nonecho_output): New function.
	* term.h (nonecho_output): New declaration.
	* users.c (trivfs_S_io_write): Call nonecho_output before
	output_character loop.
	(emit_pending_writes): Likewise.

	* input.c (input_character) [WERASE, !ALTWERASE]: Test for
	preceding character being alnum/_ was mangled.

Tue Jul  5 14:24:03 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* input.c (erase_1): The last character on the rawq is at
	rawq->qp - 1; not rawq->qp.

	* users.c (trivfs_modify_stat): Set mode to S_IFCHR.

	* subr.c (reallocate): Args to memmove in `compress the gap'
	case were reversed.

	* devio.c (send_output): Never send more than 128 bytes;
	This number is the maximum size of an inband request as
	defined by <device/device_types.defs>.

	* output.c (output_character): Use `%' instead of `&'
	to comput modulus.

	* term.h (struct lowerhalf): New members `start_batch'
	and `stop_batch'.
	* devio.c (devio_start_batch, devio_stop_batch): New functions.
	(devio_table): Added devio_start_batch and devio_stop_batch.
	(send_output): Don't send output if we are batching and the
	osilo isn't filling up.
	(S_device_read_reply_inband): Call devio_start_batch and
	devio_stop_batch around the input_character loop.
	* users.c (trivfs_S_io_write): Call lowerhalf `start_batch'
	and `stop_batch' routines around output_character loop.
	(emit_pending_writes): Likewise.

	* users.c (fg_p): New function, to replace FG_P macro.  All
	callers of FG_P changed.  Comment it out until library
	supports EBACKGROUND.

	* users.c (trivfs_S_io_write): Bother to set *AMT.
	(struct write_req): New member AMOUNT.  Replaced member
	DATALEN with STOP.  
	(trivfs_S_io_write): Delete SERVERCOPY arg (which is
	not provided by trivfs).  Set up write_req structures
	properly.
	(emit_pending_writes): Deal with write_req structures
	correctly.

	* output.c (output_character): Final poutput call should be inside
	the tests and only done if the special character frobbing doesn't
	happen.

	* users.c (nperopens): New variable.
	(po_create_hook): Increment nperopens.
	(po_destroy_hook): New function.
	(trivfs_peropen_destroy_hook): New variable.
	(last_close): Renamed from tty_protid_clean.  Don't call
	trivfs_clean_protid here.
	* main.c (ports_cleanroutines [PT_TTY]): Use trivfs routine;
	we don't need to do anything here.
	* term.h (tty_protid_clean): Deleted declaration.

	* devio.c (devio_start_sending): Only make device_set_status call
	when necessary.

	* input.c (echo_double): Test for newline and tab was mangled.

	* devio.c (devio_dtron): Drop outstanding reply ports here
	in case there are still pending replies from previous opens;
	also turn off PENDING_OUTPUT and PENDING_INPUT bits.

	* users.c (trivfs_S_io_get_openmodes): Implement function here.

	* devio.c (S_device_open_reply): Fetch input before reporting
	connect.

	* Makefile (TAGSLIBS, TAGSHDRS): New variables.

Fri Jul  1 12:25:05 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* devio.c (devio_open): In calls to ports_allocate_port, put
	args in correct order.

	* users.c (trivfs_S_io_set_all_openmodes): Leave
	non HONORED_STATE_MODES alone.

	* users.c (trivfs_S_io_seek): New function.

	* users.c: Include "term_S.h".
	(S_term_getctty): Expect port arg and look it up with
	ports_check_port_type ourselves.
	(S_term_open_ctty): Likewise.

	* users.c (init_user_state): Initialize USTATE properly.

	* devio.c (devio_set_bits): When checking ispeed against 110, 
	use ==, not =.

Tue May 17 19:50:57 1994  Michael I Bushnell  (mib@churchy.gnu.ai.mit.edu)

	* Makefile (DIST_FILES): Fix mispelling.

