diff options
Diffstat (limited to 'FICS')
-rw-r--r-- | FICS/command.c | 144 |
1 files changed, 80 insertions, 64 deletions
diff --git a/FICS/command.c b/FICS/command.c index 753ae9d..674c9f1 100644 --- a/FICS/command.c +++ b/FICS/command.c @@ -542,80 +542,96 @@ PUBLIC void rscan_news(FILE *fp, int p, int lc) { } } -PRIVATE void check_news(int p, int admin) +PRIVATE void +check_news(int p, int admin) { - FILE *fp; - char filename[MAX_FILENAME_SIZE]; - char junk[MAX_LINE_SIZE]; - char *junkp; - int crtime; - int lc = player_lastconnect(p); - char count[10]; + FILE *fp; + char count[10]; + char filename[MAX_FILENAME_SIZE]; + char junk[MAX_LINE_SIZE]; + char *junkp; + long int lval; + time_t crtime; + time_t lc = player_lastconnect(p); + + if (admin) { + sprintf(filename, "%s/newadminnews.index", news_dir); + + if ((fp = fopen(filename, "r")) == NULL) { + fprintf(stderr, "Can't find admin news index.\n"); + return; + } - if (admin) { + if (num_anews == -1) { + num_anews = count_lines(fp); + fclose(fp); + fp = fopen(filename, "r"); + } - sprintf(filename, "%s/newadminnews.index", news_dir); - fp = fopen(filename, "r"); - if (!fp) { - fprintf(stderr, "Can't find admin news index.\n"); - return; - } + fgets(junk, MAX_LINE_SIZE, fp); + sscanf(junk, "%ld %s", &lval, count); + crtime = lval; - if (num_anews == -1) { - num_anews = count_lines(fp); - fclose(fp); - fp = fopen(filename, "r"); - } + if ((crtime - lc) < 0) { + pprintf(p, "There are no new admin news items since " + "your last login.\n\n"); + fclose(fp); + return; + } else { + pprintf(p, "Index of new admin news items:\n"); + rscan_news(fp, p, lc); - fgets(junk, MAX_LINE_SIZE, fp); - sscanf(junk, "%d %s", &crtime, count); - if ((crtime - lc) < 0) { - pprintf(p, "There are no new admin news items since your last login.\n\n"); - fclose(fp); - return; - } else { - pprintf(p, "Index of new admin news items:\n"); - rscan_news(fp, p, lc); - junkp = junk; - junkp = nextword(junkp); - junkp = nextword(junkp); - pprintf(p, "%3s (%s) %s", count, fix_time(strltime(&crtime)), junkp); - pprintf(p, "(\"anews %d\" will display the most recent admin news file)\n", num_anews); - } + junkp = junk; + junkp = nextword(junkp); + junkp = nextword(junkp); - } else { + pprintf(p, "%3s (%s) %s", count, + fix_time(strltime(&crtime)), junkp); + pprintf(p, "(\"anews %d\" will display the most recent " + "admin news file)\n", num_anews); + } + } else { + sprintf(filename, "%s/newnews.index", news_dir); - sprintf(filename, "%s/newnews.index", news_dir); - fp = fopen(filename, "r"); - if (!fp) { - fprintf(stderr, "Can't find news index.\n"); - return; - } + if ((fp = fopen(filename, "r")) == NULL) { + fprintf(stderr, "Can't find news index.\n"); + return; + } - if (num_news == -1) { - num_news = count_lines(fp); - fclose(fp); - fp = fopen(filename, "r"); - } + if (num_news == -1) { + num_news = count_lines(fp); + fclose(fp); + if ((fp = fopen(filename, "r")) == NULL) { + fprintf(stderr, "Can't find news index.\n"); + return; + } + } - fgets(junk, MAX_LINE_SIZE, fp); - sscanf(junk, "%d %s", &crtime, count); - if ((crtime - lc) < 0) { - pprintf(p, "There are no new news items since your last login (%s).\n", strltime(&lc)); - fclose(fp); - return; - } else { - pprintf(p, "Index of new news items:\n"); - rscan_news(fp, p, lc); - junkp = junk; - junkp = nextword(junkp); - junkp = nextword(junkp); - pprintf(p, "%3s (%s) %s", count, fix_time(strltime(&crtime)), junkp); - pprintf(p, "(\"news %d\" will display the most recent admin news file)\n", num_news); - } - } + fgets(junk, MAX_LINE_SIZE, fp); + sscanf(junk, "%ld %s", &lval, count); + crtime = lval; - fclose(fp); + if ((crtime - lc) < 0) { + pprintf(p, "There are no new news items since your " + "last login (%s).\n", strltime(&lc)); + fclose(fp); + return; + } else { + pprintf(p, "Index of new news items:\n"); + rscan_news(fp, p, lc); + + junkp = junk; + junkp = nextword(junkp); + junkp = nextword(junkp); + + pprintf(p, "%3s (%s) %s", count, + fix_time(strltime(&crtime)), junkp); + pprintf(p, "(\"news %d\" will display the most recent " + "admin news file)\n", num_news); + } + } + + fclose(fp); } PRIVATE int |