diff options
Diffstat (limited to '')
| -rwxr-xr-x | project/gen-text-file.sh | 77 |
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 + |
