From: ian Date: Thu, 25 Jan 2001 00:20:28 +0000 (+0000) Subject: @@ -3,6 +3,10 @@ X-Git-Tag: debian_version_1_0_1_99_0~15 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=userv.git;a=commitdiff_plain;h=9c66781b8a9dd60bb3e23f9813700897e3bf8200 @@ -3,6 +3,10 @@ + * #include , not (fixes some implicit decls). + * gid_t may be >int, so cast to long when putting in USERV_GIDS + (Might conceivably make USERV_GIDS be wrong on some platforms.) + * Do not pass char to ctype macros; they can't cope with -ve ! --- diff --git a/both.h b/both.h index 6fd04a5..dc4c68a 100644 --- a/both.h +++ b/both.h @@ -36,4 +36,6 @@ size_t working_fread(void *ptr, size_t sz, FILE *file); void syscallerror(const char *what) NONRETURNING; +#define ISCHAR(iswotsit,ch) (iswotsit((unsigned char)(ch))) /*Feh!*/ + #endif diff --git a/client.c b/client.c index 7f12013..c6b259b 100644 --- a/client.c +++ b/client.c @@ -284,7 +284,7 @@ static void getprogress(struct progress_msg *progress_r, FILE *file) { for (i=0; idata.errmsg.messagelen; i++) { c= working_getc(file); if (c==EOF) protoreaderror(file,"in error message"); - if (isprint(c)) putc(c,stderr); + if (ISCHAR(isprint,c)) putc(c,stderr); else fprintf(stderr,"\\x%02x",(unsigned char)c); } putc('\n',stderr); diff --git a/debian/changelog b/debian/changelog index 6c31e05..044c131 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,10 @@ userv (1.0.2) unstable; urgency=low * Specification's usage notes section improved. * --help and --version behaviour made to conform to GNU standards. * userv(1) manpage: fixed broken definitions of fd excl and trunc. + * #include , not (fixes some implicit decls). + * gid_t may be >int, so cast to long when putting in USERV_GIDS + (Might conceivably make USERV_GIDS be wrong on some platforms.) + * Do not pass char to ctype macros; they can't cope with -ve ! -- diff --git a/parser.c b/parser.c index b2c2b03..5700c3d 100644 --- a/parser.c +++ b/parser.c @@ -167,15 +167,15 @@ static int dequote(char *inplace) { *q++= v; continue; default: - if (isalpha(*p)) + if (ISCHAR(isalpha,*p)) return parseerrprint("unknown \\ sequence \\%c in quoted string",*p); - if (isdigit(*p)) { + if (ISCHAR(isdigit,*p)) { if (!((buf[0]= *p++) && (buf[1]= *p++) && (buf[2]= *p++))) abort(); buf[3]= 0; v= strtoul(buf,&bep,8); if (bep != buf+3 || (v & ~0xff)) return parseerrprint("invalid \\ sequence \\%s in quoted string",buf); *q++= v; continue; - } else if (ispunct(*p)) { + } else if (ISCHAR(ispunct,*p)) { *q++= *p++; continue; } else { while (*p==' ' || *p=='\t') p++; @@ -223,8 +223,8 @@ const char *printtoken(int token) { l= strlen(buf); i= sizeof(buf)-l-2; p= yytext; q= buf+l; while ((c= *p++)) { if (i-- <= 0) { q--; strcpy(q-3,"..."); break; } - if (isspace(c)) c= ' '; - else if (!isprint(c) || iscntrl(c)) c= '?'; + if (ISCHAR(isspace,c)) c= ' '; + else if (!ISCHAR(isprint,c) || ISCHAR(iscntrl,c)) c= '?'; else *q++= c; } strcpy(q,"'"); @@ -619,11 +619,11 @@ int pcf_grep(int ctoken, char *const *pv, int *rtrue) { buf= xmalloc(maxlen+2); actrue= 0; c= 0; while (!actrue && c!=EOF) { c= getc(file); if (c==EOF) break; - if (isspace(c)) continue; + if (ISCHAR(isspace,c)) continue; l= maxlen+1; p= buf; while (l>0 && c!='\n' && c!=EOF) { *p++= c; l--; c= getc(file); } - if (c=='\n' || c==EOF || isspace(c)) { - while (p>buf && isspace(p[-1])) --p; + if (c=='\n' || c==EOF || ISCHAR(isspace,c)) { + while (p>buf && ISCHAR(isspace,p[-1])) --p; *p= 0; posstrue= 0; for (pp= pv; !posstrue && *pp; pp++) if (!strcmp(*pp,buf)) posstrue= 1; @@ -634,7 +634,7 @@ int pcf_grep(int ctoken, char *const *pv, int *rtrue) { for (;;) { c= getc(file); if (c==EOF || c=='\n') break; - if (!isspace(c)) posstrue= 0; + if (!ISCHAR(isspace,c)) posstrue= 0; } } if (posstrue) actrue= 1; @@ -751,7 +751,7 @@ int df_executefromdirectory(int dtoken) { r= paa_pathargs(&rv,&newargs); if (r) return r; p= strrchr(service,'/'); if (p) p++; else p= service; - if (!*p || !isalnum(*p)) { + if (!*p || !ISCHAR(isalnum,*p)) { parseerrprint("execute-from-directory requires initial char of service " "portion to be alphanumeric (service portion was `%s')", p); @@ -759,7 +759,7 @@ int df_executefromdirectory(int dtoken) { return tokv_error; } for (q=p+1; *q; q++) { - if (!isalnum(*q) && *q != '-') { + if (!ISCHAR(isalnum,*q) && *q != '-') { parseerrprint("execute-from-directory requires service portion to " "contain only alphanumerics and hyphens (was `%s')", p); @@ -999,8 +999,8 @@ int df_includedirectory(int dtoken) { tel= strlen(de->d_name); if (!tel) continue; p= de->d_name; - if (!*p || !isalnum(*p)) continue; - while ((c= *++p)) if (!(isalnum(c) || c=='-')) break; + if (!*p || !ISCHAR(isalnum,*p)) continue; + while ((c= *++p)) if (!(ISCHAR(isalnum,c) || c=='-')) break; if (c) continue; if (makeroom(&buildbuf,&buildbuflen,cpl+1+tel+1)) { stringoverflow("pathname in directory"); diff --git a/process.c b/process.c index 636255a..c4a4809 100644 --- a/process.c +++ b/process.c @@ -49,12 +49,12 @@ #include #include #include -#include #include +#include #include #include #include -#include +#include #include #include #include diff --git a/servexec.c b/servexec.c index 01353cd..a71b64f 100644 --- a/servexec.c +++ b/servexec.c @@ -191,7 +191,7 @@ static const char *see_c_group(void) { static const char *seei_gid(int i) { static char buf[CHAR_BIT*sizeof(gid_t)/3+4]; - snyprintf(buf,sizeof(buf),"%d",calling_gids[i]); + snyprintf(buf,sizeof(buf),"%ld",(long)calling_gids[i]); return buf; } static const char *see_c_gid(void) {