I've fixed all the prototypes issues, even the warnings. This does compile cleanly with llvm v2, at least on amd64
Basic program appears to work, I've successfully opened a connection with myself on several machines, and the menus are also functional. (yes, it's a truckload of diffs) I had a bit of "fun" with the generic function pointers of the menu system, and also the BSD42_SOCK typedef, which is subtly different from our sockaddr_in, but removing it led to connection errors, so I've decided to leave it as-in for now. Some of the comments about spending hours debugging the talk connection protocols scared me away from digging further ;) Index: Makefile =================================================================== RCS file: /vide/cvs/ports/net/ytalk/Makefile,v diff -u -p -r1.39 Makefile --- Makefile 27 Sep 2023 14:18:41 -0000 1.39 +++ Makefile 2 Jun 2026 14:36:31 -0000 @@ -1,7 +1,7 @@ COMMENT= enhanced talk that allows for multiple parties DISTNAME= ytalk-3.1.1 -REVISION= 4 +REVISION= 5 CATEGORIES= net SITES= https://distfiles.sigtrap.nl/ @@ -9,6 +9,7 @@ SITES= https://distfiles.sigtrap.nl/ MAINTAINER= Marc Espie <[email protected]> PERMIT_PACKAGE= Yes +DEBUG_PACKAGES = ${BUILD_PACKAGES} WANTLIB= c curses Index: patches/patch-comm_c =================================================================== RCS file: patches/patch-comm_c diff -N patches/patch-comm_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-comm_c 2 Jun 2026 11:34:04 -0000 @@ -0,0 +1,234 @@ +Index: comm.c +--- comm.c.orig ++++ comm.c +@@ -58,10 +58,7 @@ static v3_winch v3w; + /* Set up a drain of out-of-band data. + */ + static void +-drain_user(user, len, func) +- yuser *user; +- int len; +- void (*func)(); ++drain_user(yuser *user, int len, void (*func)()) + { + if(len > user->dbuf_size) + { +@@ -76,10 +73,7 @@ drain_user(user, len, func) + /* Send out-of-band data. + */ + static void +-send_oob(fd, ptr, len) +- int fd; +- yaddr ptr; +- int len; ++send_oob(int fd, yaddr ptr, int len) + { + ychar oob, size; + static struct iovec iov[3]; +@@ -114,8 +108,7 @@ send_oob(fd, ptr, len) + * just now connected to. + */ + static void +-send_import(to, from) +- yuser *to, *from; ++send_import(yuser *to, yuser *from) + { + if(to->remote.vmajor > 2) + { +@@ -138,8 +131,7 @@ send_import(to, from) + /* Tell another ytalk connection to connect to a user. + */ + static void +-send_accept(to, from) +- yuser *to, *from; ++send_accept(yuser *to, yuser *from) + { + if(to->remote.vmajor > 2) + { +@@ -162,9 +154,7 @@ send_accept(to, from) + /* Process a Ytalk version 2.? data packet. + */ + static void +-v2_process(user, pack) +- yuser *user; +- v2_pack *pack; ++v2_process(yuser *user, v2_pack *pack) + { + register yuser *u; + ylong host_addr; +@@ -232,9 +222,7 @@ v2_process(user, pack) + /* Process a Ytalk version 3.? data packet. + */ + static void +-v3_process_pack(user, pack) +- yuser *user; +- v3_pack *pack; ++v3_process_pack(yuser *user, v3_pack *pack) + { + register yuser *u, *u2; + ylong host_addr, pid; +@@ -306,9 +294,7 @@ v3_process_pack(user, pack) + * them later. + */ + static void +-v3_process_flags(user, pack) +- yuser *user; +- v3_flags *pack; ++v3_process_flags(yuser *user, v3_flags *pack) + { + switch(pack->code) + { +@@ -324,9 +310,7 @@ v3_process_flags(user, pack) + /* Process a Ytalk version 3.? winch packet. + */ + static void +-v3_process_winch(user, pack) +- yuser *user; +- v3_winch *pack; ++v3_process_winch(yuser *user, v3_winch *pack) + { + switch(pack->code) + { +@@ -355,9 +339,7 @@ v3_process_winch(user, pack) + * function based on the type of packet. + */ + static void +-v3_process(user, ptr) +- yuser *user; +- yaddr ptr; ++v3_process(yuser *user, yaddr ptr) + { + ychar *str; + +@@ -387,8 +369,7 @@ v3_process(user, ptr) + * data from the canonical input stream. + */ + static void +-read_user(fd) +- int fd; ++read_user(int fd) + { + register ychar *c, *p; + register int rc; +@@ -521,8 +502,7 @@ read_user(fd) + /* Initial Handshaking: read the parameter pack from another ytalk user. + */ + static void +-ytalk_user(fd) +- int fd; ++ytalk_user(int fd) + { + register yuser *user, *u; + u_short cols; +@@ -617,8 +597,7 @@ ytalk_user(fd) + * this is another ytalk user. + */ + static void +-connect_user(fd) +- int fd; ++connect_user(int fd) + { + register yuser *user, *u; + +@@ -685,12 +664,11 @@ connect_user(fd) + * my edit keys. + */ + static void +-contact_user(fd) +- int fd; ++contact_user(int fd) + { + register yuser *user; + register int n; +- size_t socklen; ++ socklen_t socklen; + struct sockaddr_in peer; + char *hname; + +@@ -742,8 +720,7 @@ contact_user(fd) + /* Do a word wrap. + */ + static int +-word_wrap(user) +- register yuser *user; ++word_wrap(yuser *user) + { + register int i, x, bound; + static ychar temp[20]; +@@ -767,8 +744,7 @@ word_wrap(user) + * to that instead of messing up his screen. + */ + static int +-announce(user) +- yuser *user; ++announce(yuser *user) + { + register int rc, fd; + +@@ -818,9 +794,7 @@ announce(user) + /* Invite a user into the conversation. + */ + yuser * +-invite(name, send_announce) +- register char *name; +- int send_announce; ++invite(char *name, int send_announce) + { + register int rc; + char *hisname, *hishost, *histty; +@@ -1012,8 +986,7 @@ house_clean() + } + + void +-send_winch(user) +- yuser *user; ++send_winch(yuser *user) + { + register yuser *u; + +@@ -1067,10 +1040,7 @@ send_end_region() + * users if the given user is either "me" or NULL. + */ + void +-send_users(user, buf, len) +- yuser *user; +- ychar *buf; +- register int len; ++send_users(yuser *user, ychar *buf, int len) + { + register ychar *o, *b; + register yuser *u; +@@ -1112,10 +1082,7 @@ send_users(user, buf, len) + /* Display user input. Emulate ANSI. + */ + void +-show_input(user, buf, len) +- yuser *user; +- register ychar *buf; +- register int len; ++show_input(yuser *user, ychar *buf, int len) + { + if(user->got_esc) + { +@@ -1341,10 +1308,7 @@ process_esc: + /* Process keyboard input. + */ + void +-my_input(user, buf, len) +- yuser *user; +- register ychar *buf; +- int len; ++my_input(yuser *user, ychar *buf, int len) + { + register ychar *c; + register int i; +@@ -1441,8 +1405,7 @@ my_input(user, buf, len) + } + + void +-lock_flags(flags) +- ylong flags; ++lock_flags(ylong flags) + { + register yuser *u; + Index: patches/patch-cwin_c =================================================================== RCS file: patches/patch-cwin_c diff -N patches/patch-cwin_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-cwin_c 2 Jun 2026 09:29:15 -0000 @@ -0,0 +1,147 @@ +Index: cwin.c +--- cwin.c.orig ++++ cwin.c +@@ -43,8 +43,7 @@ static ywin *head; /* head of linked list */ + /* Take input from the user. + */ + static void +-curses_input(fd) +- int fd; ++curses_input(int fd) + { + register int rc; + static ychar buf[MAXBUF]; +@@ -59,9 +58,7 @@ curses_input(fd) + } + + static ywin * +-new_ywin(user, title) +- yuser *user; +- char *title; ++new_ywin(yuser *user, char *title) + { + register ywin *out; + register int len; +@@ -76,9 +73,7 @@ new_ywin(user, title) + } + + static void +-make_win(w, height, width, row, col) +- ywin *w; +- int height, width, row, col; ++make_win(ywin *w, int height, int width, int row, int col) + { + if((w->win = newwin(height, width, row, col)) == NULL) + { +@@ -97,8 +92,7 @@ make_win(w, height, width, row, col) + } + + static void +-draw_title(w) +- ywin *w; ++draw_title(ywin *w) + { + register int pad, x; + register char *t; +@@ -129,8 +123,7 @@ draw_title(w) + /* Return number of lines per window, given "wins" windows. + */ + static int +-win_size(wins) +- int wins; ++win_size(int wins) + { + return (LINES - 1) / wins; + } +@@ -138,7 +131,7 @@ win_size(wins) + /* Break down and redraw all user windows. + */ + static void +-curses_redraw() ++curses_redraw(void) + { + register ywin *w; + register int row, wins, wsize; +@@ -261,9 +254,7 @@ end_curses() + /* Open a new window. + */ + int +-open_curses(user, title) +- yuser *user; +- char *title; ++open_curses(yuser *user, char *title) + { + register ywin *w; + register int wins; +@@ -300,8 +291,7 @@ open_curses(user, title) + /* Close a window. + */ + void +-close_curses(user) +- yuser *user; ++close_curses(yuser *user) + { + register ywin *w, *p; + +@@ -330,9 +320,7 @@ close_curses(user) + } + + void +-addch_curses(user, c) +- yuser *user; +- register ychar c; ++addch_curses(yuser *user, ychar c) + { + register ywin *w; + register int x, y; +@@ -345,9 +333,7 @@ addch_curses(user, c) + } + + void +-move_curses(user, y, x) +- yuser *user; +- register int y, x; ++move_curses(yuser *user, int y, int x) + { + register ywin *w; + +@@ -356,8 +342,7 @@ move_curses(user, y, x) + } + + void +-clreol_curses(user) +- register yuser *user; ++clreol_curses(yuser *user) + { + register ywin *w; + +@@ -366,8 +351,7 @@ clreol_curses(user) + } + + void +-clreos_curses(user) +- register yuser *user; ++clreos_curses(yuser *user) + { + register ywin *w; + +@@ -376,8 +360,7 @@ clreos_curses(user) + } + + void +-scroll_curses(user) +- register yuser *user; ++scroll_curses(yuser *user) + { + register ywin *w; + +@@ -400,8 +383,7 @@ scroll_curses(user) + } + + void +-flush_curses(user) +- register yuser *user; ++flush_curses(yuser *user) + { + register ywin *w; + Index: patches/patch-cwin_h =================================================================== RCS file: patches/patch-cwin_h diff -N patches/patch-cwin_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-cwin_h 2 Jun 2026 09:28:33 -0000 @@ -0,0 +1,36 @@ +Index: cwin.h +--- cwin.h.orig ++++ cwin.h +@@ -16,19 +16,19 @@ + + /* Mail comments or questions to [email protected] */ + +-extern void init_curses (); +-extern void end_curses (); +-extern int open_curses ( /* yuser, title */ ); +-extern void close_curses ( /* yuser */ ); +-extern void addch_curses ( /* yuser, char */ ); +-extern void move_curses ( /* yuser, y, x */ ); +-extern void clreol_curses ( /* yuser */ ); +-extern void clreos_curses ( /* yuser */ ); +-extern void scroll_curses ( /* yuser */ ); +-extern void flush_curses ( /* yuser */ ); +-extern void redisplay_curses(); +-extern void set_raw_curses(); +-extern void set_cooked_curses(); ++extern void init_curses (void); ++extern void end_curses (void); ++extern int open_curses (yuser *, char *); ++extern void close_curses (yuser *); ++extern void addch_curses (yuser *, ychar); ++extern void move_curses (yuser *, int, int); ++extern void clreol_curses (yuser *); ++extern void clreos_curses (yuser *); ++extern void scroll_curses (yuser *); ++extern void flush_curses (yuser *); ++extern void redisplay_curses(void); ++extern void set_raw_curses(void); ++extern void set_cooked_curses(void); + + #ifndef getyx + # define getyx(w,y,x) y = w->_cury, x = w->_curx Index: patches/patch-exec_c =================================================================== RCS file: /vide/cvs/ports/net/ytalk/patches/patch-exec_c,v diff -u -p -r1.2 patch-exec_c --- patches/patch-exec_c 11 Mar 2022 19:48:19 -0000 1.2 +++ patches/patch-exec_c 2 Jun 2026 12:05:23 -0000 @@ -1,6 +1,29 @@ ---- exec.c.orig Fri Dec 7 22:54:16 2012 -+++ exec.c Fri Dec 7 22:57:00 2012 -@@ -100,7 +100,11 @@ getpty(name) +Index: exec.c +--- exec.c.orig ++++ exec.c +@@ -47,6 +47,7 @@ + # endif + # endif + #endif ++#include <unistd.h> + + #if defined(HAVE_PTSNAME) && defined(HAVE_GRANTPT) && defined(HAVE_UNLOCKPT) + # define USE_DEV_PTMX +@@ -85,12 +86,10 @@ int needtopush=0; + #endif + + static int +-getpty(name) +- char *name; ++getpty(char *name) + { + register int pty, tty; + char *tt; +- extern char *ttyname(); + + #ifdef USE_DEV_PTMX + RETSIGTYPE (*sigchld)(); +@@ -100,7 +99,11 @@ getpty(name) /* look for a Solaris/UNIX98-type pseudo-device */ #ifdef USE_DEV_PTMX @@ -12,3 +35,33 @@ { /* grantpt() might want to fork/exec! */ sigchld = signal(SIGCHLD, SIG_DFL); +@@ -167,8 +170,7 @@ getpty(name) + } + + static void +-exec_input(fd) +- int fd; ++exec_input(int fd) + { + register int rc; + static ychar buf[MAXBUF]; +@@ -185,8 +187,7 @@ exec_input(fd) + } + + static void +-calculate_size(rows, cols) +- int *rows, *cols; ++calculate_size(int *rows, int *cols) + { + register yuser *u; + +@@ -209,8 +210,7 @@ calculate_size(rows, cols) + * a shell. + */ + void +-execute(command) +- char *command; ++execute(char *command) + { + int fd; + char name[20], *shell; Index: patches/patch-fd_c =================================================================== RCS file: patches/patch-fd_c diff -N patches/patch-fd_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-fd_c 2 Jun 2026 11:49:38 -0000 @@ -0,0 +1,45 @@ +Index: fd.c +--- fd.c.orig ++++ fd.c +@@ -44,7 +44,7 @@ int input_flag = 0; /* flag: waiting for user input * + int user_winch = 0; /* flag: user window/status changed */ + + struct fd_func { +- void (*func)(); /* user function */ ++ void (*func)(int); /* user function */ + }; + static struct fd_func tag[MAX_FILES]; /* one function per file descriptor */ + +@@ -61,9 +61,7 @@ init_fd() + * waiting. + */ + void +-add_fd(fd, user_func) +- int fd; +- void (*user_func)(); ++add_fd(int fd, void (*user_func)(int)) + { + if(fd < 0 || fd >= MAX_FILES) + { +@@ -79,8 +77,7 @@ add_fd(fd, user_func) + /* Remove a file descriptor from the checklist. + */ + void +-remove_fd(fd) +- int fd; ++remove_fd(int fd) + { + if(fd < 0 || fd >= MAX_FILES) + { +@@ -96,10 +93,7 @@ remove_fd(fd) + * Returns 0 on success, -1 on error. + */ + int +-full_read(fd, buf, len) +- int fd; +- register char *buf; +- register int len; ++full_read(int fd, void *buf, int len) + { + register int rc; + Index: patches/patch-header_h =================================================================== RCS file: patches/patch-header_h diff -N patches/patch-header_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-header_h 2 Jun 2026 15:48:00 -0000 @@ -0,0 +1,181 @@ +Index: header.h +--- header.h.orig ++++ header.h +@@ -127,7 +127,8 @@ typedef struct _yuser { + int dbuf_size; /* current buffer size */ + ychar *dbuf, *dptr; /* buffer base and current pointer */ + int drain; /* remaining bytes to drain */ +- void (*dfunc)(); /* function to call with drained data */ ++ void (*dfunc)(struct _yuser *, ychar *); ++ /* function to call with drained data */ + int got_oob; /* got OOB flag */ + + /* anything below this is available for the terminal interface */ +@@ -280,89 +281,90 @@ struct alias { + + /* ---- global functions ---- */ + +-extern void bail ( /* int */ ); /* main.c */ +-extern yaddr get_mem ( /* int */ ); /* main.c */ +-extern char *str_copy ( /* string */ ); /* main.c */ +-extern yaddr realloc_mem ( /* pointer, int */ ); /* main.c */ +-extern void show_error ( /* str */ ); /* main.c */ ++extern void bail (int); /* main.c */ ++extern yaddr get_mem (int); /* main.c */ ++extern char *str_copy (const char *); /* main.c */ ++extern yaddr realloc_mem (void *, int ); /* main.c */ ++extern void show_error (const char *); /* main.c */ + +-extern void init_term (); /* term.c */ +-extern void set_terminal_size ( /* fd, rows, cols */ ); /* term.c */ +-extern void set_terminal_flags ( /* fd */ ); /* term.c */ +-extern int what_term (); /* term.c */ +-extern void end_term (); /* term.c */ +-extern int open_term ( /* yuser, title */ ); /* term.c */ +-extern void close_term ( /* yuser */ ); /* term.c */ +-extern void addch_term ( /* yuser, ch */ ); /* term.c */ +-extern void move_term ( /* yuser, y, x */ ); /* term.c */ +-extern void clreol_term ( /* yuser */ ); /* term.c */ +-extern void clreos_term ( /* yuser */ ); /* term.c */ +-extern void scroll_term ( /* yuser */ ); /* term.c */ +-extern void rev_scroll_term ( /* yuser */ ); /* term.c */ +-extern void flush_term ( /* yuser */ ); /* term.c */ +-extern void rub_term ( /* yuser */ ); /* term.c */ +-extern int word_term ( /* yuser */ ); /* term.c */ +-extern void kill_term ( /* yuser */ ); /* term.c */ +-extern void tab_term ( /* yuser */ ); /* term.c */ +-extern void newline_term ( /* yuser */ ); /* term.c */ +-extern void add_line_term ( /* yuser, num */ ); /* term.c */ +-extern void del_line_term ( /* yuser, num */ ); /* term.c */ +-extern void add_char_term ( /* yuser, num */ ); /* term.c */ +-extern void del_char_term ( /* yuser, num */ ); /* term.c */ +-extern void redraw_term ( /* yuser, start_row */ ); /* term.c */ +-extern void resize_win ( /* yuser, h, w */ ); /* term.c */ +-extern void set_win_region ( /* yuser, h, w */ ); /* term.c */ +-extern void end_win_region ( /* yuser */ ); /* term.c */ +-extern void set_scroll_region( /* yuser, top, bottom */ ); /* term.c */ +-extern void msg_term ( /* yuser, str */ ); /* term.c */ +-extern void spew_term ( /* yuser, fd, rows, cols */ ); /* term.c */ +-extern int center ( /* width, n */ ); /* term.c */ +-extern void redraw_all_terms(); /* term.c */ +-extern void set_raw_term (); /* term.c */ +-extern void set_cooked_term (); /* term.c */ +-extern int term_does_asides(); /* term.c */ ++extern void init_term (void); /* term.c */ ++extern void set_terminal_size (int, int, int); /* term.c */ ++extern void set_terminal_flags (int); /* term.c */ ++extern int what_term (void); /* term.c */ ++extern void end_term (void); /* term.c */ ++extern int open_term (yuser *, char *); /* term.c */ ++extern void close_term (yuser *); /* term.c */ ++extern void addch_term (yuser *, ychar); /* term.c */ ++extern void move_term (yuser *, int, int); /* term.c */ ++extern void clreol_term (yuser *); /* term.c */ ++extern void clreos_term (yuser *); /* term.c */ ++extern void scroll_term (yuser *); /* term.c */ ++extern void rev_scroll_term (yuser *); /* term.c */ ++extern void flush_term (yuser *); /* term.c */ ++extern void rub_term (yuser *); /* term.c */ ++extern int word_term (yuser *); /* term.c */ ++extern void kill_term (yuser *); /* term.c */ ++extern void tab_term (yuser *); /* term.c */ ++extern void newline_term (yuser *); /* term.c */ ++extern void add_line_term (yuser *, int); /* term.c */ ++extern void del_line_term (yuser *, int); /* term.c */ ++extern void add_char_term (yuser *, int); /* term.c */ ++extern void del_char_term (yuser *, int); /* term.c */ ++extern void redraw_term (yuser *, int); /* term.c */ ++extern void resize_win (yuser *, int, int); /* term.c */ ++extern void set_win_region (yuser *, int, int); /* term.c */ ++extern void end_win_region (yuser *); /* term.c */ ++extern void set_scroll_region(yuser *, int, int); /* term.c */ ++extern void msg_term (yuser *, char *); /* term.c */ ++extern void spew_term (yuser *, int, int, int); /* term.c */ ++extern int center (int, int); /* term.c */ ++extern void raw_term (yuser *, int, int, ychar *, int); /* term.c */ ++extern void redraw_all_terms(void); /* term.c */ ++extern void set_raw_term (void); /* term.c */ ++extern void set_cooked_term (void); /* term.c */ ++extern int term_does_asides(void); /* term.c */ + +-extern void init_user (); /* user.c */ +-extern yuser *new_user ( /* name, host, tty */ ); /* user.c */ +-extern void free_user ( /* yuser */ ); /* user.c */ +-extern yuser *find_user ( /* name, host_addr, pid */ ); /* user.c */ +-extern void generate_full_name ( /* yuser */ ); /* user.c */ ++extern void init_user (char *); /* user.c */ ++extern yuser *new_user (char *, char *, char *); /* user.c */ ++extern void free_user (yuser *); /* user.c */ ++extern yuser *find_user (char *, ylong, ylong); /* user.c */ ++extern void generate_full_name (yuser *); /* user.c */ + +-extern void init_fd (); /* fd.c */ +-extern void add_fd ( /* fd, func */ ); /* fd.c */ +-extern void remove_fd ( /* fd */ ); /* fd.c */ +-extern int full_read ( /* fd, buf, len */ ); /* fd.c */ +-extern void main_loop (); /* fd.c */ +-extern void input_loop (); /* fd.c */ ++extern void init_fd (void); /* fd.c */ ++extern void add_fd (int , void (*)()); /* fd.c */ ++extern void remove_fd (int); /* fd.c */ ++extern int full_read (int, void *, int); /* fd.c */ ++extern void main_loop (void); /* fd.c */ ++extern void input_loop (void); /* fd.c */ + +-extern yuser *invite ( /* username, announce */ ); /* comm.c */ +-extern void house_clean (); /* comm.c */ +-extern void send_winch ( /* yuser */ ); /* comm.c */ +-extern void send_region (); /* comm.c */ +-extern void send_end_region (); /* comm.c */ +-extern void send_users ( /* buf, len */ ); /* comm.c */ +-extern void show_input ( /* user, buf, len */ ); /* comm.c */ +-extern void my_input ( /* buf, len */ ); /* comm.c */ +-extern void lock_flags ( /* flags */ ); /* comm.c */ +-extern void unlock_flags (); /* comm.c */ ++extern yuser *invite (char *, int); /* comm.c */ ++extern void house_clean (void); /* comm.c */ ++extern void send_winch (yuser *); /* comm.c */ ++extern void send_region (void); /* comm.c */ ++extern void send_end_region (void); /* comm.c */ ++extern void send_users (yuser *, ychar *, int);/* comm.c */ ++extern void show_input (yuser *, ychar *, int);/* comm.c */ ++extern void my_input (yuser *, ychar *, int ); /* comm.c */ ++extern void lock_flags (ylong); /* comm.c */ ++extern void unlock_flags (void); /* comm.c */ + +-extern void init_socket (); /* socket.c */ +-extern void close_all (); /* socket.c */ +-extern int send_dgram ( /* user, type */ ); /* socket.c */ +-extern int send_auto ( /* type */ ); /* socket.c */ +-extern void kill_auto (); /* socket.c */ +-extern int newsock ( /* yuser */ ); /* socket.c */ +-extern int connect_to ( /* yuser */ ); /* socket.c */ +-extern ylong get_host_addr ( /* hostname */ ); /* socket.c */ +-extern char *host_name ( /* addr */ ); /* socket.c */ +-extern void readdress_host ( /* from, to, on */ ); /* socket.c */ ++extern void init_socket (void); /* socket.c */ ++extern void close_all (void); /* socket.c */ ++extern int send_dgram (yuser *, u_char); /* socket.c */ ++extern int send_auto (u_char); /* socket.c */ ++extern void kill_auto (void); /* socket.c */ ++extern int newsock (yuser *); /* socket.c */ ++extern int connect_to (yuser *); /* socket.c */ ++extern ylong get_host_addr (char *); /* socket.c */ ++extern char *host_name (ylong); /* socket.c */ ++extern void readdress_host (char *, char *, char *); /* socket.c */ + +-extern void read_ytalkrc (); /* rc.c */ +-extern char *resolve_alias ( /* uh */ ); /* rc.c */ ++extern void read_ytalkrc (void); /* rc.c */ ++extern char *resolve_alias (char *); /* rc.c */ + +-extern void execute ( /* command */ ); /* exec.c */ +-extern void update_exec (); /* exec.c */ +-extern void kill_exec (); /* exec.c */ +-extern void winch_exec (); /* exec.c */ ++extern void execute (char *); /* exec.c */ ++extern void update_exec (void); /* exec.c */ ++extern void kill_exec (void); /* exec.c */ ++extern void winch_exec (void); /* exec.c */ + + /* EOF */ Index: patches/patch-main_c =================================================================== RCS file: patches/patch-main_c diff -N patches/patch-main_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-main_c 2 Jun 2026 09:28:33 -0000 @@ -0,0 +1,75 @@ +Index: main.c +--- main.c.orig ++++ main.c +@@ -26,8 +26,7 @@ char *vhost = NULL; /* specified virtual host */ + /* Clean up and exit. + */ + void +-bail(n) +- int n; ++bail(int n) + { + end_term(); + kill_auto(); +@@ -41,8 +40,7 @@ bail(n) + /* Display an error. + */ + void +-show_error(str) +- register char *str; ++show_error(const char *str) + { + register char *syserr; + static int in_error = 0; +@@ -75,8 +73,7 @@ show_error(str) + /* Allocate memory. + */ + yaddr +-get_mem(n) +- int n; ++get_mem(int n) + { + register yaddr out; + if((out = (yaddr)malloc(n)) == NULL) +@@ -90,8 +87,7 @@ get_mem(n) + /* Copy a string. + */ + char * +-str_copy(str) +- register char *str; ++str_copy(const char *str) + { + register char *out; + register int len; +@@ -107,9 +103,7 @@ str_copy(str) + /* Reallocate memory. + */ + yaddr +-realloc_mem(p, n) +- char *p; +- int n; ++realloc_mem(void *p, int n) + { + register yaddr out; + if(p == NULL) +@@ -125,8 +119,7 @@ realloc_mem(p, n) + /* Process signals. + */ + static RETSIGTYPE +-got_sig(n) +- int n; ++got_sig(int n) + { + if(n == SIGINT) + bail(0); +@@ -135,9 +128,7 @@ got_sig(n) + + /* MAIN */ + int +-main(argc, argv) +- int argc; +- char **argv; ++main(int argc, char **argv) + { + int xflg = 0, sflg = 0, yflg = 0, iflg = 0; + char *prog; Index: patches/patch-menu_c =================================================================== RCS file: patches/patch-menu_c diff -N patches/patch-menu_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-menu_c 2 Jun 2026 14:34:24 -0000 @@ -0,0 +1,242 @@ +Index: menu.c +--- menu.c.orig ++++ menu.c +@@ -24,7 +24,7 @@ + + #include "menu.h" + +-int show_user_list(); ++int show_user_list(void); + + /* This particular file was written real early one night (morning?) + * while trying to stay awake long enough to do laundry. I hereby take +@@ -32,7 +32,7 @@ int show_user_list(); + * for this source. + */ + +-static void main_menu_sel(); ++static void main_menu_sel(void *); + menu_item *menu_ptr = NULL; /* current menu in processing */ + static int menu_len; /* number of items in current menu */ + static int menu_long; /* longest item of current menu */ +@@ -40,7 +40,11 @@ static int menu_line; /* current line number of menu + static int text_pos = -1; /* text offset if non-negative */ + static int text_ypos = -1, text_xpos = -1; /* text coord if non-negative */ + +-extern void raw_term(); /* our raw interface to the terminal */ ++static void ++show_error2(void *a) ++{ ++ show_error(a); ++} + + /* some menus... */ + +@@ -75,17 +79,17 @@ static char err_str[8][MAXERR]; + static menu_item error_menu[] = { + { "Ytalk Error", NULL, ' ' }, + { "", NULL, ' ' }, +- { NULL, show_error, ' ' }, +- { NULL, show_error, ' ' }, ++ { NULL, show_error2, ' ' }, ++ { NULL, show_error2, ' ' }, + { "", NULL, ' ' }, +- { NULL, show_error, ' ' }, +- { NULL, show_error, ' ' }, ++ { NULL, show_error2, ' ' }, ++ { NULL, show_error2, ' ' }, + { "", NULL, ' ' }, +- { NULL, show_error, ' ' }, +- { NULL, show_error, ' ' }, ++ { NULL, show_error2, ' ' }, ++ { NULL, show_error2, ' ' }, + { "", NULL, ' ' }, +- { NULL, show_error, ' ' }, +- { NULL, show_error, ' ' }, ++ { NULL, show_error2, ' ' }, ++ { NULL, show_error2, ' ' }, + { "", NULL, '\0'} /* MUST BE LAST */ + }; + +@@ -94,8 +98,7 @@ static menu_item error_menu[] = { + static yuser *output_user = NULL; + + static void +-do_output(filename) +- char *filename; ++do_output(char *filename) + { + int fd; + +@@ -112,8 +115,7 @@ do_output(filename) + } + + static void +-do_output_user(user) +- yuser *user; ++do_output_user(yuser *user) + { + /* if he has an open descriptor, close it */ + +@@ -136,8 +138,7 @@ do_output_user(user) + } + + static void +-do_invite(name) +- char *name; ++do_invite(char *name) + { + invite(name, 1); + } +@@ -149,10 +150,11 @@ kill_all_unconnected() + } + + static void +-main_menu_sel(key) +- ychar key; ++main_menu_sel(void *p) + { +- switch(key) ++ ychar *key = p; ++ ++ switch(*key) + { + case 'a': /* add a user */ + if(show_text("Add Which User?", do_invite) >= 0) +@@ -188,14 +190,14 @@ main_menu_sel(key) + } + + static void +-option_menu_sel(key) +- ychar key; ++option_menu_sel(void *p) + { ++ ychar *key = p; + register yuser *u; + ylong old_flags; + + old_flags = def_flags; +- switch(key) ++ switch(*key) + { + case 'a': /* toggle asides */ + def_flags ^= FL_ASIDE; +@@ -234,9 +236,9 @@ option_menu_sel(key) + } + + static void +-user_menu_sel(key) +- ychar key; ++user_menu_sel(void *p) + { ++ ychar *key = p; + register int i; + register yuser *u; + +@@ -245,10 +247,10 @@ user_menu_sel(key) + * of the users from it. + */ + for(i = 0; i < menu_len; i++) +- if(user_menu[i].key == key) ++ if(user_menu[i].key == *key) + { + for(u = user_list; u; u = u->unext) +- if(u->key == key && ++ if(u->key == *key && + strcmp(u->full_name, user_menu[i].item) == 0) + { + user_menu[0].func(u); +@@ -277,9 +279,7 @@ generate_yes_no_length() + } + + static void +-pad_str(from, len, to) +- char *from, *to; +- int len; ++pad_str(char *from, int len, char *to) + { + for(; len > 0 && *from; len--, from++) + *(to++) = *from; +@@ -410,7 +410,7 @@ update_menu() + io_len--; + kill_menu(); + if(mesg_menu[0].func) +- mesg_menu[0].func(ic); ++ mesg_menu[0].func(&ic); + return; + } + else +@@ -436,7 +436,7 @@ update_menu() + for(i = 0; i < menu_len; i++) + if(menu_ptr[i].key == ic && menu_ptr[i].func != NULL) + { +- menu_ptr[i].func(ic); ++ menu_ptr[i].func(&ic); + /* + * THE WHOLE WORLD COULD BE DIFFERENT NOW. + */ +@@ -576,9 +576,7 @@ update_menu() + /* Show a menu, overriding any existing menu. + */ + int +-show_menu(menu, len) +- menu_item *menu; +- int len; ++show_menu(menu_item *menu, int len) + { + register int i, j; + +@@ -621,9 +619,7 @@ show_menu(menu, len) + /* Show a text entry menu, overriding any existing menu. + */ + int +-show_text(prompt, func) +- char *prompt; +- void (*func)(); ++show_text(char *prompt, menu_funcp func) + { + if(me->t_rows < 3) + { +@@ -656,9 +652,7 @@ show_text(prompt, func) + /* Show a message in a menu. + */ + int +-show_mesg(mesg, func) +- char *mesg; +- void (*func)(); ++show_mesg(char *mesg, void (*func)()) + { + /* set up the menu for display */ + +@@ -760,10 +754,7 @@ show_option_menu() + } + + int +-show_user_menu(title, func, metoo) +- char *title; +- void (*func)(); +- int metoo; ++show_user_menu(char *title, menu_funcp func, int metoo) + { + register int i; + register yuser *u; +@@ -861,8 +852,7 @@ show_user_list() + } + + int +-show_error_menu(str1, str2) +- char *str1, *str2; ++show_error_menu(const char *str1, char *str2) + { + register int i; + +@@ -886,8 +876,7 @@ show_error_menu(str1, str2) + * necessary for this function to hang until an answer is received. + */ + int +-yes_no(prompt) +- char *prompt; ++yes_no(char *prompt) + { + int out = 0; + Index: patches/patch-menu_h =================================================================== RCS file: patches/patch-menu_h diff -N patches/patch-menu_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-menu_h 2 Jun 2026 15:48:00 -0000 @@ -0,0 +1,44 @@ +Index: menu.h +--- menu.h.orig ++++ menu.h +@@ -21,9 +21,11 @@ + * is pressed, the _func_ for that item is called with one argument: + * the _key_ pressed. + */ ++typedef void (*menu_funcp)(void *); ++ + typedef struct { + char *item; /* item string, ie: "add a user" */ +- void (*func)(); /* function to call */ ++ menu_funcp func; /* function to call */ + ychar key; /* activating keypress, ie: "a" */ + } menu_item; + +@@ -31,16 +33,16 @@ extern menu_item *menu_ptr; /* if non-NULL, current me + + /* global functions */ + +-extern void kill_menu (); /* menu.c */ +-extern void update_menu (); /* menu.c */ +-extern int show_menu ( /* menuptr, len */ ); /* menu.c */ +-extern int show_text ( /* prompt, func */ ); /* menu.c */ +-extern int show_mesg (); /* menu.c */ +-extern int show_main_menu (); /* menu.c */ +-extern int show_option_menu(); /* menu.c */ +-extern int show_user_menu ( /* title, func */ ); /* menu.c */ +-extern int show_error_menu ( /* str1, str2 */ ); /* menu.c */ +-extern int yes_no ( /* prompt */ ); /* menu.c */ +-extern void update_user_menu(); /* menu.c */ ++extern void kill_menu (void); /* menu.c */ ++extern void update_menu (void); /* menu.c */ ++extern int show_menu (menu_item *, int); /* menu.c */ ++extern int show_text (char *, void (*)()); /* menu.c */ ++extern int show_mesg (char *, void (*)()); /* menu.c */ ++extern int show_main_menu (void); /* menu.c */ ++extern int show_option_menu(void); /* menu.c */ ++extern int show_user_menu (char *, void (*)(), int); /* menu.c */ ++extern int show_error_menu (const char *, char *); /* menu.c */ ++extern int yes_no (char *); /* menu.c */ ++extern void update_user_menu(void); /* menu.c */ + + /* EOF */ Index: patches/patch-rc_c =================================================================== RCS file: patches/patch-rc_c diff -N patches/patch-rc_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-rc_c 2 Jun 2026 11:34:04 -0000 @@ -0,0 +1,43 @@ +Index: rc.c +--- rc.c.orig ++++ rc.c +@@ -27,8 +27,7 @@ static struct alias *alias0 = NULL; + /* ---- local functions ---- */ + + static char * +-get_word(p) +- char **p; ++get_word(char **p) + { + register char *c, *out; + +@@ -47,8 +46,7 @@ get_word(p) + } + + static int +-set_option(opt, value) +- char *opt, *value; ++set_option(char *opt, char *value) + { + ylong mask = 0; + int set_it; +@@ -136,8 +134,7 @@ set_option(opt, value) + } + + static void +-read_rcfile(fname) +- char *fname; ++read_rcfile(char *fname) + { + FILE *fp; + char *buf, *ptr; +@@ -260,8 +257,7 @@ read_rcfile(fname) + /* ---- global functions ---- */ + + char * +-resolve_alias(uh) +- char *uh; ++resolve_alias(char *uh) + { + struct alias *a; + static char uh1[256], *at; Index: patches/patch-socket_c =================================================================== RCS file: patches/patch-socket_c diff -N patches/patch-socket_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-socket_c 2 Jun 2026 15:42:19 -0000 @@ -0,0 +1,222 @@ +Index: socket.c +--- socket.c.orig ++++ socket.c +@@ -34,6 +34,7 @@ + #ifdef _AIX + # include <sys/select.h> + #endif ++#include <arpa/inet.h> + + struct _talkd talkd[MAXDAEMON+1]; + int daemons = 0; +@@ -59,11 +60,10 @@ static readdr *readdr_list = NULL; /* list of re-addre + /* Create a datagram socket. + */ + static int +-init_dgram(sock) +- struct sockaddr_in *sock; ++init_dgram(struct sockaddr_in *sock) + { + int fd; +- size_t socklen; ++ socklen_t socklen; + + sock->sin_family = AF_INET; + IN_ADDR(*sock) = INADDR_ANY; +@@ -93,11 +93,7 @@ init_dgram(sock) + /* Initialize a new daemon structure. + */ + static int +-init_daemon(name, port, mptr, mlen, rptr, rlen) +- char *name; +- short port; +- yaddr mptr, rptr; +- int mlen, rlen; ++init_daemon(char *name, short port, yaddr mptr, int mlen, yaddr rptr, int rlen) + { + struct servent *serv; + int d; +@@ -123,10 +119,9 @@ init_daemon(name, port, mptr, mlen, rptr, rlen) + } + + static void +-read_autoport(fd) +- int fd; ++read_autoport(int fd) + { +- size_t socklen; ++ socklen_t socklen; + static v2_pack pack; + static char estr[V2_NAMELEN + V2_HOSTLEN + 20]; + static struct sockaddr_in temp; +@@ -166,7 +161,7 @@ read_autoport(fd) + static void + init_autoport() + { +- size_t socklen; ++ socklen_t socklen; + + autosock.sin_family = AF_INET; + IN_ADDR(autosock) = INADDR_ANY; +@@ -208,9 +203,7 @@ init_autoport() + * the host I'm sending to. + */ + static void +-place_my_address(sock, addr) +- BSD42_SOCK *sock; +- register ylong addr; ++place_my_address(BSD42_SOCK *sock, ylong addr) + { + register readdr *r; + +@@ -233,9 +226,8 @@ place_my_address(sock, addr) + * hostname, then reads a response packet. + */ + static int +-sendit(addr, d) +- ylong addr; /* host internet address */ +- int d; /* daemon number */ ++sendit(ylong addr, /* host internet address */ ++ int d) /* daemon number */ + { + int n; + struct sockaddr_in daemon; +@@ -392,8 +384,7 @@ sendit(addr, d) + * what version(s) of the daemon are running. + */ + static int +-find_daemon(addr) +- ylong addr; ++find_daemon(ylong addr) + { + register hostinfo *h; + register int n, i, d; +@@ -504,8 +495,7 @@ find_daemon(addr) + } + + static ylong +-make_net_mask(addr) +- ylong addr; ++make_net_mask(ylong addr) + { + if(addr & (ylong)0xff) + return (ylong)0xffffffff; +@@ -576,9 +566,7 @@ close_all() + /* First, a quick and easy interface for the user sockets. + */ + int +-send_dgram(user, type) +- yuser *user; +- u_char type; ++send_dgram(yuser *user, u_char type) + { + ylong addr; + int d; +@@ -723,8 +711,7 @@ send_dgram(user, type) + * always sends to the caller's host, and always does just an invite. + */ + int +-send_auto(type) +- u_char type; ++send_auto(u_char type) + { + int dtype, d, rc; + +@@ -773,11 +760,10 @@ kill_auto() + /* Create a TCP socket for communication with other talk users. + */ + int +-newsock(user) +- yuser *user; ++newsock(yuser *user) + { + int fd; +- size_t socklen; ++ socklen_t socklen; + + user->sock.sin_family = AF_INET; + IN_ADDR(user->sock) = INADDR_ANY; +@@ -800,7 +786,7 @@ newsock(user) + show_error("newsock: getsockname() failed"); + return -1; + } +- place_my_address(&(user->sock), user->host_addr); ++ place_my_address((BSD42_SOCK *)&(user->sock), user->host_addr); + if(listen(fd, 5) < 0) + { + close(fd); +@@ -816,12 +802,11 @@ newsock(user) + /* Connect to another user's communication socket. + */ + int +-connect_to(user) +- yuser *user; ++connect_to(yuser *user) + { + register yuser *u; + int fd; +- size_t socklen; ++ socklen_t socklen; + struct sockaddr_in sock, orig_sock; + + orig_sock = *(struct sockaddr_in *)&nrsp.addr; +@@ -871,15 +856,13 @@ connect_to(user) + /* Find a host's address. + */ + ylong +-get_host_addr(hostname) +- char *hostname; ++get_host_addr(char *hostname) + { + struct hostent *host; + ylong addr; +- ylong inet_addr(); + + errno = 0; +- if((host = (struct hostent *) gethostbyname(hostname)) != NULL) ++ if((host = gethostbyname(hostname)) != NULL) + { + if(host->h_length != sizeof(addr)) + { +@@ -898,27 +881,25 @@ get_host_addr(hostname) + [19NOV96 Roger]: try to find the fqdn (1st alias with a dot) + */ + char * +-host_name(addr) +- ylong addr; ++host_name(ylong addr) + { + struct hostent *host; +- char *inet_ntoa(); + char **s; + +- if((host = gethostbyaddr((char *) &addr, sizeof(addr), AF_INET)) == NULL) ++ if((host = gethostbyaddr(&addr, sizeof(addr), AF_INET)) == NULL) + { + struct in_addr tmp; + tmp.s_addr = addr; + return inet_ntoa(tmp); + } + if (strchr(host->h_name, '.')) +- return (char *)host->h_name; ++ return host->h_name; + s = host->h_aliases; + if (s && *s) + for (; *s; s++) + if (strchr(*s, '.')) + return *s; +- return (char *)host->h_name; ++ return host->h_name; + } + + /* Re-address a given host ("from_id") to the given address or host +@@ -927,8 +908,7 @@ host_name(addr) + * as the differently-addressed "bar.com" to host "xyzzy.com". + */ + void +-readdress_host(from_id, to_id, on_id) +- char *from_id, *to_id, *on_id; ++readdress_host(char *from_id, char *to_id, char *on_id) + { + register readdr *new; + ylong from_addr, to_addr, on_addr; Index: patches/patch-term_c =================================================================== RCS file: patches/patch-term_c diff -N patches/patch-term_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-term_c 2 Jun 2026 09:53:41 -0000 @@ -0,0 +1,368 @@ +Index: term.c +--- term.c.orig ++++ term.c +@@ -38,15 +38,15 @@ + #include "xwin.h" + #include "menu.h" + +-static int (*_open_term)(); /* open a new terminal */ +-static void (*_close_term)(); /* close a terminal */ +-static void (*_addch_term)(); /* write a char to a terminal */ +-static void (*_move_term)(); /* move cursor to Y,X position */ +-static void (*_clreol_term)(); /* clear to end of line */ +-static void (*_clreos_term)(); /* clear to end of screen */ +-static void (*_scroll_term)(); /* scroll up one line */ +-static void (*_rev_scroll_term)(); /* scroll down one line */ +-static void (*_flush_term)(); /* flush pending output */ ++static int (*_open_term)(yuser *, char *); /* open a new terminal */ ++static void (*_close_term)(yuser *); /* close a terminal */ ++static void (*_addch_term)(yuser *, ychar);/* write a char to a terminal */ ++static void (*_move_term)(yuser *, int, int);/* move cursor to Y,X position */ ++static void (*_clreol_term)(yuser *); /* clear to end of line */ ++static void (*_clreos_term)(yuser *); /* clear to end of screen */ ++static void (*_scroll_term)(yuser *); /* scroll up one line */ ++static void (*_rev_scroll_term)(yuser *); /* scroll down one line */ ++static void (*_flush_term)(yuser *); /* flush pending output */ + + static int term_type = 0; + +@@ -191,8 +191,7 @@ init_term() + /* Set terminal size. + */ + void +-set_terminal_size(fd, rows, cols) +- int fd, rows, cols; ++set_terminal_size(int fd, int rows, int cols) + { + #ifdef TIOCSWINSZ + struct winsize winsize; +@@ -206,8 +205,7 @@ set_terminal_size(fd, rows, cols) + /* Set terminal and input characteristics for slave terminals. + */ + void +-set_terminal_flags(fd) +- int fd; ++set_terminal_flags(int fd) + { + #ifdef USE_SGTTY + (void)ioctl(fd, TIOCSETD, &line_discipline); +@@ -249,9 +247,7 @@ end_term() + /* Open a new user window. + */ + int +-open_term(user, title) +- register yuser *user; +- register char *title; ++open_term(yuser *user, char *title) + { + if(_open_term(user, title) != 0) + return -1; +@@ -264,8 +260,7 @@ open_term(user, title) + /* Close a user window. + */ + void +-close_term(user) +- register yuser *user; ++close_term(yuser *user) + { + register int i; + +@@ -284,9 +279,7 @@ close_term(user) + /* Place a character. + */ + void +-addch_term(user, c) +- register yuser *user; +- register ychar c; ++addch_term(yuser *user, ychar c) + { + if (is_printable(c)) + { +@@ -305,9 +298,7 @@ addch_term(user, c) + /* Move the cursor. + */ + void +-move_term(user, y, x) +- register yuser *user; +- register int y, x; ++move_term(yuser *user, int y, int x) + { + if(y < 0 || y > user->sc_bot) + y = user->sc_bot; +@@ -326,8 +317,7 @@ move_term(user, y, x) + /* Clear to EOL. + */ + void +-clreol_term(user) +- register yuser *user; ++clreol_term(yuser *user) + { + register int j; + register ychar *c; +@@ -354,8 +344,7 @@ clreol_term(user) + /* Clear to EOS. + */ + void +-clreos_term(user) +- register yuser *user; ++clreos_term(yuser *user) + { + register int j, i; + register ychar *c; +@@ -390,8 +379,7 @@ clreos_term(user) + /* Scroll window. + */ + void +-scroll_term(user) +- register yuser *user; ++scroll_term(yuser *user) + { + register int i; + register ychar *c; +@@ -427,8 +415,7 @@ scroll_term(user) + /* Reverse-scroll window. + */ + void +-rev_scroll_term(user) +- register yuser *user; ++rev_scroll_term(yuser *user) + { + register int i; + register ychar *c; +@@ -464,8 +451,7 @@ rev_scroll_term(user) + /* Flush window output. + */ + void +-flush_term(user) +- register yuser *user; ++flush_term(yuser *user) + { + _flush_term(user); + } +@@ -473,8 +459,7 @@ flush_term(user) + /* Rub one character. + */ + void +-rub_term(user) +- register yuser *user; ++rub_term(yuser *user) + { + if(user->x > 0) + { +@@ -496,8 +481,7 @@ rub_term(user) + /* Rub one word. + */ + int +-word_term(user) +- register yuser *user; ++word_term(yuser *user) + { + register int x, out; + +@@ -516,8 +500,7 @@ word_term(user) + /* Kill current line. + */ + void +-kill_term(user) +- register yuser *user; ++kill_term(yuser *user) + { + if(user->x > 0) + { +@@ -529,8 +512,7 @@ kill_term(user) + /* Expand a tab. We use non-destructive tabs. + */ + void +-tab_term(user) +- register yuser *user; ++tab_term(yuser *user) + { + move_term(user, user->y, (user->x + 8) & 0xfff8); + } +@@ -538,8 +520,7 @@ tab_term(user) + /* Process a newline. + */ + void +-newline_term(user) +- register yuser *user; ++newline_term(yuser *user) + { + register int new_y, next_y; + +@@ -581,9 +562,7 @@ newline_term(user) + /* Insert lines. + */ + void +-add_line_term(user, num) +- register yuser *user; +- int num; ++add_line_term(yuser *user, int num) + { + register ychar *c; + register int i; +@@ -628,9 +607,7 @@ add_line_term(user, num) + /* Delete lines. + */ + void +-del_line_term(user, num) +- register yuser *user; +- int num; ++del_line_term(yuser *user, int num) + { + register ychar *c; + register int i; +@@ -673,9 +650,7 @@ del_line_term(user, num) + } + + static void +-copy_text(fr, to, count) +- register ychar *fr, *to; +- register int count; ++copy_text(ychar *fr, ychar *to, int count) + { + if(to < fr) + { +@@ -694,9 +669,7 @@ copy_text(fr, to, count) + /* Add chars. + */ + void +-add_char_term(user, num) +- register yuser *user; +- int num; ++add_char_term(yuser *user, int num) + { + register ychar *c; + register int i; +@@ -730,9 +703,7 @@ add_char_term(user, num) + /* Delete chars. + */ + void +-del_char_term(user, num) +- register yuser *user; +- int num; ++del_char_term(yuser *user, int num) + { + register ychar *c; + register int i; +@@ -766,9 +737,7 @@ del_char_term(user, num) + /* Redraw a user's window. + */ + void +-redraw_term(user, y) +- register yuser *user; +- register int y; ++redraw_term(yuser *user, int y) + { + register int x, spaces; + register ychar *c; +@@ -815,9 +784,7 @@ redraw_term(user, y) + * the given height and width. + */ + static int +-first_interesting_row(user, height, width) +- yuser *user; +- int height, width; ++first_interesting_row(yuser *user, int height, int width) + { + register int j, i; + register ychar *c; +@@ -851,9 +818,7 @@ first_interesting_row(user, height, width) + /* Called when a user's window has been resized. + */ + void +-resize_win(user, height, width) +- yuser *user; +- int height, width; ++resize_win(yuser *user, int height, int width) + { + register int j, i; + register ychar *c, **newscr; +@@ -939,10 +904,7 @@ resize_win(user, height, width) + /* Draw a nice box. + */ + static void +-draw_box(user, height, width, c) +- yuser *user; +- int height, width; +- char c; ++draw_box(yuser *user, int height, int width, char c) + { + register int i; + +@@ -976,9 +938,7 @@ draw_box(user, height, width, c) + /* Set the virtual terminal size, ie: the display region. + */ + void +-set_win_region(user, height, width) +- yuser *user; +- int height, width; ++set_win_region(yuser *user, int height, int width) + { + register int x, y; + int old_height, old_width; +@@ -1029,8 +989,7 @@ set_win_region(user, height, width) + /* Set the virtual terminal size, ie: the display region. + */ + void +-end_win_region(user) +- yuser *user; ++end_win_region(yuser *user) + { + int old_height, old_width; + +@@ -1050,9 +1009,7 @@ end_win_region(user) + /* Set the scrolling region. + */ + void +-set_scroll_region(user, top, bottom) +- yuser *user; +- int top, bottom; ++set_scroll_region(yuser *user, int top, int bottom) + { + if(top < 0 || top >= user->rows || bottom >= user->rows || bottom < top + || (bottom <= 0 && top <= 0)) +@@ -1069,9 +1026,7 @@ set_scroll_region(user, top, bottom) + /* Send a message to the terminal. + */ + void +-msg_term(user, str) +- yuser *user; +- char *str; ++msg_term(yuser *user, char *str) + { + int y; + +@@ -1090,9 +1045,7 @@ msg_term(user, str) + /* Spew terminal contents to a file descriptor. + */ + void +-spew_term(user, fd, rows, cols) +- yuser *user; +- int fd, rows, cols; ++spew_term(yuser *user, int fd, int rows, int cols) + { + register ychar *c, *e; + register int len; +@@ -1157,11 +1110,7 @@ spew_term(user, fd, rows, cols) + * This is an unadvertised function. + */ + void +-raw_term(user, y, x, str, len) +- yuser *user; +- int y, x; +- ychar *str; +- int len; ++raw_term(yuser *user, int y, int x, ychar *str, int len) + { + register ychar *c; + +@@ -1182,8 +1131,7 @@ raw_term(user, y, x, str, len) + } + + int +-center(width, n) +- int width, n; ++center(int width, int n) + { + if(n >= width) + return 0; Index: patches/patch-user_c =================================================================== RCS file: patches/patch-user_c diff -N patches/patch-user_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-user_c 2 Jun 2026 09:56:49 -0000 @@ -0,0 +1,74 @@ +Index: user.c +--- user.c.orig ++++ user.c +@@ -38,8 +38,7 @@ static ylong daemon_id; /* running daemon ID counter * + static int passwd_opened = 0; + + static char * +-user_name(uid) +- int uid; ++user_name(int uid) + { + register struct passwd *pw; + passwd_opened = 1; +@@ -59,8 +58,7 @@ close_passwd() + } + + void +-generate_full_name(user) +- yuser *user; ++generate_full_name(yuser *user) + { + register char *c, *d, *ce; + +@@ -88,8 +86,7 @@ generate_full_name(user) + } + + static void +-assign_key(user) +- yuser *user; ++assign_key(yuser *user) + { + register ychar old; + static ychar key = 'a'; +@@ -120,8 +117,7 @@ assign_key(user) + /* Initialize user data structures. + */ + void +-init_user(vhost) +-char *vhost; ++init_user(char *vhost) + { + int my_uid; + char *my_name, *my_vhost; +@@ -196,8 +192,7 @@ char *vhost; + /* Create a new user record. + */ + yuser * +-new_user(name, hostname, tty) +- char *name, *hostname, *tty; ++new_user(char *name, char *hostname, char *tty) + { + register yuser *out, *u; + ylong addr; +@@ -255,8 +250,7 @@ new_user(name, hostname, tty) + } + + void +-free_user(user) +- yuser *user; ++free_user(yuser *user) + { + register yuser *u; + +@@ -328,9 +322,7 @@ free_user(user) + * then it is not checked. + */ + yuser * +-find_user(name, host_addr, pid) +- char *name; +- ylong host_addr, pid; ++find_user(char *name, ylong host_addr, ylong pid) + { + register yuser *u; + Index: patches/patch-xwin_c =================================================================== RCS file: patches/patch-xwin_c diff -N patches/patch-xwin_c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-xwin_c 2 Jun 2026 09:37:08 -0000 @@ -0,0 +1,161 @@ +Index: xwin.c +--- xwin.c.orig ++++ xwin.c +@@ -43,8 +43,7 @@ static int font_width, /* font width */ + /* ----- local functions ----- */ + + static XTextProperty * +-strToTP(s) +- char *s; ++strToTP(char *s) + { + XTextProperty *tp = (XTextProperty *)get_mem(sizeof(XTextProperty)); + XStringListToTextProperty(&s, 1, tp); +@@ -52,8 +51,7 @@ strToTP(s) + } + + static char * +-getOption(o) +- char *o; ++getOption(char *o) + { + XrmValue value; + char *type; +@@ -73,9 +71,7 @@ getOption(o) + } + + static void +-load_font(name, font) +- char *name; +- XFontStruct **font; ++load_font(char *name, XFontStruct **font) + { + if((*font = XLoadQueryFont(display, name)) == NULL) + { +@@ -86,11 +82,8 @@ load_font(name, font) + } + + static void +-make_GC(gc, font, fgpixel, bgpixel, l_width, l_style, l_cap, l_join, gcfunc) +- GC *gc; +- XFontStruct *font; +- ylong fgpixel, bgpixel; +- int l_width, l_style, l_cap, l_join, gcfunc; ++make_GC(GC *gc, XFontStruct *font, ylong fgpixel, ylong bgpixel, ++ int l_width, int l_style, int l_cap, int l_join, int gcfunc) + { + ylong mask = 0; + XGCValues values; +@@ -119,8 +112,7 @@ make_GC(gc, font, fgpixel, bgpixel, l_width, l_style, + /* Find the user who owns a given Window. + */ + static yuser * +-win_user(win) +- Window win; ++win_user(Window win) + { + register yuser *u; + +@@ -169,9 +161,7 @@ process_event() + } + + static void +-place_cursor(win, y, x) +- Window win; +- int y, x; ++place_cursor(Window win, int y, int x) + { + XFillRectangle(display, win, invertGC, + XPOS(x), YPOS(y), +@@ -262,9 +252,7 @@ end_xwin() + /* Open a new window. + */ + int +-open_xwin(user, title) +- yuser *user; +- char *title; ++open_xwin(yuser *user, char *title) + { + XWMHints WMhints; + XClassHint ClassHints; +@@ -320,17 +308,14 @@ open_xwin(user, title) + } + + void +-close_xwin(user) +- yuser *user; ++close_xwin(yuser *user) + { + XDestroyWindow(display, user->win); + user->win = (Window)0; + } + + void +-addch_xwin(user, ch) +- yuser *user; +- ychar ch; ++addch_xwin(yuser *user, ychar ch) + { + XClearArea(display, user->win, + XPOS(user->tx), YPOS(user->ty), +@@ -346,9 +331,7 @@ addch_xwin(user, ch) + } + + void +-move_xwin(user, y, x) +- yuser *user; +- int y, x; ++move_xwin(yuser *user, int y, int x) + { + place_cursor(user->win, user->ty, user->tx); + user->ty = y; +@@ -357,8 +340,7 @@ move_xwin(user, y, x) + } + + void +-clreol_xwin(user) +- yuser *user; ++clreol_xwin(yuser *user) + { + XClearArea(display, user->win, + XPOS(user->tx), YPOS(user->ty), +@@ -368,8 +350,7 @@ clreol_xwin(user) + } + + void +-clreos_xwin(user) +- yuser *user; ++clreos_xwin(yuser *user) + { + XClearArea(display, user->win, + XPOS(user->tx), YPOS(user->ty), +@@ -383,8 +364,7 @@ clreos_xwin(user) + } + + void +-scroll_xwin(user) +- yuser *user; ++scroll_xwin(yuser *user) + { + place_cursor(user->win, user->ty, user->tx); + XCopyArea(display, user->win, user->win, textGC, +@@ -399,8 +379,7 @@ scroll_xwin(user) + } + + void +-rev_scroll_xwin(user) +- yuser *user; ++rev_scroll_xwin(yuser *user) + { + place_cursor(user->win, user->ty, user->tx); + XCopyArea(display, user->win, user->win, textGC, +@@ -415,8 +394,7 @@ rev_scroll_xwin(user) + } + + void +-flush_xwin(user) +- yuser *user; ++flush_xwin(yuser *user) + { + /* "user" is unused -- sorry, lint :-) */ + XFlush(display); Index: patches/patch-xwin_h =================================================================== RCS file: patches/patch-xwin_h diff -N patches/patch-xwin_h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-xwin_h 2 Jun 2026 09:36:29 -0000 @@ -0,0 +1,32 @@ +Index: xwin.h +--- xwin.h.orig ++++ xwin.h +@@ -18,17 +18,17 @@ + + #ifdef USE_X11 + +-extern void init_xwin (); +-extern void end_xwin (); +-extern int open_xwin ( /* yuser, title */ ); +-extern void close_xwin ( /* yuser */ ); +-extern void addch_xwin ( /* yuser, char */ ); +-extern void move_xwin ( /* yuser, y, x */ ); +-extern void clreol_xwin ( /* yuser */ ); +-extern void clreos_xwin ( /* yuser */ ); +-extern void scroll_xwin ( /* yuser */ ); +-extern void rev_scroll_xwin ( /* yuser */ ); +-extern void flush_xwin ( /* yuser */ ); ++extern void init_xwin (void); ++extern void end_xwin (void); ++extern int open_xwin (yuser *, char *); ++extern void close_xwin (yuser *); ++extern void addch_xwin (yuser *, ychar); ++extern void move_xwin (yuser *, int, int); ++extern void clreol_xwin (yuser *); ++extern void clreos_xwin (yuser *); ++extern void scroll_xwin (yuser *); ++extern void rev_scroll_xwin (yuser *); ++extern void flush_xwin (yuser *); + + #endif +
