|
|
1.1 root 1: /* UTILSTRD.C */
2:
3: /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
4:
5: #include "sbbs.h"
6: #include "uti.h"
7:
8: #define READ 1
9: #define WRITE 2
10:
11: int main(int argc, char **argv)
12: {
13: char *p,str[256],name[256],mode=0;
14: int i,file;
15: uint usernumber;
16: time_t ptr;
17: FILE *stream;
18:
19: PREPSCREEN;
20:
21: printf("Synchronet UTILSTRD v%s\n",VER);
22:
23: if(argc<4)
24: exit(1);
25:
26: if(!stricmp(argv[1],"READ"))
27: mode=READ;
28: else if(!stricmp(argv[1],"WRITE"))
29: mode=WRITE;
30: if(!mode)
31: exit(1);
32:
33: uti_init("UTILSTRD",argc,argv);
34:
35: if(mode==READ) {
36: if((file=nopen(argv[2],O_CREAT|O_TRUNC|O_WRONLY))==-1)
37: exit(2); }
38: else {
39: if((file=nopen(argv[2],O_RDONLY))==-1)
40: exit(2); }
41:
42: if((stream=fdopen(file,"wb"))==NULL)
43: exit(2);
44:
45:
46: strcpy(name,argv[3]); /* build the user name */
47: for(i=4;i<argc;i++) {
48: strcat(name," ");
49: strcat(name,argv[i]); }
50:
51: sprintf(str,"%sUSER\\NAME.DAT",data_dir);
52: if((file=nopen(str,O_RDONLY))==-1)
53: exit(8);
54:
55: usernumber=1;
56: while(!eof(file)) {
57: read(file,str,LEN_ALIAS+2);
58: str[25]=0;
59: p=strchr(str,3);
60: if(p) *p=0;
61: if(!stricmp(str,name))
62: break;
63: usernumber++; }
64: if(stricmp(str,name)) {
65: printf("Username '%s' not found.\n",name);
66: exit(9); }
67: close(file);
68:
69: sprintf(str,"%sUSER\\PTRS\\%4.4u.IXB",data_dir,usernumber);
70: if((file=nopen(str,mode==READ ? O_RDONLY : O_WRONLY|O_CREAT))==-1)
71: exit(10);
72: for(i=0;i<total_subs;i++) {
73: lseek(file,((long)sub[i]->ptridx)*10L,SEEK_SET);
74: if(mode==READ) {
75: read(file,&ptr,4);
76: fprintf(stream,"%lu\r\n",ptr); }
77: else {
78: fgets(str,81,stream);
79: ptr=atol(str);
80: write(file,&ptr,4); } }
81: close(file);
82: printf("\nDone.\n");
83: bail(0);
84: return(0);
85: }
86:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.