From c23146e7f18b0f1bea67ba7b48ad4bc6cc76958b Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Mon, 11 Jul 2016 18:36:46 +0200 Subject: [PATCH] make regen: ~8x faster: use sed script instead of single invocations Change-Id: Ib9b3f4fc524bf3ae7cc921b0340adec113529d4d --- move-asn1-header-files.sh | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/move-asn1-header-files.sh b/move-asn1-header-files.sh index c16816ae..b9683236 100755 --- a/move-asn1-header-files.sh +++ b/move-asn1-header-files.sh @@ -1,6 +1,9 @@ #!/bin/sh # Usage: -# ../../move-asn1-headers.sh osmocom/foo/bar File1.h File2.h ... +# ../../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 @@ -13,13 +16,12 @@ include_dir="$base_dir/include/$include_subdir" mkdir -p "$include_dir" echo "$PWD/*.h --> $include_dir" -sed_includes() { +collect_sed_commands() { while [ -n "$1" ]; do fname="$1" shift - echo 'sed -i "s,^#include \"'$fname'\"$,#include <'$include_subdir/$fname'>," *.[hc]' - sed -i "s,^#include \"$fname\"$,#include <$include_subdir/$fname>," *.[hc] + echo "s,^#include \"$fname\"$,#include <$include_subdir/$fname>," done } @@ -28,8 +30,15 @@ move_headers() { mv $@ "$include_dir/" } -# first replace all `#include "foo.h"' with `#include ' locally -sed_includes $@ +# 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" -# move sed'ed *.h files to the proper include/dir +# Now move sed'ed *.h files to the proper ../include/dir move_headers $@