Technical Caveats
Content format
Only .htm files are recognized as content. There is no Markdown
support, no tags, no categories, and no theme system. Posts are written in
plain HTML. This is intentional.
Platform support
Webscite currently builds on macOS and FreeBSD. The file traversal code uses
fts_open and fts_read from
<fts.h>, which is a POSIX/BSD interface not available on
Windows. Other POSIX dependencies include realpath,
getline, dirname, access, and
strlcat. Linux support is possible but untested.strlcat is a BSD extension. It is available on macOS and
some Linux distributions but is not part of the C standard
library.
Build requirements
The Makefile hardcodes clang as the compiler of choice. On
macOS, available system libraries may differ —use the included
macos-build.sh wrapper which substitutes the correct framework
flags.
Git requirement
The content/ directory must live inside a Git repository.
Creation and modification dates are read from Git history, and static asset
cache busting uses Git blob hashes. Abbreviated hashes are appended as query
parameters to reset.css, style.css, and
script.js—these three filenames are expected inside the
content/ directory. Files that have not been committed yet show
as "DRAFT" with no date.
Git integration is provided by libgit2,
which gets downloaded and compiled as a static library on first build (this
requires CMake and wget).
Hard limits
A few limits are set at compile time in the source:
- Maximum 50 pages total
- File paths capped at 100 characters
- HTML content buffer of 48 KB per page—longer posts will overflow
All three are defined as constants and can be raised by editing the source directly.