diff options
Diffstat (limited to 'gen/strgen.sh')
-rwxr-xr-x | gen/strgen.sh | 51 |
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 |