aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components.c11
-rw-r--r--src/render.c8
-rw-r--r--src/site.c1
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;
}
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;