diff options
author | John Kohl <jtkohl@mit.edu> | 1988-11-22 06:32:49 +0000 |
---|---|---|
committer | John Kohl <jtkohl@mit.edu> | 1988-11-22 06:32:49 +0000 |
commit | c0237ad5afdbdc4ec070f464e7da4de46f0e3b7d (patch) | |
tree | 96f231de189e7266fcaa51ce36d067802771ccf6 | |
parent | e8ded555fe444b57d1391ce4f308742b29dcc6dc (diff) |
fix up signature stuff a bit
-rw-r--r-- | clients/zwrite/zwrite.c | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/clients/zwrite/zwrite.c b/clients/zwrite/zwrite.c index 405c4fa..ac9af16 100644 --- a/clients/zwrite/zwrite.c +++ b/clients/zwrite/zwrite.c @@ -135,6 +135,12 @@ main(argc, argv) inst = fix_filsrv_inst(argv[arg]); filsys = 1; break; + case 's': + if (arg == argc-1) + usage(whoami); + arg++; + signature = argv[arg]; + break; case 'm': if (arg == argc-1) usage(whoami); @@ -181,23 +187,22 @@ main(argc, argv) message = NULL; msgsize = 0; if (signature) { - message = malloc((unsigned)(strlen(signature)+sizeof("From: ")+2)); - (void) strcpy(message, "From: "); - (void) strcat(message, signature); + message = malloc((unsigned)(strlen(signature)+2)); + (void) strcpy(message, signature); msgsize = strlen(message); message[msgsize++] = '\n'; message[msgsize++] = '\0'; + } else { + message = malloc(1); + message[msgsize++] = '\0'; } - + if (msgarg) { int size = msgsize; for (arg=msgarg;arg<argc;arg++) size += (strlen(argv[arg]) + 1); size++; /* for the newline */ - if (message) - message = realloc(message, (unsigned) size); - else - message = malloc((unsigned) size); + message = realloc(message, (unsigned) size); for (arg=msgarg;arg<argc;arg++) { (void) strcpy(message+msgsize, argv[arg]); msgsize += strlen(argv[arg]); @@ -217,11 +222,7 @@ main(argc, argv) if (bfr[0] == '.' && (bfr[1] == '\n' || bfr[1] == '\0')) break; - if (message) - message = realloc(message, - (unsigned)(msgsize+strlen(bfr))); - else - message = malloc((unsigned)strlen(bfr)); + message = realloc(message, (unsigned)(msgsize+strlen(bfr))); (void) strcpy(message+msgsize, bfr); msgsize += strlen(bfr); } @@ -234,18 +235,12 @@ main(argc, argv) fprintf(stderr, "Read error from stdin! Can't continue!\n"); exit(1); } - if (message) - message = realloc(message, (unsigned)(msgsize+nchars)); - else - message = malloc((unsigned)nchars); + message = realloc(message, (unsigned)(msgsize+nchars)); bcopy(bfr, message+msgsize, nchars); msgsize += nchars; } /* end of msg */ - if (message) - message = realloc(message, (unsigned)(msgsize+1)); - else - message = malloc((unsigned) 1); + message = realloc(message, (unsigned)(msgsize+1)); message[msgsize++] = '\0'; /* null-terminate */ } } |