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
|
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.
|