=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/rwall/rwall.c,v retrieving revision 1.9 retrieving revision 1.10 diff -c -r1.9 -r1.10 *** src/usr.bin/rwall/rwall.c 2003/07/02 00:21:16 1.9 --- src/usr.bin/rwall/rwall.c 2003/07/09 01:10:30 1.10 *************** *** 1,4 **** ! /* $OpenBSD: rwall.c,v 1.9 2003/07/02 00:21:16 avsm Exp $ */ /* * Copyright (c) 1993 Christopher G. Demetriou --- 1,4 ---- ! /* $OpenBSD: rwall.c,v 1.10 2003/07/09 01:10:30 mickey Exp $ */ /* * Copyright (c) 1993 Christopher G. Demetriou *************** *** 38,44 **** #ifndef lint /*static char sccsid[] = "from: @(#)wall.c 5.14 (Berkeley) 3/2/91";*/ ! static char rcsid[] = "$OpenBSD: rwall.c,v 1.9 2003/07/02 00:21:16 avsm Exp $"; #endif /* not lint */ /* --- 38,44 ---- #ifndef lint /*static char sccsid[] = "from: @(#)wall.c 5.14 (Berkeley) 3/2/91";*/ ! static char rcsid[] = "$OpenBSD: rwall.c,v 1.10 2003/07/09 01:10:30 mickey Exp $"; #endif /* not lint */ /* *************** *** 56,61 **** --- 56,62 ---- #include #include #include + #include #include #include *************** *** 64,79 **** int mbufsize; char *mbuf; ! void makemsg (); int main(int argc, char *argv[]) { char *wallhost, res; CLIENT *cl; if ((argc < 2) || (argc > 3)) { ! fprintf(stderr, "usage: %s hostname [file]\n", argv[0]); exit(1); } --- 65,81 ---- int mbufsize; char *mbuf; ! void makemsg(char *); int main(int argc, char *argv[]) { + extern char *__progname; char *wallhost, res; CLIENT *cl; if ((argc < 2) || (argc > 3)) { ! fprintf(stderr, "usage: %s hostname [file]\n", __progname); exit(1); } *************** *** 96,104 **** exit(1); } ! if (clnt_call(cl, WALLPROC_WALL, xdr_wrapstring, &mbuf, xdr_void, &res, timeout) != RPC_SUCCESS) { /* ! * An error occurred while calling the server. * Print error message and die. */ clnt_perror(cl, wallhost); --- 98,107 ---- exit(1); } ! if (clnt_call(cl, WALLPROC_WALL, xdr_wrapstring, &mbuf, xdr_void, ! &res, timeout) != RPC_SUCCESS) { /* ! * An error occurred while calling the server. * Print error message and die. */ clnt_perror(cl, wallhost); *************** *** 119,129 **** int fd; char *whom, hostname[MAXHOSTNAMELEN], lbuf[100], tmpname[MAXPATHLEN]; ! snprintf(tmpname, sizeof(tmpname), "%s/wall.XXXXXXXXXX", _PATH_TMP); ! if ((fd = mkstemp(tmpname)) == -1 || !(fp = fdopen(fd, "r+"))) { ! (void)fprintf(stderr, "wall: can't open temporary file.\n"); ! exit(1); ! } (void)unlink(tmpname); if (!(whom = getlogin())) --- 122,130 ---- int fd; char *whom, hostname[MAXHOSTNAMELEN], lbuf[100], tmpname[MAXPATHLEN]; ! snprintf(tmpname, sizeof(tmpname), "%s/wall.XXXXXXXXXX", _PATH_TMP); ! if ((fd = mkstemp(tmpname)) == -1 || !(fp = fdopen(fd, "r+"))) ! err(1, "can't open temporary file"); (void)unlink(tmpname); if (!(whom = getlogin())) *************** *** 146,171 **** putc('\n', fp); ! if (fname && !(freopen(fname, "r", stdin))) { ! (void)fprintf(stderr, "wall: can't read %s.\n", fname); ! exit(1); ! } while (fgets(lbuf, sizeof(lbuf), stdin)) fputs(lbuf, fp); rewind(fp); ! if (fstat(fd, &sbuf)) { ! (void)fprintf(stderr, "wall: can't stat temporary file.\n"); ! exit(1); ! } mbufsize = sbuf.st_size; ! if (!(mbuf = malloc((u_int)mbufsize))) { ! (void)fprintf(stderr, "wall: out of memory.\n"); ! exit(1); ! } ! if (fread(mbuf, sizeof(*mbuf), mbufsize, fp) != mbufsize) { ! (void)fprintf(stderr, "wall: can't read temporary file.\n"); ! exit(1); ! } (void)close(fd); } --- 147,164 ---- putc('\n', fp); ! if (fname && !(freopen(fname, "r", stdin))) ! err(1, "%s", fname); while (fgets(lbuf, sizeof(lbuf), stdin)) fputs(lbuf, fp); rewind(fp); ! if (fstat(fd, &sbuf)) ! err(1, "can't stat temporary file"); mbufsize = sbuf.st_size; ! if (!(mbuf = malloc((u_int)mbufsize))) ! err(1, "malloc"); ! if (fread(mbuf, sizeof(*mbuf), mbufsize, fp) != mbufsize) ! err(1, "can't read temporary file"); (void)close(fd); }