|
|
1.1 root 1: /* MAKEMSG.C */
2:
3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
4:
5: #include <dos.h>
6: #include <stdio.h>
7: #include <time.h>
8: #include "gen_defs.h"
9:
10: /****************************************************************************/
11: /* Converts a date string in format MM/DD/YY into unix time format */
12: /****************************************************************************/
13: time_t dstrtounix(char *str)
14: {
15: struct date date;
16: struct time curtime;
17:
18: if(!strcmp(str,"00/00/00") || !str[0])
19: return(NULL);
20: curtime.ti_hour=curtime.ti_min=curtime.ti_sec=0;
21: if(str[6]<'7')
22: date.da_year=2000+((str[6]&0xf)*10)+(str[7]&0xf);
23: else
24: date.da_year=1900+((str[6]&0xf)*10)+(str[7]&0xf);
25: date.da_mon=((str[0]&0xf)*10)+(str[1]&0xf);
26: date.da_day=((str[3]&0xf)*10)+(str[4]&0xf);
27: return(dostounix(&date,&curtime));
28: }
29:
30: uchar cryptchar(uchar ch, ulong seed)
31: {
32: if(ch==1)
33: return(0xfe);
34: if(ch<0x20 || ch&0x80) /* Ctrl chars and ex-ASCII are not xlated */
35: return(ch);
36: return(ch^(seed&0x1f));
37: }
38:
39: int main(int argc, char **argv)
40: {
41: char str[256];
42: FILE *in,*out;
43: int i,j;
44: long l;
45:
46: if(argc<4) {
47: printf("usage: makemsg infile outfile mm/dd/yy\n");
48: exit(1); }
49:
50: if((in=fopen(argv[1],"rb"))==NULL) {
51: printf("error opening %s\n",argv[1]);
52: exit(1); }
53:
54: if((out=fopen(argv[2],"wb"))==NULL) {
55: printf("error opening %s\n",argv[2]);
56: exit(1); }
57:
58: l=dstrtounix(argv[3]);
59: if(!l) {
60: printf("Invalid date %s\n",argv[3]);
61: exit(1); }
62: fprintf(out,"%lx\r\n",l^0x305F6C81UL);
63: i=ftell(out);
64: while(!feof(in)) {
65: if(!fgets(str,128,in))
66: break;
67: for(j=0;str[j];j++,i++)
68: fputc(cryptchar(str[j],l^(i&7)),out); }
69: return(0);
70: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.