From 949af4df9625f3371e146f7c78f4f1a17a2bf6db Mon Sep 17 00:00:00 2001 From: ian Date: Sun, 10 Oct 1999 11:39:46 +0000 Subject: [PATCH] Moved xmalloc etc. into both.c --- both.c | 22 +++++ both.h | 10 +++ client.c | 53 +++++------- debian/changelog | 4 +- lexer.c | 217 ++++++++++++++++++++++++----------------------- lexer.l | 1 + lexer.l.m4 | 1 + lib.c | 20 +---- lib.h | 4 - servexec.c | 1 + 10 files changed, 170 insertions(+), 163 deletions(-) diff --git a/both.c b/both.c index 46cf85c..24a31ff 100644 --- a/both.c +++ b/both.c @@ -31,8 +31,30 @@ #include #include +#include "config.h" #include "both.h" +void *xmalloc(size_t s) { + void *p; + p= malloc(s?s:1); if (!p) syscallerror("malloc"); + return p; +} + +void *xrealloc(void *p, size_t s) { + p= realloc(p,s); + if (!p) syscallerror("realloc"); + return p; +} + +char *xstrsave(const char *s) { + char *r; + + r= xmalloc(strlen(s)+1); + strcpy(r,s); + return r; +} + + int working_getc(FILE *file) { int c; diff --git a/both.h b/both.h index 084405d..6fd04a5 100644 --- a/both.h +++ b/both.h @@ -23,7 +23,17 @@ #ifndef BOTH_H #define BOTH_H +/* provided by both.c */ + +void *xmalloc(size_t s); +void *xrealloc(void *p, size_t s); +char *xstrsave(const char *s); + int working_getc(FILE *file); size_t working_fread(void *ptr, size_t sz, FILE *file); +/* used by both.c, so must be present */ + +void syscallerror(const char *what) NONRETURNING; + #endif diff --git a/client.c b/client.c index 523a7be..f7bc9a4 100644 --- a/client.c +++ b/client.c @@ -168,7 +168,7 @@ static void NONRETURNPRINTFFORMAT(1,2) miscerror(const char *fmt, ...) { exit(-1); } -static void NONRETURNPRINTFFORMAT(1,2) syscallerror(const char *fmt, ...) { +static void NONRETURNPRINTFFORMAT(1,2) fsyscallerror(const char *fmt, ...) { va_list al; int e; @@ -181,6 +181,10 @@ static void NONRETURNPRINTFFORMAT(1,2) syscallerror(const char *fmt, ...) { exit(-1); } +void syscallerror(const char *what) { + fsyscallerror("%s",what); +} + static void NONRETURNING protoreaderror(FILE *file, const char *where) { int e; @@ -300,18 +304,7 @@ static void getprogress(struct progress_msg *progress_r, FILE *file) { * the signal asynchronicity starts. They can do anything they like. */ -static void *xmalloc(size_t s) { - void *p; - p= malloc(s?s:1); - if (!p) syscallerror("malloc (%lu bytes)",(unsigned long)s); - return p; -} - -static void *xrealloc(void *p, size_t s) { - p= realloc(p,s); - if (!p) syscallerror("realloc (%lu bytes)",(unsigned long)s); - return p; -} +/* This includes xmalloc and xrealloc from both.c */ static void xfwritestring(const char *s, FILE *file) { int l; @@ -348,7 +341,7 @@ static void disconnect(void) /* DOES return, unlike in daemon */ { event_mbuf.type= et_disconnect; r= fwrite(&event_mbuf,1,sizeof(event_mbuf),swfile); if ((r != sizeof(event_mbuf) || fflush(swfile)) && errno != EPIPE) - syscallerror("write to server when disconnecting\n"); + syscallerror("write to server when disconnecting"); } systemerror= 1; } @@ -590,9 +583,9 @@ static void of_file(const struct optioninfo *oip, const char *value, char *key) } r= fstat(copyfd,&stab); if (r) { - if (oip) syscallerror("check filedescriptor %lu (named as target of file " - "descriptor redirection for %lu)",copyfd,fd); - else syscallerror("check basic filedescriptor %lu at program start",copyfd); + if (oip) fsyscallerror("check filedescriptor %lu (named as target of file " + "descriptor redirection for %lu)",copyfd,fd); + else fsyscallerror("check basic filedescriptor %lu at program start",copyfd); } fdsetup[fd].copyfd= copyfd; } @@ -946,7 +939,7 @@ static void process_override(const char *servicename) { break; case ot_file: ovfile= fopen(overridevalue,"r"); - if (!ovfile) syscallerror("open overriding configuration file `%s'",overridevalue); + if (!ovfile) fsyscallerror("open overriding configuration file `%s'",overridevalue); ovbuf= 0; ovavail= ovused= 0; while ((c= getc(ovfile)) != EOF) { if (!c) miscerror("overriding config file `%s' contains null(s)",overridevalue); @@ -958,7 +951,7 @@ static void process_override(const char *servicename) { ovbuf[ovused++]= c; } if (ferror(ovfile) || fclose(ovfile)) - syscallerror("read overriding configuration file `%s'",overridevalue); + fsyscallerror("read overriding configuration file `%s'",overridevalue); ovbuf= xrealloc(ovbuf,ovused+1); ovbuf[ovused]= 0; break; @@ -995,7 +988,7 @@ static int server_connect(void) { if (errno == ECONNREFUSED || errno == ENOENT) syscallerror("uservd daemon is not running - service not available"); if (errno != EINTR) - syscallerror("unable to connect to uservd daemon: %m"); + fsyscallerror("unable to connect to uservd daemon: %m"); } return sfd; @@ -1028,16 +1021,16 @@ static void server_preparepipes(void) { assert(!pipepathbuf[PIPEPATHMAXLEN]); priv_resume(); if (unlink(pipepathbuf) && errno != ENOENT) - syscallerror("remove any old pipe `%s'",pipepathbuf); + fsyscallerror("remove any old pipe `%s'",pipepathbuf); if (mkfifo(pipepathbuf,0600)) /* permissions are irrelevant */ - syscallerror("create pipe `%s'",pipepathbuf); + fsyscallerror("create pipe `%s'",pipepathbuf); tempfd= open(pipepathbuf,O_RDWR); - if (tempfd<0) syscallerror("prelim open pipe `%s' for read+write",pipepathbuf); + if (tempfd<0) fsyscallerror("prelim open pipe `%s' for read+write",pipepathbuf); assert(fdsetup[fd].mods & (fdm_read|fdm_write)); fdsetup[fd].pipefd= open(pipepathbuf, (fdsetup[fd].mods & fdm_read) ? O_WRONLY : O_RDONLY); - if (fdsetup[fd].pipefd<0) syscallerror("real open pipe `%s'",pipepathbuf); - if (close(tempfd)) syscallerror("close prelim fd onto pipe `%s'",pipepathbuf); + if (fdsetup[fd].pipefd<0) fsyscallerror("real open pipe `%s'",pipepathbuf); + if (close(tempfd)) fsyscallerror("close prelim fd onto pipe `%s'",pipepathbuf); priv_suspend(); } } @@ -1142,13 +1135,13 @@ static void connect_pipes(void) { fdsetup[fd].copyfd= open(fdsetup[fd].filename,fdsetup[fd].oflags|O_NOCTTY,0777); if (fdsetup[fd].copyfd<0) - syscallerror("open file `%s' for fd %d",fdsetup[fd].filename,fd); + fsyscallerror("open file `%s' for fd %d",fdsetup[fd].filename,fd); } blocksignals(SIG_BLOCK); child= fork(); fdsetup[fd].catpid= child; blocksignals(SIG_UNBLOCK); - if (child==-1) syscallerror("fork for cat for fd %d",fd); + if (child==-1) fsyscallerror("fork for cat for fd %d",fd); if (!child) { snprintf(catnamebuf,sizeof(catnamebuf),"cat fd%d",fd); catnamebuf[sizeof(catnamebuf)-1]= 0; @@ -1168,8 +1161,8 @@ static void connect_pipes(void) { exit(-1); } if (fdsetup[fd].copyfd>2) - if (close(fdsetup[fd].copyfd)) syscallerror("close real fd for %d",fd); - if (close(fdsetup[fd].pipefd)) syscallerror("close pipe fd for %d",fd); + if (close(fdsetup[fd].copyfd)) fsyscallerror("close real fd for %d",fd); + if (close(fdsetup[fd].pipefd)) fsyscallerror("close pipe fd for %d",fd); } } @@ -1204,7 +1197,7 @@ static void dispose_remaining_pipes(void) { blocksignals(SIG_BLOCK); for (fd=0; fd Sat, 9 Oct 1999 19:45:21 +0100 + -- userv (0.64.1) unstable; urgency=low diff --git a/lexer.c b/lexer.c index 3cf4406..77542e5 100644 --- a/lexer.c +++ b/lexer.c @@ -801,6 +801,7 @@ char *yytext; #include "common.h" #include "daemon.h" #include "lib.h" +#include "both.h" #include "tokens.h" #define HYPHEN '-' @@ -1043,7 +1044,7 @@ YY_DECL register char *yy_cp, *yy_bp; register int yy_act; -#line 142 "lexer.l" +#line 143 "lexer.l" @@ -1130,472 +1131,472 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 144 "lexer.l" +#line 145 "lexer.l" { lr_dir= df_reject; return tokv_word_reject; } YY_BREAK case 2: YY_RULE_SETUP -#line 145 "lexer.l" +#line 146 "lexer.l" { lr_dir= df_executefromdirectory; return tokv_word_executefromdirectory; } YY_BREAK case 3: YY_RULE_SETUP -#line 146 "lexer.l" +#line 147 "lexer.l" { lr_dir= df_executefrompath; return tokv_word_executefrompath; } YY_BREAK case 4: YY_RULE_SETUP -#line 147 "lexer.l" +#line 148 "lexer.l" { lr_dir= df_executebuiltin; return tokv_word_executebuiltin; } YY_BREAK case 5: YY_RULE_SETUP -#line 148 "lexer.l" +#line 149 "lexer.l" { lr_dir= df_errorstostderr; return tokv_word_errorstostderr; } YY_BREAK case 6: YY_RULE_SETUP -#line 149 "lexer.l" +#line 150 "lexer.l" { lr_dir= df_errorstosyslog; return tokv_word_errorstosyslog; } YY_BREAK case 7: YY_RULE_SETUP -#line 150 "lexer.l" +#line 151 "lexer.l" { lr_dir= df_errorstofile; return tokv_word_errorstofile; } YY_BREAK case 8: YY_RULE_SETUP -#line 151 "lexer.l" +#line 152 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=1; return tokv_word_requirefd; } YY_BREAK case 9: YY_RULE_SETUP -#line 152 "lexer.l" +#line 153 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_allowfd; } YY_BREAK case 10: YY_RULE_SETUP -#line 153 "lexer.l" +#line 154 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=0; return tokv_word_nullfd; } YY_BREAK case 11: YY_RULE_SETUP -#line 154 "lexer.l" +#line 155 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_rejectfd; } YY_BREAK case 12: YY_RULE_SETUP -#line 155 "lexer.l" +#line 156 "lexer.l" { lr_dir= dfg_fdwant; lr_fdwant_readwrite=-1; return tokv_word_ignorefd; } YY_BREAK case 13: YY_RULE_SETUP -#line 156 "lexer.l" +#line 157 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 1; return tokv_word_setenvironment; } YY_BREAK case 14: YY_RULE_SETUP -#line 157 "lexer.l" +#line 158 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &setenvironment; lr_flagval= 0; return tokv_word_nosetenvironment; } YY_BREAK case 15: YY_RULE_SETUP -#line 158 "lexer.l" +#line 159 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 1; return tokv_word_suppressargs; } YY_BREAK case 16: YY_RULE_SETUP -#line 159 "lexer.l" +#line 160 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &suppressargs; lr_flagval= 0; return tokv_word_nosuppressargs; } YY_BREAK case 17: YY_RULE_SETUP -#line 160 "lexer.l" +#line 161 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 1; return tokv_word_disconnecthup; } YY_BREAK case 18: YY_RULE_SETUP -#line 161 "lexer.l" +#line 162 "lexer.l" { lr_dir= dfg_setflag; lr_flag= &disconnecthup; lr_flagval= 0; return tokv_word_nodisconnecthup; } YY_BREAK case 19: YY_RULE_SETUP -#line 162 "lexer.l" +#line 163 "lexer.l" { lr_dir= df_cd; return tokv_word_cd; } YY_BREAK case 20: YY_RULE_SETUP -#line 163 "lexer.l" +#line 164 "lexer.l" { lr_dir= df_userrcfile; return tokv_word_userrcfile; } YY_BREAK case 21: YY_RULE_SETUP -#line 164 "lexer.l" +#line 165 "lexer.l" { lr_dir= df_include; return tokv_word_include; } YY_BREAK case 22: YY_RULE_SETUP -#line 165 "lexer.l" +#line 166 "lexer.l" { lr_dir= df_include; return tokv_word_includeifexist; } YY_BREAK case 23: YY_RULE_SETUP -#line 166 "lexer.l" +#line 167 "lexer.l" { lr_dir= df_includelookup; return tokv_word_includelookup; } YY_BREAK case 24: YY_RULE_SETUP -#line 167 "lexer.l" +#line 168 "lexer.l" { lr_dir= df_includelookup; return tokv_word_includelookupall; } YY_BREAK case 25: YY_RULE_SETUP -#line 168 "lexer.l" +#line 169 "lexer.l" { lr_dir= df_includedirectory; return tokv_word_includedirectory; } YY_BREAK case 26: YY_RULE_SETUP -#line 169 "lexer.l" +#line 170 "lexer.l" { lr_dir= df_message; return tokv_word_message; } YY_BREAK case 27: YY_RULE_SETUP -#line 170 "lexer.l" +#line 171 "lexer.l" { lr_dir= df_include; return tokv_word_includesysconfig; } YY_BREAK case 28: YY_RULE_SETUP -#line 171 "lexer.l" +#line 172 "lexer.l" { lr_dir= dfi_includeuserrcfile; return tokv_word_includeuserrcfile; } YY_BREAK case 29: YY_RULE_SETUP -#line 172 "lexer.l" +#line 173 "lexer.l" { lr_dir= dfi_includeclientconfig; return tokv_word_includeclientconfig; } YY_BREAK case 30: YY_RULE_SETUP -#line 173 "lexer.l" +#line 174 "lexer.l" { lr_dir= df_quit; return tokv_word_quit; } YY_BREAK case 31: YY_RULE_SETUP -#line 174 "lexer.l" +#line 175 "lexer.l" { lr_dir= df_eof; return tokv_word_eof; } YY_BREAK case 32: YY_RULE_SETUP -#line 175 "lexer.l" +#line 176 "lexer.l" { lr_dir= df_if; return tokv_word_if; } YY_BREAK case 33: YY_RULE_SETUP -#line 176 "lexer.l" +#line 177 "lexer.l" { lr_dir= df_catchquit; return tokv_word_catchquit; } YY_BREAK case 34: YY_RULE_SETUP -#line 177 "lexer.l" +#line 178 "lexer.l" { lr_dir= df_errorspush; return tokv_word_errorspush; } YY_BREAK case 35: YY_RULE_SETUP -#line 178 "lexer.l" +#line 179 "lexer.l" { lr_controlend= tokv_word_if; return tokv_word_elif; } YY_BREAK case 36: YY_RULE_SETUP -#line 179 "lexer.l" +#line 180 "lexer.l" { lr_controlend= tokv_word_if; return tokv_word_else; } YY_BREAK case 37: YY_RULE_SETUP -#line 180 "lexer.l" +#line 181 "lexer.l" { lr_controlend= tokv_word_if; return tokv_word_fi; } YY_BREAK case 38: YY_RULE_SETUP -#line 181 "lexer.l" +#line 182 "lexer.l" { lr_controlend= tokv_word_catchquit; return tokv_word_hctac; } YY_BREAK case 39: YY_RULE_SETUP -#line 182 "lexer.l" +#line 183 "lexer.l" { lr_controlend= tokv_word_errorspush; return tokv_word_srorre; } YY_BREAK case 40: YY_RULE_SETUP -#line 183 "lexer.l" +#line 184 "lexer.l" { lr_parmcond= pcf_glob; return tokv_word_glob; } YY_BREAK case 41: YY_RULE_SETUP -#line 184 "lexer.l" +#line 185 "lexer.l" { lr_parmcond= pcf_range; return tokv_word_range; } YY_BREAK case 42: YY_RULE_SETUP -#line 185 "lexer.l" +#line 186 "lexer.l" { lr_parmcond= pcf_grep; return tokv_word_grep; } YY_BREAK case 43: YY_RULE_SETUP -#line 186 "lexer.l" +#line 187 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_environment; return tokv_word_environment; } YY_BREAK case 44: YY_RULE_SETUP -#line 187 "lexer.l" +#line 188 "lexer.l" { lr_bispa= bispa_parameter; lr_bisexec= bisexec_parameter; return tokv_word_parameter; } YY_BREAK case 45: YY_RULE_SETUP -#line 188 "lexer.l" +#line 189 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_version; return tokv_word_version; } YY_BREAK case 46: YY_RULE_SETUP -#line 189 "lexer.l" +#line 190 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_toplevel; return tokv_word_toplevel; } YY_BREAK case 47: YY_RULE_SETUP -#line 190 "lexer.l" +#line 191 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_override; return tokv_word_override; } YY_BREAK case 48: YY_RULE_SETUP -#line 191 "lexer.l" +#line 192 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_shutdown; return tokv_word_shutdown; } YY_BREAK case 49: YY_RULE_SETUP -#line 192 "lexer.l" +#line 193 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_reset; lr_dir= df_reset; return tokv_word_reset; } YY_BREAK case 50: YY_RULE_SETUP -#line 193 "lexer.l" +#line 194 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_execute; lr_dir= df_execute; return tokv_word_execute; } YY_BREAK case 51: YY_RULE_SETUP -#line 194 "lexer.l" +#line 195 "lexer.l" { lr_bispa= bispa_none; lr_bisexec= bisexec_help; return tokv_word_help; } YY_BREAK case 52: YY_RULE_SETUP -#line 195 "lexer.l" +#line 196 "lexer.l" { lr_parameter= pf_service; return tokv_word_service; } YY_BREAK case 53: YY_RULE_SETUP -#line 196 "lexer.l" +#line 197 "lexer.l" { lr_parameter= pf_callinguser; return tokv_word_callinguser; } YY_BREAK case 54: YY_RULE_SETUP -#line 197 "lexer.l" +#line 198 "lexer.l" { lr_parameter= pf_callinggroup; return tokv_word_callinggroup; } YY_BREAK case 55: YY_RULE_SETUP -#line 198 "lexer.l" +#line 199 "lexer.l" { lr_parameter= pf_callingusershell; return tokv_word_callingusershell; } YY_BREAK case 56: YY_RULE_SETUP -#line 199 "lexer.l" +#line 200 "lexer.l" { lr_parameter= pf_serviceuser; return tokv_word_serviceuser; } YY_BREAK case 57: YY_RULE_SETUP -#line 200 "lexer.l" +#line 201 "lexer.l" { lr_parameter= pf_servicegroup; return tokv_word_servicegroup; } YY_BREAK case 58: YY_RULE_SETUP -#line 201 "lexer.l" +#line 202 "lexer.l" { lr_parameter= pf_serviceusershell; return tokv_word_serviceusershell; } YY_BREAK case 59: YY_RULE_SETUP -#line 202 "lexer.l" +#line 203 "lexer.l" { lr_loglevel= LOG_DEBUG; return tokv_syslog_debug; } YY_BREAK case 60: YY_RULE_SETUP -#line 203 "lexer.l" +#line 204 "lexer.l" { lr_loglevel= LOG_INFO; return tokv_syslog_info; } YY_BREAK case 61: YY_RULE_SETUP -#line 204 "lexer.l" +#line 205 "lexer.l" { lr_loglevel= LOG_NOTICE; return tokv_syslog_notice; } YY_BREAK case 62: YY_RULE_SETUP -#line 205 "lexer.l" +#line 206 "lexer.l" { lr_loglevel= LOG_WARNING; return tokv_syslog_warning; } YY_BREAK case 63: YY_RULE_SETUP -#line 206 "lexer.l" +#line 207 "lexer.l" { lr_loglevel= LOG_ERR; return tokv_syslog_err; } YY_BREAK case 64: YY_RULE_SETUP -#line 207 "lexer.l" +#line 208 "lexer.l" { lr_loglevel= LOG_CRIT; return tokv_syslog_crit; } YY_BREAK case 65: YY_RULE_SETUP -#line 208 "lexer.l" +#line 209 "lexer.l" { lr_loglevel= LOG_ALERT; return tokv_syslog_alert; } YY_BREAK case 66: YY_RULE_SETUP -#line 209 "lexer.l" +#line 210 "lexer.l" { lr_loglevel= LOG_EMERG; return tokv_syslog_emerg; } YY_BREAK case 67: YY_RULE_SETUP -#line 210 "lexer.l" +#line 211 "lexer.l" { lr_logfacility= LOG_AUTHPRIV; return tokv_syslog_authpriv; } YY_BREAK case 68: YY_RULE_SETUP -#line 211 "lexer.l" +#line 212 "lexer.l" { lr_logfacility= LOG_CRON; return tokv_syslog_cron; } YY_BREAK case 69: YY_RULE_SETUP -#line 212 "lexer.l" +#line 213 "lexer.l" { lr_logfacility= LOG_DAEMON; return tokv_syslog_daemon; } YY_BREAK case 70: YY_RULE_SETUP -#line 213 "lexer.l" +#line 214 "lexer.l" { lr_logfacility= LOG_KERN; return tokv_syslog_kern; } YY_BREAK case 71: YY_RULE_SETUP -#line 214 "lexer.l" +#line 215 "lexer.l" { lr_logfacility= LOG_LPR; return tokv_syslog_lpr; } YY_BREAK case 72: YY_RULE_SETUP -#line 215 "lexer.l" +#line 216 "lexer.l" { lr_logfacility= LOG_MAIL; return tokv_syslog_mail; } YY_BREAK case 73: YY_RULE_SETUP -#line 216 "lexer.l" +#line 217 "lexer.l" { lr_logfacility= LOG_NEWS; return tokv_syslog_news; } YY_BREAK case 74: YY_RULE_SETUP -#line 217 "lexer.l" +#line 218 "lexer.l" { lr_logfacility= LOG_SYSLOG; return tokv_syslog_syslog; } YY_BREAK case 75: YY_RULE_SETUP -#line 218 "lexer.l" +#line 219 "lexer.l" { lr_logfacility= LOG_USER; return tokv_syslog_user; } YY_BREAK case 76: YY_RULE_SETUP -#line 219 "lexer.l" +#line 220 "lexer.l" { lr_logfacility= LOG_UUCP; return tokv_syslog_uucp; } YY_BREAK case 77: YY_RULE_SETUP -#line 220 "lexer.l" +#line 221 "lexer.l" { lr_logfacility= LOG_LOCAL0; return tokv_syslog_local0; } YY_BREAK case 78: YY_RULE_SETUP -#line 221 "lexer.l" +#line 222 "lexer.l" { lr_logfacility= LOG_LOCAL1; return tokv_syslog_local1; } YY_BREAK case 79: YY_RULE_SETUP -#line 222 "lexer.l" +#line 223 "lexer.l" { lr_logfacility= LOG_LOCAL2; return tokv_syslog_local2; } YY_BREAK case 80: YY_RULE_SETUP -#line 223 "lexer.l" +#line 224 "lexer.l" { lr_logfacility= LOG_LOCAL3; return tokv_syslog_local3; } YY_BREAK case 81: YY_RULE_SETUP -#line 224 "lexer.l" +#line 225 "lexer.l" { lr_logfacility= LOG_LOCAL4; return tokv_syslog_local4; } YY_BREAK case 82: YY_RULE_SETUP -#line 225 "lexer.l" +#line 226 "lexer.l" { lr_logfacility= LOG_LOCAL5; return tokv_syslog_local5; } YY_BREAK case 83: YY_RULE_SETUP -#line 226 "lexer.l" +#line 227 "lexer.l" { lr_logfacility= LOG_LOCAL6; return tokv_syslog_local6; } YY_BREAK case 84: YY_RULE_SETUP -#line 227 "lexer.l" +#line 228 "lexer.l" { lr_logfacility= LOG_LOCAL7; return tokv_syslog_local7; } YY_BREAK case 85: YY_RULE_SETUP -#line 228 "lexer.l" +#line 229 "lexer.l" { return tokv_word_read; } YY_BREAK case 86: YY_RULE_SETUP -#line 229 "lexer.l" +#line 230 "lexer.l" { return tokv_word_write; } YY_BREAK case 87: YY_RULE_SETUP -#line 230 "lexer.l" +#line 231 "lexer.l" { return tokv_dollar; } YY_BREAK case 88: YY_RULE_SETUP -#line 231 "lexer.l" +#line 232 "lexer.l" { return tokv_openparen; } YY_BREAK case 89: YY_RULE_SETUP -#line 232 "lexer.l" +#line 233 "lexer.l" { return tokv_closeparen; } YY_BREAK case 90: YY_RULE_SETUP -#line 233 "lexer.l" +#line 234 "lexer.l" { return tokv_not; } YY_BREAK case 91: YY_RULE_SETUP -#line 234 "lexer.l" +#line 235 "lexer.l" { return tokv_and; } YY_BREAK case 92: YY_RULE_SETUP -#line 235 "lexer.l" +#line 236 "lexer.l" { return tokv_or; } YY_BREAK case 93: YY_RULE_SETUP -#line 236 "lexer.l" +#line 237 "lexer.l" { lr_dir= df_error; lr_loglevel= LOG_ERR; return tokv_word_error; } YY_BREAK case 94: YY_RULE_SETUP -#line 240 "lexer.l" +#line 241 "lexer.l" { char *ep; lr_min=lr_max= (int)strtoul(yytext,&ep,10); @@ -1605,7 +1606,7 @@ YY_RULE_SETUP YY_BREAK case 95: YY_RULE_SETUP -#line 246 "lexer.l" +#line 247 "lexer.l" { char *ep; lr_min= (int)strtoul(yytext,&ep,10); @@ -1622,7 +1623,7 @@ YY_RULE_SETUP YY_BREAK case 96: YY_RULE_SETUP -#line 259 "lexer.l" +#line 260 "lexer.l" { char *ep; lr_min= (int)strtoul(yytext,&ep,10); @@ -1634,27 +1635,27 @@ YY_RULE_SETUP YY_BREAK case 97: YY_RULE_SETUP -#line 267 "lexer.l" +#line 268 "lexer.l" return tokv_lwsp; YY_BREAK case 98: YY_RULE_SETUP -#line 268 "lexer.l" +#line 269 "lexer.l" return tokv_lwsp; YY_BREAK case 99: YY_RULE_SETUP -#line 269 "lexer.l" +#line 270 "lexer.l" cstate->lineno++; return tokv_newline; YY_BREAK case 100: YY_RULE_SETUP -#line 270 "lexer.l" +#line 271 "lexer.l" cstate->lineno++; return tokv_newline; YY_BREAK case 101: YY_RULE_SETUP -#line 271 "lexer.l" +#line 272 "lexer.l" { parseerrprint("missing newline at eof after comment"); return tokv_error; @@ -1662,14 +1663,14 @@ YY_RULE_SETUP YY_BREAK case 102: YY_RULE_SETUP -#line 275 "lexer.l" +#line 276 "lexer.l" { return dequote(yytext); } YY_BREAK case 103: YY_RULE_SETUP -#line 278 "lexer.l" +#line 279 "lexer.l" { parseerrprint("misquoted or unterminated string"); return tokv_error; @@ -1677,16 +1678,16 @@ YY_RULE_SETUP YY_BREAK case 104: YY_RULE_SETUP -#line 282 "lexer.l" +#line 283 "lexer.l" return tokv_barestring; YY_BREAK case YY_STATE_EOF(INITIAL): -#line 283 "lexer.l" +#line 284 "lexer.l" return tokv_eof; YY_BREAK case 105: YY_RULE_SETUP -#line 286 "lexer.l" +#line 287 "lexer.l" ECHO; YY_BREAK @@ -2572,7 +2573,7 @@ int main() return 0; } #endif -#line 286 "lexer.l" +#line 287 "lexer.l" const char *const builtinservicehelpstrings[]= { diff --git a/lexer.l b/lexer.l index ac21f69..f3a2957 100644 --- a/lexer.l +++ b/lexer.l @@ -43,6 +43,7 @@ #include "common.h" #include "daemon.h" #include "lib.h" +#include "both.h" #include "tokens.h" #define HYPHEN '-' diff --git a/lexer.l.m4 b/lexer.l.m4 index 7b26c15..22ad0e0 100644 --- a/lexer.l.m4 +++ b/lexer.l.m4 @@ -42,6 +42,7 @@ include(language.i4) #include "common.h" #include "daemon.h" #include "lib.h" +#include "both.h" #include "tokens.h" #define HYPHEN '-' diff --git a/lib.c b/lib.c index 22c8cd1..1352afa 100644 --- a/lib.c +++ b/lib.c @@ -31,6 +31,7 @@ #include "config.h" #include "common.h" #include "lib.h" +#include "both.h" char *xstrcat3save(const char *a, const char *b, const char *c) { char *r; @@ -42,14 +43,6 @@ char *xstrcat3save(const char *a, const char *b, const char *c) { return r; } -char *xstrsave(const char *s) { - char *r; - - r= xmalloc(strlen(s)+1); - strcpy(r,s); - return r; -} - char *xstrsubsave(const char *begin, int len) { char *r; @@ -59,17 +52,6 @@ char *xstrsubsave(const char *begin, int len) { return r; } -void *xmalloc(size_t s) { - void *p; - p= malloc(s?s:1); if (!p) syscallerror("malloc"); - return p; -} - -void *xrealloc(void *p, size_t s) { - p= realloc(p,s); if (!p) syscallerror("realloc"); - return p; -} - int makeroom(char **buffer, int *size, int needed) { if (needed > MAX_GENERAL_STRING) return -1; if (*size >= needed) return 0; diff --git a/lib.h b/lib.h index 7d78cb9..7012016 100644 --- a/lib.h +++ b/lib.h @@ -23,13 +23,9 @@ #define LIB_H char *xstrcat3save(const char *a, const char *b, const char *c); -char *xstrsave(const char *s); char *xstrsubsave(const char *begin, int len); void miscerror(const char *what) NONRETURNING; -void syscallerror(const char *what) NONRETURNING; -void *xmalloc(size_t s); -void *xrealloc(void *p, size_t s); int makeroom(char **buffer, int *size, int needed); /* makeroom returns -1 if needed was far too large; otherwise returns 0. */ diff --git a/servexec.c b/servexec.c index fa8b8ac..ad877f4 100644 --- a/servexec.c +++ b/servexec.c @@ -35,6 +35,7 @@ #include "common.h" #include "daemon.h" #include "lib.h" +#include "both.h" #include "version.h" static void NONRETURNING serv_syscallfail(const char *msg) { -- 2.30.2