1: #ifndef lint
   2: static char *sccsid = "@(#)ahbs.c	1.8	(Berkeley) 1/11/88";
   3: #endif
   4: 
   5: #include "common.h"
   6: 
   7: static char *verbage[] = {
   8:     "head and body follow",
   9:     "head follows",
  10:     "body follows",
  11:     "request text separately"
  12: };
  13: 
  14: /*
  15:  * {ARTICLE,HEAD,BODY,STAT} <messageid>|articlenum
  16:  *
  17:  * Retrieve article, head, body, or stat, depending on the
  18:  * command we were invoked with.
  19:  */
  20: 
  21: ahbs(argc, argv)
  22:     int     argc;
  23:     char        *argv[];
  24: {
  25:     char        artbuf[MAXPATHLEN], art_id[MAXBUFLEN];
  26:     register char   c;
  27:     int     method;
  28:     register FILE   *fp;        /* For Message-ID retrieval only */
  29: 
  30:     if (argc > 2) {
  31:         printf("%d Usage: %s <message-id>|article_number.\r\n", argv[0],
  32:             ERR_CMDSYN);
  33:         (void) fflush(stdout);
  34:         return;
  35:     }
  36: 
  37:     if ((c = *argv[0]) == 'a' || c == 'A')
  38:         method = ARTICLE;
  39:     else if ((c == 's' || c == 'S'))
  40:         method = STAT;
  41:     else
  42:         method = ((c == 'h' || c == 'H') ? HEAD : BODY);
  43: 
  44:     if (argc == 2 && *argv[1] == '<') { /* Message ID */
  45:         fp = openartbyid(argv[1]);
  46:         if (fp == NULL) {
  47:             printf("%d No article by message-id %s, sorry.\r\n",
  48:                 ERR_NOART, argv[1]);
  49:             (void) fflush(stdout);
  50:             return;
  51:         }
  52:         if (check_ngperm(fp) == 0) {
  53:             printf("%d Can't give that to you, sorry.\r\n",
  54:                 ERR_ACCESS);
  55:             (void) fflush(stdout);
  56:             (void) fclose(fp);
  57:             return;
  58:         }
  59:         printf("%d 0 %s Article retrieved, %s.\r\n",
  60:             OK_ARTICLE + method, argv[1], verbage[method]);
  61:         spew(fp, method);
  62:         (void) fclose(fp);
  63: #ifdef LOG
  64:         if (nn_told)
  65:             nn_took++;
  66: #endif
  67:         return;
  68:     }
  69: 
  70:     /* Else we're trying to read */
  71: 
  72:     if (!canread) {
  73:         printf("%d You only have permission to transfer, sorry.\r\n",
  74:             ERR_ACCESS);
  75:         (void) fflush(stdout);
  76:         return;
  77:     }
  78: 
  79:     if (!ingroup) {
  80:         printf("%d You are not currently in a newsgroup.\r\n",
  81:             ERR_NCING);
  82:         (void) fflush(stdout);
  83:         return;
  84:     }
  85: 
  86:     if (argc == 1) {
  87:         if (art_ptr < 0 || art_ptr >= num_arts) {
  88:             printf("%d No article is currently selected.\r\n",
  89:                 ERR_NOCRNT);
  90:             (void) fflush(stdout);
  91:             return;
  92:         }
  93:         (void) sprintf(artbuf, "%d", art_array[art_ptr]);
  94:     } else
  95:         (void) strcpy(artbuf, argv[1]);
  96: 
  97:     if (!valid_art(artbuf)) {
  98:         printf("%d Invalid article number: %s.\r\n",
  99:             ERR_NOARTIG, artbuf);
 100:         (void) fflush(stdout);
 101:         return;
 102:     }
 103: 
 104:     while (open_valid_art(artbuf, art_id) == NULL) {
 105:         if (argc > 1) {
 106:             printf("%d Invalid article number: %s.\r\n",
 107:                 ERR_NOARTIG, artbuf);
 108:             (void) fflush(stdout);
 109:             return;
 110:         } else {
 111:             if (++art_ptr >= num_arts) {
 112:                 printf("%d Invalid article number.\r\n",
 113:                     ERR_NOARTIG);
 114:                 (void) fflush(stdout);
 115:                 return;
 116:             }
 117:             (void) sprintf(artbuf, "%d", art_array[art_ptr]);
 118:         }
 119:     }
 120: 
 121:     printf("%d %s %s Article retrieved; %s.\r\n",
 122:         OK_ARTICLE + method, artbuf, art_id, verbage[method]);
 123: 
 124:     spew(art_fp, method);
 125: 
 126:     if (argc > 1)
 127:         art_ptr = findart(artbuf);
 128: }

Defined functions

ahbs defined in line 21; used 5 times

Defined variables

sccsid defined in line 2; never used
verbage defined in line 7; used 2 times
Last modified: 1988-01-12
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 3616
Valid CSS Valid XHTML 1.0 Strict