]> git.ipfire.org Git - ipfire-2.x.git/blobdiff - src/stripper
ipsec-interfaces: Apply static routes (again) after creating IPsec interfaces
[ipfire-2.x.git] / src / stripper
index 15fa308faff70a1f3731ea395e3e01657788a418..f121d35919fb967c6469c54b32d4f791ea631480 100755 (executable)
@@ -1,10 +1,32 @@
-#!/bin/bash
+#!/usr/bin/env bash
+
+dirs=""
+excludes="/dev /proc /sys /run"
+
+while [ $# -gt 0 ]; do
+       case "${1}" in
+               --exclude=*)
+                       excludes="${excludes} ${1#*=}"
+                       ;;
+               *)
+                       dirs="${dirs} ${1}"
+                       ;;
+       esac
+       shift
+done
 
 function _strip() {
        local file=${1}
-
        local cmd="${STRIP-strip}"
 
+       local exclude l
+       for exclude in ${excludes}; do
+               l=${#exclude}
+               if [ "${file:0:${l}}" = "${exclude}" ]; then
+                       return 0
+               fi
+       done
+
        case "$(file -bi ${file})" in
                application/x-sharedlib*|application/x-archive*)
                        cmd="${cmd} --strip-debug --remove-section=.comment --remove-section=.note"
@@ -18,18 +40,18 @@ function _strip() {
        ${cmd} ${file}
 }
 
-for dir in $@; do
+for dir in ${dirs}; do
        # Strip shared objects.
        find ${dir} -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) \
-               | file -N -f - | sed -n -e 's/^\(.*\):[   ]*.*ELF.*, not stripped/\1/p' |
+               | file -N -f - | sed -n -e 's/^\(.*\):[   ]*.*ELF.*, not stripped.*/\1/p' |
                while read file; do
-                       _strip ${file}
-               done
+                       _strip ${file} || exit $?
+               done || exit $?
 
        # Strip static archives.
        find ${dir} -name \*.a -a -exec file {} \; \
                | grep 'current ar archive' | sed -n -e 's/^\(.*\):[    ]*current ar archive/\1/p' |
                while read file; do
-                       _strip ${file}
-               done
+                       _strip ${file} || exit $?
+               done || exit $?
 done