| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
| |
* bitutil.{c,h} → stringutil.{c,h} (more appropriate)
* new function catn_alloc(size_t n, ...)
which concats `n` given strings into an dynamically allocated buffer,
mostly useful for building URLs which is done in blog_rss.
may be a possibility to use in entry.c, but code there might be too
specific.
|
|
|
|
|
|
|
|
| |
Previously, since we used strftime %z it'd output an offset as +HHMM
while RFC3339 requires +HH:MM. Currently we implement outputting this
manually which proved to be non-trivial because of the tzset() API.
This probably should be improved in the future since I suspect it
produces incorrect results in some edge cases.
|
|
|
|
|
|
|
| |
* add timeutil.{c,h}: utility for formatting timestamps
* wrap feed description in CDATA
* use xml_escaped where applicable
* use time of latest entry for lastBuildDate
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Unfortunately, I got a bit carried away after realizing that the initial
change would be a breaking change anyways, so I am now left with a huge
diff which can't be really split up. Please excuse this.
The changes are as follows:
* Rename blogpost → entry (breaking): make_blogpost → make_entry,
blog_post → blog_entry etc.
* Rename blogdefs.h → core.h (breaking)
* Split functions from main.c into cgiutil and entry
* entry / make_entry:
* Use modification time instead of time in filename (breaking)
* Rename timestamp → time (breaking)
* Add field title (currently basename, breaking)
* Add field text and text_size which can be use to store the
contents of the associated file using mmap (fields default to
NULL and -1 respectively, breaking)
* Do PATH_INFO resolving and on disk path building in make_entry
instead of in blog_index / blog_rss / blog_entry
* entry_get_text: add function to mmap an entry's file into the
structure
* free_entry: also unmap file if present
* make_index: Add function to build an array of entries reverse sorted
by time
* blog_index / blog_rss:
* use make_index instead of scandir and make_blogpost_from_dirent
* (blog_rss) use entry_get_text to pass the template the text of
the entry.
* template:
* template_post_index_entry → template_index_entry (breaking)
* template_post_single_entry → template_single_entry (breaking)
* replace template_error_404() with generic template_error(status)
* templates/simple.c:
* Use xml library instead of printf
* Use entry.text instead of opening the file in the template
* include CSS if BLOG_CSS is set in config.h
* document internal and public interfaces using doxygen
* build process:
* build object files individually
* build process configuration in config.mk (breaking)
* support templates in arbitrary locations
* build default config.h if it's missing
* add install phase
* Rename target to sternenblog.cgi (breaking)
|
| |
|
|
|