| |
| |
| |
| |
| |
| |
| |
| |
| IFS=$'\n' |
| |
| |
| |
| |
| |
| |
| |
| is_kernel_package="" |
| case "${1:-}" in |
| kernel-module-*) ;; |
| |
| kernel*) is_kernel_package=1 ;; |
| esac |
| |
| if ! [ -z "$is_kernel_package" ]; then |
| cat > /dev/null |
| exit 0 |
| fi |
| |
| |
| which /sbin/modinfo >/dev/null || exit 0 |
| which sed >/dev/null || exit 0 |
| which sort >/dev/null || exit 0 |
| |
| print_modaliases() { |
| declare class=$1 variants=$2 pos=$3 |
| if [ -n "$variants" ]; then |
| echo "${class:0:pos}[$variants]${class:pos+1}" |
| else |
| [ -z "$class" ] || echo "$class" |
| fi |
| } |
| |
| combine_modaliases() { |
| declare tag class variants="" pos="" n |
| read class |
| while read tag; do |
| for ((n=0; n<${#class}; n++)); do |
| if [ "*" != "${class:n:1}" -a \ |
| "${class:0:n}" = "${tag:0:n}" -a \ |
| "${class:n+1}" = "${tag:n+1}" ] && |
| ( [ -z "$pos" ] || [ $n = $pos ] ); then |
| variants="${variants:-${class:n:1}}${tag:n:1}" |
| pos=$n |
| break |
| fi |
| done |
| if [ $n -eq ${#class} ]; then |
| print_modaliases "$class" "$variants" "$pos" |
| variants= |
| pos= |
| class=$tag |
| fi |
| done |
| print_modaliases "$class" "$variants" "$pos" |
| } |
| |
| for module in $(grep -E '/lib/modules/.+\.ko(\.gz|\.bz2|\.xz)?$') "$@"; do |
| |
| modver=$(/sbin/modinfo -F version "$module"| head -n1) |
| modver=${modver//[^0-9a-zA-Z._]/_} |
| |
| [ -z "$modver" ] || modver=" = $modver" |
| |
| /sbin/modinfo -F alias "$module" \ |
| | sed -nre "s,[^][0-9a-zA-Z._:*?/-],_,g; s,(.+),modalias(\\1)$modver,p" |
| done \ |
| | sort -u \ |
| | combine_modaliases |