1: #ifndef lint
   2: static char *sccsid = "@(#)nextlast.c	1.2	(Berkeley) 3/5/86";
   3: #endif
   4: 
   5: #include "common.h"
   6: 
   7: /*
   8:  * NEXT
   9:  * LAST
  10:  *
  11:  * Retrieve the message-id of the next or last article in the
  12:  * newsgroup.  Position the current article pointer to this
  13:  * article.
  14:  */
  15: 
  16: nextlast(argc, argv)
  17: int argc;
  18: char    *argv[];
  19: {
  20:     char    artbuf[MAX_STRLEN], art_id[MAX_STRLEN];
  21:     int oldptr;
  22:     int next;
  23: 
  24:     if (!canread) {
  25:         printf("%d You only have permission to transfer, sorry.\r\n",
  26:             ERR_ACCESS);
  27:         (void) fflush(stdout);
  28:         return;
  29:     }
  30: 
  31:     if (!ingroup) {
  32:         printf("%d You are not currently in a newsgroup.\r\n",
  33:             ERR_NCING);
  34:         (void) fflush(stdout);
  35:         return;
  36:     }
  37: 
  38:     if (argc != 1) {
  39:         printf("%d NEXT/LAST need no arguments.\r\n", ERR_CMDSYN);
  40:         (void) fflush(stdout);
  41:         return;
  42:     }
  43: 
  44:     next = (argv[0][0] == 'n' || argv[0][0] == 'N');
  45: 
  46:     if (art_ptr < 0 || art_ptr >= num_arts) {
  47:         printf("%d No current article selected.\r\n",
  48:             ERR_NOCRNT);
  49:         (void) fflush(stdout);
  50:         return;
  51:     }
  52: 
  53:     if (next ? (art_ptr + 1 >= num_arts) : (art_ptr - 1 < 0)) {
  54:         printf("%d No %s article to retrieve.\r\n",
  55:             ERR_NONEXT,  next ? "next" : "previous");
  56:         (void) fflush(stdout);
  57:         return;
  58:     }
  59: 
  60:     oldptr = art_ptr;
  61:     (void) sprintf(artbuf, "%d", art_array[next ? ++art_ptr : --art_ptr]);
  62: 
  63:     if (!valid_art(artbuf)) {
  64:         printf("%d Invalid article number: %s.\r\n", ERR_NOARTIG,
  65:             artbuf);
  66:         (void) fflush(stdout);
  67:         return;
  68:     }
  69: 
  70:     while (open_valid_art(artbuf, art_id) == NULL) {
  71:         if (((next) ? (++art_ptr >= num_arts) : (--art_ptr < 0))) {
  72:             printf("%d No %s article to retrieve.\r\n",
  73:                 ERR_NONEXT, next ? "next" : "previous");
  74:             art_ptr = oldptr;
  75:             (void) fflush(stdout);
  76:             return;
  77:         }
  78:         (void) sprintf(artbuf, "%d", art_array[art_ptr]);
  79:     }
  80: 
  81:     printf("%d %s %s Article retrieved; request text separately.\r\n",
  82:         OK_NOTEXT, artbuf, art_id);
  83: 
  84:     if (argc > 1)
  85:         art_ptr = findart(artbuf);
  86:     (void) fflush(stdout);
  87: }

Defined functions

nextlast defined in line 16; used 1 times

Defined variables

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