1: #ifndef lint
   2: static char *sccsid = "@(#)ahbs.c	1.2	(Berkeley) 3/5/86";
   3: #endif
   4: 
   5: #include "common.h"
   6: 
   7: 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[MAX_STRLEN], art_id[MAX_STRLEN];
  26:     char        c;
  27:     int     method;
  28:     register FILE   *fp;        /* For Message-ID retrieval only */
  29: 
  30:     if (argc > 2) {
  31:         printf("%d %s requires 0 or 1 argument.\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:         printf("%d 0 %s Article retrieved, %s.\r\n",
  53:             OK_ARTICLE + method, argv[1], verbage[method]);
  54:         spew(fp, method);
  55:         (void) fclose(fp);
  56:         return;
  57:     }
  58: 
  59:     /* Else we're trying to read */
  60: 
  61:     if (!canread) {
  62:         printf("%d You only have permission to transfer, sorry.\r\n",
  63:             ERR_ACCESS);
  64:         (void) fflush(stdout);
  65:         return;
  66:     }
  67: 
  68:     if (!ingroup) {
  69:         printf("%d You are not currently in a newsgroup.\r\n",
  70:             ERR_NCING);
  71:         (void) fflush(stdout);
  72:         return;
  73:     }
  74: 
  75:     if (argc == 1) {
  76:         if (art_ptr < 0 || art_ptr >= num_arts) {
  77:             printf("%d No article is currently selected.\r\n",
  78:                 ERR_NOCRNT);
  79:             (void) fflush(stdout);
  80:             return;
  81:         }
  82:         (void) sprintf(artbuf, "%d", art_array[art_ptr]);
  83:     } else
  84:         (void) strcpy(artbuf, argv[1]);
  85: 
  86:     if (!valid_art(artbuf)) {
  87:         printf("%d Invalid article number: %s.\r\n",
  88:             ERR_NOARTIG, artbuf);
  89:         (void) fflush(stdout);
  90:         return;
  91:     }
  92: 
  93:     while (open_valid_art(artbuf, art_id) == NULL) {
  94:         if (argc > 1) {
  95:             printf("%d Invalid article number: %s.\r\n",
  96:                 ERR_NOARTIG, artbuf);
  97:             (void) fflush(stdout);
  98:             return;
  99:         } else {
 100:             if (++art_ptr >= num_arts) {
 101:                 printf("%d Invalid article number.\r\n",
 102:                     ERR_NOARTIG);
 103:                 (void) fflush(stdout);
 104:                 return;
 105:             }
 106:             (void) sprintf(artbuf, "%d", art_array[art_ptr]);
 107:         }
 108:     }
 109: 
 110:     printf("%d %s %s Article retrieved; %s.\r\n",
 111:         OK_ARTICLE + method, artbuf, art_id, verbage[method]);
 112: 
 113:     spew(art_fp, method);
 114: 
 115:     if (argc > 1)
 116:         art_ptr = findart(artbuf);
 117: }

Defined functions

ahbs defined in line 21; used 1 times

Defined variables

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