home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / WWIVMODS / MODSUNKN.ZIP / FINDNET.MOD < prev    next >
Text File  |  1990-08-14  |  10KB  |  177 lines

  1. Goose #1 @7312
  2. Tue Jul 31 17:55:46 1990
  3.                          Find Network Board in Listing           (FINDNET.MOD)
  4.                           by Goose, 1@7312 (WWIVnet)
  5.  
  6. This is another mod requested by Killer - he's the idea man, I'm the one that
  7. turns it into reality.  What this mod does is allows the user to search for
  8. WWIVnet boards by A) Area Code, B) Board Name (or partial name), or C) by
  9. Node Number.  This is a nice benefit for those users that are looking for
  10. the number for a particular board (for example, one they see in the message
  11. header of net messages), or looking for boards that are local to a given area.
  12.  
  13. The only file affected by this mod is SYSOPF1.C.  First, add the following
  14. variable declaration for helpl at the top of the file (+ indicates new or
  15. modified code, - indicates existing code):
  16.  
  17. - extern gfiledirrec *gfilesec;
  18. - extern int num_sec,hangup,userfile,echo,useron,userfile,usernum,using_modem;
  19. + extern int incom,fwaiting,userfile,helpl;                 /* mod - change */
  20. - extern configrec syscfg;
  21.  
  22. Then scan down, and add the following code right before void
  23. print_net_listing():
  24.  
  25. + char *upper(char *instr)                      /* mod - add entire void */
  26. + {
  27. +   static char us[41];
  28. +   char upstr[41];
  29. +   int i;
  30. +
  31. +   strcpy(upstr,instr);
  32. +   for (i=0; i<strlen(instr); i++) {
  33. +     upstr[i]=upcase(upstr[i]);
  34. +   }
  35. +   strcpy(us,upstr);
  36. +   return(us);
  37. + }
  38.  
  39. Then, in void print_net_listing(), make the following changes:
  40.  
  41. - void print_net_listing()
  42. - {
  43. -   int i,i1,i2,abort,f;
  44. +   char s[161],s1[41],s2[81],s3[12],ch;                     /* mod - change */
  45. -   net_system_list_rec csne;
  46.  
  47. -   abort=0;
  48. +   helpl=43;                                                /* mod - add */
  49. +   nl();                                                    /* mod - add */
  50. +   prt(2,"Net: L)ist; Search by A)rea Code, B)BS Name, N)ode Number;
  51.         Q)uit ? "); /* mod - add */
  52. +   ch=onek("QABNL");                                        /* mod - add */
  53. +   if (ch=='Q')                                             /* mod - add */
  54. +     return;                                                /* mod - add */
  55. +   if (ch!='L')                                             /* mod - add */
  56. +     nl();                                                  /* mod - add */
  57. +   switch (ch) {                                            /* mod - add */
  58. +     case 'A':                                              /* mod - add */
  59. +       prt(2,"Enter Area Code: ");                          /* mod - add */
  60. +       input(s1,3);                                         /* mod - add */
  61. +       nl();                                                /* mod - add */
  62. +       if (strlen(s1)!=3)                                   /* mod - add */
  63. +         abort=1;                                           /* mod - add */
  64. +       for (i=0; i<3; i++)                                  /* mod - add */
  65. +         if ((s1[i]<'0') || (s1[i]>'9'))                    /* mod - add */
  66. +           abort=1;                                         /* mod - add */
  67. +       if ((s1[1]!='0') && (s1[1]!='1'))                    /* mod - add */
  68. +          abort=1;                                          /* mod - add */
  69. +       if (abort)                                           /* mod - add */
  70. +         pl("Area Code must be a three digit number!");     /* mod - add */
  71. +       i2=1;                                                /* mod - add */
  72. +       break;                                               /* mod - add */
  73. +     case 'B':                                              /* mod - add */
  74. +       prt(2,"Enter Search String: ");                      /* mod - add */
  75. +       input(s1,40);                                        /* mod - add */
  76. +       if (s1[0]==0)                                        /* mod - add */
  77. +         abort=1;                                           /* mod - add */
  78. +       i2=2;                                                /* mod - add */
  79. +       break;                                               /* mod - add */
  80. +     case 'N':                                              /* mod - add */
  81. +       prt(2,"Enter Node Number: ");                        /* mod - add */
  82. +       input(s1,5);                                         /* mod - add */
  83. +       if (s1[0]==0)                                        /* mod - add */
  84. +         abort=1;                                           /* mod - add */
  85. +       else {                                               /* mod - add */
  86. +         i1=atoi(s1);                                       /* mod - add */
  87. +         if (i1==0)                                         /* mod - add */
  88. +           abort=1;                                         /* mod - add */
  89. +       }                                                    /* mod - add */
  90. +       i2=3;                                                /* mod - add */
  91. +       break;                                               /* mod - add */
  92. +     case 'L':                                              /* mod - add */
  93. +       i2=0;                                                /* mod - add */
  94. +       break;                                               /* mod - add */
  95. +   }                                                        /* mod - add */
  96. +   helpl=0;                                                 /* mod - add */
  97. +   /* mod - delete nl();
  98. +   /* mod - delete pla("  Num  Phone         Name                        */
  99. +   /* mod - delete pla("-----  ============  --------------------------- */
  100. +   strcpy(s3,"000-000-0000");                               /* mod - add */
  101. -   sprintf(s,"%sBBSDATA.NET",syscfg.datadir);
  102. -   f=open(s,O_RDONLY | O_BINARY);
  103. -   for (i=0; (i<num_sys_list) && (!abort); i++) {
  104. -     read(f,&csne,sizeof(net_system_list_rec));
  105. +     if ((i2==0) ||                                         /* mod - add */
  106. +        ((i2==1) && (strncmp(s1,csne.phone,3)==0)) ||       /* mod - add */
  107. +        ((i2==2) && (strstr(upper(csne.name),s1)!=NULL)) || /* mod - add */
  108. +        ((i2==3) && (i1==csne.sysnum))) {                   /* mod - add */
  109. +       if (strncmp(s3,csne.phone,3)!=0) {                   /* mod - add */
  110. +         strcpy(s3,csne.phone);                             /* mod - add */
  111. +         if (!abort)                                        /* mod - add */
  112. +           nl();                                            /* mod - add */
  113. +         describe_area_code(atoi(csne.phone),s2);           /* mod - add */
  114. +         sprintf(s,"Region: %s",s2);                        /* mod - add */
  115. +         pla(s,&abort);                                     /* mod - add */
  116. +         if (!abort)                                        /* mod - add */
  117. +           nl();                                            /* mod - add */
  118. +         pla("  Num  Phone         Name                     /* mod - add */
  119. +         pla("-----  ============  ------------------------ /* mod - add */
  120. +       }                                                    /* mod - add */
  121. -     if (csne.forsys!=65535) {
  122.  
  123. Then right at the end of the void:
  124.  
  125. -     }
  126. +   }                                                        /* mod - add */
  127. -   close(f);
  128. - }
  129.  
  130. That's it for the source --- almost.  The difference may be if you don't have
  131. FREE36K installed in your system.  In that case, you won't have the
  132. variable f in the first line of declaration, and you won't have the line that
  133. defines net_system_list_rec csne.  Also, the last bit of code above will
  134. have to be changed as follows:
  135.  
  136. -   pla("  Num  Phone         Name                                     Hop
  137. -   pla("-----  ============  ---------------------------------------- ===
  138. -   for (i=0; (i<num_sys_list) && (!abort); i++) {
  139. +     if ((i2==0) ||                                           /* mod - add */
  140. +        ((i2==1) && (strncmp(s1,csn[i].phone,3)==0)) ||       /* mod - add */
  141. +        ((i2==2) && (strstr(upper(csn[i].name),s1)!=NULL)) || /* mod - add */
  142. +        ((i2==3) && (i1==csn[i].sysnum)))                     /* mod - add */
  143. +       if (strncmp(s3,csn[i].phone,3)!=0) {                 /* mod - add */
  144. +         strcpy(s3,csn[i].phone);                           /* mod - add */
  145. +         if (!abort)                                        /* mod - add */
  146. +           nl();                                            /* mod - add */
  147. +         describe_area_code(atoi(csn[i].phone),s2);         /* mod - add */
  148. +         sprintf(s,"Region: %s",s2);                        /* mod - add */
  149. +         pla(s,&abort);                                     /* mod - add */
  150. +         if (!abort)                                        /* mod - add */
  151. +           nl();                                            /* mod - add */
  152. +         pla("  Num  Phone         Name                     /* mod - add */
  153. +         pla("-----  ============  ------------------------ /* mod - add */
  154. +       }                                                    /* mod - add */
  155. -     if (csn[i].forsys!=65535) {
  156.  
  157. NOTE!!!  The two pla lines with the Num/Phone/Name were truncated so they
  158.          would fit into the 80 column width for posting this mod on the net.
  159.          Just use the ones from your original source and you should be ok.
  160.          Also, the first prt statement was split across two lines to make
  161.          it fit.. you'll have to fix that also.
  162.  
  163. Also, you'll have to update the HELP.MSG menus to display the help for the
  164. //NET command.  Note if you already have a help menu 43 you can change the
  165. number here and in the helpl command above.
  166.  
  167. `43==========================================================================
  168. You can display the entire WWIVnet BBS database by typing 'L', or search for
  169. specific boards by area code or name.  For the area code, you will be
  170. prompted for a three digit number which is checked before the search begins.
  171. For the BBS name search, you can enter all or part of the name and all the
  172. boards that compare will be displayed.  For the node number, you have to
  173. enter the WWIVnet node number for the board you are searching for.
  174.  
  175. That's the mod.  Just recompile SYSOPF1.C and you'll be all set.  If you have
  176. any problems or general comments with this mod or any of my others, I can be
  177. reached at 1@7312 (WWIVnet) or the Twilight Zone BBS at 703-369-5225.