#!/bin/sh # Usage: # ../../move-asn1-headers.sh subdir_name File1.h File2.h ... # All .h and .c files in the current directory are edited to use #include <...> # style for the .h files given on the cmdline. The given .h files are also # moved to ../include// so that #include <...> will work. set -e base_dir="$(dirname "$0")" include_subdir="$1" shift include_dir="$base_dir/include/$include_subdir" mkdir -p "$include_dir" echo "$PWD/*.h --> $include_dir" collect_sed_commands() { while [ -n "$1" ]; do fname="$1" shift echo "s,^#include \"$fname\"$,#include <$include_subdir/$fname>," done } move_headers() { echo mv $@ "$include_dir/" mv $@ "$include_dir/" } # Replace all `#include "foo.h"' with `#include ' locally # - Collect sed commands to replace all header includes, for efficiency cmds="$(mktemp)" echo "collecting sed commands..." collect_sed_commands $@ > "$cmds" # - Run commands on all h and c files echo "sed -i -f \"$cmds\" *.[hc]" sed -i -f "$cmds" *.[hc] rm "$cmds" # Now move sed'ed *.h files to the proper ../include/dir move_headers $@