home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / bbs_door / cdrutil.arj / CDRUTIL.C
C/C++ Source or Header  |  1990-09-15  |  7KB  |  214 lines

  1. /*
  2.    Copyright (C) 1988-1990 The GAP Development Company
  3.  
  4.    ALL RIGHTS RESERVED
  5.  
  6.    RESTRICTIONS APPLY
  7.    
  8.    This source code is considered to be confidential information proprietary
  9.    to The GAP Development Company.  It is prohibited and punishable by law
  10.    to use or duplicate any part of this information without express consent
  11.    from GAP Development Company.
  12.  
  13.    This source code is licensed to registered GAPCDR users and at all times
  14.    remains the property of GAP Development Company.  This source code may
  15.    not, under any circumstance, be placed in a library for general use, nor
  16.    may it be used by any person not registered with GAP Development Company
  17.    as a Licensed GAPCDR user.
  18.  
  19.    Any GAPCDR Licensee is granted express permission to use this file,
  20.    and incorporate the routines contained herein in any program that
  21.    the licensee creates that uses GAPCDR.
  22.  
  23.    All other uses of this file are STRICTLY PROHIBITED.
  24.  
  25.  
  26.    CDRUTIL.C
  27.  
  28.    Utility functions for GAPCDR
  29.  
  30.    New utility functions for GAPCDR will be included here as they
  31.    become available.
  32. */
  33.  
  34. #define LINT_ARGS
  35.  
  36. #pragma check_stack(off)                  // we dont need stack checking
  37. #pragma pack(1)                           // Structures MUST be packed
  38.  
  39.  
  40. #include <stdio.h>
  41. #include <string.h>
  42.  
  43. #include <gapcdr.h>                       // door include file
  44.  
  45.  
  46.    extern void pascal rw_doorsys(void);
  47.  
  48.  
  49.    // Function to read the DOOR.SYS file, make changes to security
  50.    // level and time credits, and write out a new file.
  51.    // Has no error checking so you may want to check for EOF, error
  52.    // writing to stream, etc.
  53.    
  54.    // GAPBBS will read the fields from DOOR.SYS that are marked with
  55.    // an '*' in the DOORSYS.TXT file
  56.  
  57.  
  58. void pascal rw_doorsys(void)
  59. {
  60.    register short r;
  61.    short level;
  62.    short tcredit;
  63.    short shortnum;
  64.    long  longnum;
  65.  
  66.    char newdoor  [81];
  67.    char olddoor  [81];
  68.    
  69.    FILE *doorsys;
  70.    FILE *oldsys;
  71.  
  72.    sprintf(olddoor, "%s\\DOOR.OLD", bbs_dir);  // name for old DOOR.SYS
  73.    sprintf(newdoor, "%s\\DOOR.SYS", bbs_dir);  // name for new DOOR.SYS
  74.  
  75.    // first see if there is an old DOOR.SYS file and remove it if there
  76.  
  77.    if ( (access1(olddoor)) == 0)          // file is there
  78.       unlink(olddoor);                    // remove it
  79.  
  80.    // rename the file, return if unsuccessful
  81.  
  82.    if ( (rename(newdoor,olddoor)) != 0)
  83.       return;
  84.  
  85.    // open the original DOOR.SYS (DOORSYS.OLD), return if unsuccessful
  86.  
  87.    if ( (oldsys = fopen(olddoor,"rt")) == NULL)
  88.       return;
  89.  
  90.    // open the new DOOR.SYS, if unsuccessful, close old file and return
  91.  
  92.    if ( (doorsys = fopen(newdoor,"w+t")) == NULL)
  93.       {
  94.       fclose(oldsys);
  95.       return;
  96.       }
  97.  
  98.    // read old file, write new file
  99.  
  100.    for (r = 1; r < 15; r++)
  101.       {
  102.       fgets(anystring,99,oldsys);         // read old file
  103.       fputs(anystring,doorsys);           // write new file
  104.       }
  105.  
  106.    fscanf(oldsys,"%d",&level);            // get security level
  107.    fgets(anystring,99,oldsys);            // get the CR/LF
  108.  
  109.  
  110.    // if you intend to change the security level, do it here
  111.  
  112.    fprintf(doorsys,"%d\n",level);         // write security level
  113.  
  114.    for (r = 1; r < 8; r++)
  115.       {
  116.       fgets(anystring,99,oldsys);         // read old file
  117.       fputs(anystring,doorsys);           // write new file
  118.       }
  119.  
  120. do_again:
  121.  
  122.    fgets(anystring,99,oldsys);            // forums registered in
  123.    fputs(anystring,doorsys);              // write it
  124.  
  125.    if ((strlen(anystring)) == 98)         // if there is more to read
  126.       goto do_again;                      // then read it in
  127.  
  128.    for (r = 1; r < 5; r++)
  129.       {
  130.       fgets(anystring,99,oldsys);         // read old file
  131.       fputs(anystring,doorsys);           // write new file
  132.       }
  133.  
  134.    fscanf(oldsys,"%ld",&longnum);        // get Upload Count
  135.    fgets(anystring,99,oldsys);           // get the CR/LF
  136.  
  137.    // if you intend to change the number of uploads, do it here
  138.  
  139.    fprintf(doorsys,"%ld\n",longnum);      // write number of uploads
  140.  
  141.    fscanf(oldsys,"%ld",&longnum);         // get Download Count
  142.    fgets(anystring,99,oldsys);            // get the CR/LF
  143.  
  144.    // if you intend to change the number of downloads, do it here
  145.  
  146.    fprintf(doorsys,"%ld\n",longnum);      // write number of downloads
  147.  
  148.    fscanf(oldsys,"%ld",&longnum);         // get current bytes
  149.    fgets(anystring,99,oldsys);            // get the CR/LF
  150.  
  151.    // if you intend to change the current download bytes, do it here
  152.    // Note that this long number is the current bytes / 1000
  153.    // if you change this field, you will truncate the current bytes
  154.    // since GAP keeps track of each byte!
  155.  
  156.    fprintf(doorsys,"%ld\n",longnum);      // write current down bytes (/1000)
  157.  
  158.    for (r = 1; r < 12; r++)
  159.       {
  160.       fgets(anystring,99,oldsys);         // read old file
  161.       fputs(anystring,doorsys);           // write new file
  162.       }
  163.    
  164.    fscanf(oldsys,"%d",&tcredit);          // get time credits
  165.    fgets(anystring,99,oldsys);            // get the CR/LF
  166.  
  167.    // if you intend to change the time credits, do it here
  168.    // time credits can be either positive or negative
  169.  
  170.    fprintf(doorsys,"%d\n",tcredit);       // write time credits
  171.  
  172.    for (r = 1; r < 5; r++)
  173.       {
  174.       fgets(anystring,99,oldsys);         // read old file
  175.       fputs(anystring,doorsys);           // write new file
  176.       }
  177.  
  178.    fscanf(oldsys,"%d",&shortnum);         // get Current Files Downloaded
  179.    fgets(anystring,99,oldsys);            // get the CR/LF
  180.  
  181.    // if you intend to change current files downloaded today, do it here
  182.  
  183.    fprintf(doorsys,"%d\n",shortnum);      // write current files downloaded
  184.  
  185.    fscanf(oldsys,"%ld",&longnum);         // get total bytes uploaded
  186.    fgets(anystring,99,oldsys);            // get the CR/LF
  187.  
  188.    // if you intend to change total bytes uploaded, do it here
  189.    // Note that this long number is the total bytes / 1000
  190.    // if you change this field, you will truncate the total bytes uploaded
  191.    // since GAP keeps track of each byte!
  192.  
  193.    fprintf(doorsys,"%d\n",longnum);       // write total bytes uploaded
  194.  
  195.    fscanf(oldsys,"%ld",&longnum);         // get current bytes downloaded
  196.    fgets(anystring,99,oldsys);            // get the CR/LF
  197.  
  198.    // if you intend to change total bytes downloaded, do it here
  199.    // Note that this long number is the total bytes / 1000
  200.    // if you change this field, you will truncate the total bytes downloaded
  201.    // since GAP keeps track of each byte!
  202.  
  203.    fprintf(doorsys,"%d\n",longnum);       // write total bytes downloaded
  204.  
  205.    for (r = 1; r < 4; r++)                // do the rest of the file
  206.       {
  207.       fgets(anystring,99,oldsys);         // read old file
  208.       fputs(anystring,doorsys);           // write new file
  209.       }
  210.  
  211.    fclose(oldsys);                        // close old file
  212.    fclose(doorsys);                       // close new file
  213. }
  214.