From 99d84ecc0e6630fb736e9090f6570eb8abc473ed Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Mon, 10 May 2004 15:22:29 +0000 Subject: version 0.3 homedir added minor changes --- src/main.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 65 insertions(+), 17 deletions(-) (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c index 631ca6e..1a0802c 100644 --- a/src/main.c +++ b/src/main.c @@ -17,7 +17,11 @@ #include #include +#include #include +#include +#include +#include #include #include #include @@ -25,11 +29,12 @@ #include extern char *__progname; -const char *copyright = "TGeb parasite 0.2 - " \ - "Copyright (c) 2004 demon "; +const char *copyright = "TGeb parasite 0.3 - " + "Copyright (c) 2004 demon "; void usage(void); void prdt(AN_D *, TA_D *); +void print_reg(int); int main(int argc, char **argv) @@ -39,18 +44,32 @@ main(int argc, char **argv) AU *au; SORTED *sd; char ch; - int reg = 0; + char *datum; + int reg = FERN_W; int flags = 0; time_t tval = time(NULL); struct tm *tm = localtime(&tval); int time = tm->tm_hour; int quant = 3; int i; + struct passwd *pw; + char *home; + + home = calloc(_POSIX_PATH_MAX, sizeof(char)); + pw = getpwnam(getlogin()); + snprintf(home, _POSIX_PATH_MAX, "%s/.tgeb", pw->pw_dir); + if (chdir(home) < NULL) { + if (mkdir(home, 0755) < NULL) + err(1, "%s", home); + if (chdir(home) < NULL) + err(1, "%s", home); + tgeb_update(tm); + } + free(home); - while ((ch = getopt(argc, argv, "CRP9nrfo12eONE?h:q:u")) != -1) + while ((ch = getopt(argc, argv, "CRP9n5fo12eONE?h:q:u")) != -1) switch (ch) { case 'u': /* update */ - printf("%s: updating database...\n", __progname); tgeb_update(tm); exit(0); break; @@ -77,7 +96,7 @@ main(int argc, char **argv) case 'n': /* Nah */ reg = NAH_W; break; - case 'r': /* Reg 50km */ + case '5': /* Reg 50km */ reg = REG_W; break; case 'f': /* Fern */ @@ -98,7 +117,6 @@ main(int argc, char **argv) case 'O': /* o2 */ reg = O2_W; break; -/* case 'N': // Now if ((tm->tm_wday == 0) || (tm->tm_wday == 6)) reg++; @@ -106,7 +124,6 @@ main(int argc, char **argv) case 'E': // Wochenende reg++; break; -*/ case '?': default: usage(); @@ -120,6 +137,7 @@ main(int argc, char **argv) if ((tm->tm_wday == 0) || (tm->tm_wday == 6)) reg++; + datum = tgeb_read_date("datum.dat"); an = tgeb_read_an("anbieter.dat"); au = tgeb_read_au("ausland.dat"); ta = tgeb_read_ta("tarife.dat", au); @@ -129,14 +147,17 @@ main(int argc, char **argv) } sd = tgeb_select(ta, an, reg, flags, time); + printf("\nDB\t%s\n\n", datum); + print_reg(reg); + for (i = 0; i < sd->q; i++) { prdt(&an->e[sd->id[i]], sd->data[i]); if ((i + 1) >= quant) break; } + free(datum); tgeb_free_sd(sd); - tgeb_free_ta(ta); tgeb_free_au(au); tgeb_free_an(an); @@ -148,19 +169,21 @@ main(int argc, char **argv) void prdt(AN_D * an_d, TA_D * ta_d) { - printf("(%.2u)\tPrefix:\t%s\n" - "\tName:\t%s" +#ifdef DEBUG + printf("ID\t%.2u\n", an_d->id); +#endif + printf("Prefix\t%s\n" + "Name\t%s" " (%s)\n", - an_d->id, an_d->pref, an_d->h->name, an_d->serv); - printf("\tValid:\t%.2u:00 - %.2u:00 h\n", + printf("Valid\t%.2u:00 - %.2u:00 h\n", ta_d->prev ? ta_d->prev->time : (char) NULL, ta_d->time); - printf("\tFee:\t%.2f ct/min" + printf("Fee:\t%.2f ct/min" " + %.2f ct\n" - "\tTiming:\t%u/%u s\n", + "Timing\t%u/%u s\n", ta_d->fee * 100, ta_d->dfee * 100, ta_d->t1, @@ -169,17 +192,42 @@ prdt(AN_D * an_d, TA_D * ta_d) return; } +void +print_reg(int reg) +{ + char *regions[] = { + "Nah", "Nah Wochenende", + "50km", "50km Wochenende", + "Fern", "Fern Wochenende", + "Ort", "Ort Wochenende", + "D1", "D1 Wochenende", + "D2", "D2 Wochenende", + "E+", "E+ Wochenende", + "o2", "o2 Wochenende", + NULL }; + + if (reg < 0x00 || reg > 0xFF) +#ifdef DEBUG + errx(1, "wrong region: 0x%.2x", reg); +#else + return; +#endif + + printf("Region\t%s\n\n", regions[reg]); + return; +} + void usage() { printf("%s\n", copyright); - printf("Usage: %s [-CRP9nrfo12O] [-h ] [-q ] [-u] [-?]\n", __progname); + printf("Usage: %s [-CRP9n5fo12O] [-h ] [-q ] [-u] [-?]\n", __progname); printf(" -C Call-by-Call (default)\n" \ " -R Call-by-Call with registration\n" \ " -P Preselect\n" \ " -9 with 0190 (default - without)\n" \ " -n Nah\n" \ - " -r Reg. 50km\n" \ + " -5 Region 50km\n" \ " -f Fern (default)\n" \ " -o Ort\n" \ " -1 D1\n" \ -- cgit v1.2.3