diff options
author | gshapiro <gshapiro@FreeBSD.org> | 2002-02-17 21:56:45 +0000 |
---|---|---|
committer | gshapiro <gshapiro@FreeBSD.org> | 2002-02-17 21:56:45 +0000 |
commit | 8449595fe97f4474b9b9a7e4edee1ef35dcff393 (patch) | |
tree | e7a33b132264d449a512ddf4a8685df097669c1d /contrib/sendmail/vacation/vacation.c | |
parent | 289b381b31415647269c7520d881017e2dcb27f1 (diff) | |
download | FreeBSD-src-8449595fe97f4474b9b9a7e4edee1ef35dcff393.zip FreeBSD-src-8449595fe97f4474b9b9a7e4edee1ef35dcff393.tar.gz |
Import sendmail 8.12.2
Diffstat (limited to 'contrib/sendmail/vacation/vacation.c')
-rw-r--r-- | contrib/sendmail/vacation/vacation.c | 461 |
1 files changed, 203 insertions, 258 deletions
diff --git a/contrib/sendmail/vacation/vacation.c b/contrib/sendmail/vacation/vacation.c index 42ae04f..ec69541 100644 --- a/contrib/sendmail/vacation/vacation.c +++ b/contrib/sendmail/vacation/vacation.c @@ -11,18 +11,16 @@ * */ -#ifndef lint -static char copyright[] = +#include <sm/gen.h> + +SM_IDSTR(copyright, "@(#) Copyright (c) 1999-2001 Sendmail, Inc. and its suppliers.\n\ All rights reserved.\n\ Copyright (c) 1983, 1987, 1993\n\ The Regents of the University of California. All rights reserved.\n\ - Copyright (c) 1983 Eric P. Allman. All rights reserved.\n"; -#endif /* ! lint */ + Copyright (c) 1983 Eric P. Allman. All rights reserved.\n") -#ifndef lint -static char id[] = "@(#)$Id: vacation.c,v 8.68.4.21 2001/05/07 22:06:41 gshapiro Exp $"; -#endif /* ! lint */ +SM_IDSTR(id, "@(#)$Id: vacation.c,v 8.131 2001/12/12 00:02:42 gshapiro Exp $") #include <ctype.h> @@ -33,27 +31,17 @@ static char id[] = "@(#)$Id: vacation.c,v 8.68.4.21 2001/05/07 22:06:41 gshapiro #ifdef EX_OK # undef EX_OK /* unistd.h may have another use for this */ #endif /* EX_OK */ -#include <sysexits.h> +#include <sm/sysexits.h> +#include <sm/cf.h> +#include <sm/mbdb.h> #include "sendmail/sendmail.h" +#include <sendmail/pathnames.h> #include "libsmdb/smdb.h" -#if defined(__hpux) && !defined(HPUX11) -# undef syslog /* Undo hard_syslog conf.h change */ -#endif /* defined(__hpux) && !defined(HPUX11) */ - -#ifndef _PATH_SENDMAIL -# define _PATH_SENDMAIL "/usr/lib/sendmail" -#endif /* ! _PATH_SENDMAIL */ - #define ONLY_ONCE ((time_t) 0) /* send at most one reply */ #define INTERVAL_UNDEF ((time_t) (-1)) /* no value given */ -#ifndef TRUE -# define TRUE 1 -# define FALSE 0 -#endif /* ! TRUE */ - uid_t RealUid; gid_t RealGid; char *RealUserName; @@ -61,7 +49,7 @@ uid_t RunAsUid; uid_t RunAsGid; char *RunAsUserName; int Verbose = 2; -bool DontInitGroups = FALSE; +bool DontInitGroups = false; uid_t TrustedUid = 0; BITMAP256 DontBlameSendmail; @@ -79,15 +67,6 @@ BITMAP256 DontBlameSendmail; #define SECSPERDAY (60 * 60 * 24) #define DAYSPERWEEK 7 -#ifndef __P -# ifdef __STDC__ -# define __P(protos) protos -# else /* __STDC__ */ -# define __P(protos) () -# define const -# endif /* __STDC__ */ -#endif /* ! __P */ - typedef struct alias { char *name; @@ -100,33 +79,48 @@ SMDB_DATABASE *Db; char From[MAXLINE]; -#if _FFR_DEBUG -void (*msglog)(int, const char *, ...) = &syslog; -static void debuglog __P((int, const char *, ...)); -#else /* _FFR_DEBUG */ -# define msglog syslog -#endif /* _FFR_DEBUG */ - +#if defined(__hpux) || defined(__osf__) +# ifndef SM_CONF_SYSLOG_INT +# define SM_CONF_SYSLOG_INT 1 +# endif /* SM_CONF_SYSLOG_INT */ +#endif /* defined(__hpux) || defined(__osf__) */ + +#if SM_CONF_SYSLOG_INT +# define SYSLOG_RET_T int +# define SYSLOG_RET return 0 +#else /* SM_CONF_SYSLOG_INT */ +# define SYSLOG_RET_T void +# define SYSLOG_RET +#endif /* SM_CONF_SYSLOG_INT */ + +typedef SYSLOG_RET_T SYSLOG_T __P((int, const char *, ...)); +SYSLOG_T *msglog = syslog; +static SYSLOG_RET_T debuglog __P((int, const char *, ...)); static void eatmsg __P((void)); +static void listdb __P((void)); /* exit after reading input */ -#define EXITIT(excode) { \ - eatmsg(); \ - return excode; \ - } +#define EXITIT(excode) \ +{ \ + eatmsg(); \ + return excode; \ +} + +#define EXITM(excode) \ +{ \ + if (!iflag && !lflag) \ + eatmsg(); \ + exit(excode); \ +} int main(argc, argv) int argc; char **argv; { - bool iflag, emptysender, exclude; -#if _FFR_BLACKBOX - bool runasuser = FALSE; -#endif /* _FFR_BLACKBOX */ -#if _FFR_LISTDB - bool lflag = FALSE; -#endif /* _FFR_LISTDB */ + bool iflag, exclude; + bool runasuser = false; + bool lflag = false; int mfail = 0, ufail = 0; int ch; int result; @@ -136,7 +130,9 @@ main(argc, argv) ALIAS *cur; char *dbfilename = NULL; char *msgfilename = NULL; + char *cfpath = NULL; char *name; + char *returnaddr = NULL; SMDB_USER_INFO user_info; static char rnamebuf[MAXNAME]; extern int optind, opterr; @@ -146,21 +142,8 @@ main(argc, argv) extern int readheaders __P((void)); extern bool recent __P((void)); extern void setreply __P((char *, time_t)); - extern void sendmessage __P((char *, char *, bool)); - extern void xclude __P((FILE *)); -#if _FFR_LISTDB -#define EXITM(excode) { \ - if (!iflag && !lflag) \ - eatmsg(); \ - exit(excode); \ - } -#else /* _FFR_LISTDB */ -#define EXITM(excode) { \ - if (!iflag) \ - eatmsg(); \ - exit(excode); \ - } -#endif /* _FFR_LISTDB */ + extern void sendmessage __P((char *, char *, char *)); + extern void xclude __P((SM_FILE_T *)); /* Vars needed to link with smutil */ clrbitmap(DontBlameSendmail); @@ -171,11 +154,11 @@ main(argc, argv) { if (strlen(pw->pw_name) > MAXNAME - 1) pw->pw_name[MAXNAME] = '\0'; - snprintf(rnamebuf, sizeof rnamebuf, "%s", pw->pw_name); + sm_snprintf(rnamebuf, sizeof rnamebuf, "%s", pw->pw_name); } else - snprintf(rnamebuf, sizeof rnamebuf, - "Unknown UID %d", (int) RealUid); + sm_snprintf(rnamebuf, sizeof rnamebuf, + "Unknown UID %d", (int) RealUid); RunAsUserName = RealUserName = rnamebuf; # ifdef LOG_MAIL @@ -185,13 +168,17 @@ main(argc, argv) # endif /* LOG_MAIL */ opterr = 0; - iflag = FALSE; - emptysender = FALSE; - exclude = FALSE; + iflag = false; + exclude = false; interval = INTERVAL_UNDEF; *From = '\0'; -#define OPTIONS "a:df:Iilm:r:s:t:Uxz" + +#if _FFR_RETURN_ADDR +# define OPTIONS "a:C:df:Iilm:R:r:s:t:Uxz" +#else /* _FFR_RETURN_ADDR */ +# define OPTIONS "a:C:df:Iilm:r:s:t:Uxz" +#endif /* _FFR_RETURN_ADDR */ while (mfail == 0 && ufail == 0 && (ch = getopt(argc, argv, OPTIONS)) != -1) @@ -199,7 +186,7 @@ main(argc, argv) switch((char)ch) { case 'a': /* alias */ - cur = (ALIAS *)malloc((u_int)sizeof(ALIAS)); + cur = (ALIAS *) malloc((unsigned int) sizeof(ALIAS)); if (cur == NULL) { mfail++; @@ -210,11 +197,13 @@ main(argc, argv) Names = cur; break; -#if _FFR_DEBUG + case 'C': + cfpath = optarg; + break; + case 'd': /* debug mode */ - msglog = &debuglog; + msglog = debuglog; break; -#endif /* _FFR_DEBUG */ case 'f': /* alternate database */ dbfilename = optarg; @@ -222,19 +211,23 @@ main(argc, argv) case 'I': /* backward compatible */ case 'i': /* init the database */ - iflag = TRUE; + iflag = true; break; -#if _FFR_LISTDB case 'l': - lflag = TRUE; /* list the database */ + lflag = true; /* list the database */ break; -#endif /* _FFR_LISTDB */ case 'm': /* alternate message file */ msgfilename = optarg; break; +#if _FFR_RETURN_ADDR + case 'R': + returnaddr = optarg; + break; +#endif /* _FFR_RETURN_ADDR */ + case 'r': if (isascii(*optarg) && isdigit(*optarg)) { @@ -247,24 +240,22 @@ main(argc, argv) break; case 's': /* alternate sender name */ - (void) strlcpy(From, optarg, sizeof From); + (void) sm_strlcpy(From, optarg, sizeof From); break; case 't': /* SunOS: -t1d (default expire) */ break; -#if _FFR_BLACKBOX case 'U': /* run as single user mode */ - runasuser = TRUE; + runasuser = true; break; -#endif /* _FFR_BLACKBOX */ case 'x': - exclude = TRUE; + exclude = true; break; case 'z': - emptysender = TRUE; + returnaddr = "<>"; break; case '?': @@ -287,11 +278,7 @@ main(argc, argv) if (argc != 1) { - if (!iflag && -#if _FFR_LISTDB - !lflag && -#endif /* _FFR_LISTDB */ - !exclude) + if (!iflag && !lflag && !exclude) usage(); if ((pw = getpwuid(getuid())) == NULL) { @@ -302,16 +289,16 @@ main(argc, argv) name = pw->pw_name; user_info.smdbu_id = pw->pw_uid; user_info.smdbu_group_id = pw->pw_gid; - (void) strlcpy(user_info.smdbu_name, pw->pw_name, - SMDB_MAX_USER_NAME_LEN); + (void) sm_strlcpy(user_info.smdbu_name, pw->pw_name, + SMDB_MAX_USER_NAME_LEN); if (chdir(pw->pw_dir) != 0) { - msglog(LOG_NOTICE, "vacation: no such directory %s.\n", + msglog(LOG_NOTICE, + "vacation: no such directory %s.\n", pw->pw_dir); EXITM(EX_NOINPUT); } } -#if _FFR_BLACKBOX else if (runasuser) { name = *argv; @@ -323,27 +310,51 @@ main(argc, argv) } user_info.smdbu_id = pw->pw_uid; user_info.smdbu_group_id = pw->pw_gid; - (void) strlcpy(user_info.smdbu_name, pw->pw_name, + (void) sm_strlcpy(user_info.smdbu_name, pw->pw_name, SMDB_MAX_USER_NAME_LEN); } -#endif /* _FFR_BLACKBOX */ - else if ((pw = getpwnam(*argv)) == NULL) - { - msglog(LOG_ERR, "vacation: no such user %s.\n", *argv); - EXITM(EX_NOUSER); - } else { - name = pw->pw_name; - if (chdir(pw->pw_dir) != 0) + int err; + SM_CF_OPT_T mbdbname; + SM_MBDB_T user; + + cfpath = getcfname(0, 0, SM_GET_SENDMAIL_CF, NULL); + mbdbname.opt_name = "MailboxDatabase"; + mbdbname.opt_val = "pw"; + (void) sm_cf_getopt(cfpath, 1, &mbdbname); + err = sm_mbdb_initialize(mbdbname.opt_val); + if (err != EX_OK) { - msglog(LOG_NOTICE, "vacation: no such directory %s.\n", - pw->pw_dir); + msglog(LOG_ERR, + "vacation: can't open mailbox database: %s.\n", + sm_strexit(err)); + EXITM(err); + } + err = sm_mbdb_lookup(*argv, &user); + if (err == EX_NOUSER) + { + msglog(LOG_ERR, "vacation: no such user %s.\n", *argv); + EXITM(EX_NOUSER); + } + if (err != EX_OK) + { + msglog(LOG_ERR, + "vacation: can't read mailbox database: %s.\n", + sm_strexit(err)); + EXITM(err); + } + name = user.mbdb_name; + if (chdir(user.mbdb_homedir) != 0) + { + msglog(LOG_NOTICE, + "vacation: no such directory %s.\n", + user.mbdb_homedir); EXITM(EX_NOINPUT); } - user_info.smdbu_id = pw->pw_uid; - user_info.smdbu_group_id = pw->pw_gid; - (void) strlcpy(user_info.smdbu_name, pw->pw_name, + user_info.smdbu_id = user.mbdb_uid; + user_info.smdbu_group_id = user.mbdb_gid; + (void) sm_strlcpy(user_info.smdbu_name, user.mbdb_name, SMDB_MAX_USER_NAME_LEN); } @@ -353,14 +364,12 @@ main(argc, argv) msgfilename = VMSG; sff = SFF_CREAT; -#if _FFR_BLACKBOX if (getegid() != getgid()) { - /* Allow a set-group-id vacation binary */ + /* Allow a set-group-ID vacation binary */ RunAsGid = user_info.smdbu_group_id = getegid(); - sff |= SFF_NOPATHCHECK|SFF_OPENASROOT; + sff |= SFF_OPENASROOT; } -#endif /* _FFR_BLACKBOX */ result = smdb_open_database(&Db, dbfilename, O_CREAT|O_RDWR | (iflag ? O_TRUNC : 0), @@ -369,20 +378,16 @@ main(argc, argv) if (result != SMDBE_OK) { msglog(LOG_NOTICE, "vacation: %s: %s\n", dbfilename, - errstring(result)); + sm_errstring(result)); EXITM(EX_DATAERR); } -#if _FFR_LISTDB if (lflag) { - static void listdb __P((void)); - listdb(); (void) Db->smdb_close(Db); exit(EX_OK); } -#endif /* _FFR_LISTDB */ if (interval != INTERVAL_UNDEF) setinterval(interval); @@ -395,12 +400,12 @@ main(argc, argv) if (exclude) { - xclude(stdin); + xclude(smioin); (void) Db->smdb_close(Db); EXITM(EX_OK); } - if ((cur = (ALIAS *)malloc((u_int)sizeof(ALIAS))) == NULL) + if ((cur = (ALIAS *) malloc((unsigned int) sizeof(ALIAS))) == NULL) { msglog(LOG_NOTICE, "vacation: can't allocate memory for username.\n"); @@ -419,7 +424,7 @@ main(argc, argv) (void) time(&now); setreply(From, now); (void) Db->smdb_close(Db); - sendmessage(name, msgfilename, emptysender); + sendmessage(name, msgfilename, returnaddr); } else (void) Db->smdb_close(Db); @@ -474,16 +479,17 @@ readheaders() extern bool junkmail __P((char *)); extern bool nsearch __P((char *, char *)); - cont = tome = FALSE; - while (fgets(buf, sizeof(buf), stdin) && *buf != '\n') + cont = tome = false; + while (sm_io_fgets(smioin, SM_TIME_DEFAULT, buf, sizeof(buf)) && + *buf != '\n') { switch(*buf) { case 'F': /* "From " */ - cont = FALSE; + cont = false; if (strncmp(buf, "From ", 5) == 0) { - bool quoted = FALSE; + bool quoted = false; p = buf + 5; while (*p != '\0') @@ -517,8 +523,8 @@ readheaders() /* ok since both strings have MAXLINE length */ if (*From == '\0') - (void) strlcpy(From, buf + 5, - sizeof From); + (void) sm_strlcpy(From, buf + 5, + sizeof From); if ((p = strchr(buf + 5, '\n')) != NULL) *p = '\0'; if (junkmail(buf + 5)) @@ -528,7 +534,7 @@ readheaders() case 'P': /* "Precedence:" */ case 'p': - cont = FALSE; + cont = false; if (strlen(buf) <= 10 || strncasecmp(buf, "Precedence", 10) != 0 || (buf[10] != ':' && buf[10] != ' ' && @@ -549,20 +555,20 @@ readheaders() case 'c': if (strncasecmp(buf, "Cc:", 3) != 0) break; - cont = TRUE; + cont = true; goto findme; case 'T': /* "To:" */ case 't': if (strncasecmp(buf, "To:", 3) != 0) break; - cont = TRUE; + cont = true; goto findme; default: if (!isascii(*buf) || !isspace(*buf) || !cont || tome) { - cont = FALSE; + cont = false; break; } findme: @@ -619,9 +625,9 @@ nsearch(name, str) strncasecmp(name, s, len) == 0 && (s == str || !isascii(*(s - 1)) || !isalnum(*(s - 1))) && (!isascii(*(s + len)) || !isalnum(*(s + len)))) - return TRUE; + return true; } - return FALSE; + return false; } /* @@ -689,7 +695,7 @@ junkmail(from) ** From site!site!SENDER%site.domain%site.domain@site.domain */ - quot = FALSE; + quot = false; e = from; len = 0; while (*e != '\0' && (quot || !isdelim(*e))) @@ -728,10 +734,10 @@ junkmail(from) sender[MAX_USER_LEN - 1] = '\0'; if (len <= 0) - return FALSE; + return false; #if 0 if (quot) - return FALSE; /* syntax error... */ + return false; /* syntax error... */ #endif /* 0 */ /* test prefixes */ @@ -739,7 +745,7 @@ junkmail(from) { if (len >= cur->len && strncasecmp(cur->name, sender, cur->len) == 0) - return TRUE; + return true; } /* @@ -752,14 +758,14 @@ junkmail(from) */ if (len > MAX_USER_LEN) - return FALSE; + return false; /* test full local parts */ for (cur = ignore; cur->name != NULL; ++cur) { if (len == cur->len && strncasecmp(cur->name, sender, cur->len) == 0) - return TRUE; + return true; } /* test postfixes */ @@ -768,9 +774,9 @@ junkmail(from) if (len >= cur->len && strncasecmp(cur->name, e - cur->len - 1, cur->len) == 0) - return TRUE; + return true; } - return FALSE; + return false; } #define VIT "__VACATION__INTERVAL__TIMER__" @@ -783,7 +789,7 @@ junkmail(from) ** none. ** ** Returns: -** TRUE iff user has gotten a vacation message recently. +** true iff user has gotten a vacation message recently. ** */ @@ -792,7 +798,7 @@ recent() { SMDB_DBENT key, data; time_t then, next; - bool trydomain = FALSE; + bool trydomain = false; int st; char *domain; @@ -823,7 +829,7 @@ recent() memmove(&then, data.data, sizeof(then)); if (next == ONLY_ONCE || then == ONLY_ONCE || then + next > time(NULL)) - return TRUE; + return true; } if ((trydomain = !trydomain) && (domain = strchr(From, '@')) != NULL) @@ -832,7 +838,7 @@ recent() key.size = strlen(domain); } } while (trydomain); - return FALSE; + return false; } /* @@ -913,13 +919,13 @@ setreply(from, when) void xclude(f) - FILE *f; + SM_FILE_T *f; { char buf[MAXLINE], *p; if (f == NULL) return; - while (fgets(buf, sizeof buf, f)) + while (sm_io_fgets(f, SM_TIME_DEFAULT, buf, sizeof buf)) { if ((p = strchr(buf, '\n')) != NULL) *p = '\0'; @@ -934,7 +940,7 @@ xclude(f) ** Parameters: ** myname -- user name. ** msgfn -- name of file with vacation message. -** emptysender -- use <> as sender address? +** sender -- use as sender address ** ** Returns: ** nothing. @@ -944,18 +950,18 @@ xclude(f) */ void -sendmessage(myname, msgfn, emptysender) +sendmessage(myname, msgfn, sender) char *myname; char *msgfn; - bool emptysender; + char *sender; { - FILE *mfp, *sfp; + SM_FILE_T *mfp, *sfp; int i; int pvect[2]; char *pv[8]; char buf[MAXLINE]; - mfp = fopen(msgfn, "r"); + mfp = sm_io_open(SmFtStdio, SM_TIME_DEFAULT, msgfn, SM_IO_RDONLY, NULL); if (mfp == NULL) { if (msgfn[0] == '/') @@ -967,14 +973,14 @@ sendmessage(myname, msgfn, emptysender) } if (pipe(pvect) < 0) { - msglog(LOG_ERR, "vacation: pipe: %s", errstring(errno)); + msglog(LOG_ERR, "vacation: pipe: %s", sm_errstring(errno)); exit(EX_OSERR); } pv[0] = "sendmail"; pv[1] = "-oi"; pv[2] = "-f"; - if (emptysender) - pv[3] = "<>"; + if (sender != NULL) + pv[3] = sender; else pv[3] = myname; pv[4] = "--"; @@ -983,7 +989,7 @@ sendmessage(myname, msgfn, emptysender) i = fork(); if (i < 0) { - msglog(LOG_ERR, "vacation: fork: %s", errstring(errno)); + msglog(LOG_ERR, "vacation: fork: %s", sm_errstring(errno)); exit(EX_OSERR); } if (i == 0) @@ -991,26 +997,29 @@ sendmessage(myname, msgfn, emptysender) (void) dup2(pvect[0], 0); (void) close(pvect[0]); (void) close(pvect[1]); - (void) fclose(mfp); + (void) sm_io_close(mfp, SM_TIME_DEFAULT); (void) execv(_PATH_SENDMAIL, pv); msglog(LOG_ERR, "vacation: can't exec %s: %s", - _PATH_SENDMAIL, errstring(errno)); + _PATH_SENDMAIL, sm_errstring(errno)); exit(EX_UNAVAILABLE); } /* check return status of the following calls? XXX */ (void) close(pvect[0]); - if ((sfp = fdopen(pvect[1], "w")) != NULL) + if ((sfp = sm_io_open(SmFtStdiofd, SM_TIME_DEFAULT, + (void *) &(pvect[1]), + SM_IO_WRONLY, NULL)) != NULL) { - (void) fprintf(sfp, "To: %s\n", From); - (void) fprintf(sfp, "Auto-Submitted: auto-generated\n"); - while (fgets(buf, sizeof buf, mfp)) - (void) fputs(buf, sfp); - (void) fclose(mfp); - (void) fclose(sfp); + (void) sm_io_fprintf(sfp, SM_TIME_DEFAULT, "To: %s\n", From); + (void) sm_io_fprintf(sfp, SM_TIME_DEFAULT, + "Auto-Submitted: auto-replied\n"); + while (sm_io_fgets(mfp, SM_TIME_DEFAULT, buf, sizeof buf)) + (void) sm_io_fputs(sfp, SM_TIME_DEFAULT, buf); + (void) sm_io_close(mfp, SM_TIME_DEFAULT); + (void) sm_io_close(sfp, SM_TIME_DEFAULT); } else { - (void) fclose(mfp); + (void) sm_io_close(mfp, SM_TIME_DEFAULT); msglog(LOG_ERR, "vacation: can't open pipe to sendmail"); exit(EX_UNAVAILABLE); } @@ -1019,29 +1028,20 @@ sendmessage(myname, msgfn, emptysender) void usage() { + char *retusage; + +#if _FFR_RETURN_ADDR + retusage = "[-R returnaddr] "; +#else /* _FFR_RETURN_ADDR */ + retusage = ""; +#endif /* _FFR_RETURN_ADDR */ + msglog(LOG_NOTICE, - "uid %u: usage: vacation [-a alias]%s [-f db] [-i]%s [-m msg] [-r interval] [-s sender] [-t time]%s [-x] [-z] login\n", - getuid(), -#if _FFR_DEBUG - " [-d]", -#else /* _FFR_DEBUG */ - "", -#endif /* _FFR_DEBUG */ -#if _FFR_LISTDB - " [-l]", -#else /* _FFR_LISTDB */ - "", -#endif /* _FFR_LISTDB */ -#if _FFR_BLACKBOX - " [-U]" -#else /* _FFR_BLACKBOX */ - "" -#endif /* _FFR_BLACKBOX */ - ); + "uid %u: usage: vacation [-a alias] [-C cfpath] [-d] [-f db] [-i] [-l] [-m msg] %s[-r interval] [-s sender] [-t time] [-U] [-x] [-z] login\n", + getuid(), retusage); exit(EX_USAGE); } -#if _FFR_LISTDB /* ** LISTDB -- list the contents of the vacation database ** @@ -1066,8 +1066,9 @@ listdb() result = Db->smdb_cursor(Db, &cursor, 0); if (result != SMDBE_OK) { - fprintf(stderr, "vacation: set cursor: %s\n", - errstring(result)); + sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "vacation: set cursor: %s\n", + sm_errstring(result)); return; } @@ -1075,7 +1076,7 @@ listdb() SMDB_CURSOR_GET_NEXT)) == SMDBE_OK) { /* skip magic VIT entry */ - if ((int)db_key.size -1 == strlen(VIT) && + if ((int)db_key.size - 1 == strlen(VIT) && strncmp((char *)db_key.data, VIT, (int)db_key.size - 1) == 0) continue; @@ -1083,8 +1084,9 @@ listdb() /* skip bogus values */ if (db_value.size != sizeof t) { - fprintf(stderr, "vacation: %.*s invalid time stamp\n", - (int) db_key.size, (char *) db_key.data); + sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "vacation: %.*s invalid time stamp\n", + (int) db_key.size, (char *) db_key.data); continue; } @@ -1093,8 +1095,9 @@ listdb() if (db_key.size > 40) db_key.size = 40; - printf("%-40.*s %-10s", - (int) db_key.size, (char *) db_key.data, ctime(&t)); + sm_io_fprintf(smioout, SM_TIME_DEFAULT, "%-40.*s %-10s", + (int) db_key.size, (char *) db_key.data, + ctime(&t)); memset(&db_key, '\0', sizeof db_key); memset(&db_value, '\0', sizeof db_value); @@ -1102,8 +1105,9 @@ listdb() if (result != SMDBE_OK && result != SMDBE_LAST_ENTRY) { - fprintf(stderr, "vacation: get value at cursor: %s\n", - errstring(result)); + sm_io_fprintf(smioerr, SM_TIME_DEFAULT, + "vacation: get value at cursor: %s\n", + sm_errstring(result)); if (cursor != NULL) { (void) cursor->smdbc_close(cursor); @@ -1114,9 +1118,7 @@ listdb() (void) cursor->smdbc_close(cursor); cursor = NULL; } -#endif /* _FFR_LISTDB */ -#if _FFR_DEBUG /* ** DEBUGLOG -- write message to standard error ** @@ -1132,7 +1134,7 @@ listdb() */ /*VARARGS2*/ -static void +static SYSLOG_RET_T #ifdef __STDC__ debuglog(int i, const char *fmt, ...) #else /* __STDC__ */ @@ -1143,67 +1145,10 @@ debuglog(i, fmt, va_alist) #endif /* __STDC__ */ { - VA_LOCAL_DECL - - VA_START(fmt); - vfprintf(stderr, fmt, ap); - VA_END; -} -#endif /* _FFR_DEBUG */ - -/*VARARGS1*/ -void -#ifdef __STDC__ -message(const char *msg, ...) -#else /* __STDC__ */ -message(msg, va_alist) - const char *msg; - va_dcl -#endif /* __STDC__ */ -{ - const char *m; - VA_LOCAL_DECL - - m = msg; - if (isascii(m[0]) && isdigit(m[0]) && - isascii(m[1]) && isdigit(m[1]) && - isascii(m[2]) && isdigit(m[2]) && m[3] == ' ') - m += 4; - VA_START(msg); - (void) vfprintf(stderr, m, ap); - VA_END; - (void) fprintf(stderr, "\n"); -} - -/*VARARGS1*/ -void -#ifdef __STDC__ -syserr(const char *msg, ...) -#else /* __STDC__ */ -syserr(msg, va_alist) - const char *msg; - va_dcl -#endif /* __STDC__ */ -{ - const char *m; - VA_LOCAL_DECL - - m = msg; - if (isascii(m[0]) && isdigit(m[0]) && - isascii(m[1]) && isdigit(m[1]) && - isascii(m[2]) && isdigit(m[2]) && m[3] == ' ') - m += 4; - VA_START(msg); - (void) vfprintf(stderr, m, ap); - VA_END; - (void) fprintf(stderr, "\n"); -} + SM_VA_LOCAL_DECL -void -dumpfd(fd, printclosed, logit) - int fd; - bool printclosed; - bool logit; -{ - return; + SM_VA_START(ap, fmt); + sm_io_vfprintf(smioerr, SM_TIME_DEFAULT, fmt, ap); + SM_VA_END(ap); + SYSLOG_RET; } |