From abbee959bf5c87a8b2ad0b2d55d9ddb955147892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yaroslav=20de=20la=20Pe=C3=B1a=20Smirnov?= Date: Mon, 8 Nov 2021 23:29:08 +0300 Subject: Minor fixes here and there * Added year variable to album template * Fixed a minor leak and dangling pointer * Other small improvements --- src/components.c | 11 ++++++++++- src/render.c | 8 ++++++-- src/site.c | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/components.c b/src/components.c index 082eab9..8937a83 100644 --- a/src/components.c +++ b/src/components.c @@ -199,7 +199,7 @@ album_new(struct album_config *conf, struct site_config *sconf, const char *src, album->slug = slugify(rsrc, sconf->base_url, &album->url); album->images = bstree_new(image_cmp, image_destroy); album->tstamp = MAXTIME; - album->map = hashmap_new_with_cap(8); + album->map = hashmap_new_with_cap(16); album->thumbs = vector_new(128); album->previews = vector_new(sconf->max_previews); @@ -222,6 +222,15 @@ album_add_image(struct album *album, struct image *image) bstree_add(album->images, image); } +void +album_set_year(struct album *album) +{ + char *delim = strchr(album->datestr, '-'); + size_t n = delim - album->datestr; + strncpy(album->year, album->datestr, n); + album->year[n] = '\0'; +} + void album_destroy(void *data) { diff --git a/src/render.c b/src/render.c index 7c72cad..acd1de2 100644 --- a/src/render.c +++ b/src/render.c @@ -93,6 +93,8 @@ albums_walk(struct bstnode *node, void *data) hashmap_insert(album->map, "title", album->config->title); hashmap_insert(album->map, "desc", album->config->desc); hashmap_insert(album->map, "link", album->url); + hashmap_insert(album->map, "date", (char *)album->datestr); + hashmap_insert(album->map, "year", album->year); bstree_inorder_walk(album->images->root, images_walk, NULL); @@ -158,7 +160,7 @@ render_make_index(struct render *r, const char *path) bool render_make_album(struct render *r, const char *path, const struct album *album) { - hashmap_insert(r->common_vars, "album", album->map); + if (!r->dry_run) hashmap_insert(r->common_vars, "album", album->map); RENDER_MAKE_START; @@ -201,7 +203,7 @@ render_init(struct render *r, const char *root, struct site_config *conf, r->modtime = tstat.st_mtim; - if (r->dry_run) return true; + if (r->dry_run) goto cleanup; r->env = env_new(tmplpath); if (r->env == NULL) { @@ -221,6 +223,8 @@ render_init(struct render *r, const char *root, struct site_config *conf, bstree_inorder_walk(albums->root, albums_walk, (void *)r); +cleanup: + free(tmplpath); return true; } diff --git a/src/site.c b/src/site.c index 1acdc7c..e96c52c 100644 --- a/src/site.c +++ b/src/site.c @@ -181,6 +181,7 @@ traverse(struct site *site, const char *path, struct stat *dstat) } if (album->images->root != NULL) { + album_set_year(album); bstree_add(site->albums, album); closedir(dir); return true; -- cgit v1.2.3