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

##### Functions

    group             X

       1: #ifndef lint
       2: static char *sccsid = "@(#)group.c	1.11	(Berkeley) 2/6/88";
       3: #endif
       4:
       5: #include "common.h"
       6:
       7: /*
       8:  * GROUP newsgroup
       9:  *
      10:  * Change the current group to the specified newsgroup.
      11:  * We also change our current directory to that newsgroup if
      12:  * a spool directory for it exists.
      13:  * If the newsgroup specified is invalid, the old newsgroup
      14:  * remains selected.
      15:  */
      16:
      17: group(argc, argv)
      18:     int argc;
      19:     char    *argv[];
      20: {
      21:     char    temp_dir[256];
      22:     int high_msg, low_msg;
      23:     char    *cp;
      24:     char    *reqlist[2];
      25:
      26:     if (argc != 2) {
      27:         printf("%d Usage: GROUP newsgroup.\r\n", ERR_CMDSYN);
      28:         (void) fflush(stdout);
      29:         return;
      30:     }
      31:
      32:     if (!canread) {
      33:         printf("%d You only have permission to transfer, sorry.\r\n",
      34:             ERR_ACCESS);
      35:         (void) fflush(stdout);
      36:         return;
      37:     }
      38:
      39:     if (index(argv[1], '/') != (char *) NULL) {
      40:         printf("%d Invalid group name.\r\n", ERR_NOGROUP);
      41:         (void) fflush(stdout);
      42:         return;
      43:     }
      44:
      45:     if (find_group(argv[1], num_groups, &low_msg, &high_msg) < 0) {
      46:         printf("%d Invalid group name.\r\n", ERR_NOGROUP);
      47:         (void) fflush(stdout);
      48:         return;
      49:     }
      50:
      51:     reqlist[0] = argv[1];
      52:     reqlist[1] = NULL;
      53:
      54:     if (ngpermcount) {
      55:         if (ngmatch(s1strneql, ALLBUT,
      56:             ngpermlist, ngpermcount, reqlist, 1) == 0) {
      57:             printf("%d You're not allowed to read %s, sorry.\r\n",
      58:                 ERR_ACCESS, argv[1]);
      59:             (void) fflush(stdout);
      60:             return;
      61:         }
      62:     }
      63:
      64:     close_crnt();
      65:     (void) chdir(spooldir);
      66:
      67: #ifdef LOG
      68:     syslog(LOG_INFO, "%s group %s", hostname, argv[1]);
      69: #endif
      70:
      71:     while ((cp = index(argv[1], '.')) != (char *) NULL)
      72:         *cp = '/';
      73:
      74:     (void) strcpy(temp_dir, spooldir);
      75:     (void) strcat(temp_dir, "/");
      76:     (void) strcat(temp_dir, argv[1]);
      77:
      78:     /*
      79: 	 * (void) because a group can be in the active file
      80: 	 * but not have a spool directory.  Just leave us
      81: 	 * chdired to base spool directory if this fails.
      82: 	 */
      83:     (void) chdir(temp_dir);
      84:
      85: #ifdef LOG
      86:     ++grps_acsd;
      87: #endif
      88:
      89:     num_arts = scan_dir(low_msg, high_msg);
      90:     art_ptr = 0;
      91:
      92:     ingroup = 1;
      93:
      94:     while ((cp = index(argv[1], '/')) != (char *) NULL)
      95:         *cp = '.';
      96:
      97:     printf("%d %d %d %d %s\r\n",
      98:         OK_GROUP,
      99:         num_arts,
     100:         (num_arts > 0 ? art_array[0] : 0),
     101:         (num_arts > 0 ? art_array[num_arts-1] : 0),
     102:         argv[1]);
     103:     (void) fflush(stdout);
     104: }

#### Defined functions

group defined in line 17; used 2 times

- in /usr/src/new/nntp/server/serve.c line 23, 33

#### Defined variables

sccsid defined in line 2; never used

Last modified: 1988-02-07 Generated: 2016-12-26 | Generated by src2html V0.67 page hit count: 1174 |