slweb

Једноставни генератор статичких веб страна
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 3912753dabd534ab8457be13fa305820c780e9ed
родитељ 874b6535035a58675640c9b0293bedf0d9dfbe11
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Mon, 29 Mar 2021 09:38:44 +0200

Added --global-link-prefix option

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mdefs.h | 1+
Mindex.html | 2+-
Mslweb.1.in | 11+++++++++++
Mslweb.c | 33+++++++++++++++++++++++++++++++++
измењених датотека: 4, додавања: 46(+), брисања: 1(-)

diff --git a/defs.h b/defs.h @@ -75,6 +75,7 @@ typedef enum CMD_BODY_ONLY, CMD_BASEDIR, CMD_HELP, + CMD_LINK_PREFIX, CMD_VERSION } Command; diff --git a/index.html b/index.html @@ -153,7 +153,7 @@ this program. If not, see &lt;<a href="https://www.gnu.org/licenses">https://www <div id="git-log"> Previous commit: -index.slw 90b6f3f 2021-03-28 17:05:23 +0200 (Страхиња Радић) (HEAD -> master, origin/master, origin/HEAD) +index.slw b81bf4d 2021-03-29 09:38:44 +0200 (Страхиња Радић) (HEAD -> master, origin/master, origin/HEAD) </div><!--git-log--> diff --git a/slweb.1.in b/slweb.1.in @@ -30,6 +30,7 @@ slweb \- Simple static website generator .SY slweb .OP "\-b \fR|\fP \-\-body-only" .OP "\-d \fR|\fP \-\-basedir" directory +.OP "\-p \fR|\fP \-\-global-link-prefix" URL .RI [ filename ] .YS . @@ -76,6 +77,16 @@ command). Defaults to the current directory. Print this usage information screen. . .TP +.BI \-p " URL" +.TQ +.BI \-\-global-link-prefix " URL" +.br +Set +.I URL +as a global prefix for relative links. For example, this can be useful when +generating Gemini code which needs to keep relative links pointing to web URLs. +. +.TP .B \-v .TQ .B \-\-version diff --git a/slweb.c b/slweb.c @@ -27,6 +27,8 @@ static char* input_dirname = NULL; static char* basedir = NULL; static size_t basedir_size = 0; static char* incdir = NULL; +static char* global_link_prefix = NULL; +static size_t global_link_prefix_size = 0; static KeyValue* vars = NULL; static KeyValue* pvars = NULL; static size_t vars_count = 0; @@ -245,6 +247,26 @@ set_basedir(char* arg, char** basedir, size_t* basedir_size) return 0; } +int +set_global_link_prefix(char* arg, char** global_link_prefix, + size_t* global_link_prefix_size) +{ + size_t arg_len = strlen(arg); + + if (arg_len < 1) + exit(error(1, (uint8_t*)"--global-link-prefix: Argument required")); + + if (arg_len + 1 > *global_link_prefix_size) + { + *global_link_prefix_size = arg_len+1; + REALLOC(*global_link_prefix, char, *global_link_prefix_size) + } + strncpy(*global_link_prefix, arg, *global_link_prefix_size-1); + *(*global_link_prefix + arg_len) = 0; + + return 0; +} + char* strip_ext(const char* fn) { @@ -4018,6 +4040,14 @@ main(int argc, char** argv) if (result) return result; } + else if (startswith(arg, "global-link-prefix")) + { + arg += strlen("global-link-prefix"); + result = set_global_link_prefix(arg, &global_link_prefix, + &global_link_prefix_size); + if (result) + return result; + } else if (!strcmp(arg, "help")) return usage(); else @@ -4039,6 +4069,9 @@ main(int argc, char** argv) case 'h': return usage(); break; + case 'p': + cmd = CMD_LINK_PREFIX; + break; case 'v': cmd = CMD_VERSION; break;