|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.