summaryrefslogtreecommitdiff
path: root/term/ChangeLog
blob: bc29d68046d5adcd098ff98596627074412f1206 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
2002-11-20  Roland McGrath  <roland@frob.com>

	* main.c (parse_opt : case ARGP_KEY_SUCCESS): After initializing a new
	bottomhalf, call its assert_dtr hook if TTY_OPEN is set in termflags.

2002-11-19  Roland McGrath  <roland@frob.com>

	* main.c (parse_opt: case ARGP_KEY_SUCCESS): Set tty_arg along with
	tty_type from new argument value.
	Reported by David Walter <dwalter@syr.edu>.

2002-09-10  Marcus Brinkmann  <marcus@gnu.org>

	* hurdio.c (hurdio_writer_loop): Check output_stopped instead termflags.
	Move the code that signals the underlying file to ...
	(hurdio_start_output): ... here.

	* munge.c (input_character): Really toggle USER_OUTPUT_SUSP if
	VSTART == VSTOP.

	* hurdio.c (hurdio_writer_loop): Desert the DTR on all errors, not
	only EIO.
	(hurdio_reader_loop): Likewise.

2002-08-18  Roland McGrath  <roland@frob.com>

	* main.c (main): Open with O_RDWR only for hurdio bottomhalf.

2002-06-25  Roland McGrath  <roland@frob.com>

	* term.h (struct bottomhalf): New member `fini'.
	* hurdio.c (hurdio_fini): New function.
	(hurdio_bottom): Use it.
	* devio.c (devio_fini): New function.
	(devio_bottom): Use it.
	* ptyio.c (ptyio_bottom): Add 0 entry for `fini'.

	* main.c (trivfs_runtime_argp): New variable.
	(options): Add --name/-N and --type/-T options.
	(parse_opt): Collect parsed options in temporary storage and apply
	them only at final success.  For T_HURDIO, allow absent arg.
	For non-startup parsing call, allow any missing args.
	(tty_type_names): New const variable.
	(trivfs_append_args): New function.
	(main): Open underlying node with O_RDWR.
	* hurdio.c (wait_for_dtr): If tty_arg is null, use termctl->underlying
	instead of opening a node by name.
	(hurdio_desert_dtr): If tty_arg is null, don't deallocate ioport.

2002-06-25  Marcus Brinkmann  <marcus@gnu.org>

	* term.h (struct bottomhalf): New member GWINSZ.
	* devio.c (devio_bottom): Add new member.
	* ptyio.c (ptyio_bottom): Likewise.
	* hurdio.c (hurdio_bottom): Likewise.
	(hurdio_gwinsz): New function.
	(tioc_caps): Change type to unsigned int.
	(TIOC_CAP_GWINSZ): New symbol.
	* users.c (open_hook): Call GWINSZ of bottom layer after
	establishing the carrier.

2002-06-13  Roland McGrath  <roland@frob.com>

	* ptyio.c (pty_io_readable): int -> size_t in argument type.
	* term.h: Update decl.
	* users.c (trivfs_S_io_write): int -> size_t in AMT argument type.
	(trivfs_S_io_readable): Likewise.
	(trivfs_S_io_read): Likewise.  Also u_int -> size_t, off_t -> loff_t.
	(trivfs_S_io_write): Likewise.
	(trivfs_S_io_map): Add reply port args.

2002-05-28  Roland McGrath  <roland@frob.com>

	* devio.c (device_open_reply): int -> size_t
	(devio_set_bits, devio_mdmctl, devio_mdmstate): Likewise.

2002-05-08  Roland McGrath  <roland@frob.com>

	* main.c (main): Add a return after `error' call to clue compiler in.

2002-05-03  Roland McGrath  <roland@frob.com>

	* hurdio.c (hurdio_reader_loop): Add a return stmt.
	(hurdio_writer_loop): Likewise.

2002-03-23  James A. Morrison  <ja2morri@uwaterloo.ca>

	* main.c: Include <error.h>.
	(main): Use error, not fprintf and exit or perror and exit.  Use
	ERR, not errno.  Use MACH_PORT_NULL explicitly.
	* users.c: Include <error.h>.
	(init_users): Use ERR, not errno.  Use error, not perror and exit.

2002-03-05  Marcus Brinkmann  <marcus@gnu.org>

	* main.c (main): Use memset instead bzero.
	Fix error message, and formatting of some comments.
	* ptyio.c (pty_io_read): Use memcpy instead bcopy.

	* users.c (S_tioctl_tiocflush): Ignore error by bottom handler's
	notice_input_flushed.
	* users.c (set_state): Likewise.
	If bottom handler's set_bits fails, don't adjust terminal state
	but return success anyway.

2002-02-10  Marcus Brinkmann  <marcus@gnu.org>

	* term.h: Declare rdev.
	* main.c (options): New variable.
	(parse_opt): Handle case `n' to set rdev number.
	Also return EINVAL if terminal type is invalid.
	* users.c (trivfs_modify_stat): Set ST->st_rdev to global rdev.

2002-02-10  Marcus Brinkmann  <marcus@gnu.org>

	* hurdio.c: New file.
	* Makefile (SRCS): Add hurdio.c.
	* term.h: Add hurdio_bottom declaration.
	* main.c: Add T_HURDIO to enum of tty_type.
	(parse_opt): Add case for hurdio bottom handler.
	(term_argp): Likewise.
	(main): Likewise.

2002-02-10  Marcus Brinkmann  <marcus@gnu.org>

	* main.c: Include `argp.h' and `version.h'.
	(argp_program_version): New global variable.
	(tty_name, tty_type, tty_arg): Likewise.
	(parse_opt): New function.
	(term_argp): New global variable.
	(main): Call argp_parse, use new global variables to parse the
	options.  Remove TYPE variable.  Get the bootstrap port after
	checking the argument line.
	* term.h (pterm_name): Remove variable.
	(tty_arg): Declare variable.
	* devio.c (initial_open): Use tty_arg instead pterm_name.
	(devio_assert_dtr): Likewise.

2002-02-10  Marcus Brinkmann  <marcus@gnu.org>

	* term.h: Include `hurd/hurd_types.h'.
	(struct bottomhalf): Change the return types of the following
	members from void to error_t: abandon_physical_output,
	suspend_physical_output, notice_input_flushed, desert_dtr,
	set_break, clear_break, start_output, set_bits (which now takes an
	struct termios * as argument), mdmctl and mdmstate (which now
	takes an int * as argument).  Add new members init and type.
	(bottom): Define as const.
	(devio_bottom, ptyio_bottom): Declare as const.
	(drop_output): Change return type from void to error_t.
	(ptyio_init): Remove prototype.
	* devio.c (devio_abandon_physical_output): Change return value to
	error_t, and return 0.
	(devio_suspend_physical_output): Likewise.
	(devio_notice_input_flushed): Likewise.
	(devio_desert_dtr): Likewise.
	(devio_set_break): Likewise.
	(devio_clear_break): Likewise.
	(devio_start_output): Likewise.
	(devio_set_bits): Likewise.
	(devio_mdmctl): Likewise.
	(devio_mdmstate): Likewise.
        (init_devio): Rename to ...
	(devio_init): ... this.  Do not give constructor attribute.
	Change return type to error_t, and return an error value, rather
	than bailing out.  Declare as static.
	(devio_bottom): Add type TERM_ON_MACHDEV and init function
	devio_init, and define as const.
	(devio_set_bits): Accept new argument STATE and use that to work
	out the terminal state, rather than changing the global termstate.
	(devio_mdmstate): Accept new argument STATE and use that to return
	the bits.
	* ptyio.c: Do not include `hurd/hurd_types.h'.
	(ptyio_suspend_physical_output): Change return value to error_t,
	and return 0.  Likewise.
	(ptyio_notice_input_flushed): Likewise.
	(ptyio_desert_dtr): Likewise.
	(ptyio_set_bits): Likewise.
	(ptyio_set_break): Likewise.
	(ptyio_clear_break): Likewise.
	(ptyio_mdmctl): Likewise.
	(ptyio_start_output): Likewise.
	(ptyio_abandon_physical_output): Likewise.
	(ptyio_mdmstate): Likewise, and accept new argument STATE.
	(ptyio_init): Declare as static and change return type to error_t.
	(ptyio_bottom): Add type TERM_ON_MASTERPTY and init function
	ptyio_init, and define as const.
	(ptyio_set_bits): Accept new argument STATE and use that to work
	out the terminal state, rather than changing the global termstate.
	(ptyio_mdmstate): Accept new argument STATE and use that to return
	the bits.
	* munge.c (drop_output): Change return value to error_t.  Only
	clear queue if there was no error.
	* users.c (S_term_get_bottom_type): Just return bottom->type.
	(set_state): Rework logic to take possible errors into account,
	and to delay changing the termstate until we know that we won't
	fail.
	(S_tioctl_tiocflush): Return errors properly, and clear queue only
	if notice_input_flushed succeeded.
	(open_hook): Save error value of set_bits.  Save old termflags and
	restore them if if set_bits failed.  Call set_bits with correct
	arguments.
	(S_tioctl_tiocmods): Set err to result of mdmctl.
	(S_tioctl_tiocmset): Likewise.
	(S_tioctl_tiocmbic): Likewise.
	(S_tioctl_tiocmbis): Likewise.
	(S_tioctl_tioccdtr): Likewise.
	(S_tioctl_tiocsdtr): Likewise.
	(S_tioctl_tioccbrk): Likewise for clear_break.
	(S_tioctl_tiocsbrk): Likewise for set_break.
	(S_tioctl_tiocstart): Likewise for start_output.  Save old
	termflags and restore them if if start_output failed.
	(S_tioctl_tiocstop): Likewise for stop_output.
	(S_trivfs_io_write): Abort the operation if start_output fails.
	Do not call start_output if it just failed, or if there was no
	data to be written.
	* main.c (main): Initialize bottom handler (rather than special
	casing this for ptyio).

	* users.c (open_hook): Use memcpy instead bcopy and memset instead
	bzero.
	(S_tioctl_tiocgeta): Likewise.
	(set_state): Likewise.
	(open_hook): Likewise.
	* munge.c (rescan_inputq): Likewise.

2002-01-30  Marcus Brinkmann  <marcus@gnu.org>

	* users.c (trivfs_S_io_select): Remove IDTAG argument.
	Also in invocation of pty_io_select.
	* ptyio.c (pty_io_select): Likewise.
	* term.h (pty_io_select): Likewise.

2002-01-04  Marcus Brinkmann  <marcus@gnu.org>

	* devio.c (bogus_speed_to_real_speed): Handle B57600, B115200 if
	they are defined.  Reported by Diego Roversi <diegor@tiscalinet.it>.

2001-12-17  Roland McGrath  <roland@frob.com>

	* munge.c (input_character): Fix DISCARD character handling
	so it doesn't process the character as plain input.

2001-10-14  Roland McGrath  <roland@frob.com>

	* devio.c (real_speed_to_bogus_speed): Handle B57600, B115200 if they
	are defined.  Reported by Diego Roversi <diegor@tiscalinet.it>.

2001-04-01  Neal H Walfield  <neal@cs.uml.edu>

	* users.c (S_termctty_open_terminal): Use iohelp_create_empty_iouser.

2001-06-01  Roland McGrath  <roland@frob.com>

	* users.c (trivfs_S_io_select): Fix typo in last change.

2001-05-30  Roland McGrath  <roland@frob.com>

	* users.c (trivfs_S_io_select): Mask out SELECT_READ and/or
	SELECT_WRITE if those accesses are not allowed by the peropen.
	Don't keep old bits in AVAILABLE across waits, return only
	what is true at the moment we return.

2001-05-27  Roland McGrath  <roland@frob.com>

	* users.c (trivfs_S_io_select): Don't mask out SELECT_URG bit.
	Just let it never be set in the eventual result.  Yes, this
	can mean blocking forever when SELECT_URG is the only bit set.

2001-05-26  Roland McGrath  <roland@frob.com>

	* users.c (trivfs_S_io_select): Don't diagnose an error for *TYPE
	containing irrelevant bits (i.e. SELECT_URG).  It's always ok to
	ask even when the answer is always no.

2000-07-26  Mark Kettenis  <kettenis@gnu.org>

	* Makefile (HURDLIBS): Reorder libs such that the threads lib
	comes before the ports lib.  This makes sure the functions in
	libthreads properly override the stubs in libports with the new
	dynamic linker semantics in glibc 2.2.

2000-03-17  Thomas Bushnell, BSG  <tb@mit.edu>

	* main.c (main): Don't use MAKE_SEND in Hurd RPC.

2000-03-17  Roland McGrath  <roland@baalperazim.frob.com>

	* devio.c (devio_abandon_physical_output): Use ports_get_send_right.
	(initial_open): Use ports_get_send_right.
	(device_open_reply): Use ports_get_send_right.

	* users.c (send_signal): Use ports_get_send_right.

1999-10-04  Thomas Bushnell, BSG  <tb@mit.edu>

	* term.h, devio.c, users.c: Revert previous change.  Do it this
	way instead:
 	* users.c (report_carrier_error): New function.
 	(carrier_error): New static global variable.
 	(open_hook): Deal with errors from carrier open.
 	* devio.c (device_open_reply): Move the !RETURNCODE case out of
 	the "initial open" case and use report_carrier_error.
 	* term.h (report_carrier_error): Declare new function.

1999-10-01  Roland McGrath  <roland@baalperazim.frob.com>

	* term.h (NO_DEVICE): New macro, bit for termflags.
	(termflags): Change type to uint_fast32_t.
	* devio.c (device_open_reply): For D_NO_SUCH_DEVICE error reply, set
	NO_DEVICE flag in termflags.
	* users.c (open_hook): If NO_DEVICE flag set, return ENXIO immediately.
	If we put out an open request, check for that bit as well as
	NO_CARRIER changing in termflags and diagnose with ENXIO.

	* Makefile (device_replyServer-CPPFLAGS): New variable, turn off
	TypeCheck for this stub.  This is necessary for error replies to get
	through to our server-side functions in devio.c.

1999-09-13  Roland McGrath  <roland@baalperazim.frob.com>

	* users.c: Reverted changes related to io_map_segment.

1999-09-07  Thomas Bushnell, BSG  <tb@mit.edu>

	* users.c (trivfs_S_io_map): Renamed to ...
	(trivfs_S_io_map_segment): ... here.

1999-07-23  Roland McGrath  <roland@baalperazim.frob.com>

	* term.h (ILCASE, OLCASE): Use IUCLC, OLCUC if defined.

1999-07-11  Roland McGrath  <roland@baalperazim.frob.com>

	* term.h: Add #include <sys/mman.h>.

1999-07-09  Thomas Bushnell, BSG  <tb@mit.edu>

	* ptyio.c (pty_io_read): Use mmap instead of vm_allocate.
	* users.c (trivfs_S_io_read): Likewise.

1999-05-24  Mark Kettenis  <kettenis@gnu.org>

	* devio.c: Include <assert.h>, <errno.h> and <error.h>.  Do
	not include <stdio.h> and <sys/types.h>.
	Reorganize the order of inclusion of the header files a bit and
	document the baud-rate hackery.  Include <termios.h> explicitely.
	(init_devio): Use new local variable ERR instead of ERRNO.  Use
	error instead of perror and exit to report failure.
	(devio_desert_dtr): Declare BITS as `int' instead of
	`dev_status_t'.

1999-05-13  Roland McGrath  <roland@baalperazim.frob.com>

	* users.c (trivfs_S_file_chown): Either arg being -1 means don't
	change that id.

1999-03-22  Roland McGrath  <roland@baalperazim.frob.com>

	* devio.c (initial_open): Fix typos.

Wed Mar 17 16:32:05 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* users.c (S_term_get_peername): Compare BOTTOM against the
 	correct value, and call ports_port_deref with the proper name.
  	Reported by Yamashita TAKAO (az207@epa.go.jp).

	* devio.c (devio_desert_dtr): Cast &BITS correctly in call to
	device_set_status.
	(device_open_reply): Alwas clean open_pending no matter what.  Use
	ERR instead of ERRNO.  On fake opens, close the device before
	deallocating the port.
	Reported by Mark Kettenis (kettenis@gnu.org).

Tue Mar 16 01:04:06 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* devio.c (open_pending): Make an enum.
	(devio_desert_dtr): Don't close the device, just set the TM_HUP
 	modem bit, which should cause a hangup to occur.
	(devio_assert_dtr): Don't always open the device, instead use
 	initial_open the first time, and schedule a fake open the other
 	times.
	(initial_open): New function, guts from old device_assert_dtr.
	(device_open_reply): Distinguish replies from initial and fake
 	opens appropriately.
	(ports_do_mach_notify_send_once): Test and set open_pending using
 	new enum values.

Mon Mar 15 14:58:33 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* users.c (S_term_get_peername): Implement new RPC.

	* users.c (S_term_get_nodename): Return ENOENT if the name is not
	set.

1999-03-13  Mark Kettenis  <kettenis@gnu.org>

	* users.c (po_destroy_hook): Only reset state and hardware if
	TTY_OPEN bit is set in TERMFLAGS.

Mon Mar  1 09:11:06 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* munge.c (output_width): If C is a tab, then the width is the
	offset from LOC, not the total final position of the tab.
	Reported by Kalle Olavi Niemitalo <tosi@ees2.oulu.fi).

1999-02-28  Roland McGrath  <roland@baalperazim.frob.com>

	* users.c (trivfs_S_io_revoke): Use ports_class_iterate.

Mon Feb 22 04:34:55 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* users.c (trivfs_S_io_revoke): Protect the revocation by blocking
	all other rpcs.

Sat Feb 20 04:59:15 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* users.c (trivfs_S_io_revoke): Release global_lock before
	beginning the iteration.

	* users.c (trivfs_S_io_revoke): Add reply, reply_type args.

1999-02-06  Mark Kettenis  <kettenis@gnu.org>

	* main.c (main): Initialize status from underlying node.
	* users.c (check_access_hook): New function.  Correctly implement
	access permission checking.
	(trivfs_check_access_hook): Initialize with check_access_hook.
	(trivfs_S_file_check_access): Removed.

Thu Feb 18 00:57:30 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* devio.c (devio_assert_dtr): Bother to set open_pending.
	Reported by OKUJI Yoshinori (okuji@kuicr.kyoto-u.ac.jp).

1999-02-16  Roland McGrath  <roland@baalperazim.frob.com>

	* users.c (trivfs_S_io_revoke): Fix typos.

Tue Feb 16 06:10:08 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* users.c (trivfs_S_io_revoke): New function.

1999-02-05  Mark Kettenis  <kettenis@gnu.org>

	* users.c (trivfs_S_file_chmod): Clear S_ISVTX bit instead of
	clearing all other bits.

Sat Jan 30 00:27:14 1999  Thomas Bushnell, BSG  <tb@mit.edu>

	* munge.c (create_queue): Make sure that malloc succeeds.
	Reported by OKUJI Yoshinori <okuji@kuicr.kyoto-u.ac.jp>.

1998-10-24  Roland McGrath  <roland@baalperazim.frob.com>

	* users.c (open_hook): Assert DTR if NO_CARRIER, even for CLOCAL.
	This is the only thing that tells it to open the device.

Mon Oct 26 16:47:18 1998  Thomas Bushnell, BSG  <tb@mit.edu>

	* devio.c (char_size_mask_xxx): New variable.
	(devio_set_bits): Don't munge c_cflag here.  Instead,
	set char_size_mask_xxx.
	(device_read_reply_inband): Mask off high bits from the input to
	simulate less than 8-bit channels.

1998-09-04  Roland McGrath  <roland@baalperazim.frob.com>

	* devio.c: Add #undef's for B19200, B38400, B57600, B115200, in case
	they are defined in <device/tty_status.h> too.

1998-07-20  Roland McGrath  <roland@baalperazim.frob.com>

	* users.c: Include <hurd/fshelp.h> for fshelp_isowner decl.

	* term.h (clear_queue): Change return type to void.

Wed Aug 20 14:07:35 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* main.c (main): New args for
	ports_manage_port_operations_multithread.

Mon Jun  9 12:19:51 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c (trivfs_S_file_chmod): Fix typo.

Tue May 27 12:04:00 1997  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c (trivfs_S_file_chmod): Turn off S_ISPARE too.

Fri Feb 21 13:17:48 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (open_hook): Add OPEN_COUNT hack to try and detect lossage.

Thu Feb 20 02:25:29 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (main): Initialize TTY_CLASS & PTY_CLASS too instead of
	doing TTY_CNTL_CLASS & PTY_CNTL_CLASS twice.

Wed Feb 19 13:10:47 1997  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (trivfs_protid_portclasses, trivfs_protid_nportclasses,
	trivfs_cntl_portclasses, trivfs_cntl_nportclasses): Variables removed.
	(main): Don't set port class/bucket variables, use
	trivfs_add_{protid,control}_port_class instead.

	* Makefile (HURDLIBS): Add iohelp & shouldbeinlibc.

Thu Dec 12 18:33:52 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* main.c (main): Add S_IROOT to TERM_MODE.
	* users.c (trivfs_S_file_chmod): Turn off S_ITRANS bits, and turn
	on S_IROOT in TERM_MODE.

Sat Nov 23 16:28:36 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c: Include <hurd/iohelp.h>.
	(trivfs_S_file_chmod): Bother to fill in ST.

Mon Nov 18 18:16:29 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c (trivfs_modify_stat): Omit pointless assignment.

Fri Nov 15 17:37:12 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c (open_hook): New arg syntax.
	(trivfs_check_open_hook): Likewise.
	* ptyio.c (pty_open_hook): Likewise.
	* term.h (pty_open_hook): Likewise.

	* users.c (S_termctty_open_terminal): New syntax of trivfs_open.

	* users.c (trivfs_S_file_chown): Rewrite using idvecs.
	(trivfs_S_file_chmod): Likewise.

Thu Oct 24 14:44:57 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* users.c (open_hook): Always assert DTR (even if O_NONBLOCK).
	Don't return any errors if O_NONBLOCK and we don't have carrier.

Tue Oct  8 22:46:09 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (open_hook): Zero WINDOW_SIZE during initialization.

Fri Oct  4 12:30:22 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* users.c (S_tioctl_tiocswinsz): Correct test for a changed winsize.

	* ptyio.c (pty_open_hook): Reinitialize pty variables.

	* ptyio.c (pty_io_select): Return SELECT_READ if the slave isn't open.
	(pty_io_read): If the slave isn't open, return EOF.

	* users.c (set_state, open_hook): Call (*BOTTOM)->set_bits
	unconditionally.
	* devio.c (devio_set_bits): Only execute guts if CIGNORE isn't set.

	* ptyio.c (pty_io_read, pty_io_write): Honor O_NONBLOCK.

Wed Oct  2 10:49:18 1996  Miles Bader  <miles@gnu.ai.mit.edu>

	* ptyio.c (S_tioctl_tiocsig, S_tioctl_tiocucntl, S_tioctl_tiocpkt):
 	Hold GLOBAL_LOCK while frobbing (especially around send_signal).

	* ptyio.c (ptyio_set_bits): We need only be in packet mode to send
	TIOCPKT_NOSTOP & TIOCPKT_DOSTOP, regardless of the value of
	EXTERNAL_PROCESSING.

Thu Sep 26 14:24:16 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* ptyio.c: Include "tioctl_S.h".

Thu Sep 12 16:34:37 1996  Thomas Bushnell, n/BSG  <thomas@gnu.ai.mit.edu>

	* Makefile (HURDLIBS): New variable.
	(OBJS): Don't list libraries here.

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.