home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / trn / part13 / only.c < prev    next >
C/C++ Source or Header  |  1991-08-22  |  3KB  |  136 lines

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