home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / SYSOP / MODS1.ZIP / 666-003B.MOD < prev    next >
Text File  |  1993-07-26  |  21KB  |  547 lines

  1. 1[6666-003B.MOD1]2 - Super G-Files 2.00 - BEST G-file mod
  2. ``Satan`` WWIVlink #1 AT 17320
  3. Wed Jul 21 21:59:46 1993
  4. 0R: net33: @870 (via @3469) [20:55 07/26/93]
  5. 0R: net33: @1021 (via @1040) [00:13 07/26/93]
  6. 0R: net33: @1040 (via @2050) [10:42 07/25/93]
  7. 0R: net33: @2050 [10:14 07/25/93]
  8. 0R: net33: @2050 (via @1040) [00:17 07/25/93]
  9. 0R: net33: @1040 (via @1023) [00:13 07/25/93]
  10. 0R: net33: @1023 (via @3454) [20:56 07/24/93]
  11. 0R: net33: @3454 [18:52 07/24/93]
  12. 0R: net33: @13468 (via @13900) [08:03 07/24/93]
  13. 0R: net33: @13900 (via @17313) [03:02 07/24/93]
  14. 0R: net33: @17310 (via @17320) [23:30 07/21/93]
  15. 0R: net33: @17320 [22:02 07/21/93]
  16. ─────────────────────────────────────────────────────────────────────────────
  17.          .°                     666-003B.MOD                       °.
  18.          ∙                   Super G-Files 2.00                     ∙
  19.           °∙. The Best G-File Section You Could _Possibly_ Have! .∙°
  20.  
  21.                 By Satan, WWIVlink #1 @17320, WWIVnet #1 @7326
  22.                           lipinski@csugrad.cs.vt.edu
  23.         Sysop:  On Earth As It Is In Hell, Virginia Tech (703) 2-2592
  24.                   telnet vtcbx.cc.vt.edu and type "C 22592"
  25. ─────────────────────────────────────────────────────────────────────────────
  26. The G-Files have been one of the most-ignored features in WWIV.  This is
  27. because they very hard to manage, and they are simply not too interesting
  28. to a user because it is very time-consuming and a user cannot DOWNLOAD the
  29. G-Files.  This modification changes everything.  It also makes your GFILES.C
  30. about 5 times bigger.
  31.  
  32. This mod represents days of my work.  I think I can safely say that this is
  33. the best G-Files mod that exists.  I am hoping that some of this code gets
  34. to Wayne Bell and that he uses some of it in stock WWIV 4.23 or 4.24.
  35.  
  36. Enough talk...
  37.  
  38.  
  39. MAJOR FEATURES  (ones with "■" by them are ones *NOT* fully credited to)
  40. ──────────────  (ones with "█" by them are new for version 2.00)
  41. ■ DOWNLOADable G-File sections (ZIPs it beforehand)
  42. ■ SEARCH a specific G-File for specific text
  43. █ Can quickly MOVE G-Files from one section to another w/o re-typing descript.
  44. █ One-Key PURGING of any invalid G-File entries ("File Not Found" G-Files)
  45. █ Can REDESCRIBE (Rename) G-Files without having to delete and then add
  46.   NEW G-FILE SCAN after scanning messages / files
  47.   Each G-File section can optionally have its own BULLITEN
  48.   Search a G-File SECTION for specific text
  49.   G-File section itself can have a bulliten
  50. █ Individual cosysop access flags for G-File Moving, Adding, Global-Adding,
  51.      Deleting, Renaming, and Purging
  52.  
  53. NOT-AS-MAJOR FEATURES
  54. ─────────────────────
  55.   When G-Files are downloaded, an SSM is sent to the sysop
  56. ■ When G-Files are downloaded, it is put into the //LOG
  57.   Color allowed for G-File Descriptions
  58.   Color allowed for G-File SECTION Descriptions
  59.   Support added for keeping color AND STILL lining up filenames in GFLEDIT
  60. █ Support added for clearing the rest of the line in an efficient way (now
  61.     done with the clear_to_eol ansi code instead of just outputting a buncha
  62.     spaces, and also works with any screen width)
  63. █ Support added for keeping colors in context, for example if a subname was
  64.     Really 6GROSS 0Stuff, the question for download would look like:
  65.        5Download Really 6GROSS 5Stuff?
  66.     instead of
  67.        5Download Really 6GROSS 0Stuff?
  68.   Support added for converting inputs to color inputs, and other color support
  69.   G-File Section checking done efficiently (if the .GFL file's dos date is not
  70.     greater than the N-Scan date, the section will not be checked, as this is 
  71.     unnecesary) (patterned after the file scan mod that does the same)
  72. █ Can ABORT the G-File Scan
  73. █ If G-File Scan is aborted, user is notified of abortion
  74. █ 'X' & 'S' commands are displayed for normal users (forgot in old versions)
  75. █ The 'A' main-Gfiles command is displayed for those who didn't know it existed
  76. █ Can abort G-File searches
  77. █ Searches no longer pause and clear the screen between each file
  78.  
  79.  
  80. EASE-OF-INSTALLATION FEATURES
  81. ─────────────────────────────
  82. █ Multiline #define (allows users of Arc Angel's Multi-Line mod to be able to
  83.     add this without any kind of modification)
  84. █ Old_pausescr #define (allows users of 666-004.MOD who have a void
  85.     old_pausescr to be able to utilize old_pausescr if so desired)
  86. █ Define's for standard colors so if you have stock WWIV, you can compile w/o
  87.     fear
  88. █ Define's for extended colors so you don't have to search through and change
  89. █ Define's for context_prt (very minor, since I included it in the mod)
  90. █ Use of tacky inli2 function no longer necesary (actually, it never was)
  91.  
  92.  
  93. OTHER MODS PUT IN HERE VERY EASILY
  94. ──────────────────────────────────
  95. █ Documented in code.  Read all comments.
  96.  
  97.  
  98. A NOTE ON VERSION NUMBERS
  99. ─────────────────────────
  100. I use 4.22 Multiline.  However, if you are only running 4.21(a) or 
  101. even (maybe) 4.12, there shouldn't be too many problems with running 
  102. this mod.  Just replace the "get_string(x)" statements with the 
  103. original string that you have in your source.  If you need a list 
  104. of what they all are, email me.  I attempted to place some as 
  105. comments next to the get_string call for a bit of help.
  106.  
  107.  
  108. A NOTE ON WARNINGS
  109. ──────────────────
  110. Warnings GOOD.  Me like warnings.  5 warnings in function find (gfiles.c).
  111. Me not worry; You no worry either or _ME BASH_!
  112.  
  113.  
  114. NON-PROGRAMMING STUFF YOU'LL NEED TO [OPTIONALLY] DO:
  115. ─────────────────────────────────────────────────────
  116. G-File Section Bullitens:  If your G-File "Filename" (Directory 
  117. Name) is GENERAL, then you may optionally create a file called 
  118. GENERAL.NFO that will be displayed upon a user entering the General 
  119. G-File Section.  This is good for disclaimers (x-rated sections) 
  120. and requests for text-files.  By the same token, "GFILE.MSG" is 
  121. the name of the bulliten (if any) to be displayed upon entering
  122. the G-Files at all.  You might want GFILE.MSG to post a bulliten
  123. of wanted G-Files.
  124.  
  125.  
  126. INHERENT MODS?  (What a novel concept)
  127. ──────────────
  128. Yes, many.  With some simple replacements, a sysop could colorize 
  129. EVERYTHING IN THE BOARD, almost literally.
  130.  
  131. Basically, if you want to very simply make EVERY lower-case input
  132. that *EXISTS* in the board to a color input, replace the one line
  133. in function inputl (this is in com.c) with this line:
  134.   inli(s,"",len,1);
  135.  
  136. If you want to allow color on an individual basis, change any inputl
  137. statements like this:
  138.   inputl(s3,23);       /* change this */
  139.   inli(s3,"",23,1); /* to this */
  140.  
  141. This works for message titles as well.
  142.  
  143.  
  144. CREDITS
  145. ───────
  146. 1 @15101 (?) - Individual G-File Searching Mod (didn't do sections)
  147. WafWot #2 @2632 - G-File Download Mod (WAF017.MOD)
  148. Archangel (410-732-2501) - MultiLine Mod (call & leech BOTH auto-inst mods)
  149.                            and file_copy/supporting functions used in my mod
  150. Midnight Tree Bandit #1 @18411 - Message Extraction to G-File Mod
  151. Anybody I missed - Don't hesitate to E-Mail me
  152. Special thanks to Bill The Cat #1 @17321 WWIVLink/1@1 FearNet for Beta-Testing
  153.  
  154.  
  155. QUICK COMMENTARY
  156. ────────────────
  157. You may have noticed I do not have uploading included here.  First 
  158. off, I'm not THAT good (well, I am, but I'm not that AMBITIOUS...
  159. Yeah... that's the ticket...<grin>).  Second off, I don't think a
  160. G-File section should have uploading.  A G-File section to me is a
  161. sysop-maintained text file archive, basically allowing you to preview
  162. a file while online and/or download at your leisure.
  163.  
  164. Also, note that if you REALLY want a g-file to appear first, you can
  165. just do something like put a ^P0^P0 before it... Since ^P is represented
  166. as ^C, that SHOULD be the lowest character you can INPUT into the description,
  167. and thus should gaurantee the file being at the beginning of the section.  If
  168. you DON'T like this, comment out the #define SORT_USES_COLORS in GFLEDIT.C,
  169. and make sure you have Tokien's strip_wwiv function (I have it if you want it).
  170.  
  171.  
  172. ─────────────────────────────────────────────────────────────────────────────
  173. STEP 1 ── GFILES.C ─- *** REPLACE YOUR WHOLE GFILES.C WITH THIS: ***
  174. ─────────────────────────────────────────────────────────────────────────────
  175. Make sure you take a look at the GFILES.C - there are some #defines
  176. that you may need to recon with.  (most of you will probabaly want
  177. to comment out the #define MULTILINE, for example, but it MAY be
  178. compatible with 4.23 (can't think of why it wouldn't), so you can
  179. simply re-#define it when you upgrade and try to use this mod again.)
  180.  
  181.  
  182. [***GFILES.C IS THE NEXT POST***]
  183.  
  184.  
  185. ─────────────────────────────────────────────────────────────────────────────
  186. STEP 2 ─- MSGBASE1.C ─- Improvements to N-Scan and Extract-A-Msg
  187. ─────────────────────────────────────────────────────────────────────────────
  188. Either replace this, or modify it accordingly:
  189.  
  190. void nscan(int ss)                                  
  191. {
  192.   int i,nextsub,abort,next;
  193.  
  194.   nl();
  195.   nextsub=1;
  196.   prt(3,get_string(695));
  197.  
  198.   nl();
  199.   for (i=ss;(usub[i].subnum!=-1) && (i<num_subs) && (nextsub) && 
  200.         (!hangup);i++){
  201.     if (qsc_q[usub[i].subnum/32]&(1L<<(usub[i].subnum%32)))
  202.       qscan(i,&nextsub);
  203.     abort=next=0;
  204.     checka(&abort,&next);
  205.     if (abort)
  206.       nextsub=0;
  207.   }
  208.   nl();
  209.   prt(3,get_string(696));
  210.   nl();
  211.   nl();
  212.  
  213. /* Most users don't finish their q-scan; I decided it's better to 
  214.    show them the new files and G-files even if they quit...
  215.   if ((nextsub) && (thisuser.sysstatus & sysstatus_nscan_file_system) && */
  216.  
  217.   if ((thisuser.sysstatus & sysstatus_nscan_file_system) &&
  218.      ((syscfg.sysconfig & sysconfig_no_xfer)==0)) {
  219.     nl();
  220.     prt(3,"<< Scanning For New Files >>"); nl();
  221.     nl();
  222.     nscanall();
  223.     nl(); nl();
  224.     prt(3,"<< Global New-File Scan Done >>"); nl();
  225.   }
  226.   nl(); nl();
  227.   gfilescan();
  228.   pausescr();   //may want to remove this line depending on your bbs
  229. }
  230.  
  231. /* Special note:  I worked quite a long time just to get the cosmetic
  232.    nl();'s to be uniform with all 3 scans */
  233.  
  234.  
  235. Now, replace void extract_out with my modified version of Midnight Tree
  236. Bandit's MTBEXTR2.MOD:
  237.  
  238.  
  239.  
  240. #define MULTILINE   /* AGAIN take out if you aren't multiline */
  241.  
  242. void extract_out(char *b, long len, char *title) {
  243.   char s1[81],s2[81],s3[81],ch=26,ch1;  /* added s3[81] */
  244.   int i,n;                              /* added n */    
  245.   gfiledirrec r;
  246.  
  247.   do {
  248.     prt(7,">>> ");prt(9,"Available G-File Directories");prt(7," <<<");
  249.     nl();nl();
  250.     for (i=0; i<num_sec; i++) {
  251.       r=gfilesec[i];
  252.       sprintf(s1,"[%d] - %s",i,r.name);
  253.       pl(s1);
  254.     }
  255.     nl(); prt(2,"Save to which Gfile Directory?" ); nl();
  256.     prt(2,"<Enter> to Abort : ");
  257.     input(s3,2);
  258.     if ((s3[0]) && (strcmp(s3,"0")!=0)) {
  259.       n=atoi(s3);
  260.       if ((n<=0) || (n>=i)) {
  261.         npr("1%s3 is not a valid GFiles directory number.",s3);
  262.         s3[0]=0;
  263.       }
  264.     }
  265.     if (s3[0]) {
  266.       n=atoi(s3);
  267.       r=gfilesec[n];
  268.       sprintf(s3,"%s",r.filename); nl();
  269.       prt(2,"Save under what filename? ");
  270.       mpl(12);
  271.       input(s1,12);
  272.       if (s1[0]) {
  273.         sprintf(s2,"%s%s\\%s",syscfg.gfilesdir,s3,s1);  /* added in s3 */
  274.         if (exist(s2)) {
  275.           nl(); pl("Filename already in use."); nl();
  276.           prt(2,"O)verwrite, A)ppend, N)ew name, Q)uit? ");
  277.           ch1=onek("QOAN");
  278.           switch(ch1) {
  279.             case 'Q': s3[0]=0; s2[0]=0; s1[0]=0; break;
  280.             case 'N': s1[0]=0; break;
  281.             case 'A': break;
  282.             case 'O': unlink(s2); break;
  283.           }
  284.           nl();
  285.         }
  286.       } else s2[0]=0;
  287.     } else s3[0]=0;
  288.   } while ((!hangup) && (s2[0]!=0) && (s1[0]==0) && (s3[0]!=0));
  289.   if ((s1[0]) && (s3[0]) && (!hangup)) { 
  290. #ifdef MULTILINE
  291.     i=open_w(s2,0);
  292. #else
  293.     i=open(s2,O_RDWR | O_BINARY | O_CREAT , S_IREAD | S_IWRITE);
  294. #endif
  295.  
  296.     if (filelength(i)) {
  297.       lseek(i, -1L, SEEK_END);
  298.       read(i, ((void *)&ch1), 1);
  299.       if (ch1 == 26)
  300.         lseek(i, -1L, SEEK_END);
  301.     }
  302.     write(i,title,strlen(title));
  303.     write(i,"\r\n",2);
  304.     write(i,(void *)b,len);
  305.     write(i,&ch,1);
  306.     close(i);
  307.     npr("Message written to: %s.\r\n",s2);
  308.     ansic(2); npr("Please describe %s:",s2); nl();
  309.     inli(s2,"",60,1);
  310.     if (s2[0]) {
  311.       fill_sec(n,s1,s2);
  312.     } else
  313.       prt(2,"File not described!");
  314.   } else {
  315.     nl(); prt(6,"Aborted!"); nl();
  316.   }
  317.   farfree(b);
  318. }
  319.  
  320.  
  321. ─────────────────────────────────────────────────────────────────────────────
  322. STEP 3 ─- BBS.C ─- Add a /G command to scan new G-Files
  323. ─────────────────────────────────────────────────────────────────────────────
  324. Search for if (strcmp(s,"/E")==0) and add this right below:
  325.  
  326.  
  327.   if (strcmp(s,"/G")==0) {                                      //ADD-666
  328.     nl();
  329.     prt(3,"Use T and then P to change your G-File Scan date."); nl();
  330.     nl();
  331.     gfilescan();                                                //ADD-666
  332.   }                                                             //ADD-666
  333.  
  334.  
  335. ■ Update your menus! ■  (The fun never ends!!)
  336.  
  337.  
  338. ─────────────────────────────────────────────────────────────────────────────
  339. STEP 4 ─- GFLEDIT.C ─- REPLACE all of these functions, also watch #defines
  340. ─────────────────────────────────────────────────────────────────────────────
  341. #define MULTILINE        /* Again, COMMENT THIS OUT if you are not multiline */
  342. #define SORT_USES_COLORS /* See Documentation.  Erasing this line causes the
  343.                           * BBS to ignore color codes when adding files. This
  344.                           * will keep the sort a bit less "truely" alphabetic
  345.                           * but will also allow you to insert a ^P0^P0 at the
  346.                           * beginning of a file to guarentee it showing up
  347.                           * FIRST in the G-File section.  Note that IF YOU
  348.                           * ERASE THIS SORT, YOU MUST HAVE TOKIEN'S
  349.                           * strip_wwiv FUNCTION!!!!! */
  350.  
  351.  
  352.  
  353. int fill_sec(int sn, char *filename, char *description)
  354. /*
  355.  * Note that the call to the function has been changed.  It was only called
  356.  * from 2 different places anyways...
  357.  *
  358.  * Normal calls would be fill_sec(sn,"",""), but if a file name is KNOWN,
  359.  * and a description is known as well (the case of moving files), these
  360.  * parameters can be sent in like fill_sec(sn,"voting.txt","Voting Results");
  361.  */
  362. {
  363.   gfilerec *g,g1;
  364.   int f1,nf,ok,i,i1,i2,chd;
  365.   char s[81],s1[81],s3[81],s4[81],s5[81];
  366.   struct ffblk ff;
  367.  
  368.   g=read_sec(sn,&nf);
  369.   if (strcmp(filename,"")==0)
  370.     sprintf(s1,"%s%s\\*.*",syscfg.gfilesdir,gfilesec[sn].filename);
  371.   else
  372.     sprintf(s1,"%s%s\\%s",syscfg.gfilesdir,gfilesec[sn].filename,filename);
  373.   f1=findfirst(s1,&ff,0);
  374.   ok=1;
  375.   chd=0;
  376.   while ((f1==0) && (!hangup) && (nf<gfilesec[sn].maxfiles) && (ok)) {
  377.     strcpy(s,(ff.ff_name));
  378.     align(s);
  379.     i=1;
  380.     for (i1=0; i1<nf; i1++)
  381.       if (compare(s,g[i1].filename))
  382.     i=0;
  383.     if (i) {
  384.       if (strcmp(description,"")==0) {
  385.         ansic(0);
  386.         npr("%s : ",s);
  387.      /* inputl(s1,60);  Non-Color Input */
  388.         inli(s1,"",60,1);
  389.       } else
  390.         strcpy(s1,description);
  391.       if (!s1[0]) {
  392.         prt(5,"View file? ");
  393.         if (ny()) {
  394.           sprintf(s3,"%s\\%s",gfilesec[sn].filename,ff.ff_name);
  395.           if (strstr(s3,".")==NULL) {
  396.             sprintf(s4,"%s%s\\%s",syscfg.gfilesdir,gfilesec[sn].filename,
  397.                 ff.ff_name);
  398.             sprintf(s5,"%s%s\\%s.TXT",syscfg.gfilesdir,gfilesec[sn].filename,
  399.                 ff.ff_name);
  400.             file_copy(s4,s5);
  401.             unlink(s4);             /* renames file since printfile wont */
  402.             sprintf(s5,"%s\\%s.TXT",gfilesec[sn].filename,ff.ff_name);
  403.             printfile(s5);          /* print of files with no extension. */
  404.             sprintf(s,"%s.TXT",ff.ff_name);
  405.             align(s);                             /* I wouldn't do this if */
  406.             prt(3,"Extension .TXT auto-added.");  /* it wasn't NECESSARY   */
  407.             nl();
  408.           } else printfile(s3);
  409.         } else ok=0;
  410.         if (ok) {
  411.           npr("%s : ",s);
  412.           inli(s1,"",60,1);
  413.         }
  414.       }
  415.       if ((s1[0]) && (ok)) {
  416.         chd=1;
  417.         i=0;
  418. #ifdef SORT_USES_COLORS
  419.         while ((strcmp(s1,g[i].description)>0) && (i<nf))
  420. #else
  421.         while ((strcmp(s1,strip_wwiv(g[i].description))>0) && (i<nf))
  422. #endif
  423.           ++i;
  424.         for (i1=nf; i1>i; i1--)
  425.           g[i1]=g[i1-1];
  426.         ++nf;
  427.         strcpy(g1.filename,s);
  428.         strcpy(g1.description,s1);
  429.         time(&(g1.daten));
  430.         g[i]=g1;
  431.       } else {
  432.         if (ok) {
  433.         prt(5,"File not described.  Continue anyway? ");
  434.         if (!yn())
  435.           ok=0;
  436.         else
  437.           ok=1;
  438.         }
  439.       }
  440.  
  441.     }
  442.     f1=findnext(&ff);
  443.   }
  444.   if (!ok)
  445.     pl(get_string(14)); /* "Aborted." */
  446.   if (nf>=gfilesec[sn].maxfiles)
  447.     pl(get_string(88)); /* "Section full." */
  448.   if (chd) {
  449.     sprintf(s,"%s%s.GFL",syscfg.datadir,gfilesec[sn].filename);
  450. #ifdef MULTILINE
  451.     i=open_w(s,O_CREAT | O_TRUNC);
  452. #else
  453.     i=open(s,O_RDWR | O_BINARY | O_CREAT | O_TRUNC, S_IREAD | S_IWRITE);
  454. #endif
  455.     write(i,(void *)g,nf*sizeof(gfilerec));
  456.     close(i);
  457.   }
  458.   farfree(g);
  459.   return(!ok);
  460. }
  461.  
  462.  
  463.  
  464.  
  465. void gfiledata(int n, char *s)
  466. {
  467.   char x,y,k,i;
  468.   gfiledirrec r;
  469.  
  470.   r=gfilesec[n];
  471.   if (r.ar==0)
  472.     x=32;
  473.   else {
  474.     for (i=0; i<16; i++)
  475.       if ((1 << i) & r.ar)
  476.         x='A'+i;
  477.   }                        /*  v- Might want to add a heart-0 combo */
  478.   sprintf(s,"%2d %1c  %-40s%s  %-8s %-3d %-3d %-3d",    /* changed-666 */
  479.             n,x,r.name,extra_spaces(r.name),r.filename,r.sl,r.age,r.maxfiles);
  480.             /* changed-666 */
  481. }
  482.  
  483.  
  484.  
  485.  
  486.     Note to color-maniacs:
  487. Note that you can use that convention for ANYTHING color related.  
  488. Simply add the %s after it, along with the extra spaces.  For you 
  489. color maniacs, I have color voting (limit still 80 characters 
  490. though, including color changes), color oneliners, color rumours 
  491. (for these 2, it's still 80 columns, but as many color changes as 
  492. you want), color-all-sub/file/gfile/chain-names, and color 
  493. title-scanning-in-boxes.  I have some other support procedures 
  494. (like a first that will print out the first x chars of a certain 
  495. string regardless of color changes, kind of a bear to write), just 
  496. email me at my address if you want something.
  497.  
  498.  
  499.  
  500. ─────────────────────────────────────────────────────────────────────────────
  501. STEP 5 ─- FCNS.H ─- Add our new functions.  Then kill them with spikes.
  502. ─────────────────────────────────────────────────────────────────────────────
  503.  
  504. /* File: gfiles.c */          /* Replace ALL of this section with these: */
  505.  
  506. void gfilescan(void);
  507. void scangfilesec(int d, int *abort, int *any_listed);
  508. void purge_sec(int sn, int *num_purged);
  509. void list_gfiles(gfilerec *g, int nf);
  510. void gfile_sec(int sn, int *map, int nmap);
  511. void gfiles(void);
  512. int find (char *f1,char *s,int *totalfound,int *abort,int *next);
  513. char *get_file(char *fn, long *len);
  514. gfilerec *read_sec(int sn, int *nf);
  515. void list_sec(int *map, int nmap);
  516. /* Support functions: ONLY put in gfiles.c for ease of installation */
  517. char *extra_spaces(char *instr);
  518. void context_prt(int color, char *s);
  519. void outchrs(char c, int i);
  520. void nl2(void);
  521. void clear_rest_of_line(void);
  522. /* If you are using Arc Angel's Multiline Mod, don't use these 3 functions: */
  523. int file_copy(char *oldfilename, char *newfilename);
  524. int open_r(char *s);
  525. int open_w(char * s, int access);
  526.  
  527. /* File: gfledit.c */          /* Modify the fill_sec declaration */
  528.  
  529. int fill_sec(int sn, char *filename, char *description);           //666-Modify
  530.  
  531.  
  532. ─────────────────────────────────────────────────────────────────────────────
  533.                         You're Finished!
  534. COMPILE, YOU FAT BLOATED SACK OF PROTOPLASM!  (Must I tell you 
  535. EVERYTHING?)
  536.  
  537. Have Fun with your new-and-improved G-File section, and e-mail any questions
  538. to me, pref WWIVLink E-mail.  Use Internet mail for speed.
  539.         -Satan
  540. ─────────────────────────────────────────────────────────────────────────────
  541. Note:  If you even LOGGED this, please hit 'a' and email me to 
  542. boost my ego.   Email me twice if you consider using it, 3 times if 
  543. you put it up for download, and no less than 42 times if you use 
  544. it.  For your thank you e-mail, describe a good experience that you 
  545. have had while eating bananas.
  546. ─────────────────────────────────────────────────────────────────────────────
  547.