чување 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:
измењених датотека: 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 <<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;