bool newrc
, already
, argfirst
= 0;
int rcfirst
, lastmsg
, firstmsg
;
ruptible
= signal(SIGINT
, SIG_IGN
) == SIG_DFL
;
if (isdigit(argv
[0][0])) {
} else switch (argv
[0][1]) {
fprintf(stderr
, "usage: msgs [ -f ] [ number ]\n");
if (chdir(getenv("HOME")) < 0)
perror(getenv("HOME")), exit(1);
msgsrc
= fopen(".msgsrc", "r");
fscanf(msgsrc
, "%d\n", &i
);
msgsrc
= fopen(".msgsrc", "w");
perror(".msgsrc"), exit(1);
if (chdir("/usr/msgs") < 0)
perror("/usr/msgs"), exit(1);
bounds
= fopen("bounds", "r");
FILE *d
= fopen(".", "r");
perror("/usr/msgs"), exit(1);
while (fread(&dirent
, sizeof dirent
, 1, d
) == 1) {
register char *cp
= dirent
.d_name
;
i
= i
* 10 + *cp
++ - '0';
bounds
= fopen("bounds", "w");
perror("bounds"), exit(1);
fprintf(bounds
, "%d %d\n", firstmsg
, lastmsg
);
fscanf(bounds
, "%d %d\n", &firstmsg
, &lastmsg
);
sprintf(newname
, "%d", lastmsg
+1);
bounds
= fopen("bounds", "w");
perror("bounds"), exit(1);
fprintf(bounds
, "%d %d\n", firstmsg
, lastmsg
+1);
newm
= fopen(newname
, "w");
fprintf(stderr
, "/usr/msgs/"), perror(newname
), exit(1);
for (i
= firstmsg
; i
<= lastmsg
; i
++) {
fseek(msgsrc
, (long) 0, 0);
fprintf(msgsrc
, "%d\n", nextty
);
printf("There are new messages.\n");
fseek(msgsrc
, (long) 0, 0);
fprintf(msgsrc
, "%d\n", nextty
);
printf("Message %d:\n", i
);
fgets(inline, sizeof inline, f
);
if (fgets(inline, sizeof inline, f
)) {
if (strcmp(inline, "To: msgs\n") != 0 && inline[0] != '\n')
if (fgets(inline, sizeof inline, f
) && inline[0] != '\n')
printf("(%d more lines)", linecnt(f
));
printf("(continue) [yq] ");
printf(" type [ynq] ? ");
fgets(inline, sizeof inline, stdin
);
if (isdigit(inline[0])) {
sscanf(inline, "%d", &i
);
printf("--Goto %d--\n", i
);
if (inline[0] == 'n' || inline[0] == 'N') {
fseek(msgsrc
, (long) 0, 0);
fprintf(msgsrc
, "%d\n", nextty
);
printf("No messages.\n");
while (fgets(lbuf
, sizeof lbuf
, f
))