Annotation of 43BSD/contrib/nntp/server/group.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char    *sccsid = "@(#)group.c  1.4     (Berkeley) 3/6/86";
                      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: 
                     25:        if (argc != 2) {
                     26:                printf("%d Group requires one argument.\r\n", ERR_CMDSYN);
                     27:                (void) fflush(stdout);
                     28:                return;
                     29:        }
                     30: 
                     31:        if (!canread) {
                     32:                printf("%d You only have permission to transfer, sorry.\r\n",
                     33:                        ERR_ACCESS);
                     34:                (void) fflush(stdout);
                     35:                return;
                     36:        }
                     37: 
                     38:        if (index(argv[1], '/') != (char *) NULL) {
                     39:                printf("%d Invalid group name.\r\n", ERR_NOGROUP);
                     40:                (void) fflush(stdout);
                     41:                return;
                     42:        }
                     43: 
                     44:        if (find_group(argv[1], num_groups, &low_msg, &high_msg) < 0) {
                     45:                printf("%d Invalid group name.\r\n", ERR_NOGROUP);
                     46:                (void) fflush(stdout);
                     47:                return;
                     48:        }
                     49: 
                     50:        close_crnt();
                     51:        (void) chdir(homedir);
                     52: 
                     53: #ifdef LOG
                     54:        syslog(LOG_INFO, "%s group %s", hostname, argv[1]);
                     55: #endif
                     56: 
                     57:        while ((cp = index(argv[1], '.')) != (char *) NULL)
                     58:                *cp = '/';
                     59: 
                     60:        (void) strcpy(temp_dir, homedir);
                     61:        (void) strcat(temp_dir, argv[1]);
                     62: 
                     63:        /*
                     64:         * (void) because a group can be in the active file
                     65:         * but not have a spool directory.  Just leave us
                     66:         * chdired to homedir if this fails.
                     67:         */
                     68:        (void) chdir(temp_dir);
                     69: 
                     70: #ifdef LOG
                     71:        ++grps_acsd;
                     72: #endif
                     73: 
                     74:        num_arts = scan_dir(low_msg, high_msg);
                     75:        art_ptr = 0;
                     76: 
                     77:        ingroup = 1;
                     78: 
                     79:        while ((cp = index(argv[1], '/')) != (char *) NULL)
                     80:                *cp = '.';
                     81: 
                     82:        printf("%d %d %d %d %s\n",
                     83:                OK_GROUP,
                     84:                num_arts,
                     85:                (num_arts > 0 ? art_array[0] : 0),
                     86:                (num_arts > 0 ? art_array[num_arts-1] : 0),
                     87:                argv[1]);
                     88:        (void) fflush(stdout);
                     89: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.