home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / filesbbs / dos / sbbs_src.exe / SBBS / UTI / UTILSTRD.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-25  |  1.6 KB  |  87 lines

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