home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / TELECOM / rn_4_3_blars.lzh / only.c < prev    next >
Text File  |  1990-08-22  |  2KB  |  127 lines

  1. /* $Header: only.c,v 4.3 85/05/01 11:45:21 lwall Exp $
  2.  *
  3.  * $Log:    only.c,v $
  4.  * Revision 4.3  85/05/01  11:45:21  lwall
  5.  * Baseline for release with 4.3bsd.
  6.  * 
  7.  */
  8.  
  9. #include "EXTERN.h"
  10. #include "common.h"
  11. #include "search.h"
  12. #include "util.h"
  13. #include "final.h"
  14. #include "ngsrch.h"
  15. #include "INTERN.h"
  16. #include "only.h"
  17.  
  18. void
  19. only_init()
  20. {
  21.     ;
  22. }
  23.  
  24. void
  25. setngtodo(pat)
  26. char *pat;
  27. {
  28.     char *s;
  29.  
  30. #ifdef ONLY
  31.     if (!*pat)
  32.     return;
  33.     if (maxngtodo < NGMAX) {
  34.     ngtodo[maxngtodo] = savestr(pat);
  35. #ifdef SPEEDOVERMEM
  36. #ifndef lint
  37.     compextodo[maxngtodo] = (COMPEX*)safemalloc(sizeof(COMPEX));
  38. #endif lint
  39.     init_compex(compextodo[maxngtodo]);
  40.     compile(compextodo[maxngtodo],pat,TRUE,TRUE);
  41.     if ((s = ng_comp(compextodo[maxngtodo],pat,TRUE,TRUE)) != Nullch) {
  42.                         /* compile regular expression */
  43.         printf("\n%s\n",s) FLUSH;
  44.         finalize(1);
  45.     }
  46. #endif
  47.     maxngtodo++;
  48.     }
  49. #else
  50.     notincl("o");
  51. #endif
  52. }
  53.  
  54. /* if command line list is non-null, is this newsgroup wanted? */
  55.  
  56. bool
  57. inlist(ngnam)
  58. char *ngnam;
  59. {
  60. #ifdef ONLY
  61.     register int i;
  62. #ifdef SPEEDOVERMEM
  63.  
  64.     if (maxngtodo == 0)
  65.     return TRUE;
  66.     for (i=0; i<maxngtodo; i++) {
  67.     if (execute(compextodo[i],ngnam))
  68.         return TRUE;
  69.     }
  70.     return FALSE;
  71. #else
  72.     COMPEX ilcompex;
  73.     char *s;
  74.  
  75.     if (maxngtodo == 0)
  76.     return TRUE;
  77.     init_compex(&ilcompex);
  78.     for (i=0; i<maxngtodo; i++) {
  79.     if ((s = ng_comp(&ilcompex,ngtodo[i],TRUE,TRUE)) != Nullch) {
  80.                         /* compile regular expression */
  81.         printf("\n%s\n",s) FLUSH;
  82.         finalize(1);
  83.     }
  84.     
  85.     if (execute(&ilcompex,ngnam) != Nullch) {
  86.         free_compex(&ilcompex);
  87.         return TRUE;
  88.     }
  89.     }
  90.     free_compex(&ilcompex);
  91.     return FALSE;
  92. #endif
  93. #else
  94.     return TRUE;
  95. #endif
  96. }
  97.  
  98. #ifdef ONLY
  99. void
  100. end_only()
  101. {
  102.     if (maxngtodo) {            /* did they specify newsgroup(s) */
  103.     int whicharg;
  104.  
  105. #ifdef VERBOSE
  106.     IF(verbose)
  107.         printf("\nRestriction %s%s removed.\n",ngtodo[0],
  108.         maxngtodo > 1 ? ", etc." : nullstr) FLUSH;
  109.     ELSE
  110. #endif
  111. #ifdef TERSE
  112.         fputs("\nExiting \"only\".\n",stdout) FLUSH;
  113. #endif
  114.     for (whicharg = 0; whicharg < maxngtodo; whicharg++) {
  115.         free(ngtodo[whicharg]);
  116. #ifdef SPEEDOVERMEM
  117.         free_compex(compextodo[whicharg]);
  118. #ifndef lint
  119.         free((char*)compextodo[whicharg]);
  120. #endif lint
  121. #endif
  122.     }
  123.     maxngtodo = 0;
  124.     }
  125. }
  126. #endif
  127.