|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T n
Length: 2685 (0xa7d) Types: TextFile Names: »newgroups.c«
└─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦cfd40dc56⟧ »EurOpenD3/news/nntp/nntp.1.5.8.tar.Z« └─⟦2ec98eca6⟧ └─⟦this⟧ »server/newgroups.c« └─⟦9ae75bfbd⟧ Bits:30007242 EUUGD3: Starter Kit └─⟦5cced586a⟧ »EurOpenD3/news/nntp/nntp.1.5.7.tar.Z« └─⟦7340f105e⟧ └─⟦this⟧ »./server/newgroups.c«
#ifndef lint static char *sccsid = "@(#)newgroups.c 1.13 (Berkeley) 2/6/88"; #endif #include "common.h" #include "time.h" /* * NEWGROUPS date time ["GMT"] [<distributions>] * * Display new newsgroups since a given date and time, but only * for those in <distributions>. */ newgroups(argc, argv) int argc; char *argv[]; { char line[NNTP_STRLEN]; register char *cp, *temp; static char **dist_list = (char **) NULL; int distcount = 0; int i; long date; register FILE *date_fp; if (argc < 3) { printf("%d Usage: NEWGROUPS yymmdd hhmmss [\"GMT\"] [<distributions>].\r\n", ERR_CMDSYN); (void) fflush(stdout); return; } date_fp = fopen(ngdatefile, "r"); if (date_fp == NULL) { #ifdef SYSLOG syslog(LOG_ERR, "newgroups: fopen %s: %m", ngdatefile); #endif printf("%d Cannot open newsgroup date file.\r\n", ERR_FAULT); (void) fflush(stdout); return; } /* YYMMDD HHMMSS */ if (strlen(argv[1]) != 6 || strlen(argv[2]) != 6) { printf("%d Date/time must be in form YYMMDD HHMMSS.\r\n", ERR_CMDSYN); (void) fflush(stdout); (void) fclose(date_fp); return; } (void) strcpy(line, argv[1]); /* yymmdd */ (void) strcat(line, argv[2]); /* hhmmss */ date = dtol(line); if (date < 0) { printf("%d Invalid date specification.\r\n", ERR_CMDSYN); (void) fflush(stdout); (void) fclose(date_fp); return; } argc -= 3; argv += 3; if (argc > 0 && !strcasecmp(*argv, "GMT")) { /* We store stuff in GMT */ ++argv; /* anyway, so this is */ --argc; /* a "noop" */ } else /* But that means not GMT */ date = local_to_gmt(date); /* is a definite "op" */ if (argc > 0) { distcount = get_distlist(&dist_list, *argv); if (distcount < 0) { printf("%d Bad distribution list %s:\r\n", *argv); (void) fflush(stdout); (void) fclose(date_fp); return; } } printf("%d New newsgroups since %s follow.\r\n", OK_NEWGROUPS, line); while (fgets(line, sizeof(line), date_fp) != NULL) { if ((cp = index(line, '\n')) != NULL) *cp = '\0'; if ((cp = index(line, ' ')) != NULL) *cp = '\0'; #ifdef ACTIVE_TIMES_FILE if (atoi(cp + 1) < date) continue; #else if (atoi(line) < date) break; #endif if (distcount == 0) { #ifdef ACTIVE_TIMES_FILE putline(line); #else putline(cp + 1); #endif } else { #ifdef ACTIVE_TIMES_FILE temp = line; #else temp = cp + 1; #endif cp = index(temp, '.'); if (cp == NULL) continue; *cp = '\0'; for (i = 0; i < distcount; ++i) if (strcmp(temp, dist_list[i]) == 0) { *cp = '.'; putline(temp); break; } } } putchar('.'); putchar('\r'); putchar('\n'); (void) fflush(stdout); (void) fclose(date_fp); }