aboutsummaryrefslogtreecommitdiff
path: root/project/gen-text-file.sh
diff options
context:
space:
mode:
Diffstat (limited to 'project/gen-text-file.sh')
-rwxr-xr-xproject/gen-text-file.sh77
1 files changed, 77 insertions, 0 deletions
diff --git a/project/gen-text-file.sh b/project/gen-text-file.sh
new file mode 100755
index 0000000..428a8a9
--- /dev/null
+++ b/project/gen-text-file.sh
@@ -0,0 +1,77 @@
+#!/usr/bin/env bash
+
+dir="$1"
+shift
+
+if [[ ! -d $dir ]]
+then
+ echo "Directory not found: $dir" >&2
+ exit 1
+fi
+
+function gen_text()
+{
+ local varname="$1"
+ local src="$2"
+
+ printf "\nconst char %s[] =\n{\n" "$varname"
+ if [[ $varname =~ _bz2$ ]]
+ then
+ # '-f%z' for MAC, '-c%s' for GNU
+ s=$( stat -c%s "$src" 2>/dev/null || stat -f%z "$src" )
+ x=$( printf "%08x" "$s" )
+ let c=s/100000+1
+ ((c>9)) && c=9
+ printf " 0x%s, 0x%s, 0x%s, 0x%s, // uncompressed size = $s, compression level = $c\n" \
+ "${x:0:2}" "${x:2:2}" "${x:4:2}" "${x:6:2}"
+ bzip2 -$c < "$src" | xxd -i -c16
+ elif [[ $varname =~ _cr$ ]]
+ then
+ grep -v '^~' "$src" \
+ | sed 's/\\/\\\\/g; s/"/\\"/g; s/^/ "/; s/#FF#/#\\f/; s/$/\\r\\n"/'
+ else
+ grep -v '^~' "$src" \
+ | sed 's/\\/\\\\/g; s/"/\\"/g; s/^/ "/; s/#FF#/#\\f/; s/$/\\n"/'
+ fi
+ printf "};\n\n"
+}
+
+for src in "$@"
+do
+ src="${src##*/}"
+ name="${src%.*}"
+ name="text_${name//[-.]/_}"
+ cname="$( echo "SZS_${name}_INC" | awk '{print toupper($0)}' )"
+ #echo "$name : $src -> $dest"
+
+ {
+ printf "\n#ifndef %s\n#define %s 1\n" "$cname" "$cname"
+
+ if [[ -f "$dir/$src" ]]
+ then
+ gen_text "$name" "$dir/$src"
+ echo "$src: $dir/$src" >"$src.d"
+ elif [[ -d "$dir/$src" ]]
+ then
+ printf '%s:' "$src" >"$src.d"
+ for inc in "$dir/$src"/*.inc
+ do
+ name="${inc##*/}"
+ name="${name%.*}"
+ name="text_${name//[-.]/_}"
+ gen_text "$name" "$inc"
+ printf ' \\\n\t%s' "$inc" >>"$src.d"
+ done
+ printf '\n' >>"$src.d"
+ else
+ printf '\n!! Text not found: %s\n' "$dir/$src" >&2
+ rm -f "$src"
+ exit 1
+ fi
+
+ printf "#endif // %s\n\n" "$cname"
+
+ } >"$src"
+
+done
+