diff options
author | glass <glass@NetBSD.org> | 1995-03-25 07:44:46 +0000 |
---|---|---|
committer | glass <glass@NetBSD.org> | 1995-03-25 07:44:46 +0000 |
commit | fef85a6e438af9f4190645b00d74188d8850e530 (patch) | |
tree | 512f223a9a140974951203ef839a9dcd3e6edda6 /banner/banner.c | |
parent | 13a26126791f719a62e09dc51634c290ba9fdf5f (diff) | |
download | bsdgames-darwin-fef85a6e438af9f4190645b00d74188d8850e530.tar.gz bsdgames-darwin-fef85a6e438af9f4190645b00d74188d8850e530.tar.zst bsdgames-darwin-fef85a6e438af9f4190645b00d74188d8850e530.zip |
Merge 4.4Lite version
Diffstat (limited to 'banner/banner.c')
-rw-r--r-- | banner/banner.c | 101 |
1 files changed, 42 insertions, 59 deletions
diff --git a/banner/banner.c b/banner/banner.c index da69d315..0b5fddd2 100644 --- a/banner/banner.c +++ b/banner/banner.c @@ -1,6 +1,8 @@ +/* $NetBSD: banner.c,v 1.3 1995/03/25 07:44:49 glass Exp $ */ + /* - * Copyright (c) 1980 The Regents of the University of California. - * All rights reserved. + * Copyright (c) 1980, 1993, 1994 + * The Regents of the University of California. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -32,14 +34,17 @@ */ #ifndef lint -char copyright[] = -"@(#) Copyright (c) 1980 The Regents of the University of California.\n\ - All rights reserved.\n"; +static char copyright[] = +"@(#) Copyright (c) 1980, 1993, 1994\n\ + The Regents of the University of California. All rights reserved.\n"; #endif /* not lint */ #ifndef lint -/*static char sccsid[] = "from: @(#)banner.c 4.3 (Berkeley) 6/1/90";*/ -static char rcsid[] = "$Id: banner.c,v 1.2 1993/08/01 18:56:19 mycroft Exp $"; +#if 0 +static char sccsid[] = "@(#)banner.c 8.3 (Berkeley) 4/2/94"; +#else +static char rcsid[] = "$NetBSD: banner.c,v 1.3 1995/03/25 07:44:49 glass Exp $"; +#endif #endif /* not lint */ /* @@ -47,7 +52,11 @@ static char rcsid[] = "$Id: banner.c,v 1.2 1993/08/01 18:56:19 mycroft Exp $"; * banner [-w#] [-d] [-t] message ... */ +#include <err.h> #include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> #define MAXMSG 1024 #define DWIDTH 132 @@ -1014,31 +1023,21 @@ char data_table[NBYTES] = { /* 9270 */ 193 }; -int i,j; -int width = DWIDTH; /* -w option: scrunch letters to 80 columns */ -int debug; -int trace; -char line[DWIDTH]; -char print[DWIDTH]; -char message[MAXMSG]; -int nchars; -int linen; -int x,y; -int term; -int pc; -int max; +char line[DWIDTH]; +char message[MAXMSG]; +char print[DWIDTH]; +int debug, i, j, linen, max, nchars, pc, term, trace, x, y; +int width = DWIDTH; /* -w option: scrunch letters to 80 columns */ +int main(argc, argv) int argc; char **argv; { - extern char *optarg; - extern int optind; int ch; - char *strcpy(), *strcat(); while ((ch = getopt(argc, argv, "w:td")) != EOF) - switch((char)ch) { + switch(ch) { case 'w': width = atoi(optarg); if (width <= 0) @@ -1058,30 +1057,11 @@ main(argc, argv) argc -= optind; argv += optind; - for (i=0; i<width; i++) { + for (i = 0; i < width; i++) { j = i * 132 / width; print[j] = 1; } -#ifdef notdef - { -#define dir(f) "/e1/mrh/ucb/lib/f" -#define INDTBL dir(ban.dat.indtbl) -#define OBJECT dir(ban.dat.object) - FILE *fd; - - fd = fopen(INDTBL, "r"); - for (i=0; i<NCHARS; i++) { - fscanf(fd, "%d", &asc_ptr[i]); - } - fclose(fd); - - fd = fopen(OBJECT, "r"); - fread(data_table, 1, NBYTES, fd); - fclose(fd); - } -#endif - /* Have now read in the data. Next get the message to be printed. */ if (*argv) { strcpy(message, *argv); @@ -1100,18 +1080,18 @@ main(argc, argv) /* some debugging print statements */ if (debug) { printf("int asc_ptr[128] = {\n"); - for (i=0; i<128; i++) { + for (i = 0; i < 128; i++) { printf("%4d, ",asc_ptr[i]); if ((i+1) % 8 == 0) printf("\n"); } printf("};\nchar data_table[NBYTES] = {\n"); printf(" /* "); - for (i=0; i<10; i++) printf(" %3d ",i); + for (i = 0; i < 10; i++) printf(" %3d ",i); printf(" */\n"); - for (i=0; i<NBYTES; i += 10) { + for (i = 0; i < NBYTES; i += 10) { printf("/* %4d */ ",i); - for (j=i; j<i+10; j++) { + for (j = i; j < i+10; j++) { x = data_table[j] & 0377; printf(" %3d, ",x); } @@ -1122,27 +1102,30 @@ main(argc, argv) /* check message to make sure it's legal */ j = 0; - for (i=0; i<nchars; i++) - if (asc_ptr[message[i]] == 0) { - printf("The character '%c' is not in my character set.\n",message[i]); + for (i = 0; i < nchars; i++) + if ((u_char) message[i] >= NCHARS || + asc_ptr[(u_char) message[i]] == 0) { + warnx("The character '%c' is not in my character set", + message[i]); j++; } - if (j) exit(1); + if (j) + exit(1); if (trace) printf("Message '%s' is OK\n",message); /* Now have message. Print it one character at a time. */ - for (i=0; i<nchars; i++) { + for (i = 0; i < nchars; i++) { if (trace) printf("Char #%d: %c\n", i, message[i]); - for (j=0; j<DWIDTH; j++) line[j] = ' '; - pc = asc_ptr[message[i]]; + for (j = 0; j < DWIDTH; j++) line[j] = ' '; + pc = asc_ptr[(u_char) message[i]]; term = 0; max = 0; linen = 0; - while ( !term ) { - if (pc<0 || pc > NBYTES) { + while (!term) { + if (pc < 0 || pc > NBYTES) { printf("bad pc: %d\n",pc); exit(1); } @@ -1154,13 +1137,13 @@ main(argc, argv) x = x & 63; while (x--) { if (print[linen++]) { - for (j=0; j<=max; j++) + for (j=0; j <= max; j++) if (print[j]) putchar(line[j]); putchar('\n'); } } - for (j=0; j<DWIDTH; j++) line[j] = ' '; + for (j = 0; j < DWIDTH; j++) line[j] = ' '; pc++; } else { |