1999-09-07 Thomas Bushnell, BSG * users.c (trivfs_S_io_map): Renamed to ... (trivfs_S_io_map_segment): ... here. 1999-07-23 Roland McGrath * term.h (ILCASE, OLCASE): Use IUCLC, OLCUC if defined. 1999-07-11 Roland McGrath * term.h: Add #include . 1999-07-09 Thomas Bushnell, BSG * ptyio.c (pty_io_read): Use mmap instead of vm_allocate. * users.c (trivfs_S_io_read): Likewise. 1999-05-24 Mark Kettenis * devio.c: Include , and . Do not include and . Reorganize the order of inclusion of the header files a bit and document the baud-rate hackery. Include 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 * users.c (trivfs_S_file_chown): Either arg being -1 means don't change that id. 1999-03-22 Roland McGrath * devio.c (initial_open): Fix typos. Wed Mar 17 16:32:05 1999 Thomas Bushnell, BSG * 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 * 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 * 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 * 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 * 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 * users.c (trivfs_S_io_revoke): Use ports_class_iterate. Mon Feb 22 04:34:55 1999 Thomas Bushnell, BSG * users.c (trivfs_S_io_revoke): Protect the revocation by blocking all other rpcs. Sat Feb 20 04:59:15 1999 Thomas Bushnell, BSG * 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 * 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 * 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 * users.c (trivfs_S_io_revoke): Fix typos. Tue Feb 16 06:10:08 1999 Thomas Bushnell, BSG * users.c (trivfs_S_io_revoke): New function. 1999-02-05 Mark Kettenis * 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 * munge.c (create_queue): Make sure that malloc succeeds. Reported by OKUJI Yoshinori . 1998-10-24 Roland McGrath * 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 * 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 * devio.c: Add #undef's for B19200, B38400, B57600, B115200, in case they are defined in too. 1998-07-20 Roland McGrath * users.c: Include for fshelp_isowner decl. * term.h (clear_queue): Change return type to void. Wed Aug 20 14:07:35 1997 Thomas Bushnell, n/BSG * main.c (main): New args for ports_manage_port_operations_multithread. Mon Jun 9 12:19:51 1997 Thomas Bushnell, n/BSG * users.c (trivfs_S_file_chmod): Fix typo. Tue May 27 12:04:00 1997 Thomas Bushnell, n/BSG * users.c (trivfs_S_file_chmod): Turn off S_ISPARE too. Fri Feb 21 13:17:48 1997 Miles Bader * users.c (open_hook): Add OPEN_COUNT hack to try and detect lossage. Thu Feb 20 02:25:29 1997 Miles Bader * 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 * 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 * 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 * users.c: Include . (trivfs_S_file_chmod): Bother to fill in ST. Mon Nov 18 18:16:29 1996 Thomas Bushnell, n/BSG * users.c (trivfs_modify_stat): Omit pointless assignment. Fri Nov 15 17:37:12 1996 Thomas Bushnell, n/BSG * 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 * 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 * users.c (open_hook): Zero WINDOW_SIZE during initialization. Fri Oct 4 12:30:22 1996 Miles Bader * 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 * 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 * ptyio.c: Include "tioctl_S.h". Thu Sep 12 16:34:37 1996 Thomas Bushnell, n/BSG * Makefile (HURDLIBS): New variable. (OBJS): Don't list libraries here. Thu Aug 29 17:26:37 1996 Thomas Bushnell, n/BSG * 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 * 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 * users.c (trivfs_S_file_check_access): Renamed from `trivfs_S_file_access'. Mon Aug 12 11:04:28 1996 Thomas Bushnell, n/BSG * 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 * 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 * 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 * 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 * 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 * devio.c (devio_abandon_physical_output): Don't do anything if carrier is off. Thu Jun 20 16:26:07 1996 Miles Bader * Makefile (OBJS): Add ../libfshelp/libfshelp.a. Sat May 11 01:18:41 1996 Miles Bader * iomux.c (parse_opt): Use ARGP_ERR_UNKNOWN instead of EINVAL. Fri May 10 09:27:46 1996 Michael I. Bushnell, p/BSG * users.c: Include . * 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 * 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 * 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 * users.c (call_asyncs): Add DIR argument; all callers changed. * term.h: Include . * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * users.c (report_carrier_off): Flush queues when carrier turns off. Tue Dec 26 16:58:55 1995 Miles Bader * 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 * main.c (main): Set PEERCNTL to &PTYCTL if we're a slave, not 0. Wed Dec 20 13:56:09 1995 Miles Bader * 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 * 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 * 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 * ptyio.c (pty_io_write): Keep track of how mount we wrote. Tue Dec 12 13:53:40 1995 Michael I. Bushnell, p/BSG * 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 * 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 * 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 . (ptyio_set_bits): If the stop char state has changed, dinkle the stop bits in the control_byte accordingly. * term.h: Include and . (pty_io_write, pty_io_read, pty_io_readable, pty_io_select): New declarations. * ptyio.c: Include . (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 * 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 * 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 * main.c (main): Add flags arg to fsys_startup call. Sat Sep 23 00:48:17 1995 Roland McGrath * term.h: Include errno.h. Mon Sep 18 14:51:40 1995 Miles Bader * users.c (trivfs_S_file_set_size): Renamed from trivfs_S_file_truncate. Sat Sep 16 13:03:40 1995 Roland McGrath * 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 * users.c (trivfs_S_io_write): Start pending output before blocking. Fri Sep 1 09:51:11 1995 Michael I. Bushnell, p/BSG * 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.