From 8ccd48fd24ee193c02dd13d65f4bd4981293ddb1 Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Tue, 13 Nov 2001 14:08:35 +0000 Subject: Try to use const whenever appropriate to make it clear that a string should not be modified. Nuke some trailing spaces, thanks to emacs. Reduce the scope of functions with static. GNU ident style for switch() promote a empty line after the break; * comsat/action.c (expand_escape): size and lncount could have been use uninitialized. (expand_escape): const char *cr. (expand_line): cr == "\n\r" make it const. variable i and size unneeded. variable c initialize to zero. (expand_line): obstack_1grow() pass *p instead of c. (defaul_action): const char*. (run_user_action): fprintf () missing argument. (open_rc): const char *filename. * comsat/comsat.c (username): const char *username. (mailbox_path): const prototype. (change_user): const prototype. (notify_user): const prototype. body and header unneeded variables. (find_user): const prototype. * comsat/comsat.h: Prototype updates. --- ChangeLog | 29 ++++++++++++++++++++++- comsat/action.c | 73 ++++++++++++++++++++++++++++++--------------------------- comsat/cfg.c | 8 +++---- comsat/comsat.c | 40 +++++++++++++++++-------------- comsat/comsat.h | 6 ++--- 5 files changed, 97 insertions(+), 59 deletions(-) diff --git a/ChangeLog b/ChangeLog index 00362096d..a22afb0c3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2001-11-13 Alain Magloire + + Try to use const whenever appropriate to make it clear + that a string should not be modified. Nuke some + trailing spaces, thanks to emacs. Reduce the scope + of functions with static. GNU ident style for + switch() promote a empty line after the break; + + + * comsat/action.c (expand_escape): size and lncount + could have been use uninitialized. + (expand_escape): const char *cr. + (expand_line): cr == "\n\r" make it const. + variable i and size unneeded. + variable c initialize to zero. + (expand_line): obstack_1grow() pass *p instead of c. + (defaul_action): const char*. + (run_user_action): fprintf () missing argument. + (open_rc): const char *filename. + * comsat/comsat.c (username): const char *username. + (mailbox_path): const prototype. + (change_user): const prototype. + (notify_user): const prototype. + body and header unneeded variables. + (find_user): const prototype. + * comsat/comsat.h: Prototype updates. + 2001-11-13 Sergey Poznyakoff * lib/daemon.c: Use of errx() is a bsd-ism. @@ -13,7 +40,7 @@ * doc/texinfo/.cvsignore: Updated * Makefile.am: Enabled comsat directory. - + 2001-11-12 Sergey Poznyakoff * examples/comsat.conf: (new) A sample configuration file diff --git a/comsat/action.c b/comsat/action.c index bb5bcd34c..fa674d8cd 100644 --- a/comsat/action.c +++ b/comsat/action.c @@ -27,7 +27,7 @@ beep -- Produce audible signal echo STRING -- Output STRING to the user's tty exec PROG ARGS... -- Execute given program (absolute pathname - required) + required) Following metacharacters are accepted in strings: @@ -38,13 +38,13 @@ number of characters and line in the expansion. When omitted, they default to 400, 5. */ -int +static int act_getline (FILE *fp, char **sptr, size_t *size) { char buf[256]; int cont = 1; size_t used = 0; - + while (cont && fgets (buf, sizeof buf, fp)) { int len = strlen (buf); @@ -71,22 +71,22 @@ act_getline (FILE *fp, char **sptr, size_t *size) } memcpy (*sptr + used, buf, len); used += len; - } + } if (*sptr) (*sptr)[used] = 0; - + return used; } /* Convert second character of a backslash sequence to its ASCII value: */ -int +static int backslash(int c) { static char transtab[] = "a\ab\bf\fn\nr\rt\t"; char *p; - + for (p = transtab; *p; p += 2) { if (*p == c) @@ -95,8 +95,8 @@ backslash(int c) return c; } -int -expand_escape (char **pp, message_t msg, char *cr, struct obstack *stk) +static int +expand_escape (char **pp, message_t msg, const char *cr, struct obstack *stk) { char *p = *pp; char *start, *sval, *namep; @@ -105,8 +105,8 @@ expand_escape (char **pp, message_t msg, char *cr, struct obstack *stk) body_t body; stream_t stream; int rc = 1; - size_t size, lncount; - + size_t size = 0, lncount = 0; + switch (*++p) /* skip past $ */ { case 'u': @@ -115,12 +115,14 @@ expand_escape (char **pp, message_t msg, char *cr, struct obstack *stk) *pp = p; rc = 0; break; + case 'h': len = strlen (hostname); obstack_grow (stk, hostname, len); *pp = p; rc = 0; break; + case 'H': /* Header field */ if (*++p != '{') @@ -145,6 +147,7 @@ expand_escape (char **pp, message_t msg, char *cr, struct obstack *stk) *pp = p; rc = 0; break; + case 'B': /* Message body */ if (*++p == '(') @@ -164,7 +167,7 @@ expand_escape (char **pp, message_t msg, char *cr, struct obstack *stk) { size_t nread; char *buf = malloc (size+1); - + if (!buf) break; if (stream_read (stream, buf, size, 0, &nread) == 0) @@ -193,14 +196,13 @@ expand_escape (char **pp, message_t msg, char *cr, struct obstack *stk) return rc; } -char * -expand_line (char *str, char *cr, message_t msg) +static char * +expand_line (const char *str, const char *cr, message_t msg) { - char *p; - int i, c, len; - size_t size; + const char *p; + int c = 0, len; struct obstack stk; - + if (!*str) return NULL; obstack_init (&stk); @@ -212,25 +214,30 @@ expand_line (char *str, char *cr, message_t msg) len = strlen (cr); obstack_grow (&stk, cr, len); break; + case '\\': p++; switch (*p) { case 0: - obstack_1grow (&stk, c); + obstack_1grow (&stk, *p); break; + case 'n': len = strlen (cr); obstack_grow (&stk, cr, len); break; + default: c = backslash (*p); obstack_1grow (&stk, c); } break; + case '$': if (expand_escape (&p, msg, cr, &stk) == 0) break; + /*FALLTHRU*/ default: obstack_1grow (&stk, *p); @@ -239,10 +246,10 @@ expand_line (char *str, char *cr, message_t msg) obstack_1grow (&stk, 0); str = strdup (obstack_finish (&stk)); obstack_free (&stk, NULL); - return str; + return (char *)str; } -char *default_action = +const char *default_action = "Mail to \a$u@$h\a\n" "---\n" "From: $H{from}\n" @@ -253,18 +260,18 @@ char *default_action = /* Take care to clear eighth bit, so we won't upset some stupid terminals */ #define LB(c) ((c)&0x7f) - -void + +static void action_beep (FILE *tty) { fprintf (tty, "\a\a"); } -void +static void action_echo (FILE *tty, char *str) { char *p; - + if (!str) return; for (p = str; *p; p++) @@ -272,7 +279,7 @@ action_echo (FILE *tty, char *str) fprintf (tty, "%s", str); } -void +static void action_exec (FILE *tty, int line, int argc, char **argv) { pid_t pid; @@ -319,8 +326,8 @@ action_exec (FILE *tty, int line, int argc, char **argv) } } -FILE * -open_rc (char *filename, FILE *tty) +static FILE * +open_rc (const char *filename, FILE *tty) { struct stat stb; struct passwd *pw = getpwnam (username); @@ -348,7 +355,7 @@ open_rc (char *filename, FILE *tty) } void -run_user_action (FILE *tty, char *cr, message_t msg) +run_user_action (FILE *tty, const char *cr, message_t msg) { FILE *fp; int nact = 0; @@ -359,7 +366,7 @@ run_user_action (FILE *tty, char *cr, message_t msg) if (fp) { int line = 0; - + while (act_getline (fp, &stmt, &size)) { char *str; @@ -396,7 +403,7 @@ run_user_action (FILE *tty, char *cr, message_t msg) } else { - fprintf (tty, ".biffrc:%d: unknown keyword\r\n"); + fprintf (tty, ".biffrc:%d: unknown keyword\r\n", line); syslog (LOG_ERR, "%s:.biffrc:%d: unknown keyword %s", username, line, argv[0]); break; @@ -404,12 +411,10 @@ run_user_action (FILE *tty, char *cr, message_t msg) } fclose (fp); } - + if (nact == 0) { char *str = expand_line (default_action, cr, msg); action_echo (tty, str); } } - - diff --git a/comsat/cfg.c b/comsat/cfg.c index a1fcdeeaa..a05535877 100644 --- a/comsat/cfg.c +++ b/comsat/cfg.c @@ -124,7 +124,7 @@ netdef_parse (char *str) } void -read_config (char *config_file) +read_config (const char *config_file) { FILE *fp; int line; @@ -217,9 +217,9 @@ read_config (char *config_file) tail->next = cur; tail = cur; } - + argcv_free (argc, argv); - + acl = malloc (sizeof *acl); if (!acl) { @@ -268,7 +268,7 @@ acl_free (acl_t *acl) } /*NOTE: currently unused. */ -void +static void discard_acl (acl_t *mark) { if (mark) diff --git a/comsat/comsat.c b/comsat/comsat.c index 1a57e27bc..8566ecd5d 100644 --- a/comsat/comsat.c +++ b/comsat/comsat.c @@ -76,17 +76,17 @@ int port = 512; /* Default biff port */ int timeout = 0; int maxlines = 5; char hostname[MAXHOSTNAMELEN]; -char *username; +const char *username; static void comsat_init (void); static void comsat_daemon_init (void); -static void comsat_daemon (int port); +static void comsat_daemon (int _port); static int comsat_main (int fd); -static void notify_user (char *user, char *device, char *path, off_t offset); -static int find_user (char *name, char *tty); +static void notify_user (const char *user, const char *device, const char *path, off_t offset); +static int find_user (const char *name, char *tty); static void help (void); -char *mailbox_path (const char *user); -void change_user (char *user); +static char *mailbox_path (const char *user); +static void change_user (const char *user); static int xargc; static char **xargv; @@ -105,25 +105,32 @@ main(int argc, char **argv) case 'c': config_file = optarg; break; + case 'd': mode = MODE_DAEMON; break; + case 'h': help (); /*NOTREACHED*/ + case 'i': mode = MODE_INETD; break; + case 'p': port = strtoul (optarg, NULL, 10); break; + case 't': timeout = strtoul (optarg, NULL, 10); break; + case 'v': printf (IMPL " ("PACKAGE " " VERSION ")\n"); exit (EXIT_SUCCESS); break; + default: exit (EXIT_FAILURE); } @@ -162,7 +169,7 @@ main(int argc, char **argv) return c != 0; } -RETSIGTYPE +static RETSIGTYPE sig_hup (int sig) { syslog (LOG_NOTICE, "restarting"); @@ -386,7 +393,7 @@ comsat_main (int fd) exit (0); } -char * +static const char * get_newline_str (FILE *fp) { #if defined(OPOST) && defined(ONLCR) @@ -404,15 +411,14 @@ get_newline_str (FILE *fp) /* NOTE: Do not bother to free allocated memory, as the program exits immediately after executing this */ -void -notify_user (char *user, char *device, char *path, off_t offset) +static void +notify_user (const char *user, const char *device, const char *path, off_t offset) { FILE *fp; - char *cr, *p, *blurb; + const char *cr; + char *blurb; mailbox_t mbox = NULL, tmp = NULL; message_t msg; - body_t body = NULL; - header_t header = NULL; stream_t stream = NULL; int status; size_t size, count, n; @@ -491,8 +497,8 @@ notify_user (char *user, char *device, char *path, off_t offset) } /* Search utmp for the local user */ -int -find_user (char *name, char *tty) +static int +find_user (const char *name, char *tty) { UTMP *uptr; int status; @@ -520,7 +526,7 @@ find_user (char *name, char *tty) ftty[sizeof (ftty) - 1] = 0; mu_normalize_path (ftty, "/"); - if (strncmp (ftty, PATH_TTY_PFX, strlen(PATH_TTY_PFX))) + if (strncmp (ftty, PATH_TTY_PFX, strlen (PATH_TTY_PFX))) { /* An attempt to break security... */ syslog (LOG_ALERT, "bad line name in utmp record: %s", ftty); @@ -557,7 +563,7 @@ find_user (char *name, char *tty) } void -change_user (char *user) +change_user (const char *user) { struct passwd *pw; diff --git a/comsat/comsat.h b/comsat/comsat.h index e74981bf1..1c1f8a3b7 100644 --- a/comsat/comsat.h +++ b/comsat/comsat.h @@ -59,9 +59,9 @@ extern time_t request_control_interval; extern time_t overflow_control_interval; extern time_t overflow_delay_time; extern int maxlines; -extern char *username; +extern const char *username; extern char hostname[]; -extern void read_config (char *config_file); +extern void read_config (const char *config_file); int acl_match (struct sockaddr_in *sa_in); -void run_user_action (FILE *tty, char *cr, message_t msg); +void run_user_action (FILE *tty, const char *cr, message_t msg); -- cgit v1.2.1