defs: Update submodule Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
README: Update README with more informations and up-to-date urls Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
CMake: Add release CMake and instructions Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
main: Fix git url Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
shayla: Add more intelligent versionning in the project Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
defs: Add submodule CMake definitions Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
shayla: Add robots.txt generation Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Typos: Fix a bug in the RSS and some typos in the help Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Readme: Add a basic README to the project, typos in the code Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Rss: Now generating feed and sitemap Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Dump: Now dumping the website and generating the index This commit introduces full website HTML dumping, with route and such. I've added a sort by time in order to generate the index correctly, which is now done. Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Builder: Now reading layouts and copying final files This commit do introduce layouts reading, in order to easily use them later on. I've also coded the entire file copy needed for the final website (Favicon, styles and images). On another note, I've reworked the main offset API a bit, since I use it in two different places now. Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Parser: Now parsing markdown from posts files We now parse the content of a markdown post, and convert it to html. I've also added more error messages in case of parsing error, and fixed a crash on a file size of 0. I've also modified the pool API a bit, with a more simple approach on the user side, and the possibility to be called back with the current thread number Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Parser: Now (concurrently) parsing header of posts file This commit introduces full reading and header parsing from posts files. In order to do that, so changes were made to the core code. Mainly, a new API to execute asynchronous code in pool.c. I've also added a --debug flag to the binary, and some fixes here and there to the log functions. Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Args: Add command line argument line parsing This commit introduce full argument parsing in shayla. There is several options in the code, and since the --help option is covering all of them, I will not go one-by-one in this commit message. On the minor side of this patch, I fixed a memory leak in the 'add_file' function, and changed the compilation standard from C99 to C11. Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Files: Add recursive file listing This commit introduces numerous things. The main one is to be able to list every file in a directory with 'list_dir', using linked lists for that. The implementation is to be safe, and seems so at the moment (Valgrind does not shout at me). File links are properly handled, exception made for kernel file systems (/proc, /dev, etc) which are hardcoded to be ignored at the moment. I've also added creation / destruction method for the main context (shayla_t) and files (file_t), it should be now simple and clear. Last, there is the (almost) entire linux linked list implementation, adapted for user space and my needs. Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
License: Add GPL License to the tree Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>
Log: Add various log functions and macros This commit do introduce various helpers on logging inside shayla. I've also imported my 'utils.h' file, which I do not use much at the moment, but will come handy in the future. As for the log helpers: Simple log macros: - INFO - WARNING - ERROR - FATAL - DEBUG I've also added a more 'complex' API for progressions. The code is well documented, but I'll describe the basics here: One can start a progression with PROGRESS_BEGIN(). This macro takes a printf-like format, aswell as all of the macros in this API. Once the progress has begun, and the huge task is underway, one can update the displayed message with PROGRESS_UPDATE(). If one encounter an error in the progression, the status and message can be updated with PROGRESS_ERROR(). Otherwise, one can terminate the progression with PROGRESS_DONE(). Here's a simple example: > PROGRESS_BEGIN("Massive allocation..."); > > for (size_t i = 0; i < 100000; i++) > { > char *ptr = malloc(2048); > if (ptr == NULL) > { > PROGRESS_ERROR("Cannot allocate memory"); > return ; > } > > PROGRESS_UPDATE("Chunk %zu allocated", i); > usleep(200); > } > > PROGRESS_DONE(); Signed-off-by: Louis Solofrizzo <lsolofrizzo@online.net>