From 78a3c717811e2ec9681465ebc22b55f7e969b7fb Mon Sep 17 00:00:00 2001 From: Keith Bostic Date: Tue, 9 Feb 1988 05:16:02 -0800 Subject: [PATCH] check read/writes for failure SCCS-vsn: local/local.cmd/20b.c 5.2 --- usr/src/local/local.cmd/20b.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/usr/src/local/local.cmd/20b.c b/usr/src/local/local.cmd/20b.c index 13d3fd5c32..04adcc2fc8 100644 --- a/usr/src/local/local.cmd/20b.c +++ b/usr/src/local/local.cmd/20b.c @@ -1,35 +1,43 @@ /* * Copyright (c) 1986 Regents of the University of California. - * All rights reserved. The Berkeley software License Agreement - * specifies the terms and conditions for redistribution. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of California at Berkeley. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific prior written permission. This software + * is provided ``as is'' without express or implied warranty. */ #ifndef lint char copyright[] = "@(#) Copyright (c) 1986 Regents of the University of California.\n\ All rights reserved.\n"; -#endif not lint +#endif /* not lint */ #ifndef lint -static char sccsid[] = "@(#)20b.c 5.1 (Berkeley) %G%"; -#endif not lint +static char sccsid[] = "@(#)20b.c 5.2 (Berkeley) %G%"; +#endif /* not lint */ +#define BSIZE (20 * 512) main() { register char *base, *current; register int cc, want; - int bsize = 20 * 512; char *alloca(); - base = alloca(bsize); - for(cc = bsize; cc > 0;) { + base = alloca(BSIZE); + for (cc = BSIZE; cc > 0;) { current = base; - for(want = bsize; want > 0 && cc > 0; want -= cc) { - cc = read(0,current,want); + for (want = BSIZE; want > 0 && cc > 0; want -= cc) { + if ((cc = read(0, current, want)) < 0) + return(-1); current += cc; } - if((want = bsize - want) > 0) - write(1,base,want); + want = BSIZE - want; + if (want && write(1, base, want) != want) + return(-1); } return(0); } -- 2.20.1