|
|
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.