From bea3bed91c1de97ab9ec4fc067c928eb6049f9ce Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 18 Sep 2006 13:04:17 +0000 Subject: [PATCH] Speed up presentation of the include files. --- ChangeLog | 7 +++++++ gnulib-tool | 48 ++++++++++++++++++++++++------------------------ 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1ff3955bf8..02082f32ad 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2006-09-15 Ralf Wildenhues + + Speed up by a factor of 1.12. + * gnulib-tool (nl): New variable. + (func_import): Rewrite include directive extraction to only read each + directive once. + 2006-09-17 Bruno Haible * gnulib-tool (func_create_testdir): Rewrite all files at once. diff --git a/gnulib-tool b/gnulib-tool index 416663dc47..d59f8cfd4e 100755 --- a/gnulib-tool +++ b/gnulib-tool @@ -22,9 +22,11 @@ progname=$0 package=gnulib -cvsdatestamp='$Date: 2006-09-18 13:03:14 $' +cvsdatestamp='$Date: 2006-09-18 13:04:17 $' last_checkin_date=`echo "$cvsdatestamp" | sed -e 's,^\$[D]ate: ,,'` version=`echo "$last_checkin_date" | sed -e 's/ .*$//' -e 's,/,-,g'` +nl=' +' # You can set AUTOCONFPATH to empty if autoconf 2.57 is already in your PATH. AUTOCONFPATH= @@ -1943,30 +1945,28 @@ func_import () echo "Finished." echo echo "You may need to add #include directives for the following .h files." + # First the #include <...> directives without #ifs, sorted for convenience, + # then the #include "..." directives without #ifs, sorted for convenience, + # then the #include directives that are surrounded by #ifs. Not sorted. + for module in $modules; do + include_directive=`func_get_include_directive "$module"` + case "$nl$include_directive" in + *"$nl#if"*) + echo "$include_directive" 1>&5 + ;; + *) + echo "$include_directive" | grep -v 'include "' 1>&6 + echo "$include_directive" | grep 'include "' 1>&7 + ;; + esac + done 5> "$tmp"/include-if 6> "$tmp"/include-angles 7> "$tmp"/include-quotes ( - # First the #include <...> directives without #ifs, sorted for convenience. - for module in $modules; do - if func_get_include_directive "$module" | grep '^#if' >/dev/null; then - : - else - func_get_include_directive "$module" | grep -v 'include "' - fi - done | LC_ALL=C sort -u - # Then the #include "..." directives without #ifs, sorted for convenience. - for module in $modules; do - if func_get_include_directive "$module" | grep '^#if' >/dev/null; then - : - else - func_get_include_directive "$module" | grep 'include "' - fi - done | LC_ALL=C sort -u - # Then the #include directives that are surrounded by #ifs. Not sorted. - for module in $modules; do - if func_get_include_directive "$module" | grep '^#if' >/dev/null; then - func_get_include_directive "$module" - fi - done - ) | sed -e '/^$/d;' -e 's/^/ /' + LC_ALL=C sort -u "$tmp"/include-angles + LC_ALL=C sort -u "$tmp"/include-quotes + cat "$tmp"/include-if + ) | sed -e '/^$/d' -e 's/^/ /' + rm -f "$tmp"/include-angles "$tmp"/include-quotes "$tmp"/include-if + echo echo "Don't forget to" if test "$makefile_am" = Makefile.am; then -- 2.30.2