From 6778350211aeae076be80393cbef637e0218ad49 Mon Sep 17 00:00:00 2001 From: default Date: Wed, 4 Sep 2024 09:48:35 +0200 Subject: [PATCH] If style.css does not exist, it's created with the default one. --- data.c | 8 ++++++++ snac.h | 1 + utils.c | 24 ++++++++++++++++++------ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/data.c b/data.c index bbd0e0c..7197320 100644 --- a/data.c +++ b/data.c @@ -156,6 +156,14 @@ int srv_open(const char *basedir, int auto_upgrade) /* read (and drop) emojis.json, possibly creating it */ xs_free(emojis()); + /* if style.css does not exist, create it */ + xs *css_fn = xs_fmt("%s/style.css", srv_basedir); + + if (mtime(css_fn) == 0) { + srv_log(xs_fmt("Writing style.css")); + write_default_css(); + } + return ret; } diff --git a/snac.h b/snac.h index 8f02f0a..65bfb84 100644 --- a/snac.h +++ b/snac.h @@ -347,6 +347,7 @@ int html_post_handler(const xs_dict *req, const char *q_path, char **body, int *b_size, char **ctype); xs_str *timeline_to_rss(snac *user, const xs_list *timeline, char *title, char *link, char *desc); +int write_default_css(void); int snac_init(const char *_basedir); int adduser(const char *uid); int resetpwd(snac *snac); diff --git a/utils.c b/utils.c index d5c2ee4..09a201b 100644 --- a/utils.c +++ b/utils.c @@ -107,6 +107,22 @@ static const char *greeting_html = "

This site is powered by snac.

\n" "\n"; + +int write_default_css(void) +{ + FILE *f; + + xs *sfn = xs_fmt("%s/style.css", srv_basedir); + if ((f = fopen(sfn, "w")) == NULL) + return 1; + + fwrite(default_css, strlen(default_css), 1, f); + fclose(f); + + return 0; +} + + int snac_init(const char *basedir) { FILE *f; @@ -217,15 +233,11 @@ int snac_init(const char *basedir) fwrite(gh, strlen(gh), 1, f); fclose(f); - xs *sfn = xs_fmt("%s/style.css", srv_basedir); - if ((f = fopen(sfn, "w")) == NULL) { - printf("ERROR: cannot create '%s'\n", sfn); + if (write_default_css()) { + printf("ERROR: cannot create style.css\n"); return 1; } - fwrite(default_css, strlen(default_css), 1, f); - fclose(f); - xs *cfn = xs_fmt("%s/server.json", srv_basedir); if ((f = fopen(cfn, "w")) == NULL) { printf("ERROR: cannot create '%s'\n", cfn);