# 2.11BSD#431 - /usr/src/new/nntp/server/nextlast.c

##### Functions

    nextlast          X

       1: #ifndef lint
       2: static char *sccsid = "@(#)nextlast.c	1.4	(Berkeley) 1/11/88";
       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[MAXPATHLEN], art_id[MAXBUFLEN];
      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 3 times

- in /usr/src/new/nntp/server/serve.c line 24, 37-41(2)

#### Defined variables

sccsid defined in line 2; never used

Last modified: 1988-01-12 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1142 |