X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=userv.git;a=blobdiff_plain;f=client.c;h=788b507699c188953c3f49b75a0bed8b42e5b3b2;hp=0af49e868e16926b545ece7e357505fcb84dc828;hb=HEAD;hpb=85bd72e348aa2bef9d6c98f5a2c5fa5b2b03c201 diff --git a/client.c b/client.c index 0af49e8..17fa6ce 100644 --- a/client.c +++ b/client.c @@ -2,11 +2,12 @@ * userv - client.c * client code * - * Copyright (C)1996-1997,1999 Ian Jackson + * userv is copyright Ian Jackson and other contributors. + * See README for full authorship information. * * This 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 + * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but @@ -15,8 +16,7 @@ * General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with userv; if not, write to the Free Software - * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * along with userv; if not, see . */ /* @@ -132,21 +132,23 @@ static const char *loginname; static char *cwdbuf; static size_t cwdbufsize; static char *ovbuf; -static int ovused, systemerror; +static int ovused, systemerror, socketfd; static void blocksignals(int how) { sigset_t set; static const char blockerrmsg[]= "userv: failed to [un]block signals: "; const char *str; + int unused; sigemptyset(&set); sigaddset(&set,SIGCHLD); sigaddset(&set,SIGALRM); if (sigprocmask(how,&set,0)) { str= strerror(errno); - write(2,blockerrmsg,sizeof(blockerrmsg)-1); - write(2,str,strlen(str)); - write(2,"\n",1); + unused= write(2,blockerrmsg,sizeof(blockerrmsg)-1); + unused= write(2,str,strlen(str)); + unused= write(2,"\n",1); + (void)unused; exit(-1); } } @@ -432,8 +434,8 @@ static void usage(FILE *stream) { "(separate with commas) append sync excl[usive] creat[e] fd\n" "userv -B 'X' ... is same as userv --override 'execute-builtin X' - 'X' ...\n" " for help, type `userv -B help'; remember to quote multi-word X\n" - "userv and uservd version " VERSION VEREXT "; copyright (C)1996-1999 Ian Jackson.\n" - "there is NO WARRANTY; type `userv --copyright' for details.\n", + "userv and uservd version " VERSION VEREXT ".\n" + COPYRIGHT("","\n"), stream) < 0) syscallerror("write usage message"); } @@ -725,19 +727,19 @@ static void of_version(const struct optioninfo *oip, const char *value, char *ke static void of_copyright(const struct optioninfo *oip, const char *value, char *key) { if (fputs( -" userv - user service daemon and client; copyright (C)1996-1999 Ian Jackson\n\n" +" userv - user service daemon and client\n\n" +COPYRIGHT(" ","\n") +"\n" " This is free software; you can redistribute it and/or modify it under the\n" " terms of the GNU General Public License as published by the Free Software\n" -" Foundation; either version 2 of the License, or (at your option) any\n" +" Foundation; either version 3 of the License, or (at your option) any\n" " later version.\n\n" " This program is distributed in the hope that it will be useful, but\n" " WITHOUT ANY WARRANTY; without even the implied warranty of\n" " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\n" " Public License for more details.\n\n" " You should have received a copy of the GNU General Public License along\n" -" with userv; if not, write to Ian Jackson or\n" -" to the Free Software Foundation, 59 Temple Place - Suite 330, Boston,\n" -" MA 02111-1307, USA.\n", +" with userv; if not, see .\n", stdout) < 0) syscallerror("write usage to stderr"); exit(0); } @@ -809,7 +811,7 @@ static void security_init(void) { mypid= getpid(); if (mypid == (pid_t)-1) syscallerror("getpid"); myuid= getuid(); if (myuid == (uid_t)-1) syscallerror("getuid"); mygid= getgid(); if (mygid == (gid_t)-1) syscallerror("getgid"); - ngids= getgroups(0,0); if (ngids == (gid_t)-1) syscallerror("getgroups(0,0)"); + ngids= getgroups(0,0); if (ngids == -1) syscallerror("getgroups(0,0)"); gidarray= xmalloc(sizeof(gid_t)*ngids); if (getgroups(ngids,gidarray) != ngids) syscallerror("getgroups(ngids,)"); @@ -1160,11 +1162,11 @@ static void prepare_asynchsignals(void) { if (sigaction(SIGALRM,&sig,0)) syscallerror("set up sigalrm handler"); if (!timeout) return; - if (alarm(timeout)<0) syscallerror("set up timeout alarm"); + alarm(timeout); } -static void cat_close_unwanted_pipes(void) { +static void close_unwanted_pipes(void) { int fd; for (fd=0; fd2) - if (close(fdsetup[fd].copyfd)) fsyscallerror("close real fd for %d",fd); - if (close(fdsetup[fd].pipefd)) fsyscallerror("close pipe fd for %d",fd); } + close_unwanted_pipes(); } static void server_sendconfirm(void) { @@ -1328,7 +1330,7 @@ static void NONRETURNING process_exitstatus(int status) { } int main(int argc, char *const *argv) { - int status, socketfd; + int status; #ifdef NDEBUG # error Do not disable assertions in this security-critical code !