#!/bin/bash # Need bash because we use nullglob, extglob # # list-records # # Print, one per line, names of non-empty files in the current directory # that match the shell glob patterns in /etc/resolvconf/interface-order set -e # Stores arguments (minus duplicates) in RSLT, separated by newlines # Doesn't work properly if an argument itself contain whitespace uniquify() { RSLT="" while [ "$1" ] ; do for E in $RSLT ; do [ "$1" = "$E" ] && { shift ; continue 2 ; } done RSLT="${RSLT:+$RSLT }$1" shift done } ### Compile ordered list of resolv.conf-type files ### PATTERNS="lo.inet* lo.dnsmasq lo.pdnsd lo.!(pdns|pdns-recursor) lo tun* tap* hso* em+([0-9])?(_+([0-9]))* p+([0-9])p+([0-9])?(_+([0-9]))* eth* ath* wlan* ppp* *" if [ -r /etc/resolvconf/interface-order ] ; then PATTERNS="$(sed -e ' s/^[[:space:]]\+// s/[[:space:]].*// s/#.*// /\//d /^~/d /^\./d /^$/d ' /etc/resolvconf/interface-order)" fi shopt -s nullglob extglob # The nullglob option isn't essential since the test -s below will eliminate # any unexpanded patterns. The extglob option makes the glob language of # interface-order patterns as powerful as regexps. # Pathname expansion occurs on the following line resulting, in general, # in multiple instances of filenames; duplicates must be removed. uniquify $PATTERNS for FLNM in $RSLT ; do # Only list records of non-zero size [ -s "$FLNM" ] && echo "$FLNM" done exit 0