home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume14 / nntp1.5 / part01 / server / ihave.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-04-18  |  1.2 KB  |  67 lines

  1. #ifndef lint
  2. static char    *sccsid = "@(#)ihave.c    1.11    (Berkeley) 1/11/88";
  3. #endif
  4.  
  5. #include "common.h"
  6.  
  7. #ifdef LOG
  8. int    ih_accepted;
  9. int    ih_rejected;
  10. int    ih_failed;
  11. #endif LOG
  12.  
  13. /*
  14.  * IHAVE <messageid>
  15.  *
  16.  * Accept an article for transferral if we haven't seen it before.
  17.  */
  18.  
  19. ihave(argc, argv)
  20.     int        argc;
  21.     char        *argv[];
  22. {
  23.     char        errbuf[2 * NNTP_STRLEN];
  24.     int        retcode;
  25.     register char    *cp;
  26.  
  27.     if (argc != 2) {
  28.         printf("%d Usage: IHAVE <message-id>.\r\n", ERR_CMDSYN);
  29.         (void) fflush(stdout);
  30.         return;
  31.     }
  32.  
  33.     cp = gethistent(argv[1]);
  34.     if (cp != NULL) {
  35.         printf("%d Got it.\r\n", ERR_GOTIT);
  36.         (void) fflush(stdout);
  37. #ifdef LOG
  38.         ih_rejected++;
  39. #ifdef IHAVE_DEBUG
  40.         syslog(LOG_DEBUG, "%s ihave %s rejected", hostname, argv[1]);
  41. #endif IHAVE_DEBUG
  42. #endif LOG
  43.         return;
  44.     }
  45.         
  46.     retcode = spawn(rnews, "rnews", (char *) 0, CONT_XFER, ERR_XFERFAIL, errbuf);
  47.     if (retcode <= 0)
  48.         printf("%d %s\r\n", ERR_XFERFAIL, errbuf);
  49.     else if (retcode > 0)
  50.         printf("%d Thanks.\r\n",
  51.             OK_XFERED);
  52.     (void) fflush(stdout);
  53.  
  54. #ifdef LOG
  55.     if (retcode == 1)
  56.         ih_accepted++;
  57.     else
  58.         ih_failed++;
  59.         
  60. #ifdef IHAVE_DEBUG
  61.     syslog(LOG_DEBUG, "%s ihave %s accepted %s",
  62.         hostname, argv[1], retcode == 1 ? "succeeded" : "failed");
  63. #endif IHAVE_DEBUG
  64. #endif LOG
  65.  
  66. }
  67.