aboutsummaryrefslogtreecommitdiff
path: root/gen/strgen.sh
diff options
context:
space:
mode:
Diffstat (limited to 'gen/strgen.sh')
-rwxr-xr-xgen/strgen.sh51
1 files changed, 42 insertions, 9 deletions
diff --git a/gen/strgen.sh b/gen/strgen.sh
index acaa6cdf..2b8927b5 100755
--- a/gen/strgen.sh
+++ b/gen/strgen.sh
@@ -2,7 +2,7 @@
#
# SPDX-License-Identifier: BSD-2-Clause
#
-# Copyright (c) 2018-2021 Gavin D. Howard and contributors.
+# Copyright (c) 2018-2023 Gavin D. Howard and contributors.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
@@ -32,24 +32,53 @@ export LC_CTYPE=C
progname=${0##*/}
+script="$0"
+scriptdir=$(dirname "$script")
+. "$scriptdir/../scripts/functions.sh"
+
+# Just print the usage and exit with an error. This can receive a message to
+# print.
+# @param 1 A message to print.
+usage() {
+ if [ $# -eq 1 ]; then
+ printf '%s\n\n' "$1"
+ fi
+ printf 'usage: %s input output exclude name [label [define [remove_tabs]]]\n' "$progname"
+ exit 1
+}
+
# See strgen.c comment on main() for what these mean. Note, however, that this
# script generates a string literal, not a char array. To understand the
# consequences of that, see manuals/development.md#strgenc.
if [ $# -lt 3 ]; then
- echo "usage: $progname input output name [label [define [remove_tabs]]]"
- exit 1
+ usage "Not enough arguments"
fi
input="$1"
+check_file_arg "$input"
output="$2"
-name="$3"
-label="$4"
-define="$5"
-remove_tabs="$6"
+exclude="$3"
+name="$4"
+label="$5"
+define="$6"
+remove_tabs="$7"
+if [ "$remove_tabs" != "" ]; then
+ check_bool_arg "$remove_tabs"
+fi
-exec < "$input"
+tmpinput=$(mktemp -t "${input##*/}_XXXXXX")
+
+if [ "$exclude" -ne 0 ]; then
+ filter_text "$input" "$tmpinput" "E"
+else
+ filter_text "$input" "$tmpinput" "A"
+fi
+
+exec < "$tmpinput"
exec > "$output"
+rm -f "$tmpinput"
+
if [ -n "$label" ]; then
nameline="const char *${label} = \"${input}\";"
labelexternline="extern const char *${label};"
@@ -67,7 +96,7 @@ if [ -n "$remove_tabs" ]; then
fi
cat<<EOF
-// Copyright (c) 2018-2021 Gavin D. Howard and contributors.
+// Copyright (c) 2018-2023 Gavin D. Howard and contributors.
// Licensed under the 2-clause BSD license.
// *** AUTOMATICALLY GENERATED FROM ${input}. DO NOT MODIFY. ***
@@ -83,3 +112,7 @@ $(sed -e "$remtabsexpr " -e '1,/^$/d; s:\\n:\\\\n:g; s:":\\":g; s:^:":; s:$:\\n"
;
${condend}
EOF
+
+#if [ "$exclude" -ne 0 ]; then
+ #rm -rf "$input"
+#fi