aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2019-05-03 20:18:43 +0200
committerDavid Robillard <d@drobilla.net>2022-01-13 23:05:20 -0500
commitda82a1c9f9fc5a359d3af6641011c4ae68262866 (patch)
treeeb77aecce5b8e8d1df9d0b1e28eec16f4465fcd3 /src
parent4dc7f00c2a312937073c63960307910da739c27b (diff)
downloadserd-da82a1c9f9fc5a359d3af6641011c4ae68262866.tar.gz
serd-da82a1c9f9fc5a359d3af6641011c4ae68262866.tar.bz2
serd-da82a1c9f9fc5a359d3af6641011c4ae68262866.zip
Add input base URI option
Diffstat (limited to 'src')
-rw-r--r--src/serdi.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/serdi.c b/src/serdi.c
index 3f3bce06..f935a83e 100644
--- a/src/serdi.c
+++ b/src/serdi.c
@@ -52,9 +52,10 @@ print_usage(const char* const name, const bool error)
{
FILE* const os = error ? stderr : stdout;
fprintf(os, "%s", error ? "\n" : "");
- fprintf(os, "Usage: %s [OPTION]... INPUT [BASE_URI]\n", name);
+ fprintf(os, "Usage: %s [OPTION]... INPUT...\n", name);
fprintf(os, "Read and write RDF syntax.\n");
fprintf(os, "Use - for INPUT to read from standard input.\n\n");
+ fprintf(os, " -I BASE_URI Input base URI.\n");
fprintf(os, " -a Write ASCII output if possible.\n");
fprintf(os, " -b Fast bulk output for large serialisations.\n");
fprintf(os, " -c PREFIX Chop PREFIX from matching blank node IDs.\n");
@@ -98,6 +99,7 @@ main(int argc, char** argv)
return print_usage(prog, true);
}
+ SerdNode* base = NULL;
SerdSyntax input_syntax = SERD_SYNTAX_EMPTY;
SerdSyntax output_syntax = SERD_SYNTAX_EMPTY;
SerdReaderFlags reader_flags = 0;
@@ -145,6 +147,13 @@ main(int argc, char** argv)
} else if (opt == 's') {
from_string = true;
break;
+ } else if (argv[a][1] == 'I') {
+ if (++a == argc) {
+ return missing_arg(prog, 'I');
+ }
+
+ base = serd_new_uri(SERD_STRING(argv[a]));
+ break;
} else if (opt == 'c') {
if (argv[a][o + 1] || ++a == argc) {
return missing_arg(prog, 'c');
@@ -230,10 +239,7 @@ main(int argc, char** argv)
output_syntax = input_has_graphs ? SERD_NQUADS : SERD_NTRIPLES;
}
- SerdNode* base = NULL;
- if (a < argc) { // Base URI given on command line
- base = serd_new_uri(SERD_STRING(argv[a]));
- } else if (!from_string && !from_stdin) { // Use input file URI
+ if (!base && !from_string && !from_stdin) { // Use input file URI
base = serd_new_file_uri(SERD_STRING(input), SERD_EMPTY_STRING());
}