home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / WWIVMODS / MODSUNKN.ZIP / FILELIST.MOD < prev    next >
Text File  |  1990-09-18  |  6KB  |  193 lines

  1. Xennon #22 @4357
  2. Wed Aug 29 21:16:19 1990
  3. 7[2 Msg Status7 ] 1No reply needed.
  4. 7══════════════════════════════════════════════════════════════════════════════
  5.  
  6.  
  7. ┌─────────────────────────────────────┐
  8. │ Mod #2: Master file list generator! │
  9. └─────────────────────────────────────┘
  10.  
  11. This concept for this mod was stolen from other BBS programs which
  12. allow the SysOp to generate a master file list for users to D/L.
  13. This mod, creates the list, ZIPs it, and presents it for D/L for the
  14. user.  Only the directories in the user's Q-Scan are included.  To
  15. generate a 360 file listing on "The Romper Room" requires about 45
  16. seconds, including ZIP time (we run on an 80286/10).
  17.  
  18. Installation:
  19.  
  20. At the end of FCNS.H, add the following line:
  21.  
  22.         void master_list();
  23.  
  24. Save FCNS.H and load BBS.C.  Search for the following line(s).
  25.  
  26.   if ((strcmp(s,"UPLOAD")==0) && (dcs()))
  27.     uploadall(udir[curdir].subnum);
  28.  
  29. Add the following lines:
  30.  
  31.   if (strcmp(s,"MASTER")==0)
  32.     master_list();
  33.  
  34. Block copy the following procedure into a seperate file, or append it
  35. to the exisiting XFER.C file.  I suggest block saving it to a file named
  36. MASTLIST.C (remember to include it in your project file).  You will
  37. want to change the ZIP file name to something suitable for your BBS -
  38. this copy has ROMPROOM.ZIP coded in it.  Also, the BBS name in the
  39. header line will need to be customized for your BBS.
  40.  
  41.  
  42. /*  Master File list generator, version 2.0.  Written by Ryan Gran */
  43. /*  (aka Kellogg) for WWIV BBS systems.                            */
  44.  
  45. #include "vardec.h"
  46. #include "fcns.h"
  47. #include <stdio.h>
  48.  
  49. #define SETREC(i)  lseek(dlf,((long) (i))*((long)sizeof(uploadsrec)),SEEK_SET);
  50.  
  51. extern int num_dirs, numf, dlf,curdir, num_listed;
  52. extern int hangup;
  53. extern directoryrec directories[64];
  54. extern configrec syscfg;
  55. extern usersubrec udir[64];
  56. extern userrec thisuser;
  57.  
  58. void master_list()
  59. {
  60. FILE *master, *temp;
  61. int i,i2,i3,pts,ocd,totfiles,extended_info,send,abort;
  62. char s1[81],s2[81],s3[81],ch;
  63. uploadsrec u;
  64. unsigned long totbytes;
  65. char *ss;
  66. long numbytes;
  67.  
  68. nl();
  69. outstr("2[E]1nhanced or 2[C]1ondensed file listing: 2");
  70. ch=onek("CE");
  71. switch(ch) {
  72.    case 'E':
  73.       extended_info=1;
  74.       break;
  75.    case 'C':
  76.       extended_info=0;
  77.       break;
  78.    }
  79.  
  80. totfiles=0;
  81. totbytes=0;
  82. ocd=curdir;
  83. sprintf(s1, "%sMASTER.LST",syscfg.tempdir);
  84. master = fopen(s1, "wt");
  85. fprintf(master,"\n The Romper Room BBS - Master file listing as of %s\n\n",atime());
  86. nl();
  87. outstr("2Please wait, now creating 1MASTER.LST3.");
  88. for (i=0; (i<=64) && (!hangup); i++) {
  89.     pts=0;
  90.     if (udir[i].subnum!=-1) {
  91.        if (i>=32) {
  92.           if (thisuser.nscn2 & (1L << i-32))
  93.              pts=1;
  94.        } else {
  95.              if (thisuser.nscn1 & (1L << i))
  96.              pts=1;
  97.        }
  98.     }
  99.  
  100.     if (pts) {
  101.        outstr("3.");
  102.        curdir=i;
  103.        dliscan();
  104.        sprintf(s1, "\n%s - #%s, %d files.\n", directories[udir[i].subnum].name,
  105.                                               udir[i].keys, numf);
  106.        fprintf(master,s1);
  107.        for(i2=0; i2<=(strlen(s1)-3); i2++)
  108.           fprintf(master,"-");
  109.           fprintf(master,"\n\n");
  110.  
  111.        totfiles=totfiles+numf;
  112.  
  113.        for(i3=1; i3<=numf; i3++) {
  114.           SETREC(i3);
  115.           read(dlf,(void *)&u,sizeof(uploadsrec));
  116.           fprintf(master,"%s :",u.filename);
  117.           ltoa((((u.numbytes)+1023)/1024),s2,10);
  118.           fprintf(master,"  %-4sk :",s2);
  119.           fprintf(master," %s\n",u.description);
  120.  
  121.           totbytes=totbytes+u.numbytes;
  122.  
  123.           if (extended_info==1) {
  124.              ss=read_extended_description(u.filename);
  125.              if (ss) {
  126.                 sprintf(s1,"%sTEMP.EXT",syscfg.tempdir);
  127.                 temp=fopen(s1,"wt");
  128.                 fprintf(temp,"%s",ss);
  129.                 fclose(temp);
  130.                 temp=fopen(s1,"rt");
  131.                 do {
  132.                    fgets(s2,81,temp);
  133.                    if (strcmp(s2,s3)==0)
  134.                       break;
  135.                    fprintf(master,"                        %s",s2);
  136.                    stpcpy(s2,s3);
  137.                 } while (!feof(temp));
  138.                 fclose(temp);
  139.                 unlink(s1);
  140.              }
  141.              farfree(ss);
  142.           }
  143.        }
  144.     }
  145.     closedl();
  146.  }
  147. nl();
  148. ltoa((((totbytes)+1023)/1024),s2,10);
  149. fprintf(master,"\n %d files, %-6sk bytes\n",totfiles,s2);
  150. numbytes=filelength(master);
  151. fclose(master);
  152. curdir=ocd;
  153. pl("2Now ZIPing MASTER.LST..");
  154. sprintf(s1,"PKZIP -A %sROMPROOM.ZIP %sMASTER.LST",syscfg.tempdir,syscfg.tempdir);
  155. i=run_external1(s1);
  156. sprintf(s1,"%sROMPROOM.ZIP",syscfg.tempdir);
  157. send=0;
  158. abort=0;
  159. nl();
  160. pl("Master file list generation completed.  Ready for transfer!");
  161. nl();
  162. send_file(s1, &send, &abort,0,"ROMPROOM.ZIP",-1,numbytes);
  163. topscreen();
  164. sprintf(s1,"%sMASTER.LST",syscfg.tempdir);
  165. unlink(s1);
  166. sprintf(s1,"%sROMPROOM.ZIP",syscfg.tempdir);
  167. unlink(s1);
  168. }
  169.  
  170.  
  171. You'll need to Build All, so unless you're fortunate enough to have
  172. access to a '386/'486 ... spend the registration money you want to
  173. send us on a steak dinner.
  174.  
  175. Look for more modifications by Kellogg & Xennon (or Xennon & Kellogg)!
  176. We hope to start providing the WWIV world with new ideas, such as this
  177. one.  We don't request any monitary payment for our modifications
  178. (if you have a spare SystemPro, collecting dust, we could be pursuaded
  179. to accept it), but PLEASE, net mail either of us, or call "The Romper
  180. Room BBS" at (508)/842-2472 (WWIV SysOps will receive automatic
  181. verification!).  WWIV SysOps and users are encouraged to net
  182. mail suggestions for modifications as well!
  183.  
  184. Disclaimer:
  185. It runs perfectly on The Romper Room BBS - if it causes your HD platters
  186. to sublime, or disrupts the flow of time, it's *YOUR* fault.  We shall
  187. hold no responsibility for any damages which you might try to blame on
  188. our mods. :>  But please, if you encounter a bug (no matter how small!)
  189. net mail us!
  190.  
  191.                        WWIVLink        WWIVNet
  192.                   Kellogg #1 @15802  <->  #5  @ 5808
  193.                   Xennon  #4 @15802  <->  #70 @ 5808