summaryrefslogtreecommitdiff
path: root/clients/zwrite
diff options
context:
space:
mode:
authorGravatar John Kohl <jtkohl@mit.edu>1988-11-22 06:32:49 +0000
committerGravatar John Kohl <jtkohl@mit.edu>1988-11-22 06:32:49 +0000
commitc0237ad5afdbdc4ec070f464e7da4de46f0e3b7d (patch)
tree96f231de189e7266fcaa51ce36d067802771ccf6 /clients/zwrite
parente8ded555fe444b57d1391ce4f308742b29dcc6dc (diff)
fix up signature stuff a bit
Diffstat (limited to 'clients/zwrite')
-rw-r--r--clients/zwrite/zwrite.c37
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 */
}
}