diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components.c | 11 | ||||
-rw-r--r-- | src/render.c | 8 | ||||
-rw-r--r-- | src/site.c | 1 |
3 files changed, 17 insertions, 3 deletions
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); @@ -223,6 +223,15 @@ album_add_image(struct album *album, struct image *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) { struct album *album = 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; } @@ -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; |