On Thu, Feb 18, 2016 at 15:07:02 -0500, Nicolas Pitre wrote:
diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh
new file mode 100755
index 0000000000..898a3ca1b2
--- /dev/null
+++ b/scripts/adjust_autoksyms.sh
@@ -0,0 +1,97 @@
+#!/bin/sh

Given the here-strings in this script, this should probably be /bin/bash or breakage will ensue on Debian and suchlike where /bin/sh != bash. However...

+sed -ns -e '3s/ /\n/gp' "$MODVERDIR"/*.mod | sort -u |
+while read sym; do
+       if [ -n "$CONFIG_HAVE_UNDERSCORE_SYMBOL_PREFIX" ]; then
+               sym=$(sed 's/^_//' <<< "$sym")

...this one could (shell-portably and more efficiently) be a parameter expansion (sym="${sym#_}").

+
+# Extract changes between old and new list and touch corresponding
+# dependency files.
+# Note: sort -m doesn't work well with underscore prefixed symbols so we
+# use 'cat ... | sort' instead.
+changed=0
+while read sympath; do
+       [ -z "$sympath" ] && continue
+       depfile="include/config/ksym/${sympath}.h"
+       mkdir -p "$(dirname "$depfile")"
+       touch "$depfile"
+       changed=$((changed + 1))
+done <<< "$(
+       cat "$cur_ksyms_file" "$new_ksyms_file" | sort | uniq -u |
+       sed -n 's/^#define __KSYM_\(.*\) 1/\1/p' | tr "A-Z_" "a-z/"  )"

Nothing super-obvious springs to mind as a pure-sh equivalent for this one though, so assuming the script remains bash-specific, a process substitution like

 done < <(cat ...)

might slightly cleaner than the here-string + command substitution (doesn't need quoting, and just streams through a pipe rather than bash snarfing it all up into a string).

Reply via email to