diff options
| -rw-r--r-- | Makefile | 4 | ||||
| -rw-r--r-- | include/components.h | 2 | ||||
| -rw-r--r-- | src/components.c | 11 | ||||
| -rw-r--r-- | src/render.c | 8 | ||||
| -rw-r--r-- | src/site.c | 1 | ||||
| -rw-r--r-- | template-vars.md | 1 | 
6 files changed, 24 insertions, 3 deletions
| @@ -12,6 +12,9 @@ ifdef DEBUG  BUILDIR:=build/debug  CFLAGS:=-std=c99 -O0 -g -DDEBUG $(XFLAGS)  endif +ifdef ASAN +CFLAGS+= -fsanitize=address -fno-omit-frame-pointer +endif  OBJDIR=$(BUILDIR)/obj @@ -37,6 +40,7 @@ $(OBJDIR)/%.o: %.c  	$(CC) -c $(CFLAGS) $(IDIRS) -o $@ $< $(LIBS)  revela: $(ALL_OBJS) +	mkdir -p $(@D)  	$(CC) $(LDFLAGS) -o $(BUILDIR)/$@ $^ $(LIBS) $(CFLAGS)  clean: diff --git a/include/components.h b/include/components.h index ba5c866..c56de77 100644 --- a/include/components.h +++ b/include/components.h @@ -77,6 +77,8 @@ int album_cmp(const void *a, const void *b);  void album_add_image(struct album *, struct image *); +void album_set_year(struct album *); +  void album_destroy(void *data);  #endif 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; diff --git a/template-vars.md b/template-vars.md index 2108b87..f222813 100644 --- a/template-vars.md +++ b/template-vars.md @@ -21,6 +21,7 @@ A very rough and dirty representation of the variables in each template.  	- `desc`  	- `link`  	- `date` +	- `year`  	- `previews` (vector of thumbs)  	- `thumbs` (vector)  		- `link` | 
