|
|
1.1 root 1: #include "uucp.h"
2: #include "sgtty.h"
3: #include "uucpdefs.h"
4: #include "signal.h"
5: #include ".secret"
6: #define SEP '\t'
7: #define MAXC 300
8:
9: /*******
10: * this program reads a file whose format is
11: * field1 SEP count field2
12: * and runs crypt on field2. Count is either blank (read to newline)
13: * or SEP followed by a count byte.
14: */
15:
16: main (argc,argv)
17: char *argv[];
18: {
19: char str[10];
20: char tl[MAXC], tr[MAXC], enc[MAXC];
21: int count, i, ln, clear;
22: FILE *fp1, *fp2;
23: struct sgttyb sb;
24: extern intrEXIT();
25:
26: signal(SIGQUIT, intrEXIT);
27: signal(SIGILL, intrEXIT);
28: signal(SIGTRAP, intrEXIT);
29: signal(SIGIOT, intrEXIT);
30: signal(SIGEMT, intrEXIT);
31: signal(SIGFPE, intrEXIT);
32: signal(SIGBUS, intrEXIT);
33: signal(SIGSEGV, intrEXIT);
34: signal(SIGSYS, intrEXIT);
35: if (argc < 3)
36: exit(100);
37: fp1 = fopen(argv[1], "r");
38: fp2 = fopen(argv[2], "w");
39: if (fp1 == NULL || fp2 == NULL)
40: exit(120);
41: gtty(0, &sb);
42: sb.sg_flags &= ~ECHO;
43: stty(0, &sb);
44: printf("Passwd:");
45: gets(str);
46: sb.sg_flags |= ECHO;
47: stty(0, &sb);
48: strcpy(tl, secret);
49: hdpw(str);
50: for (ln = 0;; ln++) {
51: if (gleft(tl, fp1) == 0) {
52: fclose(fp1);
53: fclose(fp2);
54: exit(0);
55: }
56: ASSERT(strlen(tl) < MAXC, "LEFT PART LONG %s", tl);
57: count = gright(tr, fp1, &clear);
58: ASSERT(count < MAXC, "RIGHT LONG %s", tr);
59: encrypt(tr, enc, ln, count);
60: fprintf(fp2, "%s%c", tl, SEP);
61: if (clear)
62: fprintf(fp2, "%c%c", SEP, count);
63: for(i = 0; i < count; i++)
64: putc(enc[i], fp2);
65: putc('\n', fp2);
66: }
67: }
68:
69:
70: /***
71: * rmlock(p) this is a dummy called in ASSERT
72: */
73: rmlock(p)
74: char *p;
75: {
76: return;
77: }
78: cleanup(code)
79: int code;
80: {
81: exit(code);
82: }
83:
84: intrEXIT() {_exit(77);}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.