tAdd setup() and cleanup(), and ui-specific equivalent - sacc - sacc(omys), simple console gopher client (mirror) HTML git clone https://git.parazyd.org/sacc DIR Log DIR Files DIR Refs DIR LICENSE --- DIR commit 01e24f0999841a8cdfa99027e2be90963742cef0 DIR parent 5f2e561edb8bf36c8a19ec32e0a83abde936be34 HTML Author: Quentin Rameau <quinq@fifth.space> Date: Fri, 30 Jun 2017 17:15:27 +0200 Add setup() and cleanup(), and ui-specific equivalent Diffstat: M common.h | 2 ++ M sacc.c | 32 ++++++++++++++++++++++--------- M ui_txt.c | 5 +++++ 3 files changed, 30 insertions(+), 9 deletions(-) --- DIR diff --git a/common.h b/common.h t@@ -22,3 +22,5 @@ void die(const char *fmt, ...); void display(Item *item); Item *selectitem(Item *entry); const char *typedisplay(char t); +void uicleanup(void); +void uisetup(void); DIR diff --git a/sacc.c b/sacc.c t@@ -12,6 +12,9 @@ #include "common.h" +static char *mainurl; +static Item *mainentry; + void die(const char *fmt, ...) { t@@ -409,22 +412,33 @@ moldentry(char *url) return entry; } +static void +cleanup(void) +{ + free(mainentry); /* TODO free all tree recursively */ + free(mainurl); + uicleanup(); +} + +static void +setup(void) +{ + atexit(cleanup); + uisetup(); +} + int main(int argc, char *argv[]) { - Item *entry; - char *url; - if (argc != 2) usage(); - url = xstrdup(argv[1]); + setup(); - entry = moldentry(url); - delve(entry); + mainurl = xstrdup(argv[1]); - free(entry); /* TODO free all tree recursively */ - free(url); + mainentry = moldentry(mainurl); + delve(mainentry); - return 0; + exit(0); } DIR diff --git a/ui_txt.c b/ui_txt.c t@@ -8,6 +8,11 @@ #include "common.h" void +uisetup(void) { return; } +void +uicleanup(void) { return; } + +void help(void) { puts("Commands:\n"