diff options
author | powwow@askgustav.com <powwow@askgustav.com> | 2019-03-18 23:05:26 (GMT) |
---|---|---|
committer | Steve Slaven <bpk@hoopajoo.net> | 2019-04-23 20:37:05 (GMT) |
commit | 304a722c426f47a461dc88c4493f800c0690b29b (patch) | |
tree | 151b974354c0c7ec4e89649a949db32f11b56442 | |
parent | 7db984561ef8fd0ff9165288324dbc81516113f0 (diff) | |
download | powwow-304a722c426f47a461dc88c4493f800c0690b29b.zip powwow-304a722c426f47a461dc88c4493f800c0690b29b.tar.gz powwow-304a722c426f47a461dc88c4493f800c0690b29b.tar.bz2 |
remove some non-ANSI C support
-rw-r--r-- | ChangeLog.old | 1 | ||||
-rw-r--r-- | Hacking | 19 | ||||
-rw-r--r-- | beam.c | 94 | ||||
-rw-r--r-- | beam.h | 10 | ||||
-rw-r--r-- | catrw.c | 2 | ||||
-rw-r--r-- | cmd.c | 469 | ||||
-rw-r--r-- | cmd.h | 4 | ||||
-rw-r--r-- | cmd2.c | 313 | ||||
-rw-r--r-- | cmd2.h | 58 | ||||
-rw-r--r-- | defines.h | 64 | ||||
-rw-r--r-- | edit.c | 196 | ||||
-rw-r--r-- | edit.h | 80 | ||||
-rw-r--r-- | eval.c | 294 | ||||
-rw-r--r-- | eval.h | 10 | ||||
-rw-r--r-- | follow.c | 8 | ||||
-rw-r--r-- | list.c | 116 | ||||
-rw-r--r-- | list.h | 78 | ||||
-rw-r--r-- | log.c | 68 | ||||
-rw-r--r-- | log.h | 16 | ||||
-rw-r--r-- | main.c | 484 | ||||
-rw-r--r-- | main.h | 26 | ||||
-rw-r--r-- | map.c | 26 | ||||
-rw-r--r-- | map.h | 12 | ||||
-rw-r--r-- | powwow-movieplay.c | 4 | ||||
-rw-r--r-- | ptr.c | 104 | ||||
-rw-r--r-- | ptr.h | 58 | ||||
-rw-r--r-- | tcp.c | 184 | ||||
-rw-r--r-- | tcp.h | 34 | ||||
-rw-r--r-- | tty.c | 96 | ||||
-rw-r--r-- | tty.h | 61 | ||||
-rw-r--r-- | utils.c | 250 | ||||
-rw-r--r-- | utils.h | 66 |
32 files changed, 1614 insertions, 1691 deletions
diff --git a/ChangeLog.old b/ChangeLog.old index 9b4a97a..b459ac1 100644 --- a/ChangeLog.old +++ b/ChangeLog.old @@ -1,5 +1,6 @@ 2019-03-18 powwow@askgustav.com <powwow@askgustav.com> * handle more control characters in prompts + * drop support for non-ANSI C Changes from 1.2.4 to 1.2.5 (Massimiliano Ghilardi, ...) 21 Jan 2002 * Added append-mode to #capture: use #capture >file-name @@ -7,25 +7,6 @@ improve powwow, fix bugs or just have fun: maintain his own code, who can?). If you write any new functions, ok, use your own style as long as it's clear and consistent. -* For portability, powwow is written using a few #defines that can - generate either K&R and ANSI function prototypes depending on the compiler, - so that it (should) compile fine in both cases. - If people convince me that non-ANSI compilers are rare enough these days, - we could switch to ANSI-only prototypes. Even then, please, do NOT - use any gcc-specific features (I've seen the char constant '\e' in some - places) even if gcc is very common. Our goal should be to let the - maximum number of people use powwow. (Most non-ANSI compilers grok - void and unsigned, so these are safe to use.) - -* For the same reason, do NOT use C++ style comments // - -* To sum it up, assume that the user has: - - a non-ANSI C compiler (use the __P, __P0, __P1, ... defines!) - - an exotic non-VT100 terminal (use TERMCAP!), possibly on a slow line - - a slow workstation, or a larger computer shared by 100 users and - aggressive sysadmins who think that mudding doesn't justify 10% or - even 5% CPU load. - * Document your changes! A brief report of changes in the Changelog file is absolutely necessary. So is updating the doc files (powwow.doc, powwow_help and README) Also, sending an e-mail to the code author/mantainer documenting @@ -37,10 +37,10 @@ editsess *edit_sess; /* head of session list */ -char edit_start[BUFSIZE]; /* messages to send to host when starting */ -char edit_end[BUFSIZE]; /* or leaving editing sessions */ +char edit_start[BUFSIZE]; /* messages to send to host when starting */ +char edit_end[BUFSIZE]; /* or leaving editing sessions */ -static void write_message __P1 (char *,s) +static void write_message(char *s) { clear_input_line(opt_compact); if (!opt_compact) { @@ -54,7 +54,7 @@ static void write_message __P1 (char *,s) * Process editing protocol message from buf with len remaining chars. * Return number of characters used in the message. */ -int process_message __P2 (char *,buf, int,len) +int process_message(char *buf, int len) { int msglen, i, l, used; char *text, *from, *to; @@ -62,17 +62,17 @@ int process_message __P2 (char *,buf, int,len) int got_iac; status(1); - + msglen = atoi(buf + 1); for (i = 1; i < len && isdigit(buf[i]); i++) ; - + if (i < len && buf[i] == '\r') i++; if (i >= len || buf[i] != '\n') { write_message ("#warning: MPI protocol error\n"); return 0; } - + l = len - ++i; text = (char *)malloc(msglen); @@ -125,7 +125,7 @@ int process_message __P2 (char *,buf, int,len) tty_flush(); } tty_printf("\rread all %d chars.%s\n", msglen, tty_clreoln); - + switch(*buf) { case 'E': message_edit(text, msglen, 0, 0); @@ -147,18 +147,18 @@ int process_message __P2 (char *,buf, int,len) * abort an editing session when * the MUD socket it comes from gets closed */ -void abort_edit_fd __P1 (int,fd) +void abort_edit_fd(int fd) { editsess **sp, *p; if (fd < 0) return; - + for (sp = &edit_sess; *sp; sp = &(*sp)->next) { p = *sp; if (p->fd != fd) continue; - + if (kill(p->pid, SIGKILL) < 0) { /* Editicide */ errmsg("kill editor child"); continue; @@ -173,11 +173,11 @@ void abort_edit_fd __P1 (int,fd) * cancel an editing session; does not free anything * (the child death signal handler will remove the session from the list) */ -void cancel_edit __P1 (editsess *,sp) +void cancel_edit(editsess *sp) { char buf[BUFSIZE]; char keystr[16]; - + if (kill(sp->pid, SIGKILL) < 0) { /* Editicide */ errmsg("kill editor child"); return; @@ -212,16 +212,16 @@ static ssize_t read_file(int fd, void *buf, size_t count) * send back edited text to server, or cancel the editing session if the * file was not changed. */ -static void finish_edit __P1 (editsess *,sp) +static void finish_edit(editsess *sp) { char *realtext = NULL, *text; int fd, txtlen, hdrlen; struct stat sbuf; char keystr[16], buf[256], hdr[65]; - + if (sp->fd == -1) goto cleanup_file; - + fd = open(sp->file, O_RDONLY); if (fd == -1) { errmsg("open edit file"); @@ -231,19 +231,19 @@ static void finish_edit __P1 (editsess *,sp) errmsg("fstat edit file"); goto cleanup_fd; } - + txtlen = sbuf.st_size; - + if (!sp->cancel && (sbuf.st_mtime > sp->ctime || txtlen != sp->oldsize)) { /* file was changed by editor: send back result to server */ - + realtext = (char *)malloc(txtlen + 65); /* +1 is for possible LF, +64 for header */ if (!realtext) { errmsg("malloc"); goto cleanup_fd; } - + text = realtext + 64; txtlen = read_file(fd, text, txtlen); if (txtlen < 0) @@ -255,30 +255,30 @@ static void finish_edit __P1 (editsess *,sp) text[txtlen] = '\n'; txtlen++; } - + sprintf(keystr, "E%u\n", sp->key); - + sprintf(hdr, "%sE%d\n%s", MPI, (int)(txtlen + strlen(keystr)), keystr); - + text -= (hdrlen = strlen(hdr)); memcpy(text, hdr, hdrlen); - + /* text[hdrlen + txtlen] = '\0'; */ tcp_write_escape_iac(sp->fd, text, hdrlen + txtlen); - + sprintf(buf, "#completed session %s (%u)\n", sp->descr, sp->key); write_message(buf); } else { /* file wasn't changed, cancel editing session */ sprintf(keystr, "C%u\n", sp->key); sprintf(hdr, "%sE%d\n%s", MPI, (int) strlen(keystr), keystr); - + tcp_raw_write(sp->fd, hdr, strlen(hdr)); - + sprintf(buf, "#cancelled session %s (%u)\n", sp->descr, sp->key); write_message(buf); } - + cleanup_text: if (realtext) free(realtext); cleanup_fd: close(fd); cleanup_file: if (unlink(sp->file) < 0) @@ -289,7 +289,7 @@ cleanup_file: if (unlink(sp->file) < 0) * start an editing session: process the EDIT/VIEW message * if view == 1, text will be viewed, else edited */ -void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) +void message_edit(char *text, int msglen, char view, char builtin) { char tmpname[BUFSIZE], command_str[BUFSIZE], buf[BUFSIZE]; char *errdesc = "#warning: protocol error (message_edit, no %s)\n"; @@ -299,11 +299,11 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) char *editor, *descr; char *args[4]; int waitforeditor; - + status(1); args[0] = "/bin/sh"; args[1] = "-c"; - args[2] = command_str; args[3] = 0; + args[2] = command_str; args[3] = 0; if (view) { key = (unsigned int)-1; @@ -331,7 +331,7 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) return; } text[i++] = '\0'; - + sprintf(tmpname, "/tmp/powwow.%u.%d%d", key, getpid(), abs(rand()) >> 8); if ((tmpfd = open(tmpname, O_WRONLY | O_CREAT, 0600)) < 0) { errmsg("create temp edit file"); @@ -345,7 +345,7 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) return; } close(tmpfd); - + s = (editsess*)malloc(sizeof(editsess)); if (!s) { errmsg("malloc"); @@ -359,14 +359,14 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) s->descr = my_strdup(descr); s->file = my_strdup(tmpname); free(text); - - /* send a edit_start message (if wanted) */ + + /* send a edit_start message (if wanted) */ if ((!edit_sess) && (*edit_start)) { error = 0; parse_instruction(edit_start, 0, 0, 1); history_done = 0; } - + if (view) { if (!(editor = getenv("POWWOWPAGER")) && !(editor = getenv("PAGER"))) editor = "more"; @@ -374,13 +374,13 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) if (!(editor = getenv("POWWOWEDITOR")) && !(editor = getenv("EDITOR"))) editor = "emacs"; } - + if (editor[0] == '&') { waitforeditor = 0; editor++; } else waitforeditor = 1; - + if (waitforeditor) { tty_quit(); /* ignore SIGINT since interrupting the child would interrupt us too, @@ -388,7 +388,7 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) sig_permanent(SIGINT, SIG_IGN); sig_permanent(SIGCHLD, SIG_DFL); } - + switch(childpid = fork()) { /* let's get schizophrenic */ case 0: sprintf(command_str, "%s %s", editor, s->file); @@ -412,17 +412,17 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) signal_start(); /* reset SIGINT and SIGCHLD handlers */ tty_start(); - + if (s->fd != -1) { tty_gotoxy(0, lines - 1); tty_putc('\n'); } - + if (i == -1) errmsg("waitpid"); else finish_edit(s); - + free(s->descr); free(s->file); if (i != -1 && !edit_sess && *edit_end) { @@ -430,9 +430,9 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) parse_instruction(edit_end, 0, 0, 1); history_done = 0; } - + free(s); - + } else { s->next = edit_sess; edit_sess = s; @@ -443,11 +443,11 @@ void message_edit __P4 (char *,text, int,msglen, char,view, char,builtin) * Our child has snuffed it. check if it was an editor, and update the * session list if that is the case. */ -void sig_chld_bottomhalf __P0 (void) +void sig_chld_bottomhalf(void) { int fd, pid, ret; editsess **sp, *p; - + /* GH: while() instead of just one check */ while ((pid = waitpid(-1, &ret, WNOHANG)) > 0) { @@ -465,7 +465,7 @@ void sig_chld_bottomhalf __P0 (void) /* GH: only send message if found matching session */ - /* send the edit_end message if this is the last editor... */ + /* send the edit_end message if this is the last editor... */ if ((!edit_sess) && (*edit_end)) { int otcp_fd = tcp_fd; /* backup current socket fd */ tcp_fd = fd; @@ -3,11 +3,11 @@ #ifndef _BEAM_H_ #define _BEAM_H_ -int process_message __P ((char *buf, int len)); -void cancel_edit __P ((editsess *sp)); -void abort_edit_fd __P ((int fd)); -void message_edit __P ((char *text, int msglen, char view, char builtin)); -void sig_chld_bottomhalf __P ((void)); +int process_message(char *buf, int len); +void cancel_edit(editsess *sp); +void abort_edit_fd(int fd); +void message_edit(char *text, int msglen, char view, char builtin); +void sig_chld_bottomhalf(void); extern char edit_start[]; extern char edit_end[]; @@ -1,6 +1,6 @@ /* * catrw.c -- open a file with O_RDWR and print it. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -2,7 +2,7 @@ * cmd.c -- functions for powwow's built-in #commands * * (created: Finn Arne Gangstad (Ilie), Dec 25th, 1993) - * + * * Copyright (C) 1998 by Massimiliano Ghilardi * * This program is free software; you can redistribute it and/or modify @@ -12,6 +12,7 @@ * */ +#include <limits.h> #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -45,30 +46,30 @@ #include "log.h" /* local function declarations */ -#define _ __P ((char *arg)) - -static void cmd_help _, cmd_shell _, cmd_action _, cmd_add _, - cmd_addstatic _, cmd_alias _, cmd_at _, cmd_beep _, cmd_bind _, - cmd_cancel _, cmd_capture _, cmd_clear _, cmd_connect _, cmd_cpu _, - cmd_do _, cmd_delim _, cmd_edit _, cmd_emulate _, cmd_exe _, - cmd_file _, cmd_for _, cmd_hilite _, cmd_history _, cmd_host _, - cmd_identify _, cmd_if _, cmd_in _, cmd_init _, cmd_isprompt _, - cmd_key _, cmd_keyedit _, - cmd_load _, cmd_map _, cmd_mark _, cmd_movie _, - cmd_net _, cmd_nice _, cmd_option _, - cmd_prefix _, cmd_print _, cmd_prompt _, cmd_put _, - cmd_qui _, cmd_quit _, cmd_quote _, - cmd_rawsend _, cmd_rawprint _, cmd_rebind _, cmd_rebindall _, cmd_rebindALL _, - cmd_record _, cmd_request _, cmd_reset _, cmd_retrace _, - cmd_save _, cmd_send _, cmd_setvar _, cmd_snoop _, cmd_spawn _, cmd_stop _, - cmd_time _, cmd_var _, cmd_ver _, cmd_while _, cmd_write _, - cmd_eval _, cmd_zap _, cmd_module _, cmd_group _, cmd_speedwalk _, cmd_groupdelim _; +#define F(name) cmd_ ## name(char *arg) + +static void F(help), F(shell), F(action), F(add), + F(addstatic), F(alias), F(at), F(beep), F(bind), + F(cancel), F(capture), F(clear), F(connect), F(cpu), + F(do), F(delim), F(edit), F(emulate), F(exe), + F(file), F(for), F(hilite), F(history), F(host), + F(identify), F(if), F(in), F(init), F(isprompt), + F(key), F(keyedit), + F(load), F(map), F(mark), F(movie), + F(net), F(nice), F(option), + F(prefix), F(print), F(prompt), F(put), + F(qui), F(quit), F(quote), + F(rawsend), F(rawprint), F(rebind), F(rebindall), F(rebindALL), + F(record), F(request), F(reset), F(retrace), + F(save), F(send), F(setvar), F(snoop), F(spawn), F(stop), + F(time), F(var), F(ver), F(while), F(write), + F(eval), F(zap), F(module), F(group), F(speedwalk), F(groupdelim); #ifdef BUG_TELNET -static void cmd_color _; +static void F(color); #endif -#undef _ +#undef F /* This must be init'd now at runtime */ cmdstruct *commands = NULL; @@ -262,7 +263,7 @@ void cmd_add_command( cmdstruct *cmd ) { * but if a module defined the command in the global static * space, it would create an infinite loop because the -> next * ptr would point at itself - * + * * doing it up front because based on the sortname, we may never see * the dup item if we do it at sort time */ @@ -273,7 +274,7 @@ void cmd_add_command( cmdstruct *cmd ) { } } - + /* catch insertion to head of list */ if( commands == NULL ) { /* no commands yet */ @@ -318,7 +319,7 @@ void initialize_cmd(void) { } #ifdef HAVE_LIBDL -static void cmd_module __P1 (char *,arg) { +static void cmd_module(char *arg) { char libname[1024]; void *lib; void (*func)(); @@ -374,7 +375,7 @@ static void cmd_module __P1 (char *,arg) { } #endif -static void cmd_group __P1 (char *,arg) { +static void cmd_group(char *arg) { char *group; int active; aliasnode *p; @@ -417,7 +418,7 @@ static void cmd_group __P1 (char *,arg) { } } -static void cmd_groupdelim __P1 (char *,arg) { +static void cmd_groupdelim(char *arg) { if( *arg != 0 ) { free( group_delim ); group_delim = my_strdup( arg ); @@ -425,7 +426,7 @@ static void cmd_groupdelim __P1 (char *,arg) { } } -static void cmd_help __P1 (char *,arg) +static void cmd_help(char *arg) { int i, size; char *text, *tmp; @@ -433,14 +434,14 @@ static void cmd_help __P1 (char *,arg) char line[BUFSIZE]; int len; cmdstruct *c; - + arg = skipspace(arg); if (*arg == '#') arg++; if (!*arg) { size = 25; for( c = commands; c != NULL; c = c -> next ) size += strlen(c -> name) + strlen(c -> help) + 5; - + text = tmp = (char *)malloc(size); if (!text) { errmsg("malloc"); @@ -455,20 +456,20 @@ static void cmd_help __P1 (char *,arg) sprintf(tmp, "#%s %s\n", c -> name, c -> help); tmp += strlen(tmp); } - + message_edit(text, strlen(text), 1, 1); return; } - + if (!strncmp(arg, "copyright", strlen(arg))) { int fd, left, got = 0; struct stat stbuf; - + if (stat(copyfile, &stbuf) < 0) { errmsg("stat(copyright file)"); return; } - + if (!(text = (char *)malloc(left = stbuf.st_size))) { errmsg("malloc"); return; @@ -495,20 +496,20 @@ static void cmd_help __P1 (char *,arg) message_edit(text, strlen(text), 1, 1); return; } - + /* !copyright */ - + f = fopen(helpfile, "r"); if (!f) { PRINTF("#cannot open help file \"%s\": %s\n", helpfile, strerror(errno)); return; } - + while ((tmp = fgets(line, BUFSIZE, f)) && (line[0] != '@' || strncmp(line + 1, arg, strlen(arg)))) ; - + if (!tmp) { PRINTF("#no entry for \"%s\" in the help file.\n", arg); fclose(f); @@ -532,7 +533,7 @@ static void cmd_help __P1 (char *,arg) do { if ((len = strlen(line)) >= size - i) { /* Not enough space in current buffer */ - + if (!(tmp = (char *)malloc(size += BUFSIZE))) { errmsg("malloc"); free(text); @@ -547,13 +548,13 @@ static void cmd_help __P1 (char *,arg) memcpy(text + i, line, len); i += len; } while (fgets(line, BUFSIZE, f) && line[0] != '@'); - + fclose(f); text[i] = '\0'; /* safe, there is space */ message_edit(text, strlen(text), 1, 1); } -static void cmd_clear __P1 (char *,arg) +static void cmd_clear(char *arg) { if (line_status == 0) { clear_input_line(opt_compact); @@ -566,7 +567,7 @@ static void cmd_clear __P1 (char *,arg) } #ifndef NO_SHELL -static void cmd_shell __P1 (char *,arg) +static void cmd_shell(char *arg) { if (!*arg) { if (opt_info) { @@ -586,7 +587,7 @@ static void cmd_shell __P1 (char *,arg) } #endif -static void cmd_alias __P1 (char *,arg) +static void cmd_alias(char *arg) { arg = skipspace(arg); if (!*arg) @@ -595,7 +596,7 @@ static void cmd_alias __P1 (char *,arg) parse_alias(arg); } -static void cmd_action __P1 (char *,arg) +static void cmd_action(char *arg) { arg = skipspace(arg); if (!*arg) @@ -604,7 +605,7 @@ static void cmd_action __P1 (char *,arg) parse_action(arg, 0); } -static void cmd_prompt __P1 (char *,arg) +static void cmd_prompt(char *arg) { arg = skipspace(arg); if (!*arg) @@ -613,7 +614,7 @@ static void cmd_prompt __P1 (char *,arg) parse_action(arg, 1); } -static void cmd_beep __P1 (char *,arg) +static void cmd_beep(char *arg) { tty_putc('\007'); } @@ -621,7 +622,7 @@ static void cmd_beep __P1 (char *,arg) /* * create/list/edit/delete bindings */ -static void cmd_bind __P1 (char *,arg) +static void cmd_bind(char *arg) { arg = skipspace(arg); if (!*arg) @@ -632,7 +633,7 @@ static void cmd_bind __P1 (char *,arg) parse_bind(arg); } -static void cmd_delim __P1 (char *,arg) +static void cmd_delim(char *arg) { char buf[BUFSIZE]; int n; @@ -647,7 +648,7 @@ static void cmd_delim __P1 (char *,arg) n = 0; while (n < DELIM_MODES && strncmp(delim_name[n], buf, strlen(buf)) != 0) n++; - + if (n >= DELIM_MODES) { PRINTF("#delim [normal|program|{custom <chars>}\n"); return; @@ -665,11 +666,11 @@ static void cmd_delim __P1 (char *,arg) delim_mode = n; } -static void cmd_do __P1 (char *,arg) +static void cmd_do(char *arg) { int type; long result; - + arg = skipspace(arg); if (*arg != '(') { PRINTF("#do: "); @@ -677,16 +678,16 @@ static void cmd_do __P1 (char *,arg) return; } arg++; - + type = evall(&result, &arg); if (REAL_ERROR) return; - + if (type != TYPE_NUM) { PRINTF("#do: "); print_error(error=NO_NUM_VALUE_ERROR); return; } - + if (*arg == ')') { /* skip the ')' */ if (*++arg == ' ') arg++; @@ -696,7 +697,7 @@ static void cmd_do __P1 (char *,arg) print_error(error=MISSING_PAREN_ERROR); return; } - + if (result >= 0) while (!error && result--) (void)parse_instruction(arg, 1, 0, 1); @@ -705,10 +706,10 @@ static void cmd_do __P1 (char *,arg) } } -static void cmd_hilite __P1 (char *,arg) +static void cmd_hilite(char *arg) { int attr; - + arg = skipspace(arg); attr = parse_attributes(arg); if (attr == -1) { @@ -720,7 +721,7 @@ static void cmd_hilite __P1 (char *,arg) edattrbg = ATTR(attr) & ATTR_INVERSE ? 1 : BACKGROUND(attr) != NO_COLOR || ATTR(attr) & ATTR_BLINK; - + if (opt_info) { PRINTF("#input highlighting is now %so%s%s.\n", edattrbeg, (attr == NOATTRCODE) ? "ff" : "n", @@ -729,19 +730,19 @@ static void cmd_hilite __P1 (char *,arg) } } -static void cmd_history __P1 (char *,arg) +static void cmd_history(char *arg) { int num = 0; long buf; - + arg = skipspace(arg); - + if (history_done >= MAX_HIST) { print_error(error=HISTORY_RECURSION_ERROR); return; } history_done++; - + if (*arg == '(') { arg++; num = evall(&buf, &arg); @@ -755,17 +756,17 @@ static void cmd_history __P1 (char *,arg) num = (int)buf; } else num = atoi(arg); - + if (num > 0) - exe_history(num); + exe_history(num); else show_history(-num); } -static void cmd_host __P1 (char *,arg) +static void cmd_host(char *arg) { char newhost[BUFSIZE]; - + arg = skipspace(arg); if (*arg) { arg = split_first_word(newhost, BUFSIZE, arg); @@ -786,13 +787,13 @@ static void cmd_host __P1 (char *,arg) } } -static void cmd_request __P1 (char *,arg) +static void cmd_request(char *arg) { char *idprompt = "~$#EP2\nG\n"; char *ideditor = "~$#EI\n"; char buf[256]; int all, len; - + if (tcp_fd == -1) { PRINTF("#not connected to a MUD!\n"); return; @@ -818,10 +819,10 @@ static void cmd_request __P1 (char *,arg) } } } - + } -static void cmd_identify __P1 (char *,arg) +static void cmd_identify(char *arg) { edit_start[0] = edit_end[0] = '\0'; if (*arg) { @@ -835,28 +836,28 @@ static void cmd_identify __P1 (char *,arg) cmd_request("editor"); } -static void cmd_in __P1 (char *,arg) +static void cmd_in(char *arg) { char *name; long millisec, buf; int type; delaynode **p; - + arg = skipspace(arg); if (!*arg) { show_delays(); return; } - + arg = first_regular(name = arg, ' '); if (*arg) *arg++ = 0; - + unescape(name); - + p = lookup_delay(name, 0); if (!*p) p = lookup_delay(name, 1); - + if (!*arg && !*p) { PRINTF("#unknown delay label, cannot show: \"%s\"\n", name); return; @@ -871,7 +872,7 @@ static void cmd_in __P1 (char *,arg) return; } arg++; /* skip the '(' */ - + type = evall(&buf, &arg); if (!REAL_ERROR) { if (type!=TYPE_NUM) @@ -884,7 +885,7 @@ static void cmd_in __P1 (char *,arg) print_error(error); return; } - + arg = skipspace(arg+1); millisec = buf; if (*p && millisec) @@ -905,7 +906,7 @@ static void cmd_in __P1 (char *,arg) } } -static void cmd_at __P1 (char *,arg) +static void cmd_at(char *arg) { char *name, *buf = NULL; char dayflag=0; @@ -914,22 +915,22 @@ static void cmd_at __P1 (char *,arg) delaynode **p; long millisec; ptr pbuf = (ptr)0; - + arg = skipspace(arg); if (!*arg) { show_delays(); return; } - + arg = first_regular(name = arg, ' '); if (*arg) *arg++ = 0; - + unescape(name); - + p = lookup_delay(name, 0); if (!*p) p = lookup_delay(name, 1); - + if (!*arg && !*p) { PRINTF("#unknown delay label, cannot show: \"%s\"\n", name); return; @@ -944,7 +945,7 @@ static void cmd_at __P1 (char *,arg) return; } arg++; /* skip the '(' */ - + (void)evalp(&pbuf, &arg); if (REAL_ERROR) { print_error(error); @@ -967,7 +968,7 @@ static void cmd_at __P1 (char *,arg) } if (hour < 0 || hour>23 || minute < 0 || minute>59 || second < 0 || second>59) { - + PRINTF("#at: #error: invalid time \"%s\"\n", pbuf && buf ? buf : (char *)""); error=OUT_RANGE_ERROR; @@ -985,15 +986,15 @@ static void cmd_at __P1 (char *,arg) print_error(error=MISSING_PAREN_ERROR); return; } - + arg = skipspace(arg); update_now(); - twhen = localtime((time_t *)&now.tv_sec); + twhen = localtime((time_t *)&now.tv_sec); /* put current year, month, day in calendar struct */ - if (hour < twhen->tm_hour || - (hour == twhen->tm_hour && - (minute < twhen->tm_min || + if (hour < twhen->tm_hour || + (hour == twhen->tm_hour && + (minute < twhen->tm_min || (minute == twhen->tm_min && second <= twhen->tm_sec)))) { dayflag = 1; @@ -1001,13 +1002,13 @@ static void cmd_at __P1 (char *,arg) } /* if you use a time smaller than the current, it refers to tomorrow */ - - millisec = (hour - twhen->tm_hour) * 3600 + (minute - twhen->tm_min) * 60 + + + millisec = (hour - twhen->tm_hour) * 3600 + (minute - twhen->tm_min) * 60 + second - twhen->tm_sec + (dayflag ? 24*60*60 : 0); millisec *= mSEC_PER_SEC; /* Comparing time with current calendar, we finally got the delay */ millisec -= now.tv_usec / uSEC_PER_mSEC; - + if (*p) change_delaynode(p, arg, millisec); else @@ -1018,10 +1019,10 @@ static void cmd_at __P1 (char *,arg) } } -static void cmd_init __P1 (char *,arg) +static void cmd_init(char *arg) { arg = skipspace(arg); - + if (*arg == '=') { if (*++arg) { my_strncpy(initstr, arg, BUFSIZE-1); @@ -1038,7 +1039,7 @@ static void cmd_init __P1 (char *,arg) sprintf(inserted_next, "#init =%.*s", BUFSIZE-8, initstr); } -static void cmd_isprompt __P1 (char *,arg) +static void cmd_isprompt(char *arg) { if (tcp_fd == tcp_main_fd) { int i; @@ -1061,7 +1062,7 @@ static void cmd_isprompt __P1 (char *,arg) i = (int)l; } else i = atoi(arg); - + if (i == 0) surely_isprompt = -1; else if (i < 0) { @@ -1072,14 +1073,14 @@ static void cmd_isprompt __P1 (char *,arg) } } -static void cmd_key __P1 (char *,arg) +static void cmd_key(char *arg) { keynode *q=NULL; - + arg = skipspace(arg); if (!*arg) return; - + if ((q = *lookup_key(arg))) q->funct(q->call_data); else { @@ -1087,15 +1088,15 @@ static void cmd_key __P1 (char *,arg) } } -static void cmd_keyedit __P1 (char *,arg) +static void cmd_keyedit(char *arg) { int function; char *param; - + arg = skipspace(arg); if (!*arg) return; - + if ((function = lookup_edit_name(arg, ¶m))) internal_functions[function].funct(param); else { @@ -1103,7 +1104,7 @@ static void cmd_keyedit __P1 (char *,arg) } } -static void cmd_map __P1 (char *,arg) +static void cmd_map(char *arg) { arg = skipspace(arg); if (!*arg) /* show map */ @@ -1114,12 +1115,12 @@ static void cmd_map __P1 (char *,arg) map_walk(arg, 1, 1); } -static void cmd_retrace __P1 (char *,arg) +static void cmd_retrace(char *arg) { map_retrace(atoi(arg), 1); } -static void cmd_mark __P1 (char *,arg) +static void cmd_mark(char *arg) { if (!*arg) show_marks(); @@ -1127,7 +1128,7 @@ static void cmd_mark __P1 (char *,arg) parse_mark(arg); } -static void cmd_nice __P1 (char *,arg) +static void cmd_nice(char *arg) { int nnice = a_nice; arg = skipspace(arg); @@ -1167,7 +1168,7 @@ static void cmd_nice __P1 (char *,arg) } } -static void cmd_prefix __P1 (char *,arg) +static void cmd_prefix(char *arg) { strcpy(prefixstr, arg); if (opt_info) { @@ -1175,7 +1176,7 @@ static void cmd_prefix __P1 (char *,arg) } } -static void cmd_quote __P1 (char *,arg) +static void cmd_quote(char *arg) { arg = skipspace(arg); if (!*arg) @@ -1192,16 +1193,16 @@ static void cmd_quote __P1 (char *,arg) /* * change the escape sequence of an existing binding */ -static void cmd_rebind __P1 (char *,arg) +static void cmd_rebind(char *arg) { parse_rebind(arg); } -static void cmd_rebindall __P1 (char *,arg) +static void cmd_rebindall(char *arg) { keynode *kp; char *seq; - + for (kp = keydefs; kp; kp = kp->next) { seq = kp->sequence; if (kp->seqlen == 1 && seq[0] < ' ') @@ -1216,10 +1217,10 @@ static void cmd_rebindall __P1 (char *,arg) } } -static void cmd_rebindALL __P1 (char *,arg) +static void cmd_rebindALL(char *arg) { keynode *kp; - + for (kp = keydefs; kp; kp = kp->next) { parse_rebind(kp->name); if (error) @@ -1227,7 +1228,7 @@ static void cmd_rebindALL __P1 (char *,arg) } } -static void cmd_reset __P1 (char *,arg) +static void cmd_reset(char *arg) { char all = 0; arg = skipspace(arg); @@ -1291,11 +1292,11 @@ static void cmd_reset __P1 (char *,arg) while (*first) { if (is_permanent_variable(*first)) first = &(*first)->next; - else + else delete_varnode(first, 1); } } - + for (n = 0; n < NUMVAR; n++) { *var[n].num = 0; ptrdel(*var[n].str); @@ -1306,7 +1307,7 @@ static void cmd_reset __P1 (char *,arg) } } -static void cmd_snoop __P1 (char *,arg) +static void cmd_snoop(char *arg) { if (!*arg) { PRINTF("#snoop: which connection?\n"); @@ -1314,13 +1315,13 @@ static void cmd_snoop __P1 (char *,arg) tcp_togglesnoop(arg); } -static void cmd_stop __P1 (char *,arg) +static void cmd_stop(char *arg) { delaynode *dying; - + if (delays) update_now(); - + while (delays) { dying = delays; delays = dying->next; @@ -1334,37 +1335,37 @@ static void cmd_stop __P1 (char *,arg) } } -static void cmd_time __P1 (char *,arg) +static void cmd_time(char *arg) { struct tm *s; char buf[BUFSIZE]; - + update_now(); s = localtime((time_t *)&now.tv_sec); (void)strftime(buf, BUFSIZE - 1, "%a, %d %b %Y %H:%M:%S", s); PRINTF("#current time is %s\n", buf); } -static void cmd_ver __P1 (char *,arg) +static void cmd_ver(char *arg) { printver(); } -static void cmd_emulate __P1 (char *,arg) +static void cmd_emulate(char *arg) { char kind; FILE *fp; long start, end, i = 1; int len; ptr pbuf = (ptr)0; - + arg = redirect(arg, &pbuf, &kind, "emulate", 0, &start, &end); if (REAL_ERROR || !arg) return; - + if (kind) { char buf[BUFSIZE]; - + fp = (kind == '!') ? popen(arg, "r") : fopen(arg, "r"); if (!fp) { PRINTF("#emulate: #error opening \"%s\"\n", arg); @@ -1376,7 +1377,7 @@ static void cmd_emulate __P1 (char *,arg) while (!error && (!start || i<=end) && fgets(buf, BUFSIZE, fp)) if (!start || i++>=start) process_remote_input(buf, strlen(buf)); - + if (kind == '!') pclose(fp); else fclose(fp); } else { status(-1); /* idem */ @@ -1388,7 +1389,7 @@ static void cmd_emulate __P1 (char *,arg) ptrdel(pbuf); } -static void cmd_eval __P1 (char *,arg) +static void cmd_eval(char *arg) { arg = skipspace(arg); if (*arg=='(') { @@ -1405,21 +1406,21 @@ static void cmd_eval __P1 (char *,arg) } } -static void cmd_exe __P1 (char *,arg) +static void cmd_exe(char *arg) { char kind; char *clear; long offset, start, end, i = 1; FILE *fp; ptr pbuf = (ptr)0; - + arg = redirect(arg, &pbuf, &kind, "exe", 0, &start, &end); if (REAL_ERROR || !arg) return; if (kind) { char buf[BUFSIZE]; - + fp = (kind == '!') ? popen(arg, "r") : fopen(arg, "r"); if (!fp) { PRINTF("#exe: #error opening \"%s\"\n", arg); @@ -1445,27 +1446,27 @@ static void cmd_exe __P1 (char *,arg) offset = 0; } } - + if (kind == '!') pclose(fp); else fclose(fp); } else parse_user_input(arg, 0); ptrdel(pbuf); } -static void cmd_print __P1 (char *,arg) +static void cmd_print(char *arg) { char kind; long start, end, i = 1; FILE *fp; ptr pbuf = (ptr)0; - + clear_input_line(opt_compact); - + if (!*arg) { smart_print(*VAR[0].str ? ptrdata(*VAR[0].str) : (char *)"", 1); return; } - + arg = redirect(arg, &pbuf, &kind, "print", 1, &start, &end); if (REAL_ERROR || !arg) return; @@ -1483,24 +1484,24 @@ static void cmd_print __P1 (char *,arg) if (!start || i++>=start) tty_puts(buf); tty_putc('\n'); - + if (kind == '!') pclose(fp); else fclose(fp); } else smart_print(arg, 1); ptrdel(pbuf); } -static void cmd_send __P1 (char *,arg) +static void cmd_send(char *arg) { char *newline, kind; long start, end, i = 1; FILE *fp; ptr pbuf = (ptr)0; - + arg = redirect(arg, &pbuf, &kind, "send", 0, &start, &end); if (REAL_ERROR ||!arg) return; - + if (kind) { char buf[BUFSIZE]; fp = (kind == '!') ? popen(arg, "r") : fopen(arg, "r"); @@ -1513,7 +1514,7 @@ static void cmd_send __P1 (char *,arg) while (!error && (!start || i<=end) && fgets(buf, BUFSIZE, fp)) { if ((newline = strchr(buf, '\n'))) *newline = '\0'; - + if (!start || i++>=start) { if (opt_echo) { PRINTF("[%s]\n", buf); @@ -1531,10 +1532,10 @@ static void cmd_send __P1 (char *,arg) ptrdel(pbuf); } -static void cmd_rawsend __P1 (char *,arg) +static void cmd_rawsend(char *arg) { char *tmp = skipspace(arg); - + if (*tmp=='(') { ptr pbuf = (ptr)0; arg = tmp + 1; @@ -1551,10 +1552,10 @@ static void cmd_rawsend __P1 (char *,arg) } } -static void cmd_rawprint __P1 (char *,arg) +static void cmd_rawprint(char *arg) { char *tmp = skipspace(arg); - + if (*tmp=='(') { ptr pbuf = (ptr)0; arg = tmp + 1; @@ -1572,24 +1573,24 @@ static void cmd_rawprint __P1 (char *,arg) } -static void cmd_write __P1 (char *,arg) +static void cmd_write(char *arg) { ptr p1 = (ptr)0, p2 = (ptr)0; char *tmp = skipspace(arg), kind; FILE *fp; - + kind = *tmp; if (kind == '!' || kind == '>') arg = ++tmp; else kind = 0; - + if (*tmp=='(') { arg = tmp + 1; (void)evalp(&p1, &arg); if (REAL_ERROR) goto write_cleanup; - + if (*arg == CMDSEP) { arg++; (void)evalp(&p2, &arg); @@ -1608,7 +1609,7 @@ static void cmd_write __P1 (char *,arg) goto write_cleanup; } arg = ptrdata(p2); - + fp = (kind == '!') ? popen(arg, "w") : fopen(arg, kind ? "w" : "a"); if (!fp) { PRINTF("#write: #error opening \"%s\"\n", arg); @@ -1631,7 +1632,7 @@ write_cleanup2: ptrdel(p2); } -static void cmd_var __P1 (char *,arg) +static void cmd_var(char *arg) { char *buf, *expr, *tmp, kind, type, right = 0, deleting = 0; varnode **p_named_var = NULL, *named_var = NULL; @@ -1639,10 +1640,10 @@ static void cmd_var __P1 (char *,arg) long start, end, i = 1; int len, idx; ptr pbuf = (ptr)0; - + arg = skipspace(arg); expr = first_regular(arg, '='); - + if (*expr) { *expr++ = '\0'; /* skip the = */ if (!*expr) @@ -1653,7 +1654,7 @@ static void cmd_var __P1 (char *,arg) expr++; } } - + if (*arg == '$') type = TYPE_TXT_VAR; else if (*arg == '@') @@ -1665,7 +1666,7 @@ static void cmd_var __P1 (char *,arg) show_vars(); return; } - + kind = *++arg; if (isalpha(kind) || kind == '_') { /* found a named variable */ @@ -1695,7 +1696,7 @@ static void cmd_var __P1 (char *,arg) } else /* it exists, hold on */ named_var = *p_named_var; - + idx = named_var->index; } else { /* not a named variable, may be @@ -1730,7 +1731,7 @@ static void cmd_var __P1 (char *,arg) } } else { print_error(error=INVALID_NAME_ERROR); - return; + return; } } else { if (!isalpha(*buf) && *buf!='_') { @@ -1739,7 +1740,7 @@ static void cmd_var __P1 (char *,arg) } tmp = buf + 1; while (*tmp && (isalnum(*tmp) || *tmp=='_')) - tmp++; + tmp++; if (*tmp) { print_error(error=INVALID_NAME_ERROR); return; @@ -1767,7 +1768,7 @@ static void cmd_var __P1 (char *,arg) } else { /* an unnamed var */ long buf2; - + idx = evall(&buf2, &arg); if (!REAL_ERROR && idx != TYPE_NUM) error=NO_STRING_ERROR; @@ -1785,7 +1786,7 @@ static void cmd_var __P1 (char *,arg) } } - + if (type == TYPE_TXT_VAR && right && !*VAR[idx].str) { /* create it */ *VAR[idx].str = ptrnew(PARAMLEN); @@ -1808,7 +1809,7 @@ static void cmd_var __P1 (char *,arg) } } } else if ((type = TYPE_TXT_VAR)) { - /* R.I.P. unnamed variables */ + /* R.I.P. unnamed variables */ if (*VAR[idx].str) { if (idx < 0) { ptrdel(*VAR[idx].str); @@ -1853,7 +1854,7 @@ static void cmd_var __P1 (char *,arg) ptrdel(pbuf); return; } - + /* only case left: assign a value to a variable */ arg = redirect(expr, &pbuf, &kind, "var", 1, &start, &end); if (REAL_ERROR || !arg) @@ -1873,24 +1874,24 @@ static void cmd_var __P1 (char *,arg) while (!error && (!start || i<=end) && fgets(buf2+len, BUFSIZE-len, fp)) if (!start || i++>=start) len += strlen(buf2 + len); - + if (kind == '!') pclose(fp); else fclose(fp); if (len>PARAMLEN) len = PARAMLEN; buf2[len] = '\0'; arg = buf2; } - + if (type == TYPE_NUM_VAR) { arg = skipspace(arg); type = 1; len = 0; - + if (*arg == '-') arg++, type = -1; else if (*arg == '+') arg++; - + if (isdigit(kind=*arg)) while (isdigit(kind)) { len*=10; len+=(kind-'0'); @@ -1910,12 +1911,12 @@ static void cmd_var __P1 (char *,arg) ptrdel(pbuf); } -static void cmd_setvar __P1 (char *,arg) +static void cmd_setvar(char *arg) { char *name; int i, func = 0; /* show */ long buf; - + name = arg = skipspace(arg); arg = first_regular(arg, '='); if (*arg) { @@ -1933,14 +1934,14 @@ static void cmd_setvar __P1 (char *,arg) buf = strtol(arg, NULL, 0); } else buf = 0; - + if (REAL_ERROR) { PRINTF("#setvar: "); print_error(error); return; } } - + i = strlen(name); if (i && !strncmp(name, "timer", i)) { vtime t; @@ -1991,11 +1992,11 @@ static void cmd_setvar __P1 (char *,arg) } } -static void cmd_if __P1 (char *,arg) +static void cmd_if(char *arg) { long buf; int type; - + arg = skipspace(arg); if (*arg!='(') { PRINTF("#if: "); @@ -2003,7 +2004,7 @@ static void cmd_if __P1 (char *,arg) return; } arg++; /* skip the '(' */ - + type = evall(&buf, &arg); if (!REAL_ERROR) { if (type!=TYPE_NUM) @@ -2020,7 +2021,7 @@ static void cmd_if __P1 (char *,arg) print_error(error); return; } - + if (buf) (void)parse_instruction(arg, 0, 0, 1); else { @@ -2030,12 +2031,12 @@ static void cmd_if __P1 (char *,arg) } } -static void cmd_for __P1 (char *,arg) +static void cmd_for(char *arg) { int type = TYPE_NUM, loop=MAX_LOOP; long buf; char *check, *tmp, *increm = 0; - + arg = skipspace(arg); if (*arg != '(') { PRINTF("#for: "); @@ -2045,13 +2046,13 @@ static void cmd_for __P1 (char *,arg) push_params(); if (REAL_ERROR) return; - + arg = skipspace(arg + 1); /* skip the '(' */ if (*arg != CMDSEP) (void)evaln(&arg); /* execute <init> */ - + check = arg + 1; - + if (REAL_ERROR) ; else if (*arg != CMDSEP) { @@ -2061,7 +2062,7 @@ static void cmd_for __P1 (char *,arg) else while (!error && loop && (increm=check, (type = evall(&buf, &increm)) == TYPE_NUM && !error && *increm == CMDSEP && buf)) { - + tmp = first_regular(increm + 1, ')'); if (*tmp) (void)parse_instruction(tmp + 1, 1, 1, 1); @@ -2069,13 +2070,13 @@ static void cmd_for __P1 (char *,arg) PRINTF("#for: "); print_error(error=MISSING_PAREN_ERROR); } - + if (!error) { tmp = increm + 1; if (*tmp != ')') (void)evaln(&tmp); } - + loop--; } if (REAL_ERROR) @@ -2094,12 +2095,12 @@ static void cmd_for __P1 (char *,arg) pop_params(); } -static void cmd_while __P1 (char *,arg) +static void cmd_while(char *arg) { int type = TYPE_NUM, loop=MAX_LOOP; long buf; char *check, *tmp; - + arg = skipspace(arg); if (!*arg) { PRINTF("#while: "); @@ -2107,12 +2108,12 @@ static void cmd_while __P1 (char *,arg) return; } push_params(); - + check = ++arg; /* skip the '(' */ while (!error && loop && (arg=check, (type = evall(&buf, &arg)) == TYPE_NUM && !error && *arg == ')' && buf)) { - + if (*(tmp = arg + 1) == ' ') /* skip the ')' */ tmp++; if (*tmp) @@ -2135,10 +2136,10 @@ static void cmd_while __P1 (char *,arg) pop_params(); } -static void cmd_capture __P1 (char *,arg) +static void cmd_capture(char *arg) { arg = skipspace(arg); - + if (!*arg) { if (capturefile) { log_flush(); @@ -2156,7 +2157,7 @@ static void cmd_capture __P1 (char *,arg) } else { short append = 0; /* Append to log file, if the name starts with '>' */ - if (*arg == '>') { + if (*arg == '>') { arg++; append = 1; } @@ -2169,10 +2170,10 @@ static void cmd_capture __P1 (char *,arg) } } -static void cmd_movie __P1 (char *,arg) +static void cmd_movie(char *arg) { arg = skipspace(arg); - + if (!*arg) { if (moviefile) { log_flush(); @@ -2202,10 +2203,10 @@ static void cmd_movie __P1 (char *,arg) } } -static void cmd_record __P1 (char *,arg) +static void cmd_record(char *arg) { arg = skipspace(arg); - + if (!*arg) { if (recordfile) { fclose(recordfile); @@ -2229,10 +2230,10 @@ static void cmd_record __P1 (char *,arg) } } -static void cmd_edit __P1 (char *,arg) +static void cmd_edit(char *arg) { editsess *sp; - + if (edit_sess) { for (sp = edit_sess; sp; sp = sp->next) { PRINTF("# %s (%u)\n", sp->descr, sp->key); @@ -2242,10 +2243,10 @@ static void cmd_edit __P1 (char *,arg) } } -static void cmd_cancel __P1 (char *,arg) +static void cmd_cancel(char *arg) { editsess *sp; - + if (!edit_sess) { PRINTF("#no editing sessions to cancel.\n"); } else { @@ -2267,7 +2268,7 @@ static void cmd_cancel __P1 (char *,arg) } } -static void cmd_net __P1 (char *,arg) +static void cmd_net(char *arg) { PRINTF("#received from host: %ld chars, sent to host: %ld chars.\n", received, sent); @@ -2279,7 +2280,7 @@ static void cmd_net __P1 (char *,arg) #endif /* hope it works.... */ -static void cmd_cpu __P1 (char *,arg) +static void cmd_cpu(char *arg) { float f, l; update_now(); @@ -2289,27 +2290,27 @@ static void cmd_cpu __P1 (char *,arg) (l > 0 && l > f) ? f * 100.0 / l : 100.0); } -void show_stat __P0 (void) +void show_stat(void) { cmd_net(NULL); cmd_cpu(NULL); } #ifdef BUG_TELNET -static void cmd_color __P1 (char *,arg) +static void cmd_color(char *arg) { int attrcode; - + arg = skipspace(arg); if (!*arg) { strcpy(tty_modenorm, tty_modenormbackup); - tty_puts(tty_modenorm); + tty_puts(tty_modenorm); if (opt_info) { PRINTF("#standard color cleared.\n"); } return; } - + attrcode = parse_attributes(arg); if (attrcode == -1) { PRINTF("#invalid attribute syntax.\n"); @@ -2332,14 +2333,14 @@ static void cmd_color __P1 (char *,arg) } #endif -static void cmd_connect __P1 (char *,arg) +static void cmd_connect(char *arg) { #ifdef TERM PRINTF("#connect: multiple connections not supported in term version.\n"); #else char *s1, *s2, *s3 = NULL, *s4 = NULL; int argc = 1; - + if (!*skipspace(arg)) { tcp_show(); return; @@ -2358,7 +2359,7 @@ static void cmd_connect __P1 (char *,arg) } } } - + if (argc <= 2) { if (*hostname) tcp_open(s1, s2, hostname, portnumber); @@ -2382,7 +2383,7 @@ static void cmd_connect __P1 (char *,arg) } -static void cmd_spawn __P1 (char *,arg) +static void cmd_spawn(char *arg) { char s[BUFSIZE]; if (*(arg = skipspace(arg))) { @@ -2397,7 +2398,7 @@ static void cmd_spawn __P1 (char *,arg) /* If you have speedwalk off but still want to use a speedwalk sequence, * you can manually trigger a speedwalk this way */ -static void cmd_speedwalk __P1 (char *,arg) +static void cmd_speedwalk(char *arg) { char save_speedwalk = opt_speedwalk; PRINTF( "Executing speedwalk '%s'\n", arg ); @@ -2408,7 +2409,7 @@ static void cmd_speedwalk __P1 (char *,arg) opt_speedwalk = save_speedwalk; } -static void cmd_zap __P1 (char *,arg) +static void cmd_zap(char *arg) { if (!*arg) { PRINTF("#zap: no connection name.\n"); @@ -2416,12 +2417,12 @@ static void cmd_zap __P1 (char *,arg) tcp_close(arg); } -static void cmd_qui __P1 (char *,arg) +static void cmd_qui(char *arg) { PRINTF("#you have to write '#quit' - no less, to quit!\n"); } -static void cmd_quit __P1 (char *,arg) +static void cmd_quit(char *arg) { if (*arg) { /* no skipspace() here! */ PRINTF("#quit: spurious argument?\n"); @@ -2467,7 +2468,7 @@ static const struct { /* print all options to 'file', or tty if file is NULL; return -1 on * error, 1 on success */ -int print_all_options __P1 (FILE *,file) +int print_all_options(FILE *file) { const char *prefix = "#option"; int width = (file ? 80 : cols) - 16; @@ -2502,7 +2503,7 @@ int print_all_options __P1 (FILE *,file) return 1; } -static void cmd_option __P1 (char *,arg) +static void cmd_option(char *arg) { char buf[BUFSIZE]; int count = 0; @@ -2576,7 +2577,7 @@ static void cmd_option __P1 (char *,arg) } } -static void cmd_file __P1 (char *,arg) +static void cmd_file(char *arg) { arg = skipspace(arg); if (*arg == '=') { @@ -2590,13 +2591,13 @@ static void cmd_file __P1 (char *,arg) } } else if (*deffile) { sprintf(inserted_next, "#file =%.*s", BUFSIZE-8, deffile); - } else { + } else { PRINTF("#save-file not defined.\n"); } } -static void cmd_save __P1 (char *,arg) -{ +static void cmd_save(char *arg) +{ arg = skipspace(arg); if (*arg) { set_deffile(arg); @@ -2607,16 +2608,16 @@ static void cmd_save __P1 (char *,arg) PRINTF("#save-file not defined.\n"); return; } - + if (*deffile && save_settings() > 0 && opt_info) { PRINTF("#settings saved to file.\n"); } } -static void cmd_load __P1 (char *,arg) +static void cmd_load(char *arg) { int res; - + arg = skipspace(arg); if (*arg) { set_deffile(arg); @@ -2628,9 +2629,9 @@ static void cmd_load __P1 (char *,arg) PRINTF("#save-file not defined.\n"); return; } - + res = read_settings(); - + if (res > 0) { /* success */ if (opt_info) { @@ -2647,13 +2648,13 @@ static void cmd_load __P1 (char *,arg) } } -static char *trivial_eval __P3 (ptr *,pbuf, char *,arg, char *,name) +static char *trivial_eval(ptr *pbuf, char *arg, char *name) { char *tmp = skipspace(arg); - + if (!pbuf) return NULL; - + if (*tmp=='(') { arg = tmp + 1; (void)evalp(pbuf, &arg); @@ -2671,15 +2672,15 @@ static char *trivial_eval __P3 (ptr *,pbuf, char *,arg, char *,name) } else unescape(arg); - + return arg; } -static void do_cmd_add __P2(char *,arg, int,is_static) +static void do_cmd_add(char *arg, int is_static) { ptr pbuf = (ptr)0; char buf[BUFSIZE]; - + arg = trivial_eval(&pbuf, arg, "add"); if (!REAL_ERROR) while (*arg) { @@ -2690,17 +2691,17 @@ static void do_cmd_add __P2(char *,arg, int,is_static) ptrdel(pbuf); } -static void cmd_add __P1 (char *,arg) +static void cmd_add(char *arg) { do_cmd_add(arg, 0); } -static void cmd_addstatic __P1 (char *,arg) +static void cmd_addstatic(char *arg) { do_cmd_add(arg, 1); } -static void cmd_put __P1 (char *,arg) +static void cmd_put(char *arg) { ptr pbuf = (ptr)0; arg = trivial_eval(&pbuf, arg, "put"); @@ -14,13 +14,13 @@ typedef struct cmdstruct { extern cmdstruct *commands; -void show_stat __P ((void)); +void show_stat(void); void cmd_add_command( cmdstruct *cmd ); void initialize_cmd(void); -int print_all_options __P1 (FILE *,file); +int print_all_options(FILE *file); #endif /* _CMD_H_ */ @@ -2,7 +2,7 @@ * cmd2.c -- back-end for the various #commands * * (created: Massimiliano Ghilardi (Cosmos), Aug 14th, 1998) - * + * * Copyright (C) 1998 by Massimiliano Ghilardi * * This program is free software; you can redistribute it and/or modify @@ -13,6 +13,7 @@ */ +#include <limits.h> #include <stdio.h> #include <string.h> #include <stdlib.h> @@ -52,18 +53,18 @@ static char *colornames[] = { /* * show defined aliases */ -void show_aliases __P0 (void) +void show_aliases(void) { aliasnode *p; char buf[BUFSIZE]; - + PRINTF("#%s alias%s defined%c\n", sortedaliases ? "the following" : "no", (sortedaliases && !sortedaliases->snext) ? " is" : "es are", sortedaliases ? ':' : '.'); reverse_sortedlist((sortednode **)&sortedaliases); for (p = sortedaliases; p; p = p->snext) { escape_specials(buf, p->name); - tty_printf("#alias %s%s%s%s=%s\n", + tty_printf("#alias %s%s%s%s=%s\n", p->active ? "" : "(disabled) ", buf, group_delim, p->group == NULL ? "*" : p->group, p->subst); } @@ -75,7 +76,7 @@ void show_aliases __P0 (void) * return 1 if illegal name (and print reason). * if valid, print a warning for unbalanced () {} and "" */ -static int check_alias __P1 (char *,name) +static int check_alias(char *name) { char *p = name, c; enum { NORM, ESCAPE } state = NORM; @@ -126,13 +127,13 @@ static int check_alias __P1 (char *,name) default: break; } - + if (!ok) { PRINTF("#illegal non-escaped ';' in alias name: \"%s\"\n", name); error = INVALID_NAME_ERROR; return 1; } - + if (quotes || paren || braces) { PRINTF("#warning: unbalanced%s%s%s in alias name \"%s\" may cause problems\n", quotes ? " \"\"" : "", paren ? " ()" : "", braces ? " {}" : "", name); @@ -145,13 +146,13 @@ static int check_alias __P1 (char *,name) /* * parse the #alias command */ -void parse_alias __P1 (char *,str) +void parse_alias(char *str) { char *left, *right, *group; aliasnode **np, *p; - + left = str = skipspace(str); - + str = first_valid(str, '='); if (*str == '=') { @@ -181,12 +182,12 @@ void parse_alias __P1 (char *,str) } } else { /* add/redefine alias */ - + /* direct recursion is supported (alias CAN be defined by itself) */ if (p) { free(p->subst); p->subst = my_strdup(right); - } else + } else add_aliasnode(left, right); /* get alias again to add group (if needed) @@ -209,7 +210,7 @@ void parse_alias __P1 (char *,str) } } else { /* show alias */ - + *str = '\0'; unescape(left); if (check_alias(left)) @@ -219,7 +220,7 @@ void parse_alias __P1 (char *,str) char buf[BUFSIZE]; escape_specials(buf, left); snprintf(inserted_next, BUFSIZE, "#alias %s%s%s=%s", - buf, + buf, group_delim, (*np)->group == NULL ? "*" : (*np)->group, (*np)->subst); @@ -232,7 +233,7 @@ void parse_alias __P1 (char *,str) /* * delete an action node */ -static void delete_action __P1 (actionnode **,nodep) +static void delete_action(actionnode **nodep) { if (opt_info) { PRINTF("#deleting action: >%c%s %s\n", (*nodep)->active ? @@ -244,7 +245,7 @@ static void delete_action __P1 (actionnode **,nodep) /* * delete a prompt node */ -static void delete_prompt __P1 (actionnode **,nodep) +static void delete_prompt(actionnode **nodep) { if (opt_info) { PRINTF("#deleting prompt: >%c%s %s\n", (*nodep)->active ? @@ -256,11 +257,11 @@ static void delete_prompt __P1 (actionnode **,nodep) /* * create new action */ -static void add_new_action __P6 (char *,label, char *,pattern, char *,command, int,active, int,type, void *,q) +static void add_new_action(char *label, char *pattern, char *command, int active, int type, void *q) { add_actionnode(pattern, command, label, active, type, q); if (opt_info) { - PRINTF("#new action: %c%c%s %s=%s\n", + PRINTF("#new action: %c%c%s %s=%s\n", action_chars[type], active ? '+' : '-', label, pattern, command); @@ -270,11 +271,11 @@ static void add_new_action __P6 (char *,label, char *,pattern, char *,command, i /* * create new prompt */ -static void add_new_prompt __P6 (char *,label, char *,pattern, char *,command, int,active, int,type, void *,q) +static void add_new_prompt(char *label, char *pattern, char *command, int active, int type, void *q) { add_promptnode(pattern, command, label, active, type, q); if (opt_info) { - PRINTF("#new prompt: %c%c%s %s=%s\n", + PRINTF("#new prompt: %c%c%s %s=%s\n", action_chars[type], active ? '+' : '-', label, pattern, command); @@ -284,7 +285,7 @@ static void add_new_prompt __P6 (char *,label, char *,pattern, char *,command, i /* * add an action with numbered label */ -static void add_anonymous_action __P4 (char *,pattern, char *,command, int,type, void *,q) +static void add_anonymous_action(char *pattern, char *command, int type, void *q) { static int last = 0; char label[16]; @@ -300,7 +301,7 @@ static void add_anonymous_action __P4 (char *,pattern, char *,command, int,type, * change fields of an existing action node * pattern or commands can be NULL if no change */ -static void change_actionorprompt __P6 (actionnode *,node, char *,pattern, char *,command, int,type, void *,q, int,onprompt) +static void change_actionorprompt(actionnode *node, char *pattern, char *command, int type, void *q, int onprompt) { #ifdef USE_REGEXP if (node->type == ACTION_REGEXP && node->regexp) { @@ -318,7 +319,7 @@ static void change_actionorprompt __P6 (actionnode *,node, char *,pattern, char free(node->command); node->command = my_strdup(command); } - + if (opt_info) { PRINTF("#changed %s %c%c%s %s=%s\n", ONPROMPT, action_chars[node->type], @@ -330,10 +331,10 @@ static void change_actionorprompt __P6 (actionnode *,node, char *,pattern, char /* * show defined actions */ -void show_actions __P0 (void) +void show_actions(void) { actionnode *p; - + PRINTF("#%s action%s defined%c\n", actions ? "the following" : "no", (actions && !actions->next) ? " is" : "s are", actions ? ':' : '.'); for (p = actions; p; p = p->next) @@ -341,7 +342,7 @@ void show_actions __P0 (void) action_chars[p->type], p->active ? '+' : '-', p->label, group_delim, - p->group == NULL ? "*" : p->group, + p->group == NULL ? "*" : p->group, p->pattern, p->command); } @@ -349,10 +350,10 @@ void show_actions __P0 (void) /* * show defined prompts */ -void show_prompts __P0 (void) +void show_prompts(void) { promptnode *p; - + PRINTF("#%s prompt%s defined%c\n", prompts ? "the following" : "no", (prompts && !prompts->next) ? " is" : "s are", prompts ? ':' : '.'); for (p = prompts; p; p = p->next) @@ -367,22 +368,22 @@ void show_prompts __P0 (void) * this function is too damn complex because of the hairy syntax. it should be * split up or rewritten as an fsm instead. */ -void parse_action __P2 (char *,str, int,onprompt) +void parse_action(char *str, int onprompt) { char *p, label[BUFSIZE], pattern[BUFSIZE], *command, *group; actionnode **np = NULL; char sign, assign, hastail; char active, type = ACTION_WEAK, kind; void *regexp = 0; - + sign = *(p = skipspace(str)); if (!sign) { PRINTF("%s: no arguments given\n", ONPROMPT); return; } - + str = p + 1; - + switch (sign) { case '+': case '-': /* edit */ @@ -394,7 +395,7 @@ void parse_action __P2 (char *,str, int,onprompt) type = ACTION_REGEXP; /* falltrough */ case '>': /* action_chars[ACTION_WEAK] */ - + /* define/edit */ assign = '>'; sign = *(p + 1); @@ -411,7 +412,7 @@ void parse_action __P2 (char *,str, int,onprompt) str = p; break; } - + /* labelled action: */ if (assign != 0) { p = first_regular(str, ' '); @@ -424,11 +425,11 @@ void parse_action __P2 (char *,str, int,onprompt) *group = 0; group += strlen( group_delim ); } - + my_strncpy(label, str, BUFSIZE-1); if (hastail) *p++ = ' '; /* p points to start of pattern, or to \0 */ - + if (!*label) { PRINTF("#%s: label expected\n", ONPROMPT); return; @@ -439,7 +440,7 @@ void parse_action __P2 (char *,str, int,onprompt) np = lookup_prompt(label); else np = lookup_action(label); - + /* '<' : remove action */ if (assign == '<') { if (!np || !*np) { @@ -452,26 +453,26 @@ void parse_action __P2 (char *,str, int,onprompt) else delete_action(np); } - + /* '>' : define action */ } else if (assign == '>') { #ifndef USE_REGEXP if (type == ACTION_REGEXP) { PRINTF("#error: regexp not allowed\n"); return; - } + } #endif - + if (sign == '+') active = 1; else active = 0; - + if (!*label) { PRINTF("#%s: label expected\n", ONPROMPT); return; } - + p = skipspace(p); if (*p == '(') { ptr pbuf = (ptr)0; @@ -500,21 +501,21 @@ void parse_action __P2 (char *,str, int,onprompt) if ((hastail = *p)) *p = '\0'; my_strncpy(pattern, command, BUFSIZE-1); - + if (hastail) *p++ = '='; } - + if (!*pattern) { PRINTF("#error: pattern of #%ss must be non-empty.\n", ONPROMPT); return; } - + #ifdef USE_REGEXP if (type == ACTION_REGEXP && hastail) { int errcode; char unesc_pat[BUFSIZE]; - + /* * HACK WARNING: * we unescape regexp patterns now, instead of doing @@ -522,13 +523,13 @@ void parse_action __P2 (char *,str, int,onprompt) */ strcpy(unesc_pat, pattern); unescape(unesc_pat); - - regexp = malloc(sizeof(regex_t)); + + regexp = malloc(sizeof(regex_t)); if (!regexp) { errmsg("malloc"); return; } - + if ((errcode = regcomp((regex_t *)regexp, unesc_pat, REG_EXTENDED))) { int n; char *tmp; @@ -552,17 +553,17 @@ void parse_action __P2 (char *,str, int,onprompt) } #endif command = p; - + if (hastail) { if (np && *np) { change_actionorprompt(*np, pattern, command, type, regexp, onprompt); (*np)->active = active; } else { if (onprompt) - add_new_prompt(label, pattern, command, active, + add_new_prompt(label, pattern, command, active, type, regexp); else - add_new_action(label, pattern, command, active, + add_new_action(label, pattern, command, active, type, regexp); } @@ -582,7 +583,7 @@ void parse_action __P2 (char *,str, int,onprompt) (*np) -> group = my_strdup( group ); } } - + /* '=': list action */ } else if (assign == '='){ if (np && *np) { @@ -596,7 +597,7 @@ void parse_action __P2 (char *,str, int,onprompt) } else { PRINTF("#no %s, cannot list label: \"%s\"\n", ONPROMPT, label); } - + /* '+', '-': turn action on/off */ } else { if (np && *np) { @@ -612,17 +613,17 @@ void parse_action __P2 (char *,str, int,onprompt) (sign == '+') ? "n" : "ff", label); } } - + /* anonymous action, cannot be regexp */ } else { - + if (onprompt) { PRINTF("#anonymous prompts not supported.\n#please use labelled prompts.\n"); return; } - + command = first_regular(str, '='); - + if (*command == '=') { *command = '\0'; @@ -660,7 +661,7 @@ void parse_action __P2 (char *,str, int,onprompt) /* * display attribute syntax */ -void show_attr_syntax __P0 (void) +void show_attr_syntax(void) { int i; PRINTF("#attribute syntax:\n\tOne or more of:\tbold, blink, underline, inverse\n\tand/or\t[foreground] [ON background]\n\tColors: "); @@ -673,17 +674,17 @@ void show_attr_syntax __P0 (void) /* * put escape sequences to turn on/off an attribute in given buffers */ -void attr_string __P3 (int,attrcode, char *,begin, char *,end) +void attr_string(int attrcode, char *begin, char *end) { int fg = FOREGROUND(attrcode), bg = BACKGROUND(attrcode), tok = ATTR(attrcode); char need_end = 0; *begin = *end = '\0'; - + if (tok > (ATTR_BOLD | ATTR_BLINK | ATTR_UNDERLINE | ATTR_INVERSE) || fg > COLORS || bg > COLORS || attrcode == NOATTRCODE) return; /* do nothing */ - + if (fg < COLORS) { if (bg < COLORS) { sprintf(begin, "\033[%c%d;%s%dm", @@ -700,13 +701,13 @@ void attr_string __P3 (int,attrcode, char *,begin, char *,end) #endif } } else if (bg < COLORS) { - sprintf(begin, "\033[%s%dm", + sprintf(begin, "\033[%s%dm", bg<LOWCOLORS ? "4" : "10", bg % LOWCOLORS); #ifdef TERM_LINUX strcpy(end, "\033[49m"); #endif } - + #ifndef TERM_LINUX if (fg < COLORS || bg < COLORS) need_end = 1; @@ -725,7 +726,7 @@ void attr_string __P3 (int,attrcode, char *,begin, char *,end) strcpy(end, tty_modestandoff); } } - + if (tok & ATTR_BLINK) { if (tty_modeblink[0]) { strcat(begin, tty_modeblink); @@ -739,7 +740,7 @@ void attr_string __P3 (int,attrcode, char *,begin, char *,end) strcpy(end, tty_modestandoff); } } - + if (tok & ATTR_UNDERLINE) { if (tty_modeuline[0]) { strcat(begin, tty_modeuline); @@ -753,7 +754,7 @@ void attr_string __P3 (int,attrcode, char *,begin, char *,end) strcpy(end, tty_modestandoff); } } - + if (tok & ATTR_INVERSE) { if (tty_modeinv[0]) { strcat(begin, tty_modeinv); @@ -778,16 +779,16 @@ void attr_string __P3 (int,attrcode, char *,begin, char *,end) * parse attribute description in line. * Return attribute if successful, -1 otherwise. */ -int parse_attributes __P1 (char *,line) +int parse_attributes(char *line) { char *p; int tok = 0, fg, bg, t = -1; - + if (!(p = strtok(line, " "))) return NOATTRCODE; - + fg = bg = NO_COLOR; - + while (t && p) { if (!strcasecmp(p, "bold")) t = ATTR_BOLD; @@ -799,39 +800,39 @@ int parse_attributes __P1 (char *,line) t = ATTR_INVERSE; else t = 0; - - if (t) { + + if (t) { tok |= t; p = strtok(NULL, " "); } } - + if (!p) return ATTRCODE(tok, fg, bg); - + for (t = 0; t <= COLORS && strcmp(p, colornames[t]); t++) ; if (t <= COLORS) { fg = t; p = strtok(NULL, " "); } - + if (!p) return ATTRCODE(tok, fg, bg); - + if (strcasecmp(p, "on")) return -1; /* invalid attribute */ - + if (!(p = strtok(NULL, " "))) return -1; - + for (t = 0; t <= COLORS && strcmp(p, colornames[t]); t++) ; if (t <= COLORS) bg = t; else return -1; - + return ATTRCODE(tok, fg, bg); } @@ -839,15 +840,15 @@ int parse_attributes __P1 (char *,line) /* * return a static pointer to name of given attribute code */ -char *attr_name __P1 (int,attrcode) +char *attr_name(int attrcode) { static char name[BUFSIZE]; int fg = FOREGROUND(attrcode), bg = BACKGROUND(attrcode), tok = ATTR(attrcode); - + name[0] = 0; if (tok > (ATTR_BOLD | ATTR_BLINK | ATTR_UNDERLINE | ATTR_INVERSE) || fg > COLORS || bg > COLORS) return name; /* error! */ - + if (tok & ATTR_BOLD) strcat(name, "bold "); if (tok & ATTR_BLINK) @@ -856,25 +857,25 @@ char *attr_name __P1 (int,attrcode) strcat(name, "underline "); if (tok & ATTR_INVERSE) strcat(name, "inverse "); - + if (fg < COLORS || (fg == bg && fg == COLORS && !tok)) strcat(name, colornames[fg]); - + if (bg < COLORS) { strcat(name, " on "); strcat(name, colornames[bg]); } - + if (!*name) strcpy(name, "none"); - + return name; } /* * show defined marks */ -void show_marks __P0 (void) +void show_marks(void) { marknode *p; PRINTF("#%s marker%s defined%c\n", markers ? "the following" : "no", @@ -889,12 +890,12 @@ void show_marks __P0 (void) /* * parse arguments to the #mark command */ -void parse_mark __P1 (char *,str) +void parse_mark(char *str) { char *p; marknode **np, *n; char mbeg = 0; - + if (*str == '=') { PRINTF("#marker must be non-null.\n"); return; @@ -918,7 +919,7 @@ void parse_mark __P1 (char *,str) } else { PRINTF("#unknown marker, cannot show: \"%s\"\n", str); } - + } else { int attrcode, wild = 0; char pattern[BUFSIZE], *p2; @@ -983,11 +984,11 @@ void parse_mark __P1 (char *,str) * into raw escape sequence * return pointer to end of ASCII description */ -static char *unescape_seq __P3 (char *,buf, char *,seq, int *,seqlen) +static char *unescape_seq(char *buf, char *seq, int *seqlen) { char c, *start = buf; enum { NORM, ESCSINGLE, ESCAPE, CARET, DONE } state = NORM; - + for (; (c = *seq); seq++) { switch (state) { case NORM: @@ -1019,7 +1020,7 @@ static char *unescape_seq __P3 (char *,buf, char *,seq, int *,seqlen) */ if (state == ESCSINGLE && ISODIGIT(seq[0]) && ISODIGIT(seq[1]) && ISODIGIT(seq[2])) { - *(buf++) =(((seq[0] - '0') << 6) | + *(buf++) =(((seq[0] - '0') << 6) | ((seq[1] - '0') << 3) | (seq[2] - '0')); seq += 2; @@ -1047,13 +1048,13 @@ static char *unescape_seq __P3 (char *,buf, char *,seq, int *,seqlen) * timeout == 0 means wait indefinitely (no timeout). * return char or -1 if timeout was reached. */ -static int get_one_char __P1 (int,timeout) +static int get_one_char(int timeout) { struct timeval timeoutbuf; fd_set fds; int n; char c; - + again: FD_ZERO(&fds); FD_SET(tty_read_fd, &fds); @@ -1086,7 +1087,7 @@ static int get_one_char __P1 (int,timeout) /* * print an escape sequence in human-readably form. */ -void print_seq __P2 (char *,seq, int,len) +void print_seq(char *seq, int len) { while (len--) { unsigned char ch = *(seq++); @@ -1113,14 +1114,14 @@ void print_seq __P2 (char *,seq, int,len) * return a static pointer to escape sequence made printable, for use in * definition-files */ -char *seq_name __P2 (char *,seq, int,len) +char *seq_name(char *seq, int len) { static char buf[CAPLEN*4]; char *p = buf; /* * rules: control chars are written as ^X, where * X is char | 64 - * + * * GH: codes > 0x80 ==> octal \012 * * special case: 0x7f is written ^? @@ -1129,7 +1130,7 @@ char *seq_name __P2 (char *,seq, int,len) unsigned char c = *seq++; if (c == '^' || (c && strchr(SPECIAL_CHARS, c))) *(p++) = ESC; - + if (c < ' ') { *(p++) = '^'; *(p++) = c | '@'; @@ -1151,11 +1152,11 @@ char *seq_name __P2 (char *,seq, int,len) * read a single escape sequence from the keyboard * prompting user for it; return static pointer */ -char *read_seq __P2 (char *,name, int *,len) +char *read_seq(char *name, int *len) { static char seq[CAPLEN]; int i = 1, tmp; - + PRINTF("#please press the key \"%s\" : ", name); tty_flush(); @@ -1165,13 +1166,13 @@ char *read_seq __P2 (char *,name, int *,len) tty_puts("#unable to get key. Giving up.\n"); return NULL; } - + while (i < CAPLEN - 1 && (tmp = get_one_char(KBD_TIMEOUT)) >= 0) seq[i++] = tmp; *len = i; print_seq(seq, i); - + tty_putc('\n'); if (seq[0] >= ' ' && seq[0] <= '~') { PRINTF("#that is not a redefinable key.\n"); @@ -1184,7 +1185,7 @@ char *read_seq __P2 (char *,name, int *,len) * show full definition of one binding, * with custom message */ -static void show_single_bind __P2 (char *,msg, keynode *,p) +static void show_single_bind(char *msg, keynode *p) { if (p->funct == key_run_command) { PRINTF("#%s %s %s=%s\n", msg, p->name, @@ -1201,7 +1202,7 @@ static void show_single_bind __P2 (char *,msg, keynode *,p) /* * list keyboard bindings */ -void show_binds __P1 (char,edit) +void show_binds(char edit) { keynode *p; int count = 0; @@ -1227,29 +1228,29 @@ void show_binds __P1 (char,edit) /* * interactively create a new keybinding */ -static void define_new_key __P2 (char *,name, char *,command) +static void define_new_key(char *name, char *command) { char *seq, *arg; keynode *p; int seqlen, function; - + seq = read_seq(name, &seqlen); if (!seq) return; - + for (p = keydefs; p; p = p->next) /* GH: don't allow binding of supersets of another bind */ if (!memcmp(p->sequence, seq, MIN2(p->seqlen, seqlen))) { show_single_bind("key already bound as:", p); return; } - + function = lookup_edit_name(command, &arg); if (function) add_keynode(name, seq, seqlen, internal_functions[function].funct, arg); else add_keynode(name, seq, seqlen, key_run_command, command); - + if (opt_info) { PRINTF("#new key binding: %s %s=%s\n", name, seq_name(seq, seqlen), command); @@ -1259,12 +1260,12 @@ static void define_new_key __P2 (char *,name, char *,command) /* * parse the #bind command non-interactively. */ -static void parse_bind_noninteractive __P1 (char *,arg) +static void parse_bind_noninteractive(char *arg) { char rawseq[CAPLEN], *p, *seq, *params; int function, seqlen; keynode **kp; - + p = strchr(arg, ' '); if (!p) { PRINTF("#syntax error: \"#bind %s\"\n", arg); @@ -1272,24 +1273,24 @@ static void parse_bind_noninteractive __P1 (char *,arg) } *(p++) = '\0'; seq = p = skipspace(p); - + p = unescape_seq(rawseq, p, &seqlen); if (!p[0] || !p[1]) { PRINTF("#syntax error: \"#bind %s %s\"\n", arg, seq); return; } *p++ = '\0'; - + kp = lookup_key(arg); if (kp && *kp) delete_keynode(kp); - + if ((function = lookup_edit_name(p, ¶ms))) - add_keynode(arg, rawseq, seqlen, + add_keynode(arg, rawseq, seqlen, internal_functions[function].funct, params); else add_keynode(arg, rawseq, seqlen, key_run_command, p); - + if (opt_info) { PRINTF("#%s: %s %s=%s\n", (kp && *kp) ? "redefined key" : "new key binding", @@ -1300,22 +1301,22 @@ static void parse_bind_noninteractive __P1 (char *,arg) /* * parse the argument of the #bind command (interactive) */ -void parse_bind __P1 (char *,arg) +void parse_bind(char *arg) { char *p, *q, *command, *params; char *name = arg; keynode **npp, *np; int function; - + p = first_valid(arg, '='); q = first_valid(arg, ' '); q = skipspace(q); - - if (*p && *q && p > q) { + + if (*p && *q && p > q) { parse_bind_noninteractive(arg); return; } - + if (*p) { *(p++) = '\0'; np = *(npp = lookup_key(name)); @@ -1354,7 +1355,7 @@ void parse_bind __P1 (char *,arg) int seqlen; seqname = seq_name(np->sequence, np->seqlen); seqlen = strlen(seqname); - + if (np->funct == key_run_command) sprintf(inserted_next, "#bind %.*s %s=%.*s", BUFSIZE-seqlen-9, name, seqname, @@ -1374,30 +1375,30 @@ void parse_bind __P1 (char *,arg) } } -void parse_rebind __P1 (char *,arg) +void parse_rebind(char *arg) { char rawseq[CAPLEN], *seq, **old; keynode **kp, *p; int seqlen; - + arg = skipspace(arg); if (!*arg) { PRINTF("#rebind: missing key.\n"); return; } - + seq = first_valid(arg, ' '); if (*seq) { *seq++ = '\0'; seq = skipspace(seq); } - + kp = lookup_key(arg); if (!kp || !*kp) { PRINTF("#no such key: \"%s\"\n", arg); return; } - + if (!*seq) { seq = read_seq(arg, &seqlen); if (!seq) @@ -1415,7 +1416,7 @@ void parse_rebind __P1 (char *,arg) return; } } - + old = &((*kp)->sequence); if (*old) free(*old); @@ -1432,24 +1433,24 @@ void parse_rebind __P1 (char *,arg) * if needed, use/malloc "pbuf" as buffer (on error, also free pbuf) * return resulting char * */ -char *redirect __P7 (char *,arg, ptr *,pbuf, char *,kind, char *,name, int,also_num, long *,start, long *,end) +char *redirect(char *arg, ptr *pbuf, char *kind, char *name, int also_num, long *start, long *end) { char *tmp = skipspace(arg), k; int type, i; - + if (!pbuf) { print_error(error=INTERNAL_ERROR); return NULL; } - + k = *tmp; if (k == '!' || k == '<') arg = ++tmp; else k = 0; - + *start = *end = 0; - + if (*tmp=='(') { arg = tmp + 1; @@ -1464,7 +1465,7 @@ char *redirect __P7 (char *,arg, ptr *,pbuf, char *,kind, char *,name, int,also_ } for (i=0; i<2; i++) if (*arg == CMDSEP) { long buf; - + arg++; if (!i && *arg == CMDSEP) { *start = 1; @@ -1474,7 +1475,7 @@ char *redirect __P7 (char *,arg, ptr *,pbuf, char *,kind, char *,name, int,also_ *end = LONG_MAX; continue; } - + type = evall(&buf, &arg); if (!REAL_ERROR && type != TYPE_NUM) error=NO_NUM_VALUE_ERROR; @@ -1510,19 +1511,19 @@ char *redirect __P7 (char *,arg, ptr *,pbuf, char *,kind, char *,name, int,also_ *start = 1; } else unescape(arg); - + *kind = k; return arg; } -void show_vars __P0 (void) -{ +void show_vars(void) +{ varnode *v; int i, type; ptr p = (ptr)0; - + PRINTF("#the following variables are defined:\n"); - + for (type = 0; !REAL_ERROR && type < 2; type++) { reverse_sortedlist((sortednode **)&sortednamed_vars[type]); v = sortednamed_vars[type]; @@ -1556,7 +1557,7 @@ void show_vars __P0 (void) ptrdel(p); } -void show_delaynode __P2 (delaynode *,p, int,in_or_at) +void show_delaynode(delaynode *p, int in_or_at) { long d; struct tm *s; @@ -1564,10 +1565,10 @@ void show_delaynode __P2 (delaynode *,p, int,in_or_at) update_now(); d = diff_vtime(&p->when, &now); - s = localtime((time_t *)&p->when.tv_sec); + s = localtime((time_t *)&p->when.tv_sec); /* s now points to a calendar struct */ if (in_or_at) { - + if (in_or_at == 2) { /* write time in buf */ (void)strftime(buf, BUFSIZE - 1, "%H%M%S", s); @@ -1585,12 +1586,12 @@ void show_delaynode __P2 (delaynode *,p, int,in_or_at) } } -void show_delays __P0 (void) +void show_delays(void) { delaynode *p; int n = (delays ? delays->next ? 2 : 1 : 0) + (dead_delays ? dead_delays->next ? 2 : 1 : 0); - + PRINTF("#%s delay label%s defined%c\n", n ? "the following" : "no", n == 1 ? " is" : "s are", n ? ':' : '.'); for (p = delays; p; p = p->next) @@ -1599,10 +1600,10 @@ void show_delays __P0 (void) show_delaynode(p, 0); } -void change_delaynode __P3 (delaynode **,p, char *,command, long,millisec) +void change_delaynode(delaynode **p, char *command, long millisec) { delaynode *m=*p; - + *p = m->next; m->when.tv_usec = (millisec % mSEC_PER_SEC) * uSEC_PER_mSEC; m->when.tv_sec = millisec / mSEC_PER_SEC; @@ -1626,11 +1627,11 @@ void change_delaynode __P3 (delaynode **,p, char *,command, long,millisec) } } -void new_delaynode __P3 (char *,name, char *,command, long,millisec) +void new_delaynode(char *name, char *command, long millisec) { vtime t; delaynode *node; - + t.tv_usec = (millisec % mSEC_PER_SEC) * uSEC_PER_mSEC; t.tv_sec = millisec / mSEC_PER_SEC; update_now(); @@ -1642,15 +1643,15 @@ void new_delaynode __P3 (char *,name, char *,command, long,millisec) } } -void show_history __P1 (int,count) +void show_history(int count) { int i = curline; - + if (!count) count = lines - 1; if (count >= MAX_HIST) count = MAX_HIST - 1; i -= count; if (i < 0) i += MAX_HIST; - + while (count) { if (hist[i]) { PRINTF("#%2d: %s\n", count, hist[i]); @@ -1660,11 +1661,11 @@ void show_history __P1 (int,count) } } -void exe_history __P1 (int,count) +void exe_history(int count) { int i = curline; char buf[BUFSIZE]; - + if (count >= MAX_HIST) count = MAX_HIST - 1; i -= count; @@ -1,32 +1,32 @@ /* public things from cmd2.c */ -void show_aliases __P ((void)); -void parse_alias __P ((char *str)); - -void show_actions __P ((void)); -void show_prompts __P ((void)); -void parse_action __P ((char *str, int onprompt)); - -void show_attr_syntax __P ((void)); -void attr_string __P ((int attrcode, char *begin, char *end)); -int parse_attributes __P ((char *line)); -char *attr_name __P ((int attrcode)); -void show_marks __P ((void)); -void parse_mark __P ((char *str)); - -char *seq_name __P ((char *seq, int len)); -void show_binds __P ((char edit)); -void parse_bind __P ((char *arg)); -void parse_rebind __P ((char *arg)); - -char *redirect __P ((char *arg, ptr *pbuf, char *kind, char *name, int also_num, long *start, long *end)); - -void show_vars __P ((void)); -void show_delaynode __P ((delaynode *p, int in_or_at)); -void show_delays __P ((void)); -void change_delaynode __P ((delaynode **p, char *command, long millisec)); -void new_delaynode __P ((char *name, char *command, long millisec)); - -void show_history __P ((int count)); -void exe_history __P ((int count)); +void show_aliases(void); +void parse_alias(char *str); + +void show_actions(void); +void show_prompts(void); +void parse_action(char *str, int onprompt); + +void show_attr_syntax(void); +void attr_string(int attrcode, char *begin, char *end); +int parse_attributes(char *line); +char *attr_name(int attrcode); +void show_marks(void); +void parse_mark(char *str); + +char *seq_name(char *seq, int len); +void show_binds(char edit); +void parse_bind(char *arg); +void parse_rebind(char *arg); + +char *redirect(char *arg, ptr *pbuf, char *kind, char *name, int also_num, long *start, long *end); + +void show_vars(void); +void show_delaynode(delaynode *p, int in_or_at); +void show_delays(void); +void change_delaynode(delaynode **p, char *command, long millisec); +void new_delaynode(char *name, char *command, long millisec); + +void show_history(int count); +void exe_history(int count); @@ -23,64 +23,6 @@ # define init_random srand48 #endif -#ifdef __STDC__ - -# define VOLATILE volatile -# ifndef __P -# define __P(args) args -# endif -# define __P0(dummy) (void) -# define __P1(t1,a1) (t1 a1) -# define __P2(t1,a1,t2,a2) (t1 a1, t2 a2) -# define __P3(t1,a1,t2,a2,t3,a3) (t1 a1, t2 a2, t3 a3) -# define __P4(t1,a1,t2,a2,t3,a3,t4,a4) (t1 a1, t2 a2, t3 a3, t4 a4) -# define __P5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5) -# define __P6(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6) -# define __P7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) (t1 a1, t2 a2, t3 a3, t4 a4, t5 a5, t6 a6, t7 a7) - -#else /* ! __STDC__ */ - -# define VOLATILE -# ifndef __P -# define __P(args) () -# endif -# define __P0(dummy) () -# define __P1(t1,a1) (a1) t1 a1; -# define __P2(t1,a1,t2,a2) (a1, a2) t1 a1; t2 a2; -# define __P3(t1,a1,t2,a2,t3,a3) (a1, a2, a3) t1 a1; t2 a2; t3 a3; -# define __P4(t1,a1,t2,a2,t3,a3,t4,a4) (a1, a2, a3, a4) t1 a1; t2 a2; t3 a3; t4 a4; -# define __P5(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5) (a1, a2, a3, a4, a5) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; -# define __P6(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6) (a1, a2, a3, a4, a5, a6) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; -# define __P7(t1,a1,t2,a2,t3,a3,t4,a4,t5,a5,t6,a6,t7,a7) (a1, a2, a3, a4, a5, a6, a7) t1 a1; t2 a2; t3 a3; t4 a4; t5 a5; t6 a6; t7 a7; - -#endif /* __STDC__ */ - -#ifdef __GNUC__ -# define INLINE static inline -#else -# define INLINE static -#endif - -#ifndef NULL -# define NULL ((void *)0) -#endif - -#ifndef LONG_MAX -# define LONG_MAX ( (long) ((~(unsigned long)0) >> 1) ) -#endif - -#ifndef LONG_MIN -# define LONG_MIN ( (long) (((~(unsigned long)0) >> 1) + 1) ) -#endif - -#ifndef INT_MAX -# define INT_MAX ( (int) ((~(unsigned int)0) >> 1) ) -#endif - -#ifndef INT_MIN -# define INT_MIN ( (int) (((~(unsigned int)0) >> 1) + 1) ) -#endif - #define uSEC_PER_SEC ((long)1000000) /* microseconds in a second */ #define mSEC_PER_SEC ((long)1000) /* milliseconds in a second */ #define uSEC_PER_mSEC ((long)1000) /* microseconds in a millisecond */ @@ -232,11 +174,11 @@ typedef unsigned char byte; typedef void (*function_any) (); /* generic function pointer */ -typedef void (*function_int) __P ((int i)); +typedef void (*function_int)(int i); typedef function_int function_signal; -typedef void (*function_str) __P ((char *arg)); +typedef void (*function_str)(char *arg); typedef struct timeval vtime; /* needs #include <sys/tyme.h> */ @@ -303,7 +245,7 @@ typedef struct triggernode { typedef triggernode actionnode; typedef triggernode promptnode; -typedef int (*function_sort) __P ((defnode *node1, defnode *node2)); +typedef int (*function_sort)(defnode *node1, defnode *node2); typedef struct keynode { struct keynode *next; @@ -29,7 +29,7 @@ #include "eval.h" #include "log.h" -static void insert_string __P ((char *arg)); +static void insert_string(char *arg); /* history buffer */ char *hist[MAX_HIST]; /* saved history lines */ @@ -71,16 +71,16 @@ edit_function internal_functions[] = { {(char *)0, (function_str)0 } }; -int lookup_edit_name __P2 (char *,name, char **,arg) +int lookup_edit_name(char *name, char **arg) { int i, len, flen; char *fname, *extra = NULL; - + if ((fname = strchr(name, ' '))) len = fname - name; else len = strlen(name); - + for (i=1; (fname = internal_functions[i].name); i++) { flen = strlen(fname); if (flen == len && !strncmp(name, fname, flen)) { @@ -95,20 +95,20 @@ int lookup_edit_name __P2 (char *,name, char **,arg) return 0; } -int lookup_edit_function __P1 (function_str,funct) +int lookup_edit_function(function_str funct) { int i; function_str ffunct; - + for (i = 1; (ffunct = internal_functions[i].funct); i++) if (funct == ffunct) return i; - + return 0; } /* return pointer to any unterminated escape code at the end of s */ -static char *find_partial_esc __P1 (char *,s) +static char *find_partial_esc(char *s) { size_t len = strlen(s); char *end = s + len; @@ -126,7 +126,7 @@ static char *find_partial_esc __P1 (char *,s) * redisplay the prompt * assume cursor is at beginning of line */ -void draw_prompt __P0 (void) +void draw_prompt(void) { if (promptlen && prompt_status == 1) { char *esc, *pstr; @@ -154,11 +154,11 @@ void draw_prompt __P0 (void) /* * clear current input line (deleteprompt == 1 if to clear also prompt) * cursor is left right after the prompt. - * + * * since we do not expect data from the user at this point, * do not print edattrbeg now. */ -void clear_input_line __P1 (int,deleteprompt) +void clear_input_line(int deleteprompt) { /* * be careful: if prompt and/or input line have been erased from screen, @@ -167,7 +167,7 @@ void clear_input_line __P1 (int,deleteprompt) if ((edlen && line_status == 0) || (promptlen && prompt_status == 0 && deleteprompt)) { int newcol = deleteprompt ? 0 : col0; int realpos = line_status == 0 ? pos : (prompt_status == 0 ? 0 : -col0); - + tty_gotoxy_opt(CURCOL(realpos), CURLINE(realpos), newcol, line0); tty_puts(edattrend); if (line0 < lines - 1) @@ -187,7 +187,7 @@ void clear_input_line __P1 (int,deleteprompt) /* * clear input line, but do nothing else */ -void clear_line __P1 (char *,dummy) +void clear_line(char *dummy) { if (!edlen) return; @@ -201,15 +201,15 @@ void clear_line __P1 (char *,dummy) * Redraw the input line and put the cursor at the current position. * The cursor is assumed to be directly after the prompt. */ -void draw_input_line __P0 (void) +void draw_input_line(void) { int i, oldline0; - + if (line_status == 0 || linemode & LM_NOECHO) return; - + tty_puts(edattrbeg); - + if (edlen) { oldline0 = line0; if (edlen < cols_1 - col0) { @@ -218,7 +218,7 @@ void draw_input_line __P0 (void) tty_printf("%.*s", cols_1 - col0, edbuf); for (i = cols_1 - col0; i <= edlen; i += cols_1) { #ifdef BUG_ANSI - if (edattrbg) + if (edattrbg) tty_printf("%s\n%s%.*s", edattrend, edattrbeg, cols_1, edbuf + i); else #endif @@ -240,7 +240,7 @@ void draw_input_line __P0 (void) /* * redraw the input line */ -void redraw_line __P1 (char *,dummy) +void redraw_line(char *dummy) { clear_input_line(1); } @@ -248,7 +248,7 @@ void redraw_line __P1 (char *,dummy) /* * redraw the input line, clearing the prompt */ -void redraw_line_noprompt __P1 (char *,dummy) +void redraw_line_noprompt(char *dummy) { clear_input_line(0); tty_putc('\n'); @@ -260,32 +260,32 @@ void redraw_line_noprompt __P1 (char *,dummy) /* * GH: transpose two words to the left */ -void transpose_words __P1 (char *,dummy) +void transpose_words(char *dummy) { /* other refers to the word to the left, this is the one we are at */ - + int this_so, other_so, this_eo, other_eo; char buf[BUFSIZE]; int n; - + if (pos > 2) { - + this_eo = this_so = pos; /* optionally traceback to find a word */ while (this_so && strchr(DELIM, edbuf[this_so])) this_so--; - + /* now find where the current word ends */ while (this_eo < edlen && !strchr(DELIM, edbuf[this_eo])) this_eo++; - + /* found a word; now find its start */ while (this_so > 0 && !strchr(DELIM, edbuf[this_so - 1])) this_so--; - + if (this_so < 2) return; /* impossible that there's another word */ - + other_so = this_so - 1; while (other_so >= 0 && strchr(DELIM, edbuf[other_so])) other_so--; @@ -294,12 +294,12 @@ void transpose_words __P1 (char *,dummy) other_eo = other_so + 1; while (other_so > 0 && !strchr(DELIM, edbuf[other_so - 1])) other_so--; - + sprintf(buf, "%.*s%.*s%.*s", - this_eo - this_so, edbuf + this_so, + this_eo - this_so, edbuf + this_so, this_so - other_eo, edbuf + other_eo, other_eo - other_so, edbuf + other_so); - + input_moveto(other_so); for (n = 0; buf[n]; input_overtype_follow(buf[n++])) ; @@ -309,7 +309,7 @@ void transpose_words __P1 (char *,dummy) /* * transpose two characters to the left */ -void transpose_chars __P1 (char *,dummy) +void transpose_chars(char *dummy) { int i, j; char c; @@ -322,7 +322,7 @@ void transpose_chars __P1 (char *,dummy) i = pos - 2; } c = edbuf[j]; edbuf[j] = edbuf[i]; edbuf[i] = c; - + if (line_status == 0) { tty_gotoxy_opt(CURCOL(pos), CURLINE(pos), CURCOL(i), CURLINE(i)); tty_putc(edbuf[i]); @@ -340,12 +340,12 @@ void transpose_chars __P1 (char *,dummy) /* * erase everything to the end of line */ -void kill_to_eol __P1 (char *,dummy) +void kill_to_eol(char *dummy) { if (line_status == 0) { - if (edattrbg) + if (edattrbg) tty_printf("%s%s", edattrend, tty_clreoln); - else + else tty_puts(tty_clreoln); if (CURLINE(edlen) > CURLINE(pos)) { tty_printf("\n%s", tty_clreoscr); @@ -360,7 +360,7 @@ void kill_to_eol __P1 (char *,dummy) /* * move cursor to end of line */ -void end_of_line __P1 (char *,dummy) +void end_of_line(char *dummy) { input_moveto(edlen); } @@ -368,7 +368,7 @@ void end_of_line __P1 (char *,dummy) /* * move cursor to beginning of line */ -void begin_of_line __P1 (char *,dummy) +void begin_of_line(char *dummy) { input_moveto(0); } @@ -376,7 +376,7 @@ void begin_of_line __P1 (char *,dummy) /* * delete a character to the right */ -void del_char_right __P1 (char *,dummy) +void del_char_right(char *dummy) { input_delete_nofollow_chars(1); } @@ -384,7 +384,7 @@ void del_char_right __P1 (char *,dummy) /* * delete a character to the left */ -void del_char_left __P1 (char *,dummy) +void del_char_left(char *dummy) { if (pos) { input_moveto(pos-1); @@ -395,7 +395,7 @@ void del_char_left __P1 (char *,dummy) /* * move a line into history, but don't do anything else */ -void to_history __P1 (char *,dummy) +void to_history(char *dummy) { if (!edlen) return; @@ -410,7 +410,7 @@ void to_history __P1 (char *,dummy) * put string in history at current position * (string is assumed to be trashable) */ -void put_history __P1 (char *,str) +void put_history(char *str) { char *p; if (hist[curline]) free(hist[curline]); @@ -418,14 +418,14 @@ void put_history __P1 (char *,str) errmsg("malloc"); return; } - + if (++curline == MAX_HIST) curline = 0; - + /* split into words and put into completion list */ - for (p = strtok(str, DELIM); p; + for (p = strtok(str, DELIM); p; p = strtok(NULL, DELIM)) { - if (strlen(p) >= MIN_WORDLEN && + if (strlen(p) >= MIN_WORDLEN && p[0] != '#') /* no commands/short words */ put_word(p); } @@ -434,7 +434,7 @@ void put_history __P1 (char *,str) /* * move a node before wordindex, i.e. make it the last word */ -static void demote_word __P1 (int,i) +static void demote_word(int i) { words[words[i].prev].next = words[i].next; words[words[i].next].prev = words[i].prev; @@ -447,7 +447,7 @@ static struct { char **words; } static_words; -static int compl_next_word __P1 (int,i) +static int compl_next_word(int i) { if (i < 0) { go_static: @@ -464,7 +464,7 @@ static int compl_next_word __P1 (int,i) return i; } -static char *compl_get_word __P1 (int,i) +static char *compl_get_word(int i) { return i < 0 ? static_words.words[-i - 1] : words[i].word; } @@ -472,7 +472,7 @@ static char *compl_get_word __P1 (int,i) /* * match and complete a word referring to the word list */ -void complete_word __P1 (char *,dummy) +void complete_word(char *dummy) { /* * GH: rewritten to allow circulating through history with @@ -482,12 +482,12 @@ void complete_word __P1 (char *,dummy) * comp_len length of current completition * root_len length of the root word (before the completition) * root start of the root word - */ - + */ + static int curr_word, comp_len = 0, root_len = 0; char *root, *p; int k, n; - + /* find word start */ if (last_edit_cmd == (function_any)complete_word && comp_len) { k = comp_len; @@ -501,9 +501,9 @@ void complete_word __P1 (char *,dummy) root_len = pos - n; } root = edbuf + n; comp_len = 0; - + /* k = chars to delete, n = position of starting word */ - + /* scan word list for next match */ while ((p = compl_get_word(curr_word = compl_next_word(curr_word)))) { if (!strncasecmp(p, root, root_len) && @@ -519,12 +519,12 @@ void complete_word __P1 (char *,dummy) } if (k > 0) input_delete_nofollow_chars(k); - + /* delete duplicate instances of the word */ if (p && curr_word >= 0 && !(words[k = curr_word].flags & WORD_UNIQUE)) { words[k].flags |= WORD_UNIQUE; - p = words[k].word; + p = words[k].word; n = words[k].next; while (words[k = n].word) { n = words[k].next; @@ -544,16 +544,16 @@ void complete_word __P1 (char *,dummy) * match and complete entire lines backwards in history * GH: made repeated complete_line cycle through history */ -void complete_line __P1 (char *,dummy) +void complete_line(char *dummy) { static int curr_line = MAX_HIST-1, root_len = 0, first_line = 0; int i; - + if (last_edit_cmd != (function_any)complete_line) { root_len = edlen; first_line = curr_line = curline; } - + for (i = curr_line - 1; i != curr_line; i--) { if (i < 0) i = MAX_HIST - 1; if (i == first_line) @@ -579,7 +579,7 @@ void complete_line __P1 (char *,dummy) * GH: word history handling stolen from cancan 2.6.3a */ -static void default_completions __P0 (void) +static void default_completions(void) { char buf[BUFSIZE]; cmdstruct *p; @@ -598,7 +598,7 @@ static void default_completions __P0 (void) words[MAX_WORDS - 1].next = 0; } -void put_static_word __P1 (char *,s) +void put_static_word(char *s) { if (static_words.used >= static_words.size) { do { @@ -619,7 +619,7 @@ void put_static_word __P1 (char *,s) /* * put word in word completion ring */ -void put_word __P1 (char *,s) +void put_word(char *s) { int r = wordindex; if (!(words[r].word = my_strdup(s))) { @@ -630,16 +630,16 @@ void put_word __P1 (char *,s) r = words[r].prev; demote_word(r); wordindex = r; - if (words[r].word) { - free(words[r].word); - words[r].word = 0; + if (words[r].word) { + free(words[r].word); + words[r].word = 0; } } /* * GH: set delimeters[DELIM_CUSTOM] */ -void set_custom_delimeters __P1 (char *,s) +void set_custom_delimeters(char *s) { char *old = delim_list[DELIM_CUSTOM]; if (!(delim_list[DELIM_CUSTOM] = my_strdup(s))) @@ -655,10 +655,10 @@ void set_custom_delimeters __P1 (char *,s) /* * enter a line */ -void enter_line __P1 (char *,dummy) +void enter_line(char *dummy) { char *p; - + if (line_status == 0) input_moveto(edlen); else { @@ -667,21 +667,21 @@ void enter_line __P1 (char *,dummy) draw_input_line(); } PRINTF("%s\n", edattrend); - + line0 = CURLINE(edlen); if (line0 < lines - 1) line0++; - + if (recordfile) fprintf(recordfile, "%s\n", edbuf); - + col0 = error = pos = line_status = 0; - + if (!*edbuf || (verbatim && *edbuf != '#')) tcp_write(tcp_fd, edbuf); else - parse_user_input(edbuf, 1); + parse_user_input(edbuf, 1); history_done = 0; - + /* don't put identical lines in history, nor empty ones */ p = hist[curline ? curline - 1 : MAX_HIST - 1]; if (!p || (edlen > 0 && strcmp(edbuf, p))) @@ -702,7 +702,7 @@ void enter_line __P1 (char *,dummy) /* * move one word forward */ -void next_word __P1 (char *,dummy) +void next_word(char *dummy) { int i; for (i = pos; edbuf[i] && !isalnum(edbuf[i]); i++) @@ -715,7 +715,7 @@ void next_word __P1 (char *,dummy) /* * move one word backward */ -void prev_word __P1 (char *,dummy) +void prev_word(char *dummy) { int i; for (i = pos; i && !isalnum(edbuf[i - 1]); i--) @@ -728,7 +728,7 @@ void prev_word __P1 (char *,dummy) /* * delete word to the right */ -void del_word_right __P1 (char *,dummy) +void del_word_right(char *dummy) { int i; for (i = pos; edbuf[i] && !isalnum(edbuf[i]); i++) @@ -741,7 +741,7 @@ void del_word_right __P1 (char *,dummy) /* * delete word to the left */ -void del_word_left __P1 (char *,dummy) +void del_word_left(char *dummy) { int i; for (i = pos; i && !isalnum(edbuf[i - 1]); i--) @@ -756,11 +756,11 @@ void del_word_left __P1 (char *,dummy) /* * GH: make word upcase */ -void upcase_word __P1 (char *,dummy) +void upcase_word(char *dummy) { int opos = pos; int npos = pos; - + if (last_edit_cmd == (function_any)upcase_word) npos = 0; else { @@ -777,7 +777,7 @@ void upcase_word __P1 (char *,dummy) /* * GH: make word downcase */ -void downcase_word __P1 (char *,dummy) +void downcase_word(char *dummy) { int opos = pos; int npos = pos; @@ -799,7 +799,7 @@ void downcase_word __P1 (char *,dummy) /* * get previous line from history list */ -void prev_line __P1 (char *,dummy) +void prev_line(char *dummy) { int i = pickline - 1; if (i < 0) i = MAX_HIST - 1; @@ -824,7 +824,7 @@ void prev_line __P1 (char *,dummy) /* * get next line from history list */ -void next_line __P1 (char *,dummy) +void next_line(char *dummy) { int i = pickline + 1; if (i == MAX_HIST) i = 0; @@ -849,7 +849,7 @@ void next_line __P1 (char *,dummy) /* * move one char backward */ -void prev_char __P1 (char *,dummy) +void prev_char(char *dummy) { input_moveto(pos-1); } @@ -857,7 +857,7 @@ void prev_char __P1 (char *,dummy) /* * move one char forward */ -void next_char __P1 (char *,dummy) +void next_char(char *dummy) { input_moveto(pos+1); } @@ -865,7 +865,7 @@ void next_char __P1 (char *,dummy) /* * Flash cursor at parentheses that matches c inserted before current pos */ -static void flashparen __P1 (char,c) +static void flashparen(char c) { int lev, i; if (line_status != 0) @@ -893,7 +893,7 @@ static void flashparen __P1 (char,c) /* * put cursor back where it belongs */ -void putbackcursor __P0 (void) +void putbackcursor(void) { if (line_status == 0) tty_gotoxy_opt(CURCOL(excursion), CURLINE(excursion), CURCOL(pos), CURLINE(pos)); @@ -903,7 +903,7 @@ void putbackcursor __P0 (void) /* * insert a typed character on screen (if it is printable) */ -void insert_char __P1 (char,c) +void insert_char(char c) { if (((c & 0x80) || (c >= ' ' && c <= '~')) && edlen < BUFSIZE - 2) { if (flashback) putbackcursor(); @@ -913,18 +913,18 @@ void insert_char __P1 (char,c) } } -static void insert_string __P1 (char *,arg) +static void insert_string(char *arg) { char buf[BUFSIZE]; int len; - + if (!arg || !*arg) return; - + my_strncpy(buf, arg, BUFSIZE-1); unescape(buf); len = strlen(buf); - + if (len > 1) { if (flashback) putbackcursor(); input_insert_follow_chars(buf, len); @@ -935,25 +935,25 @@ static void insert_string __P1 (char *,arg) /* * execute string as if typed */ -void key_run_command __P1 (char *,cmd) +void key_run_command(char *cmd) { clear_input_line(opt_compact && !opt_keyecho); if (opt_keyecho) { tty_printf("%s%s%s\n", edattrbeg, cmd, edattrend); } else if (!opt_compact) tty_putc('\n'); - + status(1); error = 0; - + if (recordfile) fprintf(recordfile, "%s\n", edbuf); - + parse_instruction(cmd, 1, 0, 1); history_done = 0; } -void edit_bootstrap __P0 (void) +void edit_bootstrap(void) { default_completions(); } @@ -10,9 +10,9 @@ typedef struct { extern edit_function internal_functions[]; -/* +/* * GH: completion list, stolen from cancan 2.6.3a - * + * * words[wordindex] is where the next word will go (always empty) * words[wordindex].prev is last (least interesting) * words[wordindex].next is 2nd (first to search for completion) @@ -32,44 +32,44 @@ extern wordnode words[MAX_WORDS]; extern int wordindex; /* public function declarations */ -void edit_bootstrap __P ((void)); +void edit_bootstrap(void); -int lookup_edit_name __P ((char *name, char **arg)); -int lookup_edit_function __P ((function_str funct)); -void draw_prompt __P ((void)); -void clear_input_line __P ((int deleteprompt)); -void draw_input_line __P ((void)); -void redraw_line __P ((char *dummy)); -void redraw_line_noprompt __P ((char *dummy)); -void transpose_words __P ((char *dummy)); -void transpose_chars __P ((char *dummy)); -void kill_to_eol __P ((char *dummy)); -void end_of_line __P ((char *dummy)); -void begin_of_line __P ((char *dummy)); -void del_char_right __P ((char *dummy)); -void del_char_left __P ((char *dummy)); -void to_history __P ((char *dummy)); -void put_history __P ((char *str)); -void complete_word __P ((char *dummy)); -void complete_line __P ((char *dummy)); -void put_word __P ((char *s)); -void put_static_word __P ((char *s)); -void set_custom_delimeters __P ((char *s)); -void to_input_line __P ((char *str)); -void clear_line __P ((char *dummy)); -void enter_line __P ((char *dummy)); -void putbackcursor __P ((void)); -void insert_char __P ((char c)); -void next_word __P ((char *dummy)); -void prev_word __P ((char *dummy)); -void del_word_right __P ((char *dummy)); -void del_word_left __P ((char *dummy)); -void upcase_word __P ((char *dummy)); -void downcase_word __P ((char *dummy)); -void prev_line __P ((char *dummy)); -void next_line __P ((char *dummy)); -void prev_char __P ((char *dummy)); -void next_char __P ((char *dummy)); -void key_run_command __P ((char *cmd)); +int lookup_edit_name(char *name, char **arg); +int lookup_edit_function(function_str funct); +void draw_prompt(void); +void clear_input_line(int deleteprompt); +void draw_input_line(void); +void redraw_line(char *dummy); +void redraw_line_noprompt(char *dummy); +void transpose_words(char *dummy); +void transpose_chars(char *dummy); +void kill_to_eol(char *dummy); +void end_of_line(char *dummy); +void begin_of_line(char *dummy); +void del_char_right(char *dummy); +void del_char_left(char *dummy); +void to_history(char *dummy); +void put_history(char *str); +void complete_word(char *dummy); +void complete_line(char *dummy); +void put_word(char *s); +void put_static_word(char *s); +void set_custom_delimeters(char *s); +void to_input_line(char *str); +void clear_line(char *dummy); +void enter_line(char *dummy); +void putbackcursor(void); +void insert_char(char c); +void next_word(char *dummy); +void prev_word(char *dummy); +void del_word_right(char *dummy); +void del_word_left(char *dummy); +void upcase_word(char *dummy); +void downcase_word(char *dummy); +void prev_line(char *dummy); +void next_line(char *dummy); +void prev_char(char *dummy); +void next_char(char *dummy); +void key_run_command(char *cmd); #endif /* _EDIT_H_ */ @@ -2,7 +2,7 @@ * eval.c -- functions for builtin calculator * * (created: Massimiliano Ghilardi (Cosmos), Jan 15th, 1995) - * + * * Copyright (C) 1998 by Massimiliano Ghilardi * * This program is free software; you can redistribute it and/or modify @@ -125,9 +125,9 @@ char *error_msg[] = { operator_list op_list[] = { { 0, 0, 0, "", null }, - + { 1, LEFT, BINARY, ",", comma }, - + { 2, RIGHT, BINARY, "=", eq }, { 2, RIGHT, BINARY, "||=", or_or_eq }, { 2, RIGHT, BINARY, "^^=", xor_xor_eq }, @@ -142,36 +142,36 @@ operator_list op_list[] = { { 2, RIGHT, BINARY, "*=", times_eq }, { 2, RIGHT, BINARY, "/=", div_eq }, { 2, RIGHT, BINARY, "%=", ampersand_eq }, - + { 3, LEFT, BINARY, "||", or_or }, - + { 4, LEFT, BINARY, "^^", xor_xor }, - + { 5, LEFT, BINARY, "&&", and_and }, - + { 6, LEFT, BINARY, "|", or }, - + { 7, LEFT, BINARY, "^", xor }, - + { 8, LEFT, BINARY, "&", and }, - + { 9, LEFT, BINARY, "<", less }, { 9, LEFT, BINARY, "<=", less_eq }, { 9, LEFT, BINARY, ">", greater }, { 9, LEFT, BINARY, ">=", greater_eq }, { 9, LEFT, BINARY, "==", eq_eq }, { 9, LEFT, BINARY, "!=", not_eq }, - + {10, LEFT, BINARY, "<<", lshift }, {10, LEFT, BINARY, ">>", rshift }, - + {11, LEFT, BINARY, "+", plus }, {11, LEFT, BINARY, "-", minus }, - + {12, LEFT, BINARY, "*", times }, {12, LEFT, BINARY, "/", division }, {12, LEFT, BINARY, "%", ampersand }, - + {14, LEFT, BINARY, ":<", colon_less }, {14, LEFT, BINARY, ":>", colon_greater }, {14, LEFT, BINARY, "<:", less_colon }, @@ -183,12 +183,12 @@ operator_list op_list[] = { {14, LEFT, BINARY, ":", colon }, {14, LEFT, BINARY, ".", point }, {14, LEFT, BINARY, "?", question }, - + { 0, 0, 0, "", another_null }, - + { 0, RIGHT, PRE_UNARY, "(", left_paren }, { 0, RIGHT, POST_UNARY, ")", right_paren }, - + {13, RIGHT, PRE_UNARY, "!", not }, {13, RIGHT, PRE_UNARY, "~", tilde }, {13, RIGHT, PRE_UNARY, "++", pre_plus_plus }, @@ -199,15 +199,15 @@ operator_list op_list[] = { {13, RIGHT, PRE_UNARY, "%", print }, {13, RIGHT, PRE_UNARY, "rand", _random_ }, {13, RIGHT, PRE_UNARY, "attr", _attr_ }, - + {14, LEFT, PRE_UNARY, ":?", colon_question }, {14, LEFT, PRE_UNARY, ".?", point_question }, - + {15, RIGHT, PRE_UNARY, "+", pre_plus }, {15, RIGHT, PRE_UNARY, "-", pre_minus }, {15, RIGHT, PRE_UNARY, "@", a_circle }, {15, RIGHT, PRE_UNARY, "$", dollar }, - + { 0, 0, PRE_UNARY, "", pre_null }, { 0, 0, POST_UNARY, "", post_null } }; @@ -217,7 +217,7 @@ static char *line; static int depth; int error; -void print_error __P1 (int,err_num) +void print_error(int err_num) { clear_input_line(1); if (error == NO_MEM_ERROR) { @@ -227,7 +227,7 @@ void print_error __P1 (int,err_num) tty_printf("#error: %s.\n", error_msg[err_num]); } -static int push_op __P1 (operator *,op) +static int push_op(operator *op) { if (stk.curr_op<MAX_STACK) { stk.op[++stk.curr_op]=*op; @@ -239,7 +239,7 @@ static int push_op __P1 (operator *,op) } } -static int pop_op __P1 (operator *,op) +static int pop_op(operator *op) { if (stk.curr_op>=0) { *op=stk.op[stk.curr_op--]; @@ -251,12 +251,12 @@ static int pop_op __P1 (operator *,op) } } -static int push_obj __P1 (object *,obj) +static int push_obj(object *obj) { object *tmp; - + int curr=stk.curr_obj; - + if (curr<MAX_STACK) { tmp = stk.obj + (stk.curr_obj = ++curr); memmove(tmp, obj, sizeof(object)); @@ -268,12 +268,12 @@ static int push_obj __P1 (object *,obj) } } -static int pop_obj __P1 (object *,obj) +static int pop_obj(object *obj) { object *tmp; - + int curr=stk.curr_obj; - + if (curr>=0) { tmp = stk.obj + curr; stk.curr_obj--; @@ -286,19 +286,19 @@ static int pop_obj __P1 (object *,obj) } } -static int check_operator __P3 (char,side, operator *,op, int,mindepth) +static int check_operator(char side, operator *op, int mindepth) { int i, max, len; operator match; char *name, c, d; - + if (!(c=*line) || c == CMDSEP) { *op = side==BINARY ? null : side==LEFT ? pre_null : post_null; return 1; } else if ((c=='$' || c=='@') && (d=line[1]) && (isalpha(d) || d=='_')) return 0; /* Danger! found named variable */ - + else if (side==LEFT && c=='(') { line++; depth++; @@ -320,7 +320,7 @@ static int check_operator __P3 (char,side, operator *,op, int,mindepth) *op=post_null; return 1; } - + for (max=match=0, i=(side==BINARY ? 1 : LOWEST_UNARY_CODE); *(name = op_list[i].name); i++) if ((len=strlen(name)) > max && @@ -329,7 +329,7 @@ static int check_operator __P3 (char,side, operator *,op, int,mindepth) match=op_list[i].code; max=len; } - + if (match) { *op=match; line+=max; @@ -343,11 +343,11 @@ static int check_operator __P3 (char,side, operator *,op, int,mindepth) return 0; } -static int check_object __P1 (object *,obj) +static int check_object(object *obj) { long i=0, base = 10; char c, *end, digit; - + if (c=*line, c == '#' || isdigit(c)) { while (c == '#' || isalnum(c)) { digit = !!isdigit(c); @@ -390,7 +390,7 @@ static int check_object __P1 (object *,obj) } else if ((c=='$' || c=='@') && (c=line[1]) && (isalpha(c) || c=='_')) { varnode *named_var; /* Found named variable */ - + if (*(line++) == '@') { i = 0; obj->type = TYPE_NUM_VAR; @@ -444,11 +444,11 @@ static int check_object __P1 (object *,obj) } else error=NO_VALUE_ERROR; - + return (int)i; } -static void check_delete __P1 (object *,obj) +static void check_delete(object *obj) { if (obj->type==TYPE_TXT && obj->txt) { ptrdel(obj->txt); @@ -456,7 +456,7 @@ static void check_delete __P1 (object *,obj) } } -static int exe_op __P1 (operator *,op) +static int exe_op(operator *op) { object o1, o2, *p=NULL; long *l, rnd, delta; @@ -464,9 +464,9 @@ static int exe_op __P1 (operator *,op) int srclen; char *ssrc, *tmp; int ret=0, i=0, j=0, danger=0; - + o1.txt = o2.txt = NULL; - + switch ((int)*op) { case (int)comma: if (pop_obj(&o2) && pop_obj(&o1)); @@ -478,12 +478,12 @@ static int exe_op __P1 (operator *,op) case (int)eq: if (pop_obj(&o2) && pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o2.type==TYPE_NUM_VAR) { o2.num = *VAR[o2.num].num; o2.type = TYPE_NUM; } - + if (o1.type==TYPE_NUM_VAR && o2.type==TYPE_NUM) { *VAR[o1.num].num = o2.num; p=&o2; @@ -491,13 +491,13 @@ static int exe_op __P1 (operator *,op) } else if (o1.type==TYPE_TXT_VAR && (o2.type==TYPE_TXT || o2.type==TYPE_TXT_VAR)) { - + if (o2.type==TYPE_TXT_VAR) { o2.txt = ptrdup(*VAR[o2.num].str); if (REAL_ERROR) break; o2.type=TYPE_TXT; } - + *VAR[o1.num].str = ptrcpy(*VAR[o1.num].str, o2.txt); if (REAL_ERROR) break; p=&o2; @@ -521,15 +521,15 @@ static int exe_op __P1 (operator *,op) case (int)ampersand_eq: if (pop_obj(&o2) && pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o2.type==TYPE_NUM_VAR) { o2.num = *VAR[o2.num].num; o2.type = TYPE_NUM; } - + if (o1.type==TYPE_NUM_VAR && o2.type==TYPE_NUM) { l=VAR[o1.num].num; - + switch ((int)*op) { case (int)or_or_eq: if ( o2.num) *l = 1; else *l = !!*l; break; case (int)xor_xor_eq:if ( o2.num) *l = !*l; else *l = !!*l; break; @@ -552,18 +552,18 @@ static int exe_op __P1 (operator *,op) } else if (*op==plus_eq && o1.type==TYPE_TXT_VAR && (o2.type==TYPE_TXT || o2.type==TYPE_TXT_VAR)) { - + if (o2.type==TYPE_TXT) src=o2.txt; else src=*VAR[o2.num].str; - + *VAR[o1.num].str = ptrcat(*VAR[o1.num].str, src); check_delete(&o2); - + dst = ptrdup(*VAR[o1.num].str); if (REAL_ERROR) break; - + o1.type=TYPE_TXT; o1.txt=dst; p=&o1; @@ -571,12 +571,12 @@ static int exe_op __P1 (operator *,op) } else if (*op==times_eq && o1.type==TYPE_TXT_VAR && (o2.type==TYPE_NUM || o2.type==TYPE_NUM_VAR)) { - + if (o2.type==TYPE_NUM_VAR) { o2.num = *VAR[o2.num].num; o2.type = TYPE_NUM; } - + if (o2.num < 0) error = OUT_RANGE_ERROR; else if (o2.num == 0) @@ -590,11 +590,11 @@ static int exe_op __P1 (operator *,op) for (n = 1; !error && n<o2.num; n++) memcpy(tmp+n*delta, tmp, delta); } - + check_delete(&o2); dst = ptrdup(*VAR[o1.num].str); if (REAL_ERROR) break; - + o1.type=TYPE_TXT; o1.txt=dst; p=&o1; @@ -624,7 +624,7 @@ static int exe_op __P1 (operator *,op) case (int)ampersand: if (pop_obj(&o2) && pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_NUM_VAR) { o1.num = *VAR[o1.num].num; o1.type = TYPE_NUM; @@ -633,14 +633,14 @@ static int exe_op __P1 (operator *,op) o2.num = *VAR[o2.num].num; o2.type = TYPE_NUM; } - + if (o1.type==TYPE_NUM && o2.type==TYPE_NUM) { if (!o2.num && (*op==division || *op==ampersand)) { error=DIV_BY_ZERO_ERROR; break; } - + switch ((int)*op) { case (int)less: o1.num = o1.num < o2.num ? 1 : 0; break; case (int)less_eq: o1.num = o1.num <= o2.num ? 1 : 0; break; @@ -663,13 +663,13 @@ static int exe_op __P1 (operator *,op) case (int)ampersand: if ((o1.num %= o2.num) < 0) o1.num += o2.num; break; } - + p=&o1; ret=1; } else if ((o1.type==TYPE_TXT || o1.type==TYPE_TXT_VAR) && (o2.type==TYPE_TXT || o2.type==TYPE_TXT_VAR)) { - + if (o1.type==TYPE_TXT_VAR) { o1.txt = ptrdup(*VAR[o1.num].str); o1.type = TYPE_TXT; /* not a var anymore */ @@ -680,7 +680,7 @@ static int exe_op __P1 (operator *,op) src=o2.txt; else src=*VAR[o2.num].str; - + if (*op == plus) { dst = ptrcat(dst, src); o1.type = TYPE_TXT; @@ -713,13 +713,13 @@ static int exe_op __P1 (operator *,op) else if (*op==times && (o1.type==TYPE_TXT_VAR || o1.type==TYPE_TXT) && o2.type==TYPE_NUM) { - + if (o2.num > 0 && o1.type==TYPE_TXT_VAR) { o1.txt = ptrdup(*VAR[o1.num].str); if (REAL_ERROR) break; } dst = o1.txt; - + if (o2.num < 0) error = OUT_RANGE_ERROR; else if (o2.num == 0) @@ -735,7 +735,7 @@ static int exe_op __P1 (operator *,op) } check_delete(&o2); if (REAL_ERROR) break; - + o1.type=TYPE_TXT; o1.txt=dst; p=&o1; @@ -756,22 +756,22 @@ static int exe_op __P1 (operator *,op) case (int)point: if (pop_obj(&o2) && pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o2.type==TYPE_NUM_VAR) { o2.num = *VAR[o2.num].num; o2.type = TYPE_NUM; } - + if ((o1.type!=TYPE_TXT_VAR && o1.type!=TYPE_TXT) || o2.type!=TYPE_NUM) { error=SYNTAX_ERROR; break; } - + if (o2.num<=0) { error=OUT_RANGE_ERROR; break; } - + if (o1.type==TYPE_TXT_VAR) { o1.type=TYPE_TXT; o1.txt=dst=NULL; @@ -782,7 +782,7 @@ static int exe_op __P1 (operator *,op) src=dst=start=o1.txt; danger=1; } - + if (!src) { /* src == empty string. just return it */ check_delete(&o2); @@ -791,10 +791,10 @@ static int exe_op __P1 (operator *,op) p=&o1; ret=1; break; } - + srclen = ptrlen(src); ssrc = ptrdata(src); - + switch ((int)*op) { case (int)colon_less: while (o2.num && srclen) { @@ -806,7 +806,7 @@ static int exe_op __P1 (operator *,op) i=tmp-ssrc, o2.num--, ssrc+=i, j+=i, srclen-=i; else break; } - + if (o2.num) { /* end of valid string before the n-th word */ if (danger) ; @@ -834,7 +834,7 @@ static int exe_op __P1 (operator *,op) srclen--, ssrc++; } else break; } - + if (o2.num) /* end of valid string before the n-th word */ ptrzero(dst); else { @@ -857,7 +857,7 @@ static int exe_op __P1 (operator *,op) o2.num--, srclen=tmp-ssrc; else break; } - + if (o2.num) /* end of valid string before the n-th word */ ptrzero(dst); else @@ -873,7 +873,7 @@ static int exe_op __P1 (operator *,op) o2.num--, srclen=tmp-ssrc; else break; } - + if (o2.num) /* end of valid string before the n-th word */ dst = ptrcpy(dst, start); else @@ -920,7 +920,7 @@ static int exe_op __P1 (operator *,op) case (int)point_question: if (pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_TXT) src=o1.txt; else if (o1.type==TYPE_TXT_VAR) @@ -938,10 +938,10 @@ static int exe_op __P1 (operator *,op) ret=1; break; } - + ssrc = ptrdata(src); srclen = ptrlen(src); - + if (*op==colon_question) { o1.num = 0; /* skip span of multiple word delimeters */ @@ -962,7 +962,7 @@ static int exe_op __P1 (operator *,op) } else o1.num=srclen; - + check_delete(&o1); o1.type=TYPE_NUM; p=&o1; @@ -971,21 +971,21 @@ static int exe_op __P1 (operator *,op) case (int)question: if (pop_obj(&o2) && pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_TXT) src = o1.txt; else if (o1.type==TYPE_TXT_VAR) src = *VAR[o1.num].str; - else + else error = SYNTAX_ERROR; - + if (o2.type==TYPE_TXT) dst = o2.txt; else if (o2.type==TYPE_TXT_VAR) dst = *VAR[o2.num].str; - else + else error = SYNTAX_ERROR; - + if (!error) { if ((ssrc = ptrfind(src, dst))) i = (int)(ssrc - ptrdata(src)) + 1; @@ -1002,12 +1002,12 @@ static int exe_op __P1 (operator *,op) case (int)another_null: if (pop_obj(&o2) && pop_obj(&o1)); else if (REAL_ERROR) break; - + check_delete(&o1); check_delete(&o2); - + o1.type=0, o1.num=0, o1.txt=NULL; - + p=&o1; ret=1; break; @@ -1017,12 +1017,12 @@ static int exe_op __P1 (operator *,op) case (int)right_paren: if (pop_op(op)); else if (REAL_ERROR) break; - + if (*op!=left_paren) error=MISMATCH_PAREN_ERROR; else ret=1; - + break; case (int)_random_: #ifdef NO_RANDOM @@ -1033,10 +1033,10 @@ static int exe_op __P1 (operator *,op) case (int)pre_minus: case (int)not: case (int)tilde: - + if (pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_NUM_VAR) { o1.num = *VAR[o1.num].num; o1.type = TYPE_NUM; @@ -1070,16 +1070,16 @@ static int exe_op __P1 (operator *,op) case (int)_attr_: if (pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_TXT_VAR) { o1.txt = ptrdup(*VAR[o1.num].str); if (REAL_ERROR) break; o1.type = TYPE_TXT; - } - + } + if (o1.type==TYPE_TXT) { char dummy[CAPLEN]; /* just because attr_string must write somewhere */ - + if (o1.txt) i = parse_attributes(ptrdata(o1.txt)); else @@ -1097,17 +1097,17 @@ static int exe_op __P1 (operator *,op) } else error=NO_STRING_ERROR; break; - + case (int)star: case (int)print: if (pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_NUM_VAR) o1.num = *VAR[o1.num].num; else if (o1.type==TYPE_TXT_VAR) o1.txt = *VAR[o1.num].str; - + if (o1.type==TYPE_NUM || o1.type==TYPE_NUM_VAR) { o1.txt = NULL; if (*op==print) { @@ -1138,7 +1138,7 @@ static int exe_op __P1 (operator *,op) o1.type = TYPE_NUM; p=&o1; ret=1; } - else + else error=SYNTAX_ERROR; break; case (int)pre_plus_plus: @@ -1147,11 +1147,11 @@ static int exe_op __P1 (operator *,op) case (int)post_minus_minus: if (pop_obj(&o1)); else if (REAL_ERROR) break; - + if (o1.type==TYPE_NUM_VAR) { l=VAR[o1.num].num; o1.type=TYPE_NUM; - + if (*op==pre_plus_plus) o1.num=++*l; else if (*op==post_plus_plus) @@ -1160,7 +1160,7 @@ static int exe_op __P1 (operator *,op) o1.num=--*l; else o1.num=(*l)--; - + p=&o1; ret=1; } @@ -1171,36 +1171,36 @@ static int exe_op __P1 (operator *,op) case (int)dollar: if (pop_obj(&o1)); else if (REAL_ERROR) break; - + if (*op == dollar) delta = 1; else delta = 0; - + if (o1.type==TYPE_NUM_VAR) { o1.type=TYPE_NUM; o1.num=*VAR[o1.num].num; } - + if (o1.type==TYPE_NUM) { if (o1.num<-NUMVAR || o1.num>=NUMPARAM) { error=OUT_RANGE_ERROR; break; } - o1.type= delta ? TYPE_TXT_VAR : TYPE_NUM_VAR; + o1.type= delta ? TYPE_TXT_VAR : TYPE_NUM_VAR; p=&o1; ret=1; } else { varnode *named_var; char c; - + if (o1.type==TYPE_TXT_VAR) o1.txt = *VAR[o1.num].str; else if (o1.type!=TYPE_TXT) { error=SYNTAX_ERROR; break; } - + if (o1.txt && (tmp=ptrdata(o1.txt)) && ((c=*tmp) == '_' || isalpha(c))) { tmp++; @@ -1211,7 +1211,7 @@ static int exe_op __P1 (operator *,op) error=INVALID_NAME_ERROR; break; } - + if (!(named_var = *lookup_varnode(ptrdata(o1.txt), delta))) { named_var = add_varnode(ptrdata(o1.txt), delta); if (REAL_ERROR) @@ -1221,7 +1221,7 @@ static int exe_op __P1 (operator *,op) ? '$' : '@', ptrdata(o1.txt)); } } - o1.type= delta ? TYPE_TXT_VAR : TYPE_NUM_VAR; + o1.type= delta ? TYPE_TXT_VAR : TYPE_NUM_VAR; p=&o1; ret=1; } @@ -1233,12 +1233,12 @@ static int exe_op __P1 (operator *,op) default: break; } - + if (REAL_ERROR) { check_delete(&o2); check_delete(&o1); } - + if (!REAL_ERROR) { if (!ret) error=NOT_DONE_ERROR; @@ -1249,39 +1249,39 @@ static int exe_op __P1 (operator *,op) check_delete(p); } } - + if (REAL_ERROR) return 0; - + return ret; } -static int whichfirst __P2 (operator *,op1, operator *,op2) +static int whichfirst(operator *op1, operator *op2) { int p1, p2; - + p1=op_list[*op1].priority; p2=op_list[*op2].priority; if (p1!=p2) return p1>p2 ? -1 : 1; - + p1 = op_list[*op1].assoc == LEFT; return p1 ? -1 : 1; } -static int compare_and_unload __P1 (operator *,op) +static int compare_and_unload(operator *op) { int first=0; operator new; - + if (REAL_ERROR || stk.curr_op<0) return 1; - + while (stk.curr_op>=0 && pop_op(&new) && !REAL_ERROR && (first = whichfirst(&new, op)) == -1 && (first = 0, exe_op(&new)) ); - + if (!REAL_ERROR) { if (!first) return 1; @@ -1291,49 +1291,49 @@ static int compare_and_unload __P1 (operator *,op) return 0; } -static int _eval __P1 (int,mindepth) +static int _eval(int mindepth) { operator op; object obj; char endreached = 0; - + for (;;) { memzero(&obj, sizeof(obj)); - + while (*line==' ') line++; if (!*line || *line == CMDSEP) endreached = 1; - + while (check_operator(LEFT, &op, mindepth) && push_op(&op) && !endreached) { - + if (error) return 0; while (*line==' ') line++; if (!*line || *line == CMDSEP) endreached = 1; } - + if (!endreached && check_object(&obj) && push_obj(&obj)); else if (error) return 0; - + while (*line==' ') line++; if (!*line || *line == CMDSEP) endreached = 1; - + while (check_operator(RIGHT, &op, mindepth) && compare_and_unload(&op) && exe_op(&op) && depth>=mindepth && !endreached) { - + if (error) return 0; while (*line==' ') line++; if (!*line || *line == CMDSEP) - endreached = 1; + endreached = 1; } if (error) return 0; - + if (endreached || depth < mindepth) break; - + if (check_operator(BINARY, &op, mindepth) && compare_and_unload(&op) && push_op(&op)); else if (error) return 0; @@ -1341,13 +1341,13 @@ static int _eval __P1 (int,mindepth) return 1; } -int eval_any __P3 (long *,lres, ptr *,pres, char **,what) +int eval_any(long *lres, ptr *pres, char **what) { int printmode; long val; ptr txt; object res; - + if (pres) printmode = PRINT_AS_PTR; else if (lres) @@ -1358,10 +1358,10 @@ int eval_any __P3 (long *,lres, ptr *,pres, char **,what) error=0; stk.curr_obj=stk.curr_op=-1; line = *what; - + depth = 0; (void)_eval(0); - + if (!error) (void)pop_obj(&res); if (error) { @@ -1370,9 +1370,9 @@ int eval_any __P3 (long *,lres, ptr *,pres, char **,what) } } else if (printmode!=PRINT_NOTHING || opt_debug) { if (res.type==TYPE_NUM || res.type==TYPE_NUM_VAR) { - + val = res.type==TYPE_NUM ? res.num : *VAR[res.num].num; - + if (printmode==PRINT_AS_PTR) { *pres = ptrsetlen(*pres, LONGLEN); if (!MEM_ERROR) { @@ -1413,7 +1413,7 @@ int eval_any __P3 (long *,lres, ptr *,pres, char **,what) } } *what=line; - + if (!error) { if (printmode==PRINT_AS_PTR && res.type == TYPE_TXT && res.txt && ptrdata(res.txt)) @@ -1428,26 +1428,26 @@ int eval_any __P3 (long *,lres, ptr *,pres, char **,what) } res.type = 0; } - + if (res.type==TYPE_TXT_VAR) res.type = TYPE_TXT; else if (res.type==TYPE_NUM_VAR) res.type = TYPE_NUM; - + return res.type; } -int evalp __P2 (ptr *,res, char **,what) +int evalp(ptr *res, char **what) { return eval_any((long *)0, res, what); } -int evall __P2 (long *,res, char **,what) +int evall(long *res, char **what) { return eval_any(res, (ptr *)0, what); } -int evaln __P1 (char **,what) +int evaln(char **what) { return eval_any((long *)0, (ptr *)0, what); } @@ -41,12 +41,12 @@ #define PRINT_AS_PTR 1 #define PRINT_AS_LONG 2 -int eval_any __P ((long *lres, ptr *pres, char **what)); -int evalp __P (( ptr *pres, char **what)); -int evall __P ((long *lres, char **what)); -int evaln __P (( char **what)); +int eval_any(long *lres, ptr *pres, char **what); +int evalp( ptr *pres, char **what); +int evall(long *lres, char **what); +int evaln( char **what); -void print_error __P ((int err_num)); +void print_error(int err_num); extern char *error_msg[]; extern int error; @@ -1,6 +1,6 @@ /* * follow.c -- interactively print an ASCII file. - * + * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or @@ -135,8 +135,8 @@ int main(int argc, char *argv[]) { FILE *f; char c = 0, buf[512]; int d; - - if (argc < 2) { + + if (argc < 2) { fprintf(stderr, "needed a file name\n"); exit(0); } @@ -145,7 +145,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "unable to open %s\n", argv[1]); exit(0); } - + set_terminal(); while(c!=0x1b) { read(0, &c, 1); @@ -1,6 +1,6 @@ /* * list.c -- list utility functions. - * + * * Copyright (C) 1998 by Massimiliano Ghilardi * * This program is free software; you can redistribute it and/or modify @@ -32,7 +32,7 @@ /* * compare two times, return -1 if t1 < t2, 1 if t1 > t2, 0 if t1 == t2 */ -int cmp_vtime __P2 (vtime *,t1, vtime *,t2) +int cmp_vtime(vtime *t1, vtime *t2) { int i; i = t1->tv_sec < t2->tv_sec ? -1 : t1->tv_sec > t2->tv_sec ? 1 : 0; @@ -44,7 +44,7 @@ int cmp_vtime __P2 (vtime *,t1, vtime *,t2) /* * add t2 to t1 (i.e. t1 += t2) */ -void add_vtime __P2 (vtime *,t1, vtime *,t2) +void add_vtime(vtime *t1, vtime *t2) { t1->tv_sec += t2->tv_sec; if ((t1->tv_usec += t2->tv_usec) >= uSEC_PER_SEC) { @@ -56,13 +56,13 @@ void add_vtime __P2 (vtime *,t1, vtime *,t2) /* * Return t1 - t2, in milliseconds */ -long diff_vtime __P2 (vtime *,t1, vtime *,t2) +long diff_vtime(vtime *t1, vtime *t2) { return (t1->tv_sec - t2->tv_sec) * mSEC_PER_SEC + (t1->tv_usec - t2->tv_usec) / uSEC_PER_mSEC; } -int rev_sort __P2 (defnode *,node1, defnode *,node2) +int rev_sort(defnode *node1, defnode *node2) { return -1; } @@ -70,12 +70,12 @@ int rev_sort __P2 (defnode *,node1, defnode *,node2) /* * standard ASCII comparison between nodes */ -int ascii_sort __P2 (defnode *,node1, defnode *,node2) +int ascii_sort(defnode *node1, defnode *node2) { return strcmp(node1->sortfield, node2->sortfield); } -int rev_ascii_sort __P2 (defnode *,node1, defnode *,node2) +int rev_ascii_sort(defnode *node1, defnode *node2) { return strcmp(node2->sortfield, node1->sortfield); } @@ -85,7 +85,7 @@ int rev_ascii_sort __P2 (defnode *,node1, defnode *,node2) * comparison between times of execution of nodes * (return -1 if node1->when < node2->when) */ -int time_sort __P2 (defnode *,node1, defnode *,node2) +int time_sort(defnode *node1, defnode *node2) { return cmp_vtime(&((delaynode *)node1)->when, &((delaynode *)node2)->when); } @@ -94,7 +94,7 @@ int time_sort __P2 (defnode *,node1, defnode *,node2) * reverse comparison between times of execution of nodes * (return -1 if node1->when > node2->when) */ -int rev_time_sort __P2 (defnode *,node1, defnode *,node2) +int rev_time_sort(defnode *node1, defnode *node2) { return cmp_vtime(&((delaynode *)node2)->when, &((delaynode *)node1)->when); } @@ -102,7 +102,7 @@ int rev_time_sort __P2 (defnode *,node1, defnode *,node2) /* * compute the hash value of a name */ -int hash __P2 (char *,name, int,optlen) +int hash(char *name, int optlen) { int h = 0, i = 0; if (optlen < 0) @@ -118,7 +118,7 @@ int hash __P2 (char *,name, int,optlen) /* * generic list node adding routine */ -void add_node __P3 (defnode *,newnode, defnode **,base, function_sort,sort) +void add_node(defnode *newnode, defnode **base, function_sort sort) { while((*base) && (!sort || (*sort)(newnode, *base) > 0)) base = &(*base)->next; @@ -126,7 +126,7 @@ void add_node __P3 (defnode *,newnode, defnode **,base, function_sort,sort) *base = newnode; } -static void add_sortednode __P3 (sortednode *,newnode, sortednode **,base, function_sort,sort) +static void add_sortednode(sortednode *newnode, sortednode **base, function_sort sort) { while((*base) && (!sort || (*sort)((defnode *)newnode, (defnode *)*base) > 0)) base = &(*base)->snext; @@ -134,7 +134,7 @@ static void add_sortednode __P3 (sortednode *,newnode, sortednode **,base, funct *base = newnode; } -void reverse_list __P1 (defnode **,base) +void reverse_list(defnode **base) { defnode *node = *base, *list = NULL, *tmp; while (node) { @@ -146,7 +146,7 @@ void reverse_list __P1 (defnode **,base) *base = list; } -void reverse_sortedlist __P1 (sortednode **,base) +void reverse_sortedlist(sortednode **base) { sortednode *node = *base, *list = NULL, *tmp; while (node) { @@ -158,7 +158,7 @@ void reverse_sortedlist __P1 (sortednode **,base) *base = list; } -static sortednode **selflookup_sortednode __P2 (sortednode *,self, sortednode **,base) +static sortednode **selflookup_sortednode(sortednode *self, sortednode **base) { sortednode **p = base; while (*p && *p != self) @@ -173,14 +173,14 @@ static sortednode **selflookup_sortednode __P2 (sortednode *,self, sortednode ** /* * add a node to the alias list */ -void add_aliasnode __P2 (char *,name, char *,subst) +void add_aliasnode(char *name, char *subst) { aliasnode *new = (aliasnode*)malloc(sizeof(aliasnode)); if (!new) { errmsg("malloc"); return; } - + new->group = NULL; new->active = 1; new->name = my_strdup(name); @@ -201,7 +201,7 @@ void add_aliasnode __P2 (char *,name, char *,subst) /* * add a node to the marker list */ -void add_marknode __P4 (char *,pattern, int,attrcode, char,mbeg, char,wild) +void add_marknode(char *pattern, int attrcode, char mbeg, char wild) { marknode **p, *new = (marknode*)malloc(sizeof(marknode)); int i; @@ -232,7 +232,7 @@ void add_marknode __P4 (char *,pattern, int,attrcode, char,mbeg, char,wild) /* * add a node to the action list */ -void add_actionnode __P6 (char *,pattern, char *,command, char *,label, int,active, int,type, void *,vregexp) +void add_actionnode(char *pattern, char *command, char *label, int active, int type, void *vregexp) { actionnode **p, *new = (actionnode*)malloc(sizeof(actionnode)); int i; @@ -240,7 +240,7 @@ void add_actionnode __P6 (char *,pattern, char *,command, char *,label, int,acti errmsg("malloc"); return; } - + new->group = NULL; new->pattern = my_strdup(pattern); new->command = my_strdup(command); @@ -274,7 +274,7 @@ void add_actionnode __P6 (char *,pattern, char *,command, char *,label, int,acti /* * add a node to the prompt list */ -void add_promptnode __P6 (char *,pattern, char *,command, char *,label, int,active, int,type, void *,vregexp) +void add_promptnode(char *pattern, char *command, char *label, int active, int type, void *vregexp) { promptnode **p, *new = (promptnode*)malloc(sizeof(promptnode)); int i; @@ -282,7 +282,7 @@ void add_promptnode __P6 (char *,pattern, char *,command, char *,label, int,acti errmsg("malloc"); return; } - + new->pattern = my_strdup(pattern); new->command = my_strdup(command); new->label = my_strdup(label); @@ -315,7 +315,7 @@ void add_promptnode __P6 (char *,pattern, char *,command, char *,label, int,acti /* * add a node to the keydef list */ -void add_keynode __P5 (char *,name, char *,sequence, int,seqlen, function_str,funct, char *,call_data) +void add_keynode(char *name, char *sequence, int seqlen, function_str funct, char *call_data) { keynode *new = (keynode*)malloc(sizeof(keynode)); if (!new) { @@ -339,7 +339,7 @@ void add_keynode __P5 (char *,name, char *,sequence, int,seqlen, function_str,fu free(new->call_data); free(new); return; - } + } add_node((defnode*)new, (defnode**)&keydefs, ascii_sort); } @@ -347,7 +347,7 @@ void add_keynode __P5 (char *,name, char *,sequence, int,seqlen, function_str,fu * add a node to the delayed command list * is_dead == 1 means when < now (and so cannot be executed anymore) */ -delaynode *add_delaynode __P4 (char *,name, char *,command, vtime *,when, int,is_dead) +delaynode *add_delaynode(char *name, char *command, vtime *when, int is_dead) { delaynode *new = (delaynode*)malloc(sizeof(delaynode)); if (!new) { @@ -365,30 +365,30 @@ delaynode *add_delaynode __P4 (char *,name, char *,command, vtime *,when, int,is free(new); return NULL; } - + new->when.tv_sec = when->tv_sec; new->when.tv_usec = when->tv_usec; if (is_dead) add_node((defnode*)new, (defnode**)&dead_delays, rev_time_sort); else add_node((defnode*)new, (defnode**)&delays, time_sort); - + return new; } /* * add a node to named variables list - * + * * do NOT allocate a ptr! */ -varnode *add_varnode __P2 (char *,name, int,type) +varnode *add_varnode(char *name, int type) { varnode *new; int m, n; - + if (type) type = 1; - + if (num_named_vars[type] >= max_named_vars) { /* we are running low on var pointers. try to enlarge */ m = NUMTOT + max_named_vars; @@ -414,7 +414,7 @@ varnode *add_varnode __P2 (char *,name, int,type) memzero(var + m, (n-m)*sizeof(vars)); } } - + new = (varnode*)malloc(sizeof(varnode)); if (!new) { errmsg("malloc"); @@ -429,13 +429,13 @@ varnode *add_varnode __P2 (char *,name, int,type) new->num = 0; new->str = (ptr)0; new->index = m = NUMPARAM + num_named_vars[type]; - + if (type) VAR[m].str = &new->str; else VAR[m].num = &new->num; num_named_vars[type]++; - + add_node((defnode*)new, (defnode**)&named_vars[type][hash(name,-1)], rev_sort); add_sortednode((sortednode*)new, (sortednode**)&sortednamed_vars[type], rev_ascii_sort); return new; @@ -445,7 +445,7 @@ varnode *add_varnode __P2 (char *,name, int,type) * look up an alias node by name: * return pointer to pointer to node or a pointer to NULL if nothing found */ -aliasnode **lookup_alias __P1 (char *,name) +aliasnode **lookup_alias(char *name) { aliasnode **p = &aliases[hash(name,-1)]; while (*p && strcmp(name, (*p)->name)) @@ -457,7 +457,7 @@ aliasnode **lookup_alias __P1 (char *,name) * look up an action node by label: * return pointer to pointer to node or a pointer to NULL if nothing found */ -actionnode **lookup_action __P1 (char *,label) +actionnode **lookup_action(char *label) { actionnode **p = &actions; while (*p && strcmp(label, (*p)->label)) @@ -469,7 +469,7 @@ actionnode **lookup_action __P1 (char *,label) * look up an action node by pattern: * return pointer to pointer to node or a pointer to NULL if nothing found */ -actionnode **lookup_action_pattern __P1 (char *,pattern) +actionnode **lookup_action_pattern(char *pattern) { actionnode **p = &actions; while (*p && strcmp(pattern, (*p)->pattern)) @@ -481,7 +481,7 @@ actionnode **lookup_action_pattern __P1 (char *,pattern) * look up a prompt node by label: * return pointer to pointer to node or a pointer to NULL if nothing found */ -actionnode **lookup_prompt __P1 (char *,label) +actionnode **lookup_prompt(char *label) { promptnode **p = &prompts; while (*p && strcmp(label, (*p)->label)) @@ -493,7 +493,7 @@ actionnode **lookup_prompt __P1 (char *,label) * look up an marker node by pattern: * return pointer to pointer to node or a pointer to NULL if nothing found */ -marknode **lookup_marker __P2 (char *,pattern, char,mbeg) +marknode **lookup_marker(char *pattern, char mbeg) { marknode **p = &markers; while (*p && (mbeg != (*p)->mbeg || strcmp(pattern, (*p)->pattern))) @@ -505,10 +505,10 @@ marknode **lookup_marker __P2 (char *,pattern, char,mbeg) * look up a key node by name: * return pointer to pointer to node or a pointer to NULL if nothing found */ -keynode **lookup_key __P1 (char *,name) +keynode **lookup_key(char *name) { keynode **p = &keydefs; - + while (*p && strcmp(name, (*p)->name)) p = &(*p)->next; return p; @@ -518,7 +518,7 @@ keynode **lookup_key __P1 (char *,name) * look up a delayed command node by label: * return pointer to pointer to node or a pointer to NULL if nothing found */ -delaynode **lookup_delay __P2 (char *,name, int,is_dead) +delaynode **lookup_delay(char *name, int is_dead) { delaynode **p = (is_dead ? &dead_delays : &delays); while (*p && strcmp(name, (*p)->name)) @@ -530,7 +530,7 @@ delaynode **lookup_delay __P2 (char *,name, int,is_dead) * look up a named variable node by name: * return pointer to pointer to node or a pointer to NULL if nothing found */ -varnode **lookup_varnode __P2 (char *,name, int,type) +varnode **lookup_varnode(char *name, int type) { varnode **p = &named_vars[type][hash(name,-1)]; while (*p && strcmp(name, (*p)->name)) @@ -541,7 +541,7 @@ varnode **lookup_varnode __P2 (char *,name, int,type) /* * delete an alias node, given a pointer to its precessor's pointer */ -void delete_aliasnode __P1 (aliasnode **,base) +void delete_aliasnode(aliasnode **base) { aliasnode *p = *base; *base = p->next; @@ -558,7 +558,7 @@ void delete_aliasnode __P1 (aliasnode **,base) /* * delete an action node, given a pointer to its precessor's pointer */ -void delete_actionnode __P1 (actionnode **,base) +void delete_actionnode(actionnode **base) { actionnode *p = *base; if (p->pattern) free(p->pattern); @@ -577,7 +577,7 @@ void delete_actionnode __P1 (actionnode **,base) /* * delete an prompt node, given a pointer to its precessor's pointer */ -void delete_promptnode __P1 (promptnode **,base) +void delete_promptnode(promptnode **base) { promptnode *p = *base; if (p->pattern) free(p->pattern); @@ -596,7 +596,7 @@ void delete_promptnode __P1 (promptnode **,base) /* * delete an marker node, given a pointer to its precessor's pointer */ -void delete_marknode __P1 (marknode **,base) +void delete_marknode(marknode **base) { marknode *p = *base; if (p->pattern) free(p->pattern); @@ -607,7 +607,7 @@ void delete_marknode __P1 (marknode **,base) /* * delete a keydef node, given a pointer to its precessor's pointer */ -void delete_keynode __P1 (keynode **,base) +void delete_keynode(keynode **base) { keynode *p = *base; if (p->name) free(p->name); @@ -620,7 +620,7 @@ void delete_keynode __P1 (keynode **,base) /* * delete a delayed command node, given a pointer to its precessor's pointer */ -void delete_delaynode __P1 (delaynode **,base) +void delete_delaynode(delaynode **base) { delaynode *p = *base; if (p->name) free(p->name); @@ -632,11 +632,11 @@ void delete_delaynode __P1 (delaynode **,base) /* * delete a named variable node, given a pointer to its precessor's pointer */ -void delete_varnode __P2 (varnode **,base, int,type) +void delete_varnode(varnode **base, int type) { varnode *p = *base; int idx = p->index, i, n; - + *base = p->next; if (*(base = (varnode**)selflookup_sortednode ((sortednode*)p, (sortednode**)&sortednamed_vars[type]))) @@ -646,28 +646,28 @@ void delete_varnode __P2 (varnode **,base, int,type) if (p->name) free(p->name); if (type && p->str) ptrdel(p->str); free((void*)p); - + i = NUMPARAM + --num_named_vars[type]; - + if (idx == i) return; - + /* now I must fill the hole in var[idx].*** */ - + for (n = 0; n < MAX_HASH; n++) for (p = named_vars[type][n]; p; p = p->next) if (p->index == i) { n = MAX_HASH; break; } - + if (!p) { /* should NEVER happen */ print_error(error=UNDEFINED_VARIABLE_ERROR); return; } - + p->index = idx; - + if (type) { VAR[idx].str = &p->str; VAR[ i ].str = NULL; @@ -3,45 +3,45 @@ #ifndef _LIST_H_ #define _LIST_H_ -int cmp_vtime __P ((vtime *t1, vtime *t2)); -void add_vtime __P ((vtime *t1, vtime *t2)); -long diff_vtime __P ((vtime *t1, vtime *t2)); - -int rev_sort __P ((defnode *node1, defnode *node2)); -int ascii_sort __P ((defnode *node1, defnode *node2)); -int rev_ascii_sort __P ((defnode *node1, defnode *node2)); -int time_sort __P ((defnode *node1, defnode *node2)); -int rev_time_sort __P ((defnode *node1, defnode *node2)); - -int hash __P ((char *name)); - -void add_node __P ((defnode *newnode, defnode **base, function_sort sort)); -void reverse_sortedlist __P ((sortednode **base)); - -void add_aliasnode __P ((char *name, char *subst)); -void add_actionnode __P ((char *pattern, char *command, char *label, int active, int type, void *qregexp)); -void add_promptnode __P ((char *pattern, char *command, char *label, int active, int type, void *qregexp)); -void add_marknode __P ((char *pattern, int attrcode, char mbeg, char wild)); -void add_keynode __P ((char *name, char *sequence, int seqlen, function_str funct, char *call_data)); -delaynode *add_delaynode __P ((char *name, char *command, vtime *when, int is_dead)); -varnode *add_varnode __P ((char *name, int type)); - -aliasnode **lookup_alias __P ((char *name)); -actionnode **lookup_action __P ((char *label)); -actionnode **lookup_prompt __P ((char *label)); -actionnode **lookup_action_pattern __P ((char *pattern)); -marknode **lookup_marker __P ((char *pattern, char mbeg)); -keynode **lookup_key __P ((char *name)); -delaynode **lookup_delay __P ((char *name, int is_dead)); -varnode **lookup_varnode __P ((char *name, int type)); - -void delete_aliasnode __P ((aliasnode **base)); -void delete_actionnode __P ((actionnode **base)); -void delete_promptnode __P ((promptnode **base)); -void delete_marknode __P ((marknode **base)); -void delete_keynode __P ((keynode **base)); -void delete_delaynode __P ((delaynode **base)); -void delete_varnode __P ((varnode **base, int type)); +int cmp_vtime(vtime *t1, vtime *t2); +void add_vtime(vtime *t1, vtime *t2); +long diff_vtime(vtime *t1, vtime *t2); + +int rev_sort(defnode *node1, defnode *node2); +int ascii_sort(defnode *node1, defnode *node2); +int rev_ascii_sort(defnode *node1, defnode *node2); +int time_sort(defnode *node1, defnode *node2); +int rev_time_sort(defnode *node1, defnode *node2); + +int hash(char *name); + +void add_node(defnode *newnode, defnode **base, function_sort sort); +void reverse_sortedlist(sortednode **base); + +void add_aliasnode(char *name, char *subst); +void add_actionnode(char *pattern, char *command, char *label, int active, int type, void *qregexp); +void add_promptnode(char *pattern, char *command, char *label, int active, int type, void *qregexp); +void add_marknode(char *pattern, int attrcode, char mbeg, char wild); +void add_keynode(char *name, char *sequence, int seqlen, function_str funct, char *call_data); +delaynode *add_delaynode(char *name, char *command, vtime *when, int is_dead); +varnode *add_varnode(char *name, int type); + +aliasnode **lookup_alias(char *name); +actionnode **lookup_action(char *label); +actionnode **lookup_prompt(char *label); +actionnode **lookup_action_pattern(char *pattern); +marknode **lookup_marker(char *pattern, char mbeg); +keynode **lookup_key(char *name); +delaynode **lookup_delay(char *name, int is_dead); +varnode **lookup_varnode(char *name, int type); + +void delete_aliasnode(aliasnode **base); +void delete_actionnode(actionnode **base); +void delete_promptnode(promptnode **base); +void delete_marknode(marknode **base); +void delete_keynode(keynode **base); +void delete_delaynode(delaynode **base); +void delete_varnode(varnode **base, int type); #endif /* _LIST_H_ */ @@ -1,7 +1,7 @@ /* * log.c -- code for #movie / #capture backbuffering * and code for reprint-on-prompt - * + * * Copyright (C) 1998 by Massimiliano Ghilardi * * This program is free software; you can redistribute it and/or modify @@ -57,7 +57,7 @@ static char *names[] = { NULL, "line", "prompt", "sleep" }; /* * flush a single buffer line */ -static void log_flushline __P1 (int,i) +static void log_flushline(int i) { if (capturefile) fprintf(capturefile, "%s%s", @@ -74,14 +74,14 @@ static void log_flushline __P1 (int,i) /* * remove the oldest (first) line from the buffer */ -static void log_clearline __P0 (void) +static void log_clearline(void) { int next; - + if (logstart == logend) return; log_flushline(logstart); - + next = (logstart + 1) % logsize; if (next == logend) datastart = dataend = logstart = logend = 0; @@ -92,7 +92,7 @@ static void log_clearline __P0 (void) /* * remove an initial SLEEP from the buffer */ -void log_clearsleep __P0 (void) +void log_clearsleep(void) { if (logstart != logend) loglist[logstart].msecs = 0; @@ -101,7 +101,7 @@ void log_clearsleep __P0 (void) /* * flush the buffer */ -void log_flush __P0 (void) +void log_flush(void) { int i = logstart; while (i != logend) { @@ -112,12 +112,12 @@ void log_flush __P0 (void) datastart = dataend = logstart = logend = 0; } -int log_getsize __P0 (void) +int log_getsize(void) { return datasize; } -static void log_reset __P0 (void) +static void log_reset(void) { if (datasize) { if (datalist) free(datalist); @@ -129,7 +129,7 @@ static void log_reset __P0 (void) } -void log_resize __P1 (int,newsize) +void log_resize(int newsize) { if (newsize && newsize < 1000) { PRINTF("#buffer size must be 0 (zero) or >= 1000\n"); @@ -138,16 +138,16 @@ void log_resize __P1 (int,newsize) if (newsize == datasize) return; - + log_flush(); log_reset(); if (newsize) { datalist = (char *)malloc(newsize); if (!datalist) { log_reset(); errmsg("malloc"); return; } - + loglist = (logentry *)malloc(newsize/16*sizeof(logentry)); if (!loglist) { log_reset(); errmsg("malloc"); return; } - + datasize = newsize; logsize = newsize / 16; } @@ -159,10 +159,10 @@ void log_resize __P1 (int,newsize) /* * add a single line to the buffer */ -static void log_writeline __P4 (char *,line, int,len, int,kind, long,msecs) +static void log_writeline(char *line, int len, int kind, long msecs) { int dst; - + if (++len >= datasize) { PRINTF("#line too long, discarded from movie/capture buffer\n"); return; @@ -170,13 +170,13 @@ static void log_writeline __P4 (char *,line, int,len, int,kind, long,msecs) while (LOGFULL || DATALEFT < len) log_clearline(); /* ok, now we know there IS enough space */ - + if (datastart >= dataend /* is == iff loglist is empty */ || datasize - dataend > len) dst = dataend; else dst = 0; - + memcpy(loglist[logend].line = datalist + dst, line, len - 1); datalist[dst + len - 1] = '\0'; @@ -185,23 +185,23 @@ static void log_writeline __P4 (char *,line, int,len, int,kind, long,msecs) if ((dataend = dst + len) == datasize) dataend = 0; - + if (++logend == logsize) logend = 0; } - + /* * write to #capture / #movie buffer */ -void log_write __P3 (char *,str, int,len, int,newline) +void log_write(char *str, int len, int newline) { char *next; long diff; int i, last = 0; - + if (!datasize && !moviefile && !capturefile) return; - + update_now(); diff = diff_vtime(&now, &movie_last); movie_last = now; @@ -222,7 +222,7 @@ void log_write __P3 (char *,str, int,len, int,newline) if (diff) fprintf(moviefile, "%s %ld\n", names[SLEEP], diff); - fprintf(moviefile, "%s %.*s\n", + fprintf(moviefile, "%s %.*s\n", names[last && !newline ? PROMPT : LINE], i, str); } if (capturefile) { @@ -260,13 +260,13 @@ static int repsize = BUFSIZE/8; /* size of circular (pointer to string) list */ /* * remove the oldest (first) line from reprintlist */ -static void reprint_clearline __P0 (void) +static void reprint_clearline(void) { int next; - + if (repstart == repend) return; - + next = (repstart + 1) % repsize; if (next == repend) reprintstart = reprintend = repstart = repend = 0; @@ -274,7 +274,7 @@ static void reprint_clearline __P0 (void) reprintstart = replist[next] - reprintlist, repstart = next; } -void reprint_clear __P0 (void) +void reprint_clear(void) { reprintstart = reprintend = repstart = repend = 0; } @@ -282,18 +282,18 @@ void reprint_clear __P0 (void) /* * add a single line to the buffer */ -void reprint_writeline __P1 (char *,line) +void reprint_writeline(char *line) { int len = strlen(line) + 1; int dst; - + if (!opt_reprint || (promptlen && prompt_status != -1)) /* * if prompt is valid, we'll never have to reprint, as we * _already_ printed the command at the right moment */ return; - + if (len >= reprintsize) { PRINTF("#line too long, discarded from prompt reprint buffer\n"); return; @@ -301,24 +301,24 @@ void reprint_writeline __P1 (char *,line) while (REPFULL || REPRINTLEFT < len) reprint_clearline(); /* ok, now we know there IS enough space */ - + if (reprintstart >= reprintend /* is == iff replist is empty */ || reprintsize - reprintend > len) dst = reprintend; else dst = 0; - + memcpy(replist[repend] = reprintlist + dst, line, len - 1); reprintlist[dst + len - 1] = '\0'; if ((reprintend = dst + len) == reprintsize) reprintend = 0; - + if (++repend == repsize) repend = 0; } -char *reprint_getline __P0 (void) +char *reprint_getline(void) { char *line = NULL; if (opt_reprint && repend != repstart) @@ -8,15 +8,15 @@ enum linetype { EMPTY = 0, LINE = 1, PROMPT = 2, SLEEP = 3 }; extern FILE *capturefile, *recordfile, *moviefile; extern vtime movie_last; -void log_clearsleep __P ((void)); -void log_flush __P ((void)); -int log_getsize __P ((void)); -void log_resize __P ((int newsize)); -void log_write __P ((char *str, int len, int newline)); +void log_clearsleep(void); +void log_flush(void); +int log_getsize(void); +void log_resize(int newsize); +void log_write(char *str, int len, int newline); -void reprint_writeline __P ((char *line)); -char *reprint_getline __P ((void)); -void reprint_clear __P ((void)); +void reprint_writeline(char *line); +char *reprint_getline(void); +void reprint_clear(void); #endif /* _LOG_H_ */ @@ -10,8 +10,8 @@ * * * History: - * - * Initially inspired to the Tintin client by Peter Unold, + * + * Initially inspired to the Tintin client by Peter Unold, * Powwow contains no Tintin code. * The original program Cancan, written by Mattias Engdegård (Yorick) * (f91-men@nada.kth.se) 1992-94, @@ -20,7 +20,7 @@ * to make it yet more powerful. * AmigaDOS porting attempt by Fror. * Many new features added by Dain. - * As usual, all the developers are in debt to countless users + * As usual, all the developers are in debt to countless users * for suggestions and debugging. * Maintance was taken over by Steve Slaven (bpk@hoopajoo.net) in 2005 */ @@ -95,22 +95,22 @@ extern int select(); /* local function declarations */ #ifdef MOTDFILE -static void printmotd __P ((void)); +static void printmotd(void); #endif -static void mainloop __P ((void)); -static void exec_delays __P ((void)); -static void prompt_reset_iac __P ((void)); -static void get_remote_input __P ((void)); -static void get_user_input __P ((void)); +static void mainloop(void); +static void exec_delays(void); +static void prompt_reset_iac(void); +static void get_remote_input(void); +static void get_user_input(void); -static int search_action_or_prompt __P ((char *line, char clearline, char copyprompt)); +static int search_action_or_prompt(char *line, char clearline, char copyprompt); #define search_action(line, clearline) search_action_or_prompt((line), (clearline), 0) #define search_prompt(line, copyprompt) search_action_or_prompt((line), 0, (copyprompt)+1) -static void set_params __P ((char *line, int *match_s, int *match_e)); -static void parse_commands __P ((char *command, char *arg)); -static int subst_param __P ((ptr *buf, char *src)); -static int jit_subst_vars __P ((ptr *buf, char *src)); +static void set_params(char *line, int *match_s, int *match_e); +static void parse_commands(char *command, char *arg); +static int subst_param(ptr *buf, char *src); +static int jit_subst_vars(ptr *buf, char *src); /* GLOBALS */ @@ -120,8 +120,8 @@ static char *copyname = COPYNAME; long received = 0; /* amount of data received from remote host */ long sent = 0; /* amount of data sent to remote host */ -VOLATILE char confirm = 0; /* 1 if just tried to quit */ -int history_done = 0; /* number of recursive #history commands */ +volatile char confirm = 0; /* 1 if just tried to quit */ +int history_done = 0; /* number of recursive #history commands */ int prompt_status = 0; /* prompt status: 0 = ready -> nothing to do; * 1 if internal echo -> must redraw; * -1 if something sent to MUD -> waiting for it. @@ -217,7 +217,7 @@ char edattrend[CAPLEN]; /* ending input line attributes */ int edattrbg; /* input line attributes do change bg color */ /* signals handling */ -VOLATILE int sig_pending, sig_winch_got, sig_chld_got; +volatile int sig_pending, sig_winch_got, sig_chld_got; /* GH: different ID characters for different action types */ @@ -236,7 +236,7 @@ int delim_mode = DELIM_NORMAL; /* Group delimiter */ char *group_delim; -int main __P2 (int,argc, char **,argv) +int main(int argc, char **argv) { char *p; int i; @@ -256,12 +256,12 @@ int main __P2 (int,argc, char **,argv) update_now(); ref_time = start_time = movie_last = now; - + start_clock = cpu_clock = clock(); #ifndef NO_RANDOM init_random((int)now.tv_sec); #endif - + initialize_cmd(); if ((p = getenv("POWWOWDIR"))) { @@ -270,20 +270,20 @@ int main __P2 (int,argc, char **,argv) strcat(powwow_dir, "/"); } else powwow_dir[0] = '\0'; - + if ((p = getenv("POWWOWHELP"))) strcpy(helpfile, p); else if (powwow_dir[0]) strcpy(helpfile, powwow_dir); else strcpy(helpfile, POWWOW_DIR); - + if (helpfile[strlen(helpfile) - 1] != '/') strcat(helpfile, "/"); strcat(helpfile, helpname); if (access(helpfile, R_OK) == -1 && !access(helpname, R_OK)) strcpy(helpfile, helpname); - + if (powwow_dir[0]) strcpy(copyfile, powwow_dir); else @@ -293,7 +293,7 @@ int main __P2 (int,argc, char **,argv) strcat(copyfile, copyname); if (access(copyfile, R_OK) == -1 && !access(copyname, R_OK)) strcpy(copyfile, copyname); - + /* initialize variables */ if ((var = (vars *)malloc(sizeof(vars)*(NUMTOT+max_named_vars)))) { for (i=0; i<NUMTOT; i++) { @@ -302,10 +302,10 @@ int main __P2 (int,argc, char **,argv) } } else syserr("malloc"); - + /* stack is empty */ paramstk.curr = 0; - + /* allocate permanent variables */ if ((prompt = add_varnode("prompt", 1)) && (prompt->str = ptrnew(PARAMLEN)) @@ -318,8 +318,8 @@ int main __P2 (int,argc, char **,argv) ; else syserr("malloc"); - - + + /* ptr_bootstrap(); utils_bootstrap(); @@ -332,13 +332,13 @@ int main __P2 (int,argc, char **,argv) */ edit_bootstrap(); tty_bootstrap(); - + #ifdef MOTDFILE printmotd(); #endif - + printver(); - + if (argc == 1) { tty_printf( "\nPowwow comes with ABSOLUTELY NO WARRANTY; for details type \"#help warranty\".\n\ @@ -346,7 +346,7 @@ This is free software, and you are welcome to redistribute it\n\ under certain conditions; type \"#help copyright\" for details.\n" ); } - + if (argc == 1 || argc == 3) { tty_add_initial_binds(); tty_add_walk_binds(); @@ -358,7 +358,7 @@ under certain conditions; type \"#help copyright\" for details.\n" * (they overwrite the ones in definition file) */ set_deffile(argv[1]); - + if (access(deffile,R_OK) == -1 || access(deffile,W_OK) == -1) { char portnum[INTLEN]; tty_printf("Creating %s\nHost name :", deffile); @@ -381,37 +381,37 @@ under certain conditions; type \"#help copyright\" for details.\n" exit(0); else read_file = 1; - } + } if (argc == 3 || argc == 4) { /* assume last two args are hostname and port number */ my_strncpy(hostname, argv[argc - 2], BUFSIZE-1); portnumber = atoi(argv[argc - 1]); } - + signal_start(); tty_start(); - + tty_puts(tty_clreoscr); tty_putc('\n'); - tty_gotoxy(col0 = 0, lines - 2); + tty_gotoxy(col0 = 0, lines - 2); tty_puts("Type #help for help.\n"); line0 = lines - 1; - + FD_ZERO(&fdset); FD_SET(tty_read_fd, &fdset); - + if (*hostname) tcp_open("main", (*initstr ? initstr : NULL), hostname, portnumber); - + if (read_file && !*hostname && *initstr) { parse_instruction(initstr, 0, 0, 1); history_done = 0; } - + confirm = 0; - + mainloop(); - + /* NOTREACHED */ return 0; } @@ -419,9 +419,9 @@ under certain conditions; type \"#help copyright\" for details.\n" /* * show current version */ -void printver __P0 (void) +void printver(void) { - tty_printf("Powwow version %s\nOptions: %s%s\n", POWWOW_VERSION, + tty_printf("Powwow version %s\nOptions: %s%s\n", POWWOW_VERSION, #ifdef USE_VT100 "vt100-only," #else @@ -447,7 +447,7 @@ void printver __P0 (void) #if __STDC__ " compiled " __TIME__ " " __DATE__ #else - " uknown compile date" + " uknown compile date" #endif ); } @@ -456,7 +456,7 @@ void printver __P0 (void) /* * print the message of the day if present */ -static void printmotd __P0 (void) +static void printmotd(void) { char line[BUFSIZE]; FILE *f = fopen(MOTDFILE, "r"); @@ -468,7 +468,7 @@ static void printmotd __P0 (void) } #endif -static void redraw_everything __P0 (void) +static void redraw_everything(void) { if (prompt_status == 1 && line_status == 0) line_status = 1; @@ -483,11 +483,11 @@ static void redraw_everything __P0 (void) } /* how much can we sleep in select() ? */ -static void compute_sleeptime __P1 (vtime **,timeout) +static void compute_sleeptime(vtime **timeout) { static vtime tbuf; int sleeptime = 0; - + if (delays) { update_now(); sleeptime = diff_vtime(&delays->when, &now); @@ -497,7 +497,7 @@ static void compute_sleeptime __P1 (vtime **,timeout) } if (flashback && (!sleeptime || sleeptime > FLASHDELAY)) sleeptime = FLASHDELAY; - + if (sleeptime) { tbuf.tv_sec = sleeptime / mSEC_PER_SEC; tbuf.tv_usec = (sleeptime % mSEC_PER_SEC) * uSEC_PER_mSEC; @@ -509,46 +509,46 @@ static void compute_sleeptime __P1 (vtime **,timeout) /* * main loop. */ -static void mainloop __P0 (void) +static void mainloop(void) { fd_set readfds; int i, err; vtime *timeout; - + for (;;) { tcp_fd = tcp_main_fd; exec_delays(); - + do { if (sig_pending) sig_bottomhalf(); /* this might set errno... */ - + tcp_flush(); - + if (!(pos <= edlen)) { PRINTF("\n#*ARGH* assertion failed (pos <= edlen): mail bpk@hoopajoo.net\n"); pos = edlen; } - + redraw_everything(); tty_flush(); - + compute_sleeptime(&timeout); - + error = now_updated = 0; - + readfds = fdset; err = select(tcp_max_fd+1, &readfds, NULL, NULL, timeout); - + prompt_reset_iac(); - + } while (err < 0 && errno == EINTR); - + if (err < 0 && errno != EINTR) syserr("select"); - + if (flashback) putbackcursor(); - + /* process subsidiary and spawned connections first */ if (tcp_count > 1 || tcp_attachcount) { for (i=0; err && i<conn_max_index; i++) { @@ -571,14 +571,14 @@ static void mainloop __P0 (void) confirm = 0; get_user_input(); } - + } } /* * set the new prompt / input line status */ -void status __P1 (int,s) +void status(int s) { if (s < 0) { /* waiting prompt from the MUD */ @@ -596,19 +596,19 @@ void status __P1 (int,s) * execute the delayed labels that have expired * and place them in the disabled delays list */ -static void exec_delays __P0 (void) +static void exec_delays(void) { delaynode *dying; ptr *pbuf, buf = (ptr)0; - + if (!delays) return; - + update_now(); - + if (cmp_vtime(&delays->when, &now) > 0) return; - + /* remember delayed command may modify the prompt and/or input line! */ if (prompt_status == 0) { clear_input_line(opt_compact || !opt_info); @@ -618,29 +618,29 @@ static void exec_delays __P0 (void) status(1); } } - + TAKE_PTR(pbuf, buf); - + while (delays && cmp_vtime(&delays->when, &now) <= 0) { dying = delays; /* remove delayed command from active list */ delays = dying->next; /* and put it in the dead one */ - + add_node((defnode *)dying, (defnode **)&dead_delays, rev_time_sort); - + /* must be moved before executing delay->command * and command must be copied in a buffer * (can't you imagine why? The command may edit itself...) */ - + if (opt_info) tty_printf("#now [%s]\n", dying->command); - + if (*dying->command) { - + error = 0; - + *pbuf = ptrmcpy(*pbuf, dying->command, strlen(dying->command)); - if (MEM_ERROR) + if (MEM_ERROR) errmsg("malloc (#in/#at)"); else { parse_instruction(ptrdata(*pbuf), 0, 0, 1); @@ -656,28 +656,28 @@ static void exec_delays __P0 (void) static char *iac_v[IAC_N]; static int iac_f, iac_l; -static void prompt_reset_iac __P0 (void) +static void prompt_reset_iac(void) { iac_f = iac_l = 0; } -void prompt_set_iac __P1 (char *,p) +void prompt_set_iac(char *p) { if (iac_f == iac_l) iac_f = iac_l = 0; - + if (iac_l < IAC_N) iac_v[iac_l++] = p; } -static char *prompt_get_iac __P0 (void) +static char *prompt_get_iac(void) { return iac_l > iac_f ? iac_v[iac_f] : NULL; } /* compute the effective prompt string; may end in \b* or \r */ -static void effective_prompt __P0 (void) +static void effective_prompt(void) { char *const pstr = promptstr; char *dst = pstr; @@ -723,11 +723,11 @@ static void effective_prompt __P0 (void) ptrsetlen(prompt->str, maxpos); } -static int grab_prompt __P3 (char *,linestart, int,len, int,islast) +static int grab_prompt(char *linestart, int len, int islast) { char *p; int is_iac_prompt = surely_isprompt = 0; - + /* recognize IAC GA as end-of-prompt marker */ if ((CONN_LIST(tcp_fd).flags & IDPROMPT)) { if ((p = prompt_get_iac()) && p > linestart && p <= linestart+len) @@ -735,7 +735,7 @@ static int grab_prompt __P3 (char *,linestart, int,len, int,islast) else if (!islast) return 0; } - + /* * We may get a prompt in the middle of a bunch of lines, so * match #prompts. They usually have no #print, so we print manually @@ -760,7 +760,7 @@ static int grab_prompt __P3 (char *,linestart, int,len, int,islast) if (MEM_ERROR) { promptzero(); errmsg("malloc(prompt)"); return 0; } prompt_status = 1; } - + /* * following data may be the reply to a previously sent command, * so we may have to reprint that command. @@ -778,7 +778,7 @@ static int grab_prompt __P3 (char *,linestart, int,len, int,islast) prompt_status = 1; /* good, we got what to redraw */ } else len = 0; - + return len; } @@ -786,24 +786,24 @@ static int grab_prompt __P3 (char *,linestart, int,len, int,islast) /* * process remote input one line at time. stop at "\n". */ -static void process_singleline __P2 (char **,pbuf, int *,psize) +static void process_singleline(char **pbuf, int *psize) { int size, len = 0; char *wasn = 0, *buf, *linestart = *pbuf, *lineend, *end = *pbuf + *psize; - + if ((lineend = memchr(linestart, '\n', *psize))) { /* ok, there is a newline */ - + *(wasn = lineend) = '\0'; buf = lineend + 1; /* start of next line */ } - + if (!lineend) /* line continues till end of buffer, no trailing \n */ buf = lineend = end; - + size = buf - linestart; - + #ifdef DEBUGCODE_2 /* debug code to see in detail what codes come from the server */ { @@ -819,13 +819,13 @@ static void process_singleline __P2 (char **,pbuf, int *,psize) tty_puts("}\n"); } #endif - + /* * Try to guess where is the prompt... really not much more than * a guess. Again, do it only on main connection: we do not want * output from other connections to mess with the prompt * of main connection :) - * + * * Since we now have #prompt, behave more restrictively: * if no #prompts match or a #prompt matches but does not set #isprompt * (i.e. recognize it for not being a prompt), @@ -842,14 +842,14 @@ static void process_singleline __P2 (char **,pbuf, int *,psize) draw_prompt(); tty_putc('\n'); col0 = 0; } surely_isprompt = 0; - promptzero(); + promptzero(); if (lineend > linestart && (len = grab_prompt(linestart, lineend-linestart, 1))) size = len; } else { if (tcp_fd == tcp_main_fd) { surely_isprompt = 0; promptzero(); - + if (linestart[0]) { /* set $last_line */ last_line->str = ptrmcpy(last_line->str, linestart, strlen(linestart)); @@ -864,11 +864,11 @@ static void process_singleline __P2 (char **,pbuf, int *,psize) line0++; if (tcp_fd != tcp_main_fd) /* sub connection */ tty_printf("##%s> ", CONN_LIST(tcp_fd).id); - + smart_print(linestart, 1); } } - + /* * search_prompt and search_action above * might set error: clear it to avoid troubles. @@ -879,20 +879,20 @@ static void process_singleline __P2 (char **,pbuf, int *,psize) *psize -= size; } -/* +/* * Code to merge lines from host that were splitted * into different packets: it is a horrible kludge (sigh) * and can be used only on one connection at time. * We currently do it on main connection. - * + * * Note that this code also works for _prompts_ splitted into * different packets, as long as no #prompts execute #isprompt * on an incomplete prompt (as stated in the docs). */ -static int process_first_fragment __P2 (char *,buf, int,got) +static int process_first_fragment(char *buf, int got) { int processed = 0; - + /* * Don't merge if the first part of the line was intercepted * by a #prompt action which executed #isprompt @@ -900,13 +900,13 @@ static int process_first_fragment __P2 (char *,buf, int,got) */ if (*buf == '\n') { char deleteprompt = 0, matched = 0; - + if (opt_compact) { /* in compact mode, skip the first \n */ deleteprompt = 1; processed++; } - + /* * the prompt was actually a complete line. * no need to put it on the top of received data. @@ -916,7 +916,7 @@ static int process_first_fragment __P2 (char *,buf, int,got) if (!surely_isprompt) { last_line->str = ptrcpy(last_line->str, prompt->str); if (MEM_ERROR) { print_error(error); return 0; } - + /* * Kludge for kludge: don't delete the old prompt immediately. * Instead, match actions on it first. @@ -924,7 +924,7 @@ static int process_first_fragment __P2 (char *,buf, int,got) * (done by the "1" in search_action() ) * If it doesn't match, delete it only if opt_compact != 0 */ - + matched = search_action(promptstr, 1); } if (!matched) @@ -943,13 +943,13 @@ static int process_first_fragment __P2 (char *,buf, int,got) lineend++; else lineend = buf + got; - + if (surely_isprompt) { /* * either #isprompt _was_ executed, * or we got a MUME spinning bar. * in both cases, don't try to merge. - * + * * print a newline (to keep the old prompt on screen) * only if !opt_compact and we didn't get a MUME spinning bar. */ @@ -961,12 +961,12 @@ static int process_first_fragment __P2 (char *,buf, int,got) ptr *pp, p = (ptr)0; char *dummy; int dummyint; - + /* ok, merge this junk with the prompt */ TAKE_PTR(pp, p); *pp = ptrcpy(*pp, prompt->str); *pp = ptrmcat(*pp, buf, lineend - buf); - + if (MEM_ERROR) { print_error(error); return 0; } if (!*pp) return 0; @@ -975,7 +975,7 @@ static int process_first_fragment __P2 (char *,buf, int,got) /* this also sets last_line or prompt->str : */ clear_input_line(1); process_singleline(&dummy, &dummyint); - + processed = lineend - buf; } } @@ -987,20 +987,20 @@ static int process_first_fragment __P2 (char *,buf, int,got) * detect special sequences, trigger actions, locate prompt, * word-wrap, print to tty */ -void process_remote_input __P2 (char *,buf, int,size) +void process_remote_input(char *buf, int size) { - + if (promptlen && tcp_fd == tcp_main_fd) promptzero(); /* discard the prompt, we look for another one */ - + status(1); - + do { process_singleline(&buf, &size); } while (size > 0); } -static void common_clear __P1 (int,newline) +static void common_clear(int newline) { clear_input_line(opt_compact); if (newline) { @@ -1011,7 +1011,7 @@ static void common_clear __P1 (int,newline) /* * get data from the socket and process/display it. */ -static void get_remote_input __P0 (void) +static void get_remote_input(void) { char buffer[BUFSIZE + 2]; /* allow for a terminating \0 later */ char *buf = buffer, *newline; @@ -1030,11 +1030,11 @@ static void get_remote_input __P0 (void) CONN_LIST(tcp_fd).fragment = 0; } else i = 0; - + got = tcp_read(tcp_fd, buf, BUFSIZE - i); if (!got) return; - + buf[got]='\0'; /* Safe, there is space. Do it now not to forget it later */ received += got; @@ -1052,13 +1052,13 @@ static void get_remote_input __P0 (void) tty_puts("}\n"); } #endif - + if (!(CONN_LIST(tcp_fd).flags & ACTIVE)) return; /* process only active connections */ got += (buf - buffer); buf = buffer; - + if (CONN_LIST(tcp_fd).flags & SPAWN) { /* this is data from a spawned child or an attached program. * execute as if typed */ @@ -1068,7 +1068,7 @@ static void get_remote_input __P0 (void) if ((newline = strchr(buf, '\n'))) { /* instead of newline = strtok(buf, "\n") */ *newline = '\0'; - + if (opt_autoclear && line_status == 0) { common_clear(!opt_compact); } @@ -1095,7 +1095,7 @@ static void get_remote_input __P0 (void) *newline = '\0'; } while (buf && newline); } - + if (buf && *buf && !newline) { /* * save last fragment for later, when spawned command will @@ -1113,23 +1113,23 @@ static void get_remote_input __P0 (void) tcp_fd = otcp_fd; return; } - + if (linemode & LM_CHAR) { /* char-by-char mode: just display output, no fuss */ clear_input_line(0); tty_puts(buf); return; } - + /* line-at-a-time mode: process input in a number of ways */ - + if (tcp_fd == tcp_main_fd && promptlen) { i = process_first_fragment(buf, got); buf += i, got -= i; } else { common_clear(promptlen && !opt_compact); } - + if (got > 0) process_remote_input(buf, got); } @@ -1140,13 +1140,13 @@ static void get_remote_input __P0 (void) * GH: matches precompiled regexp, return actual params in param array * return 1 if matched, 0 if not */ -static int match_regexp_action __P4 (void *,regexp, char *,line, int *,match_s, int *,match_e) +static int match_regexp_action(void *regexp, char *line, int *match_s, int *match_e) { regmatch_t reg_match[NUMPARAM - 1]; - + if (!regexec((regex_t *)regexp, line, NUMPARAM - 1, reg_match, 0)) { int n; - + match_s[0] = 0; match_e[0] = strlen(line); for (n = 1; n < NUMPARAM; n++) @@ -1167,15 +1167,15 @@ static int match_regexp_action __P4 (void *,regexp, char *,line, int *,match_s, * match action containing &1..&9 and $1..$9 and return actual params start/end * in match_s/match_e - return 1 if matched, 0 if not */ -static int match_weak_action __P4 (char *,pat, char *,line, int *,match_s, int *,match_e) +static int match_weak_action(char *pat, char *line, int *match_s, int *match_e) { char mpat[BUFSIZE], *npat=0, *npat2=0, *src=line, *nsrc=0, c; ptr *pbuf, buf = (ptr)0; char *tmp, *realpat = pat; int mbeg = 0, mword = 0, prm = -1, p; - + TAKE_PTR(pbuf, buf); - + if (jit_subst_vars(pbuf, pat)) pat = ptrdata(*pbuf); if (REAL_ERROR) { @@ -1184,18 +1184,18 @@ static int match_weak_action __P4 (char *,pat, char *,line, int *,match_s, int * return 0; } unescape(pat); - + for (p = 0; p < NUMPARAM; p++) match_s[p] = match_e[p] = 0; p = 0; - + if (*pat == '^') { pat++; mbeg = 1; /* anchor match at line start */ } if (*pat == '&' || *pat == '$') mbeg = - mbeg - 1; /* pattern starts with '&' or '$' */ - + while (pat && *pat) { if (((c=*pat) == '&' || c == '$')) { /* &x matches a string */ @@ -1222,18 +1222,18 @@ static int match_weak_action __P4 (char *,pat, char *,line, int *,match_s, int * return 0; } } - + npat = first_valid(pat, '&'); npat2 = first_valid(pat, '$'); if (npat2 < npat) npat = npat2; if (!*npat) npat = 0; - + if (npat) { my_strncpy(mpat, pat, npat-pat); /* mpat[npat - pat] = 0; */ } else strcpy(mpat, pat); - + if (*mpat) { nsrc = strstr(src, mpat); if (!nsrc) { @@ -1256,7 +1256,7 @@ static int match_weak_action __P4 (char *,pat, char *,line, int *,match_s, int * match_s[prm] = src - line; match_e[prm] = strlen(line); } - + /* post-processing of param */ if (prm != -1 && match_e[prm] && mword) { if (mbeg == -1) { @@ -1288,7 +1288,7 @@ static int match_weak_action __P4 (char *,pat, char *,line, int *,match_s, int * pat = npat; } DROP_PTR(pbuf); - + match_s[0] = 0; match_e[0] = strlen(line); return 1; } @@ -1297,10 +1297,10 @@ static int match_weak_action __P4 (char *,pat, char *,line, int *,match_s, int * * Search for #actions or #prompts to trigger on an input line. * The line can't be trashed since we want to print it on the screen later. * Return 1 if line matched to some #action, 0 otherwise - * + * * Optionally clear the input line before running the trigger command. */ -static int search_action_or_prompt __P3 (char *,line, char,clearline, char,onprompt) +static int search_action_or_prompt(char *line, char clearline, char onprompt) { /* * we need actionnode and promptnode to be the same "triggernode" type @@ -1308,15 +1308,15 @@ static int search_action_or_prompt __P3 (char *,line, char,clearline, char,onpro triggernode *p; int ret = 0; int match_s[NUMPARAM], match_e[NUMPARAM]; - + for (p = onprompt ? prompts : actions; p; p = p->next) { #ifdef USE_REGEXP - if (p->active && + if (p->active && ((p->type == ACTION_WEAK && match_weak_action(p->pattern, line, match_s, match_e)) || (p->type == ACTION_REGEXP && match_regexp_action(p->regexp, line, match_s, match_e)) )) #else - if (p->active && + if (p->active && ((p->type == ACTION_WEAK && match_weak_action(p->pattern, line, match_s, match_e)) )) #endif @@ -1345,14 +1345,14 @@ static int search_action_or_prompt __P3 (char *,line, char,clearline, char,onpro * read terminal input and send to parser. * decode keys that send escape sequences */ -static void get_user_input __P0 (void) +static void get_user_input(void) { int i, j, chunk = 1; static char buf[BUFSIZE+1]; /* allow for terminating \0 */ char *c = buf; static char typed[CAPLEN]; /* chars typed so far (with partial match) */ static int nchars = 0; /* number of them */ - + /* We have 4 possible line modes: * line mode, local echo: line editing functions in effect * line mode, no echo: sometimes used for passwords, no line editing @@ -1361,7 +1361,7 @@ static void get_user_input __P0 (void) */ if (!(linemode & (LM_NOECHO | LM_CHAR))) /* line mode, local echo */ chunk = BUFSIZE; - + while ((j = tty_read(c, chunk)) < 0 && errno == EINTR) ; if (j == 0) @@ -1369,9 +1369,9 @@ static void get_user_input __P0 (void) if (j < 0 || (chunk == 1 && j != chunk)) syserr("read from tty"); - + c[chunk] = '\0'; - + if (linemode & LM_CHAR) { /* char mode. chunk == 1 */ while ((i = write(tcp_fd, c, 1)) < 0 && errno == EINTR) @@ -1393,7 +1393,7 @@ static void get_user_input __P0 (void) else #endif tty_putc('\n'); - + tcp_write(tcp_fd, edbuf); edlen = 0; typed[nchars = 0] = 0; @@ -1404,14 +1404,14 @@ static void get_user_input __P0 (void) /* normal mode (line mode, echo). chunk == BUFSIZE */ int done = 0; keynode *p; - + for (; j > 0; c++, j--) { - + /* search function key strings for match */ /* GH: support for \0 in sequence */ - done = 0; + done = 0; typed[nchars++] = *c; - + while (!done) { done = 1; /* @@ -1421,14 +1421,14 @@ static void get_user_input __P0 (void) if (nchars == 1 && *c >= ' ' && *c <= '~') p = NULL; else { - for (p = keydefs; (p && (p->seqlen < nchars || + for (p = keydefs; (p && (p->seqlen < nchars || memcmp(typed, p->sequence, nchars))); p = p->next) ; } - + if (!p) { - /* + /* * GH: type the first character and keep processing * the rest in the input buffer */ @@ -1458,12 +1458,12 @@ static void get_user_input __P0 (void) * VAR[1].str ... VAR[9].str - * the whole str is put in VAR[0].str */ -static char *split_words __P1 (char *,str) +static char *split_words(char *str) { int i; char *end; ptr *prm; - + *VAR[0].str = ptrmcpy(*VAR[0].str, str, strlen(str)); for (i = 1; i < NUMPARAM; i++) { *VAR[i].num = 0; @@ -1484,7 +1484,7 @@ static char *split_words __P1 (char *,str) /* * free the whole stack and reset it to empty */ -static void free_allparams __P0 (void) +static void free_allparams(void) { int i,j; @@ -1502,10 +1502,10 @@ static void free_allparams __P0 (void) } } -void push_params __P0 (void) +void push_params(void) { int i; - + if (paramstk.curr < MAX_STACK - 1) paramstk.curr++; else { @@ -1519,10 +1519,10 @@ void push_params __P0 (void) } } -void pop_params __P0 (void) +void pop_params(void) { int i; - + if (paramstk.curr > 0) paramstk.curr--; else { @@ -1537,7 +1537,7 @@ void pop_params __P0 (void) } } -static void set_params __P3 (char *,line, int *,match_s, int *,match_e) +static void set_params(char *line, int *match_s, int *match_e) { int i; @@ -1555,28 +1555,28 @@ static void set_params __P3 (char *,line, int *,match_s, int *,match_e) } } -char *get_next_instr __P1 (char *,p) +char *get_next_instr(char *p) { int count, is_if; char *sep, *q; - + p = skipspace(p); - + if (!*p) return p; - + count = is_if = !strncmp(p, "#if", 3); - + do { sep = first_regular(p, CMDSEP); - + q = p; if (*q) do { if (*q == '#') q++; - + q = first_regular(q, '#'); } while (*q && strncmp(q, "#if", 3)); - + if (sep<=q) { if (*(p = sep)) p++; @@ -1588,15 +1588,15 @@ char *get_next_instr __P1 (char *,p) print_error(error=SYNTAX_ERROR); return NULL; } - sep = skipspace(p); - } while (*p && count-- && + sep = skipspace(p); + } while (*p && count-- && (!is_if || (!strncmp(sep, "#else", 5) && (*(p = sep + 5))))); - + return p; } -static void send_line __P2 (char *,line, char,silent) +static void send_line(char *line, char silent) { if (!silent && opt_echo) { PRINTF("[%s]\n", line); } tcp_write(tcp_fd, line); @@ -1607,7 +1607,7 @@ static void send_line __P2 (char *,line, char,silent) * Parse and exec the first instruction in 'line', and return pointer to the * second instruction in 'line' (if any). */ -char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs) +char *parse_instruction(char *line, char silent, char subs, char jit_subs) { aliasnode *np; char *buf, *arg, *end, *ret; @@ -1615,14 +1615,14 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs int len, copied = 0, otcp_fd = -1; ptr p1 = (ptr)0, p2 = (ptr)0; ptr *pbuf, *pbusy, *tmp; - + if (error) return NULL; - + ret = get_next_instr(line); - + if (!ret || ret==line) /* error or empty instruction, bail out */ return ret; - + /* * remove the optional ';' after an instruction, * to have an usable string, ending with \0. @@ -1638,17 +1638,17 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs last_is_sep = 1; } } - + /* * using two buffers, p1 and p2, for four strings: * result of subs_param, result of jit_subst_vars, result of * unescape and first word of line. - * + * * So care is required to avoid clashes. */ TAKE_PTR(pbuf, p1); TAKE_PTR(pbusy, p2); - + if (subs && subst_param(pbuf, line)) { line = *pbuf ? ptrdata(*pbuf) : ""; SWAP2(pbusy, pbuf, tmp); @@ -1666,13 +1666,13 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs } if (subs || jit_subs) unescape(line); - + /* now line is in (pbusy) and (pbuf) is available */ - + /* restore integrity of original line: must still put it in history */ if (last_is_sep) *ret++ = CMDSEP; - + if (REAL_ERROR) { print_error(error); DROP_PTR(pbuf); DROP_PTR(pbusy); @@ -1682,12 +1682,12 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs if (opt_debug) { PRINTF("#parsing: %s\n", line); } - + if (!*line) send_line(line, silent); else do { arg = skipspace(line); - + if (arg[0] == '#' && arg[1] == '#') { /* send to other connection */ *pbuf = ptrsetlen(*pbuf, len = strlen(arg)); if (REAL_ERROR) { print_error(error); break; } @@ -1716,10 +1716,10 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs } /* now we can trash (pbuf) */ } - + if (*arg == '{') { /* instruction contains a block */ end = first_regular(line = arg + 1, '}'); - + if (*end) { *end = '\0'; parse_user_input(line, silent); @@ -1729,33 +1729,33 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs } else { int oneword; /* initial spaces are NOT skipped this time */ - + *pbuf = ptrsetlen(*pbuf, len = strlen(line)); if (REAL_ERROR) { print_error(error); break; } - + buf = ptrdata(*pbuf); arg = split_first_word(buf, len+1, line); /* buf contains the first word, arg points to arguments */ - + /* now pbuf is used too */ if (!*arg) oneword = 1; else oneword = 0; - + if ((np = *lookup_alias(buf))&&np->active) { push_params(); if (REAL_ERROR) break; - + split_words(arg); /* split argument into words and place them in $0 ... $9 */ parse_instruction(np->subst, 0, 1, 1); - + if (error!=DYN_STACK_UND_ERROR && error!=DYN_STACK_OV_ERROR) pop_params(); - + /* now check for internal commands */ /* placed here to allow also aliases starting with "#" */ } else if (*(end = skipspace(line)) == '#') { - + if (*(end = skipspace(end + 1)) == '(') { /* execute #() */ end++; (void)evaln(&end); @@ -1765,14 +1765,14 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs /* ok, buf contains skipspace(first word) */ } else if (!oneword || !map_walk(buf, silent, 0)) { /* it is ok, map_walk accepts only one word */ - + if (!subs && !jit_subs) unescape(line); send_line(line, silent); } } } while (0); - + if (otcp_fd != -1) tcp_fd = otcp_fd; DROP_PTR(pbuf); DROP_PTR(pbusy); @@ -1784,7 +1784,7 @@ char *parse_instruction __P4 (char *,line, char,silent, char,subs, char,jit_subs * in cmd_line. * silent = 1 if the line should not be echoed, 0 otherwise. */ -void parse_user_input __P2 (char *,line, char,silent) +void parse_user_input(char *line, char silent) { do { line = parse_instruction(line, silent, 0, 0); @@ -1794,13 +1794,13 @@ void parse_user_input __P2 (char *,line, char,silent) /* * parse powwow's own commands */ -static void parse_commands __P2 (char *,command, char *,arg) +static void parse_commands(char *command, char *arg) { int i, j; cmdstruct *c; /* We ALLOW special commands also on subsidiary connections ! */ - + /* assume output will be enough to make input line = last screen line */ /* line0 = lines - 1; */ if (isdigit(*command) && (i = atoi(command))) { @@ -1818,7 +1818,7 @@ static void parse_commands __P2 (char *,command, char *,arg) return; } - for( c = commands; c != NULL; c = c -> next ) + for( c = commands; c != NULL; c = c -> next ) if (!strncmp(command, c -> name, j)) { if (c -> funct) { (*(c -> funct))(arg); @@ -1831,20 +1831,20 @@ static void parse_commands __P2 (char *,command, char *,arg) } /* - * substitute $0..$9 and @0..@9 in a string + * substitute $0..$9 and @0..@9 in a string * (unless $ or @ is escaped with backslash) - * + * * return 0 if dst not filled. if returned 0 and not error, * there was nothing to substitute. */ -static int subst_param __P2 (ptr *,buf, char *,src) +static int subst_param(ptr *buf, char *src) { int done, i; char *dst, *tmp, kind; - + if (!strchr(src, '$') && !strchr(src, '@')) return 0; - + i = strlen(src); if (!*buf || ptrlen(*buf) < i) { *buf = ptrsetlen(*buf, i); @@ -1852,19 +1852,19 @@ static int subst_param __P2 (ptr *,buf, char *,src) return 0; } dst = ptrdata(*buf); - + while (*src) { while (*src && *src != '$' && *src != '@' && *src != ESC) *dst++ = *src++; - + if (*src == ESC) { while (*src == ESC) *dst++ = *src++; - + if (*src) *dst++ = *src++; } - + done = 0; if (*src == '$' || *src == '@') { kind = *src == '$' ? 1 : 0; @@ -1873,14 +1873,14 @@ static int subst_param __P2 (ptr *,buf, char *,src) i = atoi(tmp); while (isdigit(*tmp)) tmp++; - + if (i < NUMPARAM) { int max = 0, n; char *data = NULL, buf2[LONGLEN]; - + done = 1; src = tmp; - + /* now the actual substitution */ if (kind) { if (*VAR[i].str && (data = ptrdata(*VAR[i].str))) @@ -1910,22 +1910,22 @@ static int subst_param __P2 (ptr *,buf, char *,src) /* * just-in-time substitution: - * substitute ${name}, @{name} and #{expression} in a string + * substitute ${name}, @{name} and #{expression} in a string * (unless "${", "@{" or "#{" are escaped with backslash) - * + * * return 0 if dst not filled. if returned 0 and not error, * there was nothing to substitute. */ -static int jit_subst_vars __P2 (ptr *,buf, char *,src) +static int jit_subst_vars(ptr *buf, char *src) { int i, done, kind; char *tmp, *name, *dst, c; varnode *named_var; - + if (!strstr(src, "${") && !strstr(src, "@{") && !strstr(src, "#{")) return 0; - + i = strlen(src); if (!*buf || ptrlen(*buf) < i) { *buf = ptrsetlen(*buf, i); @@ -1933,19 +1933,19 @@ static int jit_subst_vars __P2 (ptr *,buf, char *,src) return 0; } dst = ptrdata(*buf); - + while (*src) { while (*src && *src != '$' && *src != '@' && *src != '#' && *src != ESC) *dst++ = *src++; - + if (*src == ESC) { while (*src == ESC) *dst++ = *src++; - + if (*src) *dst++ = *src++; } - + done = 0; if (*src == '$' || *src == '@') { i = 0; @@ -1981,9 +1981,9 @@ static int jit_subst_vars __P2 (ptr *,buf, char *,src) if (done) { int max = 0, n; char *data = NULL, buf2[LONGLEN]; - + src = tmp + 1; /* skip the '}' */ - + /* now the actual substitution */ if (kind == 1) { if (*VAR[i].str && (data = ptrdata(*VAR[i].str))) @@ -2004,13 +2004,13 @@ static int jit_subst_vars __P2 (ptr *,buf, char *,src) } else if (*tmp == '}') /* met an undefined variable, consider empty */ src = tmp + 1; - + /* else syntax error, do nothing */ } } else if (src[0] == '#' && src[1] == '{') { int max, n; ptr pbuf = (ptr)0; - + src += 2; (void)evalp(&pbuf, &src); if (REAL_ERROR) { @@ -2030,7 +2030,7 @@ static int jit_subst_vars __P2 (ptr *,buf, char *,src) dst += max; } ptrdel(pbuf); - + if (*src) src = skipspace(src); if (*src != '}') { @@ -2042,7 +2042,7 @@ static int jit_subst_vars __P2 (ptr *,buf, char *,src) if (*src) src++; } - + if (!done && (*src == '$' || *src == '@' || *src == '#')) /* not matched, just copy */ *dst++ = *src++; @@ -2058,7 +2058,7 @@ static int jit_subst_vars __P2 (ptr *,buf, char *,src) * if file doesn't exist, it is created there. * If a slash appears in the name, the powwow_dir isn't used. */ -void set_deffile __P1 (char *,arg) +void set_deffile(char *arg) { if (!strchr(arg, '/') && *powwow_dir) { strcpy(deffile, powwow_dir); @@ -2073,7 +2073,7 @@ void set_deffile __P1 (char *,arg) /* * GH: return true if var is one of the permanent variables */ -int is_permanent_variable __P1 (varnode *,v) +int is_permanent_variable(varnode *v) { return (v == prompt || v == last_line); } @@ -7,24 +7,24 @@ #define _MAIN_H_ /* shared functions from main.c */ -void printver __P ((void)); -void status __P ((int s)); -void process_remote_input __P ((char *buf, int size)); -void push_params __P ((void)); -void pop_params __P ((void)); -void prompt_set_iac __P ((char *p)); -char *parse_instruction __P ((char *line, char silent, char subs, char jit_subs)); -char *get_next_instr __P ((char *p)); -void parse_user_input __P ((char *line, char silent)); -void set_deffile __P ((char *arg)); -int is_permanent_variable __P ((varnode *v)); +void printver(void); +void status(int s); +void process_remote_input(char *buf, int size); +void push_params(void); +void pop_params(void); +void prompt_set_iac(char *p); +char *parse_instruction(char *line, char silent, char subs, char jit_subs); +char *get_next_instr(char *p); +void parse_user_input(char *line, char silent); +void set_deffile(char *arg); +int is_permanent_variable(varnode *v); /* shared vars from main.c */ extern int prompt_status, line_status; extern int limit_mem; extern char ready; -extern VOLATILE char confirm; +extern volatile char confirm; extern int history_done; extern int linemode; extern char hostname[]; @@ -49,7 +49,7 @@ extern int pos; /* cursor position in edbuf */ extern char edattrbeg[], edattrend[]; extern int edattrbg; -extern VOLATILE int sig_pending, sig_winch_got, sig_chld_got; +extern volatile int sig_pending, sig_winch_got, sig_chld_got; extern long received, sent; @@ -39,7 +39,7 @@ static int mapend = 0; /* index one past last map entry */ /* * return reverse direction */ -static char reverse_dir __P1 (char,dir) +static char reverse_dir(char dir) { static char dirs[] = "nsewud"; char *p = strchr(dirs, dir); @@ -49,12 +49,12 @@ static char reverse_dir __P1 (char,dir) /* * retrace steps on map, optionally walk them back */ -void map_retrace __P2 (int,steps, int,walk_back) +void map_retrace(int steps, int walk_back) { char cmd[2]; - + cmd[1] = '\0'; - + if (!steps && !walk_back) mapend = mapstart; else { @@ -64,7 +64,7 @@ void map_retrace __P2 (int,steps, int,walk_back) status(1); tty_putc('['); } - + while (mapstart != mapend && steps--) { mapend = MAPINDEX(mapend - 1); if (walk_back) { @@ -82,7 +82,7 @@ void map_retrace __P2 (int,steps, int,walk_back) /* * show automatic map (latest steps) in the form s2ews14n */ -void map_show __P0 (void) +void map_show(void) { char lastdir; int count = 0; @@ -110,13 +110,13 @@ void map_show __P0 (void) tty_printf("%d", count); tty_printf("%c\n", lastdir); - } + } } /* * print map to string in the form seewsnnnnn */ -void map_sprintf __P1 (char *,buf) +void map_sprintf(char *buf) { int i; @@ -129,7 +129,7 @@ void map_sprintf __P1 (char *,buf) /* * add direction to automap */ -void map_add_dir __P1 (char,dir) +void map_add_dir(char dir) { #ifdef NOMAZEMAPPING if (mapend != mapstart && dir == reverse_dir(MAPENTRY(mapend - 1))) { @@ -148,25 +148,25 @@ void map_add_dir __P1 (char,dir) * execute walk if word is valid [speed]walk sequence - * return 1 if walked, 0 if not */ -int map_walk __P3 (char *,word, int,silent, int,maponly) +int map_walk(char *word, int silent, int maponly) { char buf[16]; int n = strlen(word); int is_main = (tcp_fd == tcp_main_fd); - + if (!is_main && !maponly && !opt_speedwalk) return 0; if (!n || (n > 1 && !opt_speedwalk && !maponly) || !strchr("neswud", word[n - 1]) || (int)strspn(word, "neswud0123456789") != n) return 0; - + if (maponly) silent = 1; buf[1] = '\0'; while (*word) { if (!silent) { status(1); tty_putc('['); } - + if (isdigit(*word)) { n = strtol(word, &word, 10); if (!silent) @@ -3,13 +3,13 @@ #ifndef _MAP_H_ #define _MAP_H_ -void map_bootstrap __P ((void)); +void map_bootstrap(void); -void map_retrace __P ((int steps, int walk_back)); -void map_show __P ((void)); -void map_sprintf __P ((char *buf)); -void map_add_dir __P ((char dir)); -int map_walk __P ((char *word, int silent, int maponly)); +void map_retrace(int steps, int walk_back); +void map_show(void); +void map_sprintf(char *buf); +void map_add_dir(char dir); +int map_walk(char *word, int silent, int maponly); #endif /* _MAP_H_ */ diff --git a/powwow-movieplay.c b/powwow-movieplay.c index d49078d..91854b3 100644 --- a/powwow-movieplay.c +++ b/powwow-movieplay.c @@ -37,7 +37,7 @@ int argc; char *argv[]; fprintf(stderr, "Please run this program as \"powwow-movieplay\" or \"powwow-movie2ascii\"\n"); return 1; } - + if (play) { if (argc == 2) { infile = fopen(argv[1], "rb"); @@ -67,7 +67,7 @@ int argc; char *argv[]; return 1; } } - + while (fgets(buf, 4096, infile) != NULL) { i = strlen(buf); if (i > 0 && buf[i-1] == '\n') @@ -26,7 +26,7 @@ * create a new, empty ptr. * return NULL if max == 0 */ -ptr ptrnew __P1 (int,max) +ptr ptrnew(int max) { ptr p = (ptr)0; @@ -48,10 +48,10 @@ ptr ptrnew __P1 (int,max) /* * create a new ptr giving an initial contents, * which gets duplicated. - * + * * warning: newmax could be so small that we must truncate the copied data! */ -ptr ptrdup2 __P2 (ptr,src, int,newmax) +ptr ptrdup2(ptr src, int newmax) { ptr p = (ptr)0; @@ -75,7 +75,7 @@ ptr ptrdup2 __P2 (ptr,src, int,newmax) return p; } -ptr ptrdup __P1 (ptr,src) +ptr ptrdup(ptr src) { if (!src) return src; @@ -83,7 +83,7 @@ ptr ptrdup __P1 (ptr,src) } /* delete (free) a ptr */ -void _ptrdel __P1 (ptr,p) +void _ptrdel(ptr p) { if (p && p->signature == PTR_SIG) free((void *)p); @@ -92,7 +92,7 @@ void _ptrdel __P1 (ptr,p) } /* clear a ptr */ -void ptrzero __P1 (ptr,p) +void ptrzero(ptr p) { if (p) { p->len = 0; @@ -101,17 +101,17 @@ void ptrzero __P1 (ptr,p) } /* truncate a ptr to len chars */ -void ptrtrunc __P2 (ptr,p, int,len) +void ptrtrunc(ptr p, int len) { if (p) { if (len < 0 || len > ptrlen(p)) return; ptrdata(p)[p->len = len] = '\0'; - } + } } /* shrink a ptr by len chars */ -void ptrshrink __P2 (ptr,p, int,len) +void ptrshrink(ptr p, int len) { if (p) { if (len < 0 || len > ptrlen(p)) @@ -128,11 +128,11 @@ void ptrshrink __P2 (ptr,p, int,len) * You have been warned! Don't use any statically created ptr for * write operations, and you will be fine. */ -ptr __ptrmcat __P4 (ptr,dst, char *,src, int,len, int,shrink) +ptr __ptrmcat(ptr dst, char *src, int len, int shrink) { int newmax, failmax, overlap; char mustalloc; - + if (!src || len <= 0) return dst; if (len + sizeofptr < 0) { @@ -140,14 +140,14 @@ ptr __ptrmcat __P4 (ptr,dst, char *,src, int,len, int,shrink) error = NO_MEM_ERROR; return dst; } - + if (!dst) { failmax = len; mustalloc = 1; } else { failmax = ptrlen(dst) + len; mustalloc = ptrmax(dst) < ptrlen(dst) + len; - + if (shrink && ptrmax(dst) > PARAMLEN && ptrmax(dst)/4 > ptrlen(dst) + len) /* we're wasting space, shrink dst */ @@ -159,7 +159,7 @@ ptr __ptrmcat __P4 (ptr,dst, char *,src, int,len, int,shrink) error = NO_MEM_ERROR; return dst; } - + if (mustalloc) { /* dst must be (re)allocated */ ptr p; @@ -169,7 +169,7 @@ ptr __ptrmcat __P4 (ptr,dst, char *,src, int,len, int,shrink) overlap = 1; else overlap = 0; - + /* find a suitable new size */ if (limit_mem && failmax > limit_mem) { error = MEM_LIMIT_ERROR; @@ -214,12 +214,12 @@ ptr __ptrmcat __P4 (ptr,dst, char *,src, int,len, int,shrink) return dst; } -ptr ptrmcat __P3 (ptr,dst, char *,src, int,len) +ptr ptrmcat(ptr dst, char *src, int len) { return __ptrmcat(dst, src, len, 1); } -ptr ptrcat __P2 (ptr,dst, ptr,src) +ptr ptrcat(ptr dst, ptr src) { if (src) return __ptrmcat(dst, ptrdata(src), ptrlen(src), 1); @@ -230,11 +230,11 @@ ptr ptrcat __P2 (ptr,dst, ptr,src) * copy a ptr into another (ptrcpy), or a char* into a ptr (ptrmcpy); * same warning as above if dst is too small or way too big. */ -ptr __ptrmcpy __P4(ptr,dst, char *,src, int,len, int,shrink) +ptr __ptrmcpy(ptr dst, char *src, int len, int shrink) { int newmax, failmax = len, overlap; char mustalloc; - + if (!src || len<=0) { if (len>=0) ptrzero(dst); @@ -245,7 +245,7 @@ ptr __ptrmcpy __P4(ptr,dst, char *,src, int,len, int,shrink) error = NO_MEM_ERROR; return dst; } - + if (!dst) { mustalloc = 1; } else { @@ -255,7 +255,7 @@ ptr __ptrmcpy __P4(ptr,dst, char *,src, int,len, int,shrink) /* we're wasting space, shrink dst */ mustalloc = 1; } - + if (mustalloc) { /* dst must be (re)allocated */ ptr p; @@ -309,12 +309,12 @@ ptr __ptrmcpy __P4(ptr,dst, char *,src, int,len, int,shrink) return dst; } -ptr ptrmcpy __P3 (ptr,dst, char *,src, int,len) +ptr ptrmcpy(ptr dst, char *src, int len) { return __ptrmcpy(dst, src, len, 1); } -ptr ptrcpy __P2 (ptr,dst, ptr,src) +ptr ptrcpy(ptr dst, ptr src) { if (src) return __ptrmcpy(dst, ptrdata(src), ptrlen(src), 1); @@ -323,7 +323,7 @@ ptr ptrcpy __P2 (ptr,dst, ptr,src) } /* enlarge a ptr by len chars. create new if needed */ -ptr ptrpad __P2 (ptr,p, int,len) +ptr ptrpad(ptr p, int len) { if (!p) { if (len<=0) @@ -354,7 +354,7 @@ ptr ptrpad __P2 (ptr,p, int,len) } /* set a ptr to be len chars at minimum. create new if needed */ -ptr ptrsetlen __P2 (ptr,p, int,len) +ptr ptrsetlen(ptr p, int len) { if (!p) { if (len<=0) @@ -366,13 +366,13 @@ ptr ptrsetlen __P2 (ptr,p, int,len) } } return ptrpad(p, len - ptrlen(p)); -} +} /* * compare two ptr (ptrcmp) or a ptr and a char* (ptrmcmp) * if one is a truncated copy of the other, the shorter is considered smaller */ -int ptrmcmp __P3 (ptr,p, char *,q, int,lenq) +int ptrmcmp(ptr p, char *q, int lenq) { int res; if (!p || !ptrlen(p)) { @@ -394,7 +394,7 @@ int ptrmcmp __P3 (ptr,p, char *,q, int,lenq) return res; } -int ptrcmp __P2 (ptr,p, ptr,q) +int ptrcmp(ptr p, ptr q) { if (q) return ptrmcmp(p, ptrdata(q), ptrlen(q)); @@ -408,7 +408,7 @@ int ptrcmp __P2 (ptr,p, ptr,q) * find first occurrence of c in p * return NULL if none found. */ -char *ptrchr __P2 (ptr,p, char,c) +char *ptrchr(ptr p, char c) { if (p) return (char *)memchr(ptrdata(p), c, ptrlen(p)); @@ -419,13 +419,13 @@ char *ptrchr __P2 (ptr,p, char,c) * find last occurrence of c in p * return NULL if none found. */ -char *memrchr __P3 (char *,p, int,lenp, char,c) +char *memrchr(char *p, int lenp, char c) { char *v, *s = p; if (!p || lenp<=0) return NULL; - + v = s + lenp - 1; while (v != s && *v != c) { v--; @@ -436,7 +436,7 @@ char *memrchr __P3 (char *,p, int,lenp, char,c) return NULL; } -char *ptrrchr __P2 (ptr,p, char,c) +char *ptrrchr(ptr p, char c) { if (p) return memrchr(ptrdata(p), ptrlen(p), c); @@ -446,18 +446,18 @@ char *ptrrchr __P2 (ptr,p, char,c) #ifndef _GNU_SOURCE /* * find first occurrence of needle in hay - * + * * GNU libc has memmem(), for others we do by hand. */ -char *memfind __P4 (char *,hay, int,haylen, char *,needle, int,needlelen) +char *memfind(char *hay, int haylen, char *needle, int needlelen) { char *tmp; - + if (!hay || haylen<=0 || needlelen<0) return NULL; if (!needle || !needlelen) return hay; - + while (haylen >= needlelen) { /* find a matching first char */ if ((tmp = memchr(hay, *needle, haylen))) { @@ -466,7 +466,7 @@ char *memfind __P4 (char *,hay, int,haylen, char *,needle, int,needlelen) hay = tmp; } else return NULL; - + /* got a matching first char, * check the rest */ if (!memcmp(needle, tmp, needlelen)) @@ -474,7 +474,7 @@ char *memfind __P4 (char *,hay, int,haylen, char *,needle, int,needlelen) hay++, haylen --; } - + return NULL; } #endif /* !_GNU_SOURCE */ @@ -483,7 +483,7 @@ char *memfind __P4 (char *,hay, int,haylen, char *,needle, int,needlelen) * find first occurrence of q in p, * return NULL if none found. */ -char *ptrmfind __P3 (ptr,p, char *,q, int,lenq) +char *ptrmfind(ptr p, char *q, int lenq) { if (p) { if (q && lenq>0) @@ -493,7 +493,7 @@ char *ptrmfind __P3 (ptr,p, char *,q, int,lenq) return (char*)p; /* shortcut for NULL */ } -char *ptrfind __P2 (ptr,p, ptr,q) +char *ptrfind(ptr p, ptr q) { if (p) { if (q) @@ -508,33 +508,33 @@ char *ptrfind __P2 (ptr,p, ptr,q) * Scan p for the first occurrence of one of the characters in q, * return NULL if none of them is found. */ -char *memchrs __P4 (char *,p, int,lenp, char *,q, int,lenq) +char *memchrs(char *p, int lenp, char *q, int lenq) { char *endp; - + if (!q || lenq<=0) return p; if (!p || lenp<=0) return NULL; - + endp = p + lenp; - + while (p < endp && !memchr(q, *p, lenq)) p++; - + if (p == endp) return NULL; return p; } -char *ptrmchrs __P3 (ptr,p, char *,q, int,lenq) +char *ptrmchrs(ptr p, char *q, int lenq) { if (p) return memchrs(ptrdata(p), ptrlen(p), q, lenq); return (char*)p; /* shortcut for NULL */ } -char *ptrchrs __P2 (ptr,p, ptr,q) +char *ptrchrs(ptr p, ptr q) { if (p) { if (q) @@ -549,7 +549,7 @@ char *ptrchrs __P2 (ptr,p, ptr,q) * Scan p for the last occurrence of one of the characters in q, * return NULL if none of them is found. */ -char *memrchrs __P4 (char *,p, int,lenp, char *,q, int,lenq) +char *memrchrs(char *p, int lenp, char *q, int lenq) { if (!p || lenp<=0) { if (!q || lenq<=0) @@ -557,27 +557,27 @@ char *memrchrs __P4 (char *,p, int,lenp, char *,q, int,lenq) else return NULL; } - + p += lenp; if (!q || lenq<=0) return p; do { lenp--, p--; } while (lenp >= 0 && !memchr(q, *p, lenq)); - + if (lenp < 0) return NULL; return p; } -char *ptrmrchrs __P3 (ptr,p, char *,q, int,lenq) +char *ptrmrchrs(ptr p, char *q, int lenq) { if (p) return memrchrs(ptrdata(p), ptrlen(p), q, lenq); return (char*)p; /* shortcut for NULL */ } -char *ptrrchrs __P2 (ptr,p, ptr,q) +char *ptrrchrs(ptr p, ptr q) { if (p && q) return memrchrs(ptrdata(p), ptrlen(p), ptrdata(q), ptrlen(q)); @@ -22,54 +22,54 @@ typedef _ptr * ptr; #define ptrdata(p) ((char *)((ptr)(p) + 1)) /* if p is a valid (ptr), ptrdata(p) is guaranteed to be a valid (char *) */ -ptr ptrnew __P ((int max)); -ptr ptrdup2 __P ((ptr src, int newmax)); -ptr ptrdup __P ((ptr src)); +ptr ptrnew(int max); +ptr ptrdup2(ptr src, int newmax); +ptr ptrdup(ptr src); #define PTR_SIG 91887 #define ptrdel(x) _ptrdel(x);x=(ptr)0; -void _ptrdel __P ((ptr p)); +void _ptrdel(ptr p); -void ptrzero __P ((ptr p)); -void ptrshrink __P ((ptr p, int len)); -void ptrtrunc __P ((ptr p, int len)); -ptr ptrpad __P ((ptr p, int len)); -ptr ptrsetlen __P ((ptr p, int len)); +void ptrzero(ptr p); +void ptrshrink(ptr p, int len); +void ptrtrunc(ptr p, int len); +ptr ptrpad(ptr p, int len); +ptr ptrsetlen(ptr p, int len); -ptr ptrcpy __P ((ptr dst, ptr src)); -ptr ptrmcpy __P ((ptr dst, char *src, int len)); +ptr ptrcpy(ptr dst, ptr src); +ptr ptrmcpy(ptr dst, char *src, int len); -ptr ptrcat __P ((ptr dst, ptr src)); -ptr ptrmcat __P ((ptr dst, char *src, int len)); +ptr ptrcat(ptr dst, ptr src); +ptr ptrmcat(ptr dst, char *src, int len); -ptr __ptrcat __P ((ptr dst, char *src, int len, int shrink)); -ptr __ptrmcpy __P ((ptr dst, char *src, int len, int shrink)); +ptr __ptrcat(ptr dst, char *src, int len, int shrink); +ptr __ptrmcpy(ptr dst, char *src, int len, int shrink); -int ptrcmp __P ((ptr p, ptr q)); -int ptrmcmp __P ((ptr p, char *q, int lenq)); +int ptrcmp(ptr p, ptr q); +int ptrmcmp(ptr p, char *q, int lenq); -char *ptrchr __P ((ptr p, char c)); -char *ptrrchr __P ((ptr p, char c)); +char *ptrchr(ptr p, char c); +char *ptrrchr(ptr p, char c); -char *ptrfind __P ((ptr p, ptr q)); -char *ptrmfind __P ((ptr p, char *q, int lenq)); +char *ptrfind(ptr p, ptr q); +char *ptrmfind(ptr p, char *q, int lenq); -char *ptrchrs __P ((ptr p, ptr q)); -char *ptrmchrs __P ((ptr p, char *q, int lenq)); -char *ptrrchrs __P ((ptr p, ptr q)); -char *ptrmrchrs __P ((ptr p, char *q, int lenq)); +char *ptrchrs(ptr p, ptr q); +char *ptrmchrs(ptr p, char *q, int lenq); +char *ptrrchrs(ptr p, ptr q); +char *ptrmrchrs(ptr p, char *q, int lenq); -char *memchrs __P ((char *p, int lenp, char *q, int lenq)); -char *memrchrs __P ((char *p, int lenp, char *q, int lenq)); +char *memchrs(char *p, int lenp, char *q, int lenq); +char *memrchrs(char *p, int lenp, char *q, int lenq); #ifdef _GNU_SOURCE # define memfind memmem #else -char *memfind __P ((char *hay, int haylen, char *needle, int needlelen)); +char *memfind(char *hay, int haylen, char *needle, int needlelen); /* TODO: watch memrchr, it is defined differently here than under _GNU_SOURCE, * so it could cause bizarre results if a module makes use of a library that * uses it */ -char *memrchr __P ((char *p, int lenp, char c)); +char *memrchr(char *p, int lenp, char c); #endif #endif /* _PTR_H_ */ @@ -71,7 +71,7 @@ fd_set fdset; /* set of descriptors to select() on */ * so far, only terminal type is processed but future extensions are * window size, X display location, etc. */ -static void dosubopt __P1 (byte *,str) +static void dosubopt(byte *str) { char buf[256], *term; int len, err; @@ -85,7 +85,7 @@ static void dosubopt __P1 (byte *,str) if (!(term = getenv("TERM"))) term = "unknown"; sprintf(buf, "%c%c%c%c%.*s%c%c", IAC, SB, TELOPT_TTYPE, 0, 256-7, term, IAC, SE); /* 0 == IS */ - + len = strlen(term) + 6; while ((err = write(tcp_fd, buf, len)) < 0 && errno == EINTR) ; @@ -104,12 +104,12 @@ static void dosubopt __P1 (byte *,str) * send an option negotiation * 'what' is one of WILL, WONT, DO, DONT */ -static void sendopt __P2 (byte,what, byte,opt) +static void sendopt(byte what, byte opt) { static byte buf[3] = { IAC, 0, 0 }; int i; buf[1] = what; buf[2] = opt; - + while ((i = write(tcp_fd, buf, 3)) < 0 && errno == EINTR) ; if (i != 3) { @@ -129,7 +129,7 @@ static void sendopt __P2 (byte,what, byte,opt) * connect to remote host * Warning: some voodoo code here */ -int tcp_connect __P2 (const char *,addr, int,port) +int tcp_connect(const char *addr, int port) { struct addrinfo *host_info; struct addrinfo addrinfo; @@ -214,7 +214,7 @@ int tcp_connect __P2 (const char *,addr, int,port) } #else /* term */ - + if ((newtcp_fd = connect_server(0)) < 0) { tty_puts("\n#powwow: unable to connect to term server\n"); return -1; @@ -228,15 +228,15 @@ int tcp_connect __P2 (const char *,addr, int,port) tty_puts("Connected to term server...\n"); #ifdef TERM_COMPRESS send_command(newtcp_fd, C_COMPRESS, 1, "y"); -#endif +#endif send_command(newtcp_fd, C_DUMB, 1, 0); } #endif /* term */ - + tty_puts("connected!\n"); - - + + { /* * Now set some options on newtcp_fd : @@ -248,7 +248,7 @@ int tcp_connect __P2 (const char *,addr, int,port) # endif if (setsockopt(newtcp_fd, SOL_TCP, TCP_NODELAY, &opt, sizeof(opt))) errmsg("setsockopt(TCP_NODELAY) failed"); - + /* TCP keep-alive */ if (setsockopt(newtcp_fd, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof(opt))) errmsg("setsockopt(SO_KEEPALIVE) failed"); @@ -257,10 +257,10 @@ int tcp_connect __P2 (const char *,addr, int,port) * Then, close-on-exec: * we don't want children to inherit the socket! */ - + fcntl(newtcp_fd, F_SETFD, FD_CLOEXEC); } - + return newtcp_fd; } @@ -268,12 +268,12 @@ int tcp_connect __P2 (const char *,addr, int,port) * we don't expect IAC commands here, except IAC IAC (a protected ASCII 255) * which we replace with a single IAC (a plain ASCII 255) */ -int tcp_unIAC __P2 (char *,buffer, int,len) +int tcp_unIAC(char *buffer, int len) { char *s, *start, warnIACs = 1; if (!memchr(buffer, IAC, len)) return len; - + for (s = start = buffer; len > 0; buffer++, len--) { if (buffer[0] == (char)(byte)IAC) { if (len > 1 && buffer[1] == (char)(byte)IAC) @@ -292,7 +292,7 @@ int tcp_unIAC __P2 (char *,buffer, int,len) * the reverse step: protect ASCII 255 as IAC IAC * the dest buffer is assumed to be big enough to hold the whole data */ -static int tcp_addIAC __P3 (char *,dest, char *,txt, int,len) +static int tcp_addIAC(char *dest, char *txt, int len) { char *s = dest; while (len-- > 0) { @@ -306,7 +306,7 @@ static int tcp_addIAC __P3 (char *,dest, char *,txt, int,len) * read a maximum of size chars from remote host * using the telnet protocol. return chars read. */ -int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) +int tcp_read(int fd, char *buffer, int maxsize) { char state = CONN_LIST(fd).state; char old_state = CONN_LIST(fd).old_state; @@ -314,7 +314,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) static byte subopt[MAX_SUBOPT]; static int subchars; byte *p, *s, *linestart; - + char *ibuffer = buffer; if (state == GOT_R) { /* make room for the leading \r */ @@ -324,7 +324,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) while ((i = read(fd, ibuffer, maxsize)) < 0 && errno == EINTR) ; - + if (i == 0) { CONN_LIST(fd).state = NORMAL; tcp_close(NULL); @@ -334,7 +334,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) errmsg("read from socket"); return 0; } - + /* * scan through the buffer, * interpret telnet protocol escapes and MUME MPI messages @@ -379,9 +379,9 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) /* first, flush any missing \r */ if (state == GOT_R) *p++ = '\r'; - + *p++ = *s; - + /* check for MUME MPI messages: */ if (p - linestart == MPILEN && !memcmp(linestart, MPI, MPILEN)) { if (!(CONN_LIST(fd).flags & IDEDITOR)) { @@ -396,13 +396,13 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) p = linestart; } } - + if (state != ALTNORMAL) state = NORMAL; break; } break; - + case GOTIAC: switch (*s) { case WILL: @@ -436,7 +436,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) break; } break; - + case GOTWILL: #ifdef TELOPTS tty_printf("[got WILL %s]\n", TELOPTSTR(*s)); @@ -465,7 +465,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) } state = old_state; break; - + case GOTWONT: #ifdef TELOPTS tty_printf("[got WONT %s]\n", TELOPTSTR(*s)); @@ -478,7 +478,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) sendopt(DONT, *s); state = old_state; break; - + case GOTDO: #ifdef TELOPTS tty_printf("[got DO %s]\n", TELOPTSTR(*s)); @@ -502,7 +502,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) } state = old_state; break; - + case GOTDONT: #ifdef TELOPTS tty_printf("[got DONT %s]\n", TELOPTSTR(*s)); @@ -514,7 +514,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) sendopt(WONT, *s); state = old_state; break; - + case GOTSB: if (*s == IAC) { state = GOTSBIAC; @@ -523,7 +523,7 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) subopt[subchars++] = *s; } break; - + case GOTSBIAC: if (*s == IAC) { if (subchars < MAX_SUBOPT) @@ -544,15 +544,15 @@ int tcp_read __P3 (int,fd, char *,buffer, int,maxsize) } CONN_LIST(fd).state = state; CONN_LIST(fd).old_state = old_state; - + if (!(CONN_LIST(tcp_fd).flags & SPAWN)) { log_write(buffer, (char *)p - buffer, 0); } - + return (char *)p - buffer; } -static void internal_tcp_raw_write __P3 (int,fd, const char *,data, int,len) +static void internal_tcp_raw_write(int fd, const char *data, int len) { while (len > 0) { int i; @@ -567,14 +567,14 @@ static void internal_tcp_raw_write __P3 (int,fd, const char *,data, int,len) } } -void tcp_raw_write __P3 (int,fd, const char *,data, int,len) +void tcp_raw_write(int fd, const char *data, int len) { tcp_flush(); internal_tcp_raw_write(fd, data, len); } /* write data, escape any IACs */ -void tcp_write_escape_iac __P3 (int,fd, const char *,data, int,len) +void tcp_write_escape_iac(int fd, const char *data, int len) { tcp_flush(); @@ -593,15 +593,15 @@ void tcp_write_escape_iac __P3 (int,fd, const char *,data, int,len) /* * Send current terminal size (RFC 1073) */ -void tcp_write_tty_size __P0 (void) +void tcp_write_tty_size(void) { static byte buf[] = { IAC, SB, TELOPT_NAWS, 0, 0, 0, 0, IAC, SE }; - + buf[3] = cols >> 8; buf[4] = cols & 0xff; buf[5] = lines >> 8; buf[6] = lines & 0xff; - + tcp_raw_write(tcp_main_fd, (char *)buf, 9); #ifdef TELOPTS tty_printf("[sent term size %d %d]\n", cols, lines); @@ -611,7 +611,7 @@ void tcp_write_tty_size __P0 (void) /* * send a string to the main connection on the remote host */ -void tcp_main_write __P1 (char *,data) +void tcp_main_write(char *data) { tcp_write(tcp_main_fd, data); } @@ -624,12 +624,12 @@ static int output_socket = -1; /* to which socket buffer should be sent*/ /* * put data in the output buffer for transmission to the remote host */ -void tcp_write __P2 (int,fd, char *,data) +void tcp_write(int fd, char *data) { char *iacs, *out; int len, space, iacp; len = strlen(data); - + if (tcp_main_fd != -1 && tcp_main_fd == fd) { if (linemode & LM_NOECHO) log_write("", 0, 1); /* log a newline only */ @@ -643,19 +643,19 @@ void tcp_write __P2 (int,fd, char *,data) status(1); else status(-1); - + if (fd != output_socket) { /* is there data to another socket? */ tcp_flush(); /* then flush it */ output_socket = fd; } - + out = output_buffer + output_len; space = BUFSIZE - output_len; - + while (len) { iacs = memchr(data, IAC, len); iacp = iacs ? iacs - data : len; - + if (iacp == 0) { /* we're at the IAC, send it */ if (space < 2) { @@ -667,18 +667,18 @@ void tcp_write __P2 (int,fd, char *,data) data++; len--; continue; } - + while (space < iacp) { memcpy(out, data, space); data += space; len -= space; iacp -= space; output_len = BUFSIZE; - + tcp_flush(); out = output_buffer; space = BUFSIZE; } - + if (iacp /* && space >= iacp */ ) { memcpy(out, data, iacp); out += iacp; output_len += iacp; space -= iacp; @@ -696,22 +696,22 @@ void tcp_write __P2 (int,fd, char *,data) /* * send all buffered data to the remote host */ -void tcp_flush __P0 (void) +void tcp_flush(void) { int n; char *p = output_buffer; - + if (output_len && output_socket == -1) { clear_input_line(1); PRINTF("#no open connections. Use '#connect main <address> <port>' to open a connection.\n"); output_len = 0; return; } - + if (!output_len) return; - - while (output_len) { + + while (output_len) { while ((n = write(output_socket, p, output_len)) < 0 && errno == EINTR) ; if (n < 0) { @@ -723,7 +723,7 @@ void tcp_flush __P0 (void) p += n; output_len -= n; } - + if (CONN_LIST(output_socket).flags & SPAWN) status(1); else @@ -739,10 +739,10 @@ void tcp_flush __P0 (void) * return connection's fd given id, * or -1 if null or invalid id is given */ -int tcp_find __P1 (char *,id) +int tcp_find(char *id) { int i; - + for (i=0; i<conn_max_index; i++) { if (CONN_INDEX(i).id && !strcmp(CONN_INDEX(i).id, id)) return CONN_INDEX(i).fd; @@ -753,20 +753,20 @@ int tcp_find __P1 (char *,id) /* * show list of open connections */ -void tcp_show __P0 (void) +void tcp_show(void) { int i = tcp_count+tcp_attachcount; - - PRINTF("#%s connection%s opened%c\n", i ? "The following" : "No", + + PRINTF("#%s connection%s opened%c\n", i ? "The following" : "No", i==1 ? " is" : "s are", i ? ':' : '.'); - - + + for (i=0; i<conn_max_index; i++) if (CONN_INDEX(i).id && !(CONN_INDEX(i).flags & SPAWN)) { tty_printf("MUD %sactive %s ##%s\t (%s %d)\n", CONN_INDEX(i).flags & ACTIVE ? " " : "non", i == tcp_main_fd ? "(default)" : " ", - CONN_INDEX(i).id, + CONN_INDEX(i).id, CONN_INDEX(i).host, CONN_INDEX(i).port); } for (i=0; i<conn_max_index; i++) @@ -781,11 +781,11 @@ void tcp_show __P0 (void) /* * permanently change main connection */ -void tcp_set_main __P1 (int,fd) +void tcp_set_main(int fd) { /* GH: reset linemode and prompt */ tcp_main_fd = fd; - if (linemode & LM_CHAR) + if (linemode & LM_CHAR) linemode = 0, tty_special_keys(); else linemode = 0; @@ -796,10 +796,10 @@ void tcp_set_main __P1 (int,fd) /* * open another connection */ -void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) +void tcp_open(char *id, char *initstring, char *host, int port) { int newtcp_fd, i; - + if (tcp_count+tcp_attachcount >= MAX_CONNECTS) { PRINTF("#too many open connections.\n"); return; @@ -808,7 +808,7 @@ void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) PRINTF("#connection \"%s\" already open.\n", id); return; } - + /* find a free slot */ for (i=0; i<MAX_CONNECTS; i++) { if (!CONN_INDEX(i).id) @@ -818,7 +818,7 @@ void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) PRINTF("#internal error, connection table full :(\n"); return; } - + if (!(CONN_INDEX(i).host = my_strdup(host))) { errmsg("malloc"); return; @@ -836,7 +836,7 @@ void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) CONN_INDEX(i).id = 0; return; } - + conn_table[newtcp_fd] = i; CONN_INDEX(i).flags = ACTIVE; CONN_INDEX(i).state = NORMAL; @@ -848,7 +848,7 @@ void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) tcp_max_fd = newtcp_fd; if (conn_max_index <= i) conn_max_index = i+1; - + FD_SET(newtcp_fd, &fdset); /* add socket to select() set */ tcp_count++; @@ -858,7 +858,7 @@ void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) tcp_set_main(tcp_fd = newtcp_fd); if (opt_sendsize) tcp_write_tty_size(); - + if (initstring) { parse_instruction(initstring, 0, 0, 1); history_done = 0; @@ -868,10 +868,10 @@ void tcp_open __P4 (char *,id, char *,initstring, char *,host, int,port) /* * close a connection */ -void tcp_close __P1 (char *,id) +void tcp_close(char *id) { int i, sfd; - + status(1); tty_puts(edattrend); /* @@ -879,7 +879,7 @@ void tcp_close __P1 (char *,id) * if tcp_read gets an EOF, before edattrend is * printed by get_remote_input() itself. */ - + if (id) { /* #zap cmd */ if ((sfd = tcp_find(id)) < 0) { tty_printf("#no such connection: \"%s\"\n", id); @@ -892,9 +892,9 @@ void tcp_close __P1 (char *,id) close(sfd); abort_edit_fd(sfd); - + tty_printf("#connection on \"%s\" closed.\n", CONN_LIST(sfd).id); - + if (sfd == tcp_main_fd) { /* main connection closed */ if (tcp_count == 1) { /* was last connection */ if (opt_exit) @@ -918,10 +918,10 @@ void tcp_close __P1 (char *,id) } tcp_set_main(tcp_main_fd); } - + if (tcp_fd == sfd) tcp_fd = -1; /* no further I/O allowed on sfd, as we just closed it */ - + FD_CLR(sfd, &fdset); if (CONN_LIST(sfd).flags & SPAWN) tcp_attachcount--; @@ -937,7 +937,7 @@ void tcp_close __P1 (char *,id) free(CONN_LIST(sfd).fragment); CONN_LIST(sfd).fragment = 0; } - + /* recalculate conn_max_index */ i = conn_table[sfd]; if (i+1 == conn_max_index) { @@ -946,7 +946,7 @@ void tcp_close __P1 (char *,id) } while (i>=0 && !CONN_INDEX(i).id); conn_max_index = i+1; } - + /* recalculate tcp_max_fd */ for (i = tcp_max_fd = 0; i<conn_max_index; i++) { if (CONN_INDEX(i).id && tcp_max_fd < CONN_INDEX(i).fd) @@ -957,10 +957,10 @@ void tcp_close __P1 (char *,id) /* * toggle output display from another connection */ -void tcp_togglesnoop __P1 (char *,id) +void tcp_togglesnoop(char *id) { int sfd; - + sfd = tcp_find(id); if (sfd>=0) { CONN_LIST(sfd).flags ^= ACTIVE; @@ -973,7 +973,7 @@ void tcp_togglesnoop __P1 (char *,id) } } -void tcp_spawn __P2 (char *,id, char *,cmd) +void tcp_spawn(char *id, char *cmd) { int i, childpid, sockets[2]; @@ -986,7 +986,7 @@ void tcp_spawn __P2 (char *,id, char *,cmd) return; } unescape(cmd); - + switch (childpid = fork()) { case 0: /* child */ @@ -1007,10 +1007,10 @@ void tcp_spawn __P2 (char *,id, char *,cmd) return; } close(sockets[1]); - + /* Again, we don't want children to inherit sockets */ fcntl(sockets[0], F_SETFD, FD_CLOEXEC); - + /* now find a free slot */ for (i=0; i<MAX_CONNECTS; i++) { if (!CONN_INDEX(i).id) { @@ -1023,7 +1023,7 @@ void tcp_spawn __P2 (char *,id, char *,cmd) close(sockets[0]); return; } - + if (!(CONN_INDEX(i).host = my_strdup(cmd))) { errmsg("malloc"); close(sockets[0]); @@ -1040,22 +1040,22 @@ void tcp_spawn __P2 (char *,id, char *,cmd) CONN_INDEX(i).old_state = NORMAL; CONN_INDEX(i).port = 0; CONN_INDEX(i).fd = sockets[0]; - + FD_SET(sockets[0], &fdset); /* add socket to select() set */ tcp_attachcount++; - + if (tcp_max_fd < sockets[0]) tcp_max_fd = sockets[0]; if (conn_max_index <= i) conn_max_index = i+1; - + if (opt_info) { PRINTF("#successfully spawned \"%s\" with pid %d\n", id, childpid); } - + /* * when the child exits we also get an EOF on the socket, * so no special care is needed by the SIGCHLD handler. - */ + */ } @@ -12,7 +12,7 @@ extern int tcp_attachcount; /* number of spawned or attached commands */ extern int conn_max_index; /* 1 + highest used conn_list[] index */ - + /* multiple connections control */ /* state of telnet connection */ @@ -58,22 +58,22 @@ extern byte conn_table[MAX_FDSCAN]; /* fd -> index translation table */ extern fd_set fdset; /* set of descriptors to select() on */ -int tcp_connect __P ((const char *addr, int port)); -int tcp_read __P ((int fd, char *buffer, int maxsize)); -void tcp_raw_write __P ((int fd, const char *data, int len)); -void tcp_write_escape_iac __P3 (int,fd, const char *,data, int,len); -void tcp_write_tty_size __P ((void)); -void tcp_write __P ((int fd, char *data)); -void tcp_main_write __P ((char *data)); -void tcp_flush __P ((void)); -void tcp_set_main __P ((int fd)); -void tcp_open __P ((char *id, char *initstring, char *host, int port)); -int tcp_find __P ((char *id)); -void tcp_show __P ((void)); -void tcp_close __P ((char *id)); -void tcp_togglesnoop __P ((char *id)); -void tcp_spawn __P ((char *id, char *cmd)); -int tcp_unIAC __P ((char *data, int len)); +int tcp_connect(const char *addr, int port); +int tcp_read(int fd, char *buffer, int maxsize); +void tcp_raw_write(int fd, const char *data, int len); +void tcp_write_escape_iac(int fd, const char *data, int len); +void tcp_write_tty_size(void); +void tcp_write(int fd, char *data); +void tcp_main_write(char *data); +void tcp_flush(void); +void tcp_set_main(int fd); +void tcp_open(char *id, char *initstring, char *host, int port); +int tcp_find(char *id); +void tcp_show(void); +void tcp_close(char *id); +void tcp_togglesnoop(char *id); +void tcp_spawn(char *id, char *cmd); +int tcp_unIAC(char *data, int len); #endif /* _TCP_H_ */ @@ -1,6 +1,6 @@ /* * tty.c -- terminal handling routines for powwow - * + * * Copyright (C) 1998 by Massimiliano Ghilardi * * This program is free software; you can redistribute it and/or modify @@ -97,9 +97,9 @@ static char kpadstart[] = "", kpadend[] = "", begoln[] = "\r", modebold[] = "\033[1m", modeblink[] = "\033[5m", modeinv[] = "\033[7m", modeuline[] = "\033[4m", modestandon[] = "", modestandoff[] = "", modenorm[] = "\033[m", modenormbackup[4], - cursor_left[] = "\033[D", cursor_right[] = "\033[C", + cursor_left[] = "\033[D", cursor_right[] = "\033[C", cursor_up[] = "\033[A", cursor_down[] = "\033[B"; - + #define insertfinish (0) static int len_begoln = 1, len_leftcur = 3, len_upcur = 3, gotocost = 8; @@ -114,7 +114,7 @@ char *tgoto(); /* terminal escape sequences */ static char kpadstart[CAPLEN], kpadend[CAPLEN], leftcur[CAPLEN], rightcur[CAPLEN], upcur[CAPLEN], curgoto[CAPLEN], - delchar[CAPLEN], insstart[CAPLEN], insstop[CAPLEN], + delchar[CAPLEN], insstart[CAPLEN], insstop[CAPLEN], inschar[CAPLEN], begoln[CAPLEN], clreoln[CAPLEN], clreoscr[CAPLEN], cursor_left[CAPLEN], cursor_right[CAPLEN], cursor_up[CAPLEN], @@ -128,7 +128,7 @@ static char modebold[CAPLEN], modeblink[CAPLEN], modeinv[CAPLEN], static int len_begoln, len_clreoln, len_leftcur, len_upcur, gotocost, deletecost, insertcost, insertfinish, inscharcost; -static int extract __P ((char *cap, char *buf)); +static int extract(char *cap, char *buf); #endif /* USE_VT100 */ @@ -172,7 +172,7 @@ static termiostruct ttybsave; * Set the terminal to character-at-a-time-without-echo mode, and save the * original state in ttybsave */ -void tty_start __P0 (void) +void tty_start(void) { #ifdef USE_SGTTY struct sgttyb ttyb; @@ -221,7 +221,7 @@ void tty_start __P0 (void) /* * Reset the terminal to its original state */ -void tty_quit __P0 (void) +void tty_quit(void) { #ifdef USE_SGTTY ioctl(tty_read_fd, TIOCSETP, &ttybsave); @@ -240,7 +240,7 @@ void tty_quit __P0 (void) /* * enable/disable special keys depending on the current linemode */ -void tty_special_keys __P0 (void) +void tty_special_keys(void) { #ifdef USE_SGTTY struct tchars tc = {-1, -1, -1, -1, -1, -1}; @@ -285,7 +285,7 @@ void tty_special_keys __P0 (void) /* * get window size and react to any window size change */ -void tty_sig_winch_bottomhalf __P0 (void) +void tty_sig_winch_bottomhalf(void) { struct winsize wsiz; /* if ioctl fails or gives silly values, don't change anything */ @@ -298,11 +298,11 @@ void tty_sig_winch_bottomhalf __P0 (void) cols_1 = cols = wsiz.ws_col; if (!wrapglitch) cols_1--; - + if (tcp_main_fd != -1) tcp_write_tty_size(); line0 += lines - olines; - + tty_gotoxy(0, line0); /* so we know where the cursor is */ #ifdef BUG_ANSI @@ -311,7 +311,7 @@ void tty_sig_winch_bottomhalf __P0 (void) else #endif tty_puts(tty_clreoscr); - + olines = lines; status(1); } @@ -320,7 +320,7 @@ void tty_sig_winch_bottomhalf __P0 (void) /* * read termcap definitions */ -void tty_bootstrap __P0 (void) +void tty_bootstrap(void) { #ifdef USE_LOCALE tty_read_stream = stdin; @@ -407,7 +407,7 @@ void tty_bootstrap __P0 (void) gotocost = strlen(tgoto(curgoto, cols - 1, lines - 1)); insertfinish = gotocost + len_clreoln; - + /* this must be before getting window size */ wrapglitch = tgetflag("xn"); @@ -418,7 +418,7 @@ void tty_bootstrap __P0 (void) #ifdef BUG_TELNET if (strncmp(term, "vt10", 4) == 0) { /* might be NCSA Telnet 2.2 for PC, which doesn't reset colours */ - sprintf(modenorm, "\033[;%c%d;%s%dm", + sprintf(modenorm, "\033[;%c%d;%s%dm", DEFAULTFG<LOWCOLORS ? '3' : '9', DEFAULTFG % LOWCOLORS, DEFAULTBG<LOWCOLORS ? "4" : "10", DEFAULTBG % LOWCOLORS); } @@ -428,7 +428,7 @@ void tty_bootstrap __P0 (void) /* * add the default keypad bindings to the list */ -void tty_add_walk_binds __P0 (void) +void tty_add_walk_binds(void) { /* * Note: termcap doesn't have sequences for the numeric keypad, so we just @@ -448,7 +448,7 @@ void tty_add_walk_binds __P0 (void) /* * initialize the key binding list */ -void tty_add_initial_binds __P0 (void) +void tty_add_initial_binds(void) { struct b_init_node { char *label, *seq; @@ -488,7 +488,7 @@ void tty_add_initial_binds __P0 (void) do { add_keynode(p->label, p->seq, 0, p->funct, NULL); } while((++p)->seq[0]); - + if (*cursor_left ) add_keynode("Left" , cursor_left , 0, prev_char, NULL); if (*cursor_right) add_keynode("Right", cursor_right, 0, next_char, NULL); if (*cursor_up ) add_keynode("Up" , cursor_up , 0, prev_line, NULL); @@ -500,7 +500,7 @@ void tty_add_initial_binds __P0 (void) * extract termcap 'cap' and strcat it to buf. * return the lenght of the extracted string. */ -static int extract __P2 (char *,cap, char *,buf) +static int extract(char *cap, char *buf) { static char *bp; char *d = buf + strlen(buf); @@ -524,7 +524,7 @@ static int extract __P2 (char *,cap, char *,buf) * position the cursor using absolute coordinates * note: does not flush the output buffer */ -void tty_gotoxy __P2 (int,col, int,line) +void tty_gotoxy(int col, int line) { #ifdef USE_VT100 tty_printf("\033[%d;%dH", line + 1, col + 1); @@ -538,15 +538,15 @@ void tty_gotoxy __P2 (int,col, int,line) * from (fromcol, fromline) to (tocol, toline) * if tocol > 0, (tocol, toline) must lie on editline. */ -void tty_gotoxy_opt __P4 (int,fromcol, int,fromline, int,tocol, int,toline) +void tty_gotoxy_opt(int fromcol, int fromline, int tocol, int toline) { static char buf[BUFSIZE]; char *cp = buf; int cost, i, dist; - + CLIP(fromline, 0, lines-1); CLIP(toline , 0, lines-1); - + /* First, move vertically to the correct line, then horizontally * to the right column. If this turns out to be fewer characters * than a direct cursor positioning (tty_gotoxy), use that. @@ -612,7 +612,7 @@ void tty_gotoxy_opt __P4 (int,fromcol, int,fromline, int,tocol, int,toline) * GH: change the position on input line (gotoxy there, and set pos) * from cancan 2.6.3a */ -void input_moveto __P1 (int,new_pos) +void input_moveto(int new_pos) { /* * FEATURE: the line we are moving to might be less than 0, or greater @@ -625,7 +625,7 @@ void input_moveto __P1 (int,new_pos) new_pos = edlen; if (new_pos == pos) return; - + if (line_status == 0) { int fromline = CURLINE(pos), toline = CURLINE(new_pos); if (toline < 0) @@ -641,12 +641,12 @@ void input_moveto __P1 (int,new_pos) * delete n characters at current position (the position is unchanged) * assert(n < edlen - pos) */ -void input_delete_nofollow_chars __P1 (int,n) +void input_delete_nofollow_chars(int n) { int r_cost, p = pos, d_cost; int nl = pos - CURCOL(pos); /* this line's starting pos (can be <= 0) */ int cl = CURLINE(pos); /* current line */ - + if (n > edlen - p) n = edlen - p; if (n <= 0) @@ -658,7 +658,7 @@ void input_delete_nofollow_chars __P1 (int,n) edlen -= n; return; } - + memmove(edbuf + p, edbuf + d_cost, edlen - d_cost); memset(edbuf + edlen - n, (int)' ', n); for (;; tty_putc('\n'), p = nl, cl++) { @@ -677,17 +677,17 @@ void input_delete_nofollow_chars __P1 (int,n) #ifdef BUG_ANSI if (edattrbg) tty_puts(edattrend); -#endif +#endif for (d_cost = n; d_cost; d_cost--) tty_puts(delchar); #ifdef BUG_ANSI if (edattrbg) tty_puts(edattrbeg); -#endif +#endif if (edlen <= nl) break; - + tty_gotoxy(cols_1 - n, cl); tty_printf("%.*s", n, edbuf + nl - n); } else @@ -701,9 +701,9 @@ void input_delete_nofollow_chars __P1 (int,n) else #endif tty_printf("%.*s", r_cost, edbuf + p); - + p += r_cost; - + if (edlen <= nl) { #ifdef BUG_ANSI if (edattrbg) @@ -730,7 +730,7 @@ void input_delete_nofollow_chars __P1 (int,n) * GH: print a char on current position (overwrite), advance position * from cancan 2.6.3a */ -void input_overtype_follow __P1 (char,c) +void input_overtype_follow(char c) { if (pos >= edlen) return; @@ -753,7 +753,7 @@ void input_overtype_follow __P1 (char,c) * insert n characters at input line current position. * The position is set to after the inserted characters. */ -void input_insert_follow_chars __P2 (char *,str, int,n) +void input_insert_follow_chars(char *str, int n) { int r_cost, i_cost, p = pos; int nl = p - CURCOL(p); /* next line's starting pos */ @@ -763,14 +763,14 @@ void input_insert_follow_chars __P2 (char *,str, int,n) n = BUFSIZE - edlen - 1; if (n <= 0) return; - + memmove(edbuf + p + n, edbuf + p, edlen + 1 - p); memmove(edbuf + p, str, n); edlen += n; pos += n; - + if (line_status != 0) return; - + do { i_cost = n; if ((r_cost = edlen) > (nl += cols_1)) @@ -804,7 +804,7 @@ void input_insert_follow_chars __P2 (char *,str, int,n) line0--; } } while (edlen > nl); - + if (p != pos) tty_gotoxy_opt(CURCOL(p), cl, CURCOL(pos), CURLINE(pos)); } @@ -812,13 +812,13 @@ void input_insert_follow_chars __P2 (char *,str, int,n) #ifdef USE_LOCALE /* curses wide character support by Dain */ -void tty_puts __P ((const char *s)) +void tty_puts(const char *s) { while (*s) tty_putc(*s++); } -void tty_putc __P ((char c)) +void tty_putc(char c) { size_t r; int ignore_error = 0; @@ -844,7 +844,7 @@ again: tty_write_state.used += r; } -int tty_printf __P ((const char *format, ...)) +int tty_printf(const char *format, ...) { char buf[1024], *bufp = buf; va_list va; @@ -877,12 +877,12 @@ int tty_printf __P ((const char *format, ...)) static char tty_in_buf[MB_LEN_MAX + 1]; static size_t tty_in_buf_used = 0; -int tty_has_chars __P ((void)) +int tty_has_chars(void) { return tty_in_buf_used != 0; } -static int safe_mbtowc __P3 (wchar_t *,pwc, char *,s, size_t *,n) +static int safe_mbtowc(wchar_t *pwc, char *s, size_t *n) { static mbstate_t ps; @@ -908,7 +908,7 @@ again: return r; } -int tty_read __P ((char *buf, size_t count)) +int tty_read(char *buf, size_t count) { int result = 0; int converted; @@ -965,7 +965,7 @@ int tty_read __P ((char *buf, size_t count)) } -void tty_gets __P ((char *s, int size)) +void tty_gets(char *s, int size) { wchar_t *ws = alloca(size * sizeof *ws); @@ -979,7 +979,7 @@ void tty_gets __P ((char *s, int size)) } } -void tty_flush __P ((void)) +void tty_flush(void) { size_t n = tty_write_state.used; char *data = tty_write_state.data; @@ -1017,7 +1017,7 @@ void tty_flush __P ((void)) tty_write_state.used = 0; } -void tty_raw_write __P ((char *data, size_t len)) +void tty_raw_write(char *data, size_t len) { if (len == 0) return; @@ -10,31 +10,28 @@ extern char *tty_clreoln, *tty_clreoscr, *tty_begoln, *tty_modenorm, *tty_modenormbackup, *tty_modeinv, *tty_modestandon, *tty_modestandoff; -void tty_bootstrap __P ((void)); -void tty_start __P ((void)); -void tty_quit __P ((void)); -void tty_special_keys __P ((void)); -void tty_sig_winch_bottomhalf __P ((void)); -void tty_add_walk_binds __P ((void)); -void tty_add_initial_binds __P ((void)); -void tty_gotoxy __P ((int col, int line)); -void tty_gotoxy_opt __P ((int fromcol, int fromline, int tocol, int toline)); - -void input_delete_nofollow_chars __P ((int n)); -void input_overtype_follow __P ((char c)); -void input_insert_follow_chars __P ((char *str, int n)); -void input_moveto __P ((int new_pos)); - -#ifndef USE_LOCALE - -#define tty_puts(s) fputs((s), stdout) -/* printf("%s", (s)); would be as good */ - - -#define tty_putc(c) putc((unsigned char)(c), stdout) -#define tty_printf printf +void tty_bootstrap(void); +void tty_start(void); +void tty_quit(void); +void tty_special_keys(void); +void tty_sig_winch_bottomhalf(void); +void tty_add_walk_binds(void); +void tty_add_initial_binds(void); +void tty_gotoxy(int col, int line); +void tty_gotoxy_opt(int fromcol, int fromline, int tocol, int toline); + +void input_delete_nofollow_chars(int n); +void input_overtype_follow(char c); +void input_insert_follow_chars(char *str, int n); +void input_moveto(int new_pos); + +#ifndef USE_LOCALE + +#define tty_puts(s) fputs((s), stdout) +#define tty_putc(c) fputc((unsigned char)(c), stdout) +#define tty_printf(...) printf(__VA_ARGS__) #define tty_read(buf, cnt) read(tty_read_fd, (buf), (cnt)) -#define tty_gets(s,size) fgets((s), (size), stdin) +#define tty_gets(s, size) fgets((s), (size), stdin) #define tty_flush() fflush(stdout) #define tty_raw_write(s,size) do { tty_flush(); write(1, (s), (size)); } while (0) @@ -47,14 +44,14 @@ void input_moveto __P ((int new_pos)); #define PRINTF_FUNCTION(string, first) #endif -void tty_puts __P ((const char *s)); -void tty_putc __P ((char c)); -int tty_printf __P ((const char *format, ...)) PRINTF_FUNCTION(1, 2); -int tty_read __P ((char *buf, size_t count)); -void tty_gets __P ((char *s, int size)); -void tty_flush __P ((void)); -void tty_raw_write __P ((char *data, size_t len)); -int tty_has_chars __P ((void)); +void tty_puts(const char *s); +void tty_putc(char c); +int tty_printf(const char *format, ...) PRINTF_FUNCTION(1, 2); +int tty_read(char *buf, size_t count); +void tty_gets(char *s, int size); +void tty_flush(void); +void tty_raw_write(char *data, size_t len); +int tty_has_chars(void); #endif /* USE_LOCALE */ @@ -38,7 +38,7 @@ static char can_suspend = 0; /* 1 if shell has job control */ /* * GH: memory-"safe" strdup */ -char *my_strdup __P1 (char *,s) +char *my_strdup(char *s) { if (s) { s = strdup(s); @@ -53,7 +53,7 @@ char *my_strdup __P1 (char *,s) * copy up to len chars from src to dst, then add a final \0 * (i.e. dst[len] = '\0') */ -char *my_strncpy __P3 (char *,dst, char *,src, int,len) +char *my_strncpy(char *dst, char *src, int len) { int slen = strlen(src); if (slen < len) @@ -69,7 +69,7 @@ char *my_strncpy __P3 (char *,dst, char *,src, int,len) * "<esc> [ <non-letters> <letter>", "<esc> <non-[>", "<control-char>". * This is not entirely universal but covers the most common cases (i.e. ansi) */ -int printstrlen __P1 (char *,s) +int printstrlen(char *s) { int l; enum { NORM, ESCAPE, BRACKET } state = NORM; @@ -83,11 +83,11 @@ int printstrlen __P1 (char *,s) } else if (*s == '\r') l = (l / cols) * cols; break; - + case ESCAPE: state = (*s == '[') ? BRACKET : NORM; break; - + case BRACKET: if (isalpha(*s)) state = NORM; @@ -100,7 +100,7 @@ int printstrlen __P1 (char *,s) /* * return pointer to next non-blank char */ -char *skipspace __P1 (char *,p) +char *skipspace(char *p) { while (*p == ' ' || *p == '\t') p++; return p; @@ -110,7 +110,7 @@ char *skipspace __P1 (char *,p) * find the first valid (non-escaped) * char in a string */ -char *first_valid __P2 (char *,p, char,ch) +char *first_valid(char *p, char ch) { if (*p && *p != ch) { p++; @@ -126,7 +126,7 @@ char *first_valid __P2 (char *,p, char,ch) * find the first regular (non-escaped, non in "" () or {} ) * char in a string */ -char *first_regular __P2 (char *,p, char,c) +char *first_regular(char *p, char c) { int escaped, quotes=0, paren=0, braces=0; @@ -168,16 +168,16 @@ char *first_regular __P2 (char *,p, char,c) /* * remove escapes (backslashes) from a string */ -int memunescape __P2 (char *,p, int,lenp) +int memunescape(char *p, int lenp) { char *start, *s; enum { NORM, ESCSINGLE, ESCAPE } state = NORM; if (!p || !*p) return 0; - + start = s = p; - + while (lenp) switch (state) { case NORM: if (*s != ESC) { @@ -192,12 +192,12 @@ int memunescape __P2 (char *,p, int,lenp) case ESCAPE: if (*s == ESC) state = ESCAPE, *p++ = *s++, lenp--; - else if (*s == ESC2) + else if (*s == ESC2) state = NORM, *p++ = ESC, s++, lenp--; else { if (state == ESCSINGLE && lenp >= 3 && ISODIGIT(s[0]) && ISODIGIT(s[1]) && ISODIGIT(s[2])) { - + *p++ = ((s[0]-'0') << 6) | ((s[1]-'0') << 3) | (s[2]-'0'); s += 3, lenp -= 3; } else @@ -212,12 +212,12 @@ int memunescape __P2 (char *,p, int,lenp) return (int)(p - start); } -void unescape __P1 (char *,s) +void unescape(char *s) { (void)memunescape(s, strlen(s)); } -void ptrunescape __P1 (ptr,p) +void ptrunescape(ptr p) { if (!p) return; @@ -227,42 +227,42 @@ void ptrunescape __P1 (ptr,p) /* * add escapes (backslashes) to src */ -ptr ptrmescape __P4 (ptr,dst, char *,src, int,srclen, int,append) +ptr ptrmescape(ptr dst, char *src, int srclen, int append) { int len; char *p; enum { NORM, ESCAPE } state; - + if (!src || srclen <= 0) { if (!append) ptrzero(dst); return dst; } - + if (dst && append) len = ptrlen(dst); else len = 0; - + dst = ptrsetlen(dst, len + srclen*4); /* worst case */ if (MEM_ERROR) return dst; - + dst->len = len; p = ptrdata(dst) + len; - + while (srclen) { state = NORM; if (*src == ESC) { while (srclen && *src == ESC) dst->len++, *p++ = *src++, srclen--; - + if (!srclen || *src == ESC2) dst->len++, *p++ = ESC2; else state = ESCAPE; } if (!srclen) break; - + if (*src < ' ' || *src > '~') { sprintf(p, "\\%03o", (int)(byte)*src++); len = strlen(p); @@ -270,7 +270,7 @@ ptr ptrmescape __P4 (ptr,dst, char *,src, int,srclen, int,append) } else { if (state == ESCAPE || strchr(SPECIAL_CHARS, *src)) dst->len++, *p++ = ESC; - + dst->len++, *p++ = *src++, srclen--; } } @@ -278,7 +278,7 @@ ptr ptrmescape __P4 (ptr,dst, char *,src, int,srclen, int,append) return dst; } -ptr ptrescape __P3 (ptr,dst, ptr,src, int,append) +ptr ptrescape(ptr dst, ptr src, int append) { if (!src) { if (!append) @@ -291,7 +291,7 @@ ptr ptrescape __P3 (ptr,dst, ptr,src, int,append) /* * add escapes to protect special characters from being escaped. */ -void escape_specials __P2 (char *,dst, char *,src) +void escape_specials(char *dst, char *src) { enum { NORM, ESCAPE } state; while (*src) { @@ -299,21 +299,21 @@ void escape_specials __P2 (char *,dst, char *,src) if (*src == ESC) { while (*src == ESC) *dst++ = *src++; - + if (!*src || *src == ESC2) *dst++ = ESC2; else state = ESCAPE; } if (!*src) break; - + if (*src < ' ' || *src > '~') { sprintf(dst, "\\%03o", (int)(byte)*src++); dst += strlen(dst); } else { if (state == ESCAPE || strchr(SPECIAL_CHARS, *src)) *dst++ = ESC; - + *dst++ = *src++; } } @@ -325,13 +325,13 @@ void escape_specials __P2 (char *,dst, char *,src) * if 1, start and end contain the match bounds * if 0, start and end are undefined on return */ -static int match_mark __P2 (marknode *,mp, char *,src) +static int match_mark(marknode *mp, char *src) { char *pat = mp->pattern; char *npat=0, *npat2=0, *nsrc=0, *prm=0, *endprm=0, *tmp, c; static char mpat[BUFSIZE]; int mbeg = mp->mbeg, mword = 0, p; - + /* shortcut for #marks without wildcards */ if (!mp->wild) { if ((nsrc = strstr(src, pat))) { @@ -343,7 +343,7 @@ static int match_mark __P2 (marknode *,mp, char *,src) } mp->start = NULL; - + if (ISMARKWILDCARD(*pat)) mbeg = - mbeg - 1; /* pattern starts with '&' or '$' */ @@ -358,22 +358,22 @@ static int match_mark __P2 (marknode *,mp, char *,src) mp->start = src; ++pat; } - + npat = first_valid(pat, '&'); npat2 = first_valid(pat, '$'); if (npat2 < npat) npat = npat2; if (!*npat) npat = 0; - + if (npat) { my_strncpy(mpat, pat, npat-pat); /* mpat[npat - pat] = 0; */ } else strcpy(mpat, pat); - + if (*mpat) { nsrc = strstr(src, mpat); if (!nsrc) - return 0; + return 0; if (mbeg > 0) { if (nsrc != src) return 0; @@ -391,8 +391,8 @@ static int match_mark __P2 (marknode *,mp, char *,src) mp->end = endprm = prm + strlen(prm); else mp->end = src; - - + + /* post-processing of param */ if (mword) { if (prm) { @@ -432,14 +432,14 @@ static int match_mark __P2 (marknode *,mp, char *,src) /* * add marks to line. write in dst. */ -ptr ptrmaddmarks __P3 (ptr,dst, char *,line, int,len) +ptr ptrmaddmarks(ptr dst, char *line, int len) { marknode *mp, *mfirst; char begin[CAPLEN], end[CAPLEN], *lineend = line + len; int start = 1, matchlen, matched = 0; - + ptrzero(dst); - + if (!line || len <= 0) return dst; @@ -459,16 +459,16 @@ ptr ptrmaddmarks __P3 (ptr,dst, char *,line, int,len) (!mfirst || mp->start < mfirst->start)) mfirst = mp; } - + if (mfirst) { start = 0; attr_string(mfirst->attrcode, begin, end); - + dst = ptrmcat(dst, line, matchlen = mfirst->start - line); if (MEM_ERROR) break; line += matchlen; len -= matchlen; - + dst = ptrmcat(dst, begin, strlen(begin)); if (MEM_ERROR) break; @@ -476,19 +476,19 @@ ptr ptrmaddmarks __P3 (ptr,dst, char *,line, int,len) if (MEM_ERROR) break; line += matchlen; len -= matchlen; - + dst = ptrmcat(dst, end, strlen(end)); if (MEM_ERROR) break; } } while (mfirst); if (!MEM_ERROR) - dst = ptrmcat(dst, line, len); - + dst = ptrmcat(dst, line, len); + return dst; } -ptr ptraddmarks __P2 (ptr,dst, ptr,line) +ptr ptraddmarks(ptr dst, ptr line) { if (line) return ptrmaddmarks(dst, ptrdata(line), ptrlen(line)); @@ -500,7 +500,7 @@ ptr ptraddmarks __P2 (ptr,dst, ptr,line) * write string to tty, word wrapping to next line if needed. * don't print a final \n */ -static void wrap_print __P1 (char *,s) +static void wrap_print(char *s) { /* ls = last space in *s, lp = last space in *p */ char *ls, *lp, *p, c, follow = 1; @@ -520,7 +520,7 @@ static void wrap_print __P1 (char *,s) #endif while (l >= cols_1 - col0 && *s) { - p = buf; m = 0; state = NORM; + p = buf; m = 0; state = NORM; lp = ls = NULL; /* this scans over the remaining part of the line adding stuff to @@ -542,7 +542,7 @@ static void wrap_print __P1 (char *,s) m++, l--; }else if (c == '\r') { ls = lp = NULL; - m = 0; + m = 0; } break; @@ -578,7 +578,7 @@ static void wrap_print __P1 (char *,s) if (ansibug) tty_printf("%s%s%s", follow ? s : "" , tty_modenorm, tty_clreoln); - else + else #endif if (follow) tty_puts(s); @@ -588,11 +588,11 @@ static void wrap_print __P1 (char *,s) * add marks to line and print. * if newline, also print a final \n */ -void smart_print __P2 (char *,line, char,newline) +void smart_print(char *line, char newline) { static ptr ptrbuf = NULL; static char *buf; - + do { if (!ptrbuf) { ptrbuf = ptrnew(PARAMLEN); @@ -602,7 +602,7 @@ void smart_print __P2 (char *,line, char,newline) if (MEM_ERROR || !ptrbuf) break; buf = ptrdata(ptrbuf); - + if (opt_wrap) wrap_print(buf); else { @@ -626,18 +626,18 @@ void smart_print __P2 (char *,line, char,newline) /* * copy first word of src into dst, and return pointer to second word of src */ -char *split_first_word __P3 (char *,dst, int,dstlen, char *,src) +char *split_first_word(char *dst, int dstlen, char *src) { char *tmp; int len; - + src = skipspace(src); if (!*src) { *dst='\0'; return src; } len = strlen(src); - + tmp = memchrs(src, len, DELIM, DELIM_LEN); if (tmp) { if (dstlen > tmp-src+1) dstlen = tmp-src+1; @@ -650,46 +650,46 @@ char *split_first_word __P3 (char *,dst, int,dstlen, char *,src) return tmp; } -static void sig_pipe_handler __P1 (int,signum) +static void sig_pipe_handler(int signum) { tty_puts("\n#broken pipe.\n"); } -static void sig_winch_handler __P1 (int,signum) +static void sig_winch_handler(int signum) { sig_pending = sig_winch_got = 1; } -static void sig_chld_handler __P1 (int,signum) +static void sig_chld_handler(int signum) { sig_pending = sig_chld_got = 1; } -static void sig_term_handler __P1 (int,signum) +static void sig_term_handler(int signum) { tty_printf("%s\n#termination signal.\n", edattrend); exit_powwow(); } -static void sig_intr_handler __P1 (int,signum) +static void sig_intr_handler(int signum) { if (confirm) { tty_printf("%s\n#interrupted.%s\n", edattrend, tty_clreoln); exit_powwow(); } - + PRINTF("%s\n#interrupted. Press again to quit%s\n", edattrend, tty_clreoln); tty_flush(); /* in case we are not in mainlupe */ confirm = 1; error = USER_BREAK; - + sig_oneshot(SIGINT, sig_intr_handler); } /* * suspend ourselves */ -void suspend_powwow __P1 (int, signum) +void suspend_powwow(int signum) { if (can_suspend) { sig_permanent(SIGTSTP, SIG_DFL); @@ -697,12 +697,12 @@ void suspend_powwow __P1 (int, signum) sig_permanent(SIGINT, SIG_IGN); tty_puts(edattrend); tty_quit(); - + if (kill(0, SIGTSTP) < 0) { errmsg("suspend powwow"); return; } - + signal_start(); tty_start(); tty_sig_winch_bottomhalf(); /* in case size changed meanwhile */ @@ -715,11 +715,11 @@ void suspend_powwow __P1 (int, signum) * GH: Sets a signal-handler permanently (like bsd signal()) * from Ilie */ -function_signal sig_permanent __P2 (int,signum, function_signal,sighandler) +function_signal sig_permanent(int signum, function_signal sighandler) { struct sigaction act; function_signal oldhandler; - + if (sigaction(signum, NULL, &act)) return SIG_ERR; oldhandler = act.sa_handler; @@ -738,11 +738,11 @@ function_signal sig_permanent __P2 (int,signum, function_signal,sighandler) * One-shot only signal. Hope it will work as intended. */ #ifdef SA_ONESHOT -function_signal sig_oneshot __P2 (int,signum, function_signal,sighandler) +function_signal sig_oneshot(int signum, function_signal sighandler) { struct sigaction act; function_signal oldhandler; - + if (sigaction(signum, NULL, &act)) return SIG_ERR; oldhandler = act.sa_handler; @@ -758,7 +758,7 @@ function_signal sig_oneshot __P2 (int,signum, function_signal,sighandler) /* * set up our signal handlers */ -void signal_start __P0 (void) +void signal_start(void) { if (sig_permanent(SIGTSTP, SIG_IGN) == SIG_DFL) { sig_permanent(SIGTSTP, suspend_powwow); @@ -776,21 +776,21 @@ void signal_start __P0 (void) sig_oneshot(SIGINT, sig_intr_handler); } -void sig_bottomhalf __P0 (void) +void sig_bottomhalf(void) { if (sig_chld_got) sig_chld_bottomhalf(); if (sig_winch_got) tty_sig_winch_bottomhalf(); - + sig_pending = sig_chld_got = sig_winch_got = 0; } -void errmsg __P1 (char *,msg) +void errmsg(char *msg) { if (!msg) msg = ""; - + clear_input_line(opt_compact); if (!opt_compact) { tty_putc('\n'); @@ -815,7 +815,7 @@ void errmsg __P1 (char *,msg) /* * print system call error message and terminate */ -void syserr __P1 (char *,msg) +void syserr(char *msg) { if (msg && *msg) { clear_input_line(opt_compact); @@ -824,13 +824,13 @@ void syserr __P1 (char *,msg) /* status(1); */ } tty_flush(); - + fprintf(stderr, "#powwow: fatal system call error:\n\t%s (%d", msg, errno); if (errno > 0) fprintf(stderr, ": %s", strerror(errno)); fprintf(stderr, ")\n"); } - + #ifdef SAVE_ON_SYSERR /* Try to do an emergency save. This can wreak havoc * if called from the wrong place, like @@ -842,15 +842,15 @@ void syserr __P1 (char *,msg) #else tty_puts("#settings NOT saved to file.\n"); #endif - + tty_quit(); exit(1); } -static void load_missing_stuff __P1 (int,n) +static void load_missing_stuff(int n) { char buf[BUFSIZE]; - + if (n < 1) { tty_add_walk_binds(); tty_puts("#default keypad settings loaded\n"); @@ -892,19 +892,19 @@ static void load_missing_stuff __P1 (int,n) * try to save the definition file even if it got * a broken or empty one. */ -int read_settings __P0 (void) +int read_settings(void) { FILE *f; char *buf, *p, *cmd, old_nice = a_nice; int failed = 1, n, savefilever = 0, left, len, limit_mem_hit = 0; varnode **first; ptr ptrbuf; - + if (!*deffile) { PRINTF("#warning: no save-file defined!\n"); return 0; } - + f = fopen(deffile, "r"); if (!f) { PRINTF("#error: cannot open file \"%s\": %s\n", deffile, strerror(errno)); @@ -919,9 +919,9 @@ int read_settings __P0 (void) buf = ptrdata(ptrbuf); left = ptrmax(ptrbuf); len = 0; - + opt_info = a_nice = 0; - + for (n = 0; n < MAX_HASH; n++) { while (aliases[n]) delete_aliasnode(&aliases[n]); @@ -941,31 +941,31 @@ int read_settings __P0 (void) while (*first) { if (is_permanent_variable(*first)) first = &(*first)->next; - else + else delete_varnode(first, 1); } } - + for (n = 0; n < NUMVAR; n++) { *var[n].num = 0; ptrdel(*var[n].str); *var[n].str = NULL; } - + while (left > 0 && fgets(buf+len, left+1, f)) { /* WARNING: accessing private field ->len */ len += n = strlen(buf+len); ptrbuf->len = len; left -= n; - /* Clear all \n prefixed with a literal backslash '\\' */ + /* Clear all \n prefixed with a literal backslash '\\' */ while ((cmd = strstr(buf, "\\\n"))) { cmd[ 0 ] = ' '; cmd[ 1 ] = ' '; } cmd = strchr(buf, '\n'); - + if (!cmd) { if (feof(f)) { PRINTF("#error: missing newline at end of file \"%s\"\n", deffile); @@ -988,11 +988,11 @@ int read_settings __P0 (void) cmd = buf; left += len; len = 0; - + cmd = skipspace(cmd); if (!*cmd) continue; - + error = 0; if (*(p = first_regular(cmd, ' '))) { *p++ = '\0'; @@ -1004,7 +1004,7 @@ int read_settings __P0 (void) } parse_user_input(cmd, 1); } - + if (error) failed = -1; else if (ferror(f) && !feof(f)) { @@ -1019,19 +1019,19 @@ int read_settings __P0 (void) PRINTF("\n#warning: config file is from an older version\n"); load_missing_stuff(savefilever); } - + fclose(f); a_nice = old_nice; - + if (ptrbuf) ptrdel(ptrbuf); - + return failed; } static char tmpname[BUFSIZE]; -static void fail_msg __P0 (void) +static void fail_msg(void) { PRINTF("#error: cannot write to temporary file \"%s\": %s\n", tmpname, strerror(errno)); } @@ -1042,7 +1042,7 @@ static void fail_msg __P0 (void) * NEVER call syserr() from here or powwow will * enter an infinite loop! */ -int save_settings __P0 (void) +int save_settings(void) { FILE *f; int l; @@ -1060,7 +1060,7 @@ int save_settings __P0 (void) return -1; } error = 0; - + if (!*deffile) { PRINTF("#warning: no save-file defined!\n"); return -1; @@ -1076,20 +1076,20 @@ int save_settings __P0 (void) l--; if (l) l++; - + sprintf(tmpname + l, "tmpsav%d%d", getpid(), rand() >> 8); if (!(f = fopen(tmpname, "w"))) { fail_msg(); return -1; } - + pp = ptrnew(PARAMLEN); if (MEM_ERROR) failed = -1; failed = fprintf(f, "#savefile-version %d\n", SAVEFILEVER); if (failed > 0 && *hostname) failed = fprintf(f, "#host %s %d\n", hostname, portnumber); - + if (failed > 0) { if (delim_mode == DELIM_CUSTOM) { pp = ptrmescape(pp, DELIM, strlen(DELIM), 0); @@ -1105,7 +1105,7 @@ int save_settings __P0 (void) if (failed > 0 && *initstr) failed = fprintf(f, "#init =%s\n", initstr); - + if (failed > 0 && limit_mem) failed = fprintf(f, "#setvar mem=%d\n", limit_mem); @@ -1119,18 +1119,18 @@ int save_settings __P0 (void) if (MEM_ERROR) { failed = -1; break; } failed = fprintf(f, "#alias %s%s%s=%s\n", ptrdata(pp), alp -> group == NULL ? "" : group_delim, - alp -> group == NULL ? "" : alp -> group, + alp -> group == NULL ? "" : alp -> group, alp->subst); } reverse_sortedlist((sortednode **)&sortedaliases); } - + for (acp = actions; acp && failed > 0; acp = acp->next) { failed = fprintf(f, "#action %c%c%s%s%s %s=%s\n", action_chars[acp->type], acp->active ? '+' : '-', - acp->label, + acp->label, acp -> group == NULL ? "" : group_delim, - acp -> group == NULL ? "" : acp -> group, + acp -> group == NULL ? "" : acp -> group, acp->pattern, acp->command); } @@ -1139,7 +1139,7 @@ int save_settings __P0 (void) action_chars[ptp->type], ptp->active ? '+' : '-', ptp->label, ptp->pattern, ptp->command); } - + for (mp = markers; mp && failed > 0; mp = mp->next) { pp = ptrmescape(pp, mp->pattern, strlen(mp->pattern), 0); if (MEM_ERROR) { failed = -1; break; } @@ -1147,7 +1147,7 @@ int save_settings __P0 (void) ptrdata(pp), attr_name(mp->attrcode)); } /* save value of global variables */ - + for (flag = 0, i=0; i<NUMVAR && failed > 0; i++) { if (var[i].num && *var[i].num) { /* first check was missing!!! */ failed = fprintf(f, "%s@%d = %ld", flag ? ", " : "#(", @@ -1156,7 +1156,7 @@ int save_settings __P0 (void) } } if (failed > 0 && flag) failed = fprintf(f, ")\n"); - + for (i=0; i<NUMVAR && failed > 0; i++) { if (var[i].str && *var[i].str && ptrlen(*var[i].str)) { pp = ptrescape(pp, *var[i].str, 0); @@ -1164,7 +1164,7 @@ int save_settings __P0 (void) failed = fprintf(f, "#($%d = \"%s\")\n", i-NUMVAR, ptrdata(pp)); } } - + if (failed > 0) { reverse_sortedlist((sortednode **)&sortednamed_vars[0]); for (flag = 0, vp = sortednamed_vars[0]; vp && failed > 0; vp = vp->snext) { @@ -1177,7 +1177,7 @@ int save_settings __P0 (void) reverse_sortedlist((sortednode **)&sortednamed_vars[0]); } if (failed > 0 && flag) failed = fprintf(f, ")\n"); - + if (failed > 0) { reverse_sortedlist((sortednode **)&sortednamed_vars[1]); for (vp = sortednamed_vars[1]; vp && failed > 0; vp = vp->snext) { @@ -1189,7 +1189,7 @@ int save_settings __P0 (void) } reverse_sortedlist((sortednode **)&sortednamed_vars[1]); } - + /* GH: fixed the history and word completions saves */ if (failed > 0 && opt_history) { l = (curline + 1) % MAX_HIST; @@ -1203,7 +1203,7 @@ int save_settings __P0 (void) l = 0; } } - + if (failed > 0 && opt_words) { int cl = 4, len; l = wordindex; @@ -1226,10 +1226,10 @@ int save_settings __P0 (void) if (failed > 0 && flag) failed = fprintf(f, "\n"); } - + for (kp = keydefs; kp && failed > 0; kp = kp->next) { if (kp->funct==key_run_command) - failed = fprintf(f, "#bind %s %s=%s\n", kp->name, + failed = fprintf(f, "#bind %s %s=%s\n", kp->name, seq_name(kp->sequence, kp->seqlen), kp->call_data); else failed = fprintf(f, "#bind %s %s=%s%s%s\n", kp->name, @@ -1238,12 +1238,12 @@ int save_settings __P0 (void) kp->call_data ? " " : "", kp->call_data ? kp->call_data : ""); } - + if (failed > 0) failed = print_all_options(f); fclose(f); - + if (error) errmsg("malloc"); else if (failed <= 0) @@ -1256,17 +1256,17 @@ int save_settings __P0 (void) } else failed = 1; } - + if (pp) ptrdel(pp); - + return failed > 0 ? 1 : -1; } /* * update "now" to current time */ -void update_now __P0 (void) +void update_now(void) { if (!now_updated) { gettimeofday(&now, NULL); @@ -1277,7 +1277,7 @@ void update_now __P0 (void) /* * terminate powwow as cleanly as possible */ -void exit_powwow __P0 (void) +void exit_powwow(void) { log_flush(); if (capturefile) fclose(capturefile); @@ -3,46 +3,46 @@ #ifndef _UTILS_H_ #define _UTILS_H_ -char *my_strdup __P ((char *s)); -char *my_strncpy __P ((char *dst, char *src, int len)); -int printstrlen __P ((char *s)); - -void ptrunescape __P ((ptr p)); -int memunescape __P ((char *p, int lenp)); - -ptr ptrescape __P ((ptr dst, ptr src, int append)); -ptr ptrmescape __P ((ptr dst, char *src, int srclen, int append)); - -ptr ptraddmarks __P ((ptr dst, ptr line)); -ptr ptrmaddmarks __P ((ptr dst, char *line, int len)); - -void put_marks __P ((char *dst, char *line)); -void smart_print __P ((char *line, char newline)); -char *split_first_word __P ((char *dst, int dstlen, char *src)); -char *first_valid __P ((char *p, char ch)); -char *first_regular __P ((char *p, char c)); -void unescape __P ((char *s)); -void escape_specials __P ((char *str, char *p)); -char *skipspace __P ((char *p)); -void exit_powwow __P ((void)); -void suspend_powwow __P ((int signum)); -function_signal sig_permanent __P ((int signum, function_signal sighandler)); +char *my_strdup(char *s); +char *my_strncpy(char *dst, char *src, int len); +int printstrlen(char *s); + +void ptrunescape(ptr p); +int memunescape(char *p, int lenp); + +ptr ptrescape(ptr dst, ptr src, int append); +ptr ptrmescape(ptr dst, char *src, int srclen, int append); + +ptr ptraddmarks(ptr dst, ptr line); +ptr ptrmaddmarks(ptr dst, char *line, int len); + +void put_marks(char *dst, char *line); +void smart_print(char *line, char newline); +char *split_first_word(char *dst, int dstlen, char *src); +char *first_valid(char *p, char ch); +char *first_regular(char *p, char c); +void unescape(char *s); +void escape_specials(char *str, char *p); +char *skipspace(char *p); +void exit_powwow(void); +void suspend_powwow(int signum); +function_signal sig_permanent(int signum, function_signal sighandler); #ifdef SA_ONESHOT - function_signal sig_oneshot __P ((int signum, function_signal sighandler)); + function_signal sig_oneshot(int signum, function_signal sighandler); #else # define sig_oneshot signal #endif -void signal_start __P ((void)); -void sig_bottomhalf __P ((void)); -void errmsg __P ((char *msg)); -void syserr __P ((char *msg)); -int read_settings __P ((void)); -int save_settings __P ((void)); -void movie_write __P ((char *str, int newline)); +void signal_start(void); +void sig_bottomhalf(void); +void errmsg(char *msg); +void syserr(char *msg); +int read_settings(void); +int save_settings(void); +void movie_write(char *str, int newline); -void update_now __P ((void)); +void update_now(void); #endif /* _UTILS_H_ */ |