diff --git a/Makefile b/Makefile index 0f5cdfd..eb2a263 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ CC = gcc -CFLAGS = -Wall -Wextra -pedantic-errors -std=c99 -Wno-format +CFLAGS = -Wall -Wextra -pedantic-errors -std=c99 -Wno-format -lncurses OUTFILE = cards SRCDIR = src diff --git a/cards b/cards index db42fb8..f9bc3c4 100755 Binary files a/cards and b/cards differ diff --git a/example.csv b/example.csv deleted file mode 100644 index 5f036af..0000000 --- a/example.csv +++ /dev/null @@ -1,5 +0,0 @@ -the,quick -brown,fox -jumped,over -the,lazy -dog,foobar diff --git a/example.tsv b/example.tsv new file mode 100644 index 0000000..0093450 --- /dev/null +++ b/example.tsv @@ -0,0 +1,6 @@ +What is T-Mobile Home Internet? T-Mobile Home Internet is a new offering from T-Mobile, available to customers at certain addresses. +How much does the T-Mobile Home Internet plan cost? T-Mobile Home Internet is just $60 all in with AutoPay for customers who already have (or switch to) a tax included plan, or $60 with AutoPay plus taxes and fees for customers already on a tax exclusive wireless plan. +Is there a data cap on the T-Mobile Home Internet service? Nope! There are no data caps on our 5G Home Internet service. +What type of T-Mobile home internet speeds can I expect? We anticipate some T-Mobile Home Internet customers will see average download speeds in excess of 100 Mbps, and all eligible households will see average download speeds of 25 Mbps or more. +Can I purchase higher-speed service? No confusing charts with multiple speed options that do who-knows-what. Customers will get the max speed the network is able to offer at their home location. +Are there ways I cannot use T-Mobile Home Internet? You can use your Home Internet for all the homework, streaming, and video conferencing you need! But to ensure that our network is available for all customers, there are some restrictions on activities that can damage or disproportionately congest the network. diff --git a/obj/card.o b/obj/card.o index 46bb4a4..fea58c4 100644 Binary files a/obj/card.o and b/obj/card.o differ diff --git a/obj/main.o b/obj/main.o index 6d786e7..708dd70 100644 Binary files a/obj/main.o and b/obj/main.o differ diff --git a/src/card.c b/src/card.c index a533f6d..7388bdd 100644 --- a/src/card.c +++ b/src/card.c @@ -12,10 +12,10 @@ CARD new_card(char *o, char *r) { return c; } -CARD* card_parse_csv(char *f, size_t *ct) { +CARD* card_parse_csv(char *f, int *ct) { FILE *fp; char *l, *o, *r; - const char *delims = ",\0"; + const char *delims = " \0"; CARD *ca; if ((fp = fopen(f, "r")) == NULL) diff --git a/src/include/card.h b/src/include/card.h index cd228ee..9ad63a5 100644 --- a/src/include/card.h +++ b/src/include/card.h @@ -8,6 +8,6 @@ typedef struct card_T { CARD new_card(char *, char *); -CARD* card_parse_csv(char *, size_t *); +CARD* card_parse_csv(char *, int *); #endif diff --git a/src/main.c b/src/main.c index 1941309..bf2a8b8 100644 --- a/src/main.c +++ b/src/main.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "include/main.h" #include "include/card.h" @@ -9,9 +10,7 @@ void die(char *s) { fprintf(stderr, "fatal: %s\n", s); exit(1); } - -char *fgetl(FILE *stream) { - size_t s_sz = 1; // +1 for null byte +char *fgetl(FILE *stream) { size_t s_sz = 1; // +1 for null byte char *s = NULL; char c; @@ -38,15 +37,63 @@ char *strdup_(char *s) { int main(int argc, char **argv) { CARD *cards; - size_t cards_ct; + WINDOW *main_card; + int cards_ct, cc = 0, cf = 0, term_y, term_x; + char k = '\0'; - if (argc < 1) + if (argc < 2) die("filename required"); cards = card_parse_csv(argv[1], &cards_ct); - for (size_t i = 0; i < cards_ct; i++) - printf("o: `%s`, r: `%s`\n", cards[i].obverse, cards[i].reverse); + initscr(); + noecho(); + curs_set(0); + getmaxyx(stdscr, term_y, term_x); + main_card = newwin(term_y * .75, + term_x * .75, + (term_y * .5) - ((term_y * .75) * .5), + (term_x * .5) - ((term_x * .75) * .5)); + refresh(); + do { + switch (k) { + case 'j': + if (++cc > cards_ct - 1) + cc = 0; + cf = 0; + break; + case 'k': + if (--cc < 0) + cc = cards_ct - 1; + cf = 0; + break; + case ' ': + switch (cf) { + case 0: cf = 1; break; + case 1: cf = 0; break; + } + break; + case 'q': + endwin(); + exit(0); + break; + } + + wclear(main_card); + wrefresh(main_card); + box(main_card, 0, 0); + if (cf == 0) { + mvwprintw(main_card, 0, 10, " Card #%d/%d [front] \r", cc + 1, cards_ct); + mvwprintw(main_card, (term_y * .75) * .5, (term_x * .75) * .5, "%s\r", cards[cc].obverse); + } else { + mvwprintw(main_card, 0, 10, " Card #%d/%d [back] \r", cc + 1, cards_ct); + mvwprintw(main_card, (term_y * .75) * .5, (term_x * .75) * .5, "%s\r", cards[cc].reverse); + } + wrefresh(main_card); + } while ((k = getch()) != EOF); + + /* for (size_t i = 0; i < cards_ct; i++) */ + /* printf("o: `%s`, r: `%s`\n", cards[i].obverse, cards[i].reverse); */ return 0; }