%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /snap/core/17200/lib/resolvconf/
Upload File :
Create Path :
Current File : //snap/core/17200/lib/resolvconf/list-records

#!/bin/bash
# Need bash because we use nullglob, extglob
#
# list-records [--after RECORD]
#
# Print, one per line, names of non-empty files in the current directory
# that match the shell glob patterns in /etc/resolvconf/interface-order.
# If the "--after RECORD" option is given and RECORD is not null then only
# start listing after RECORD (i.e., do not print RECORD itself, and if
# RECORD is not found then print nothing).
# 

set -e

RECORD_TO_WAIT_FOR=""  # This means: don't wait before printing
[ "$1" = "--after" ] && RECORD_TO_WAIT_FOR="$2"
FIRST_ARG_WITHOUT_OPTION_PREFIX="${1#--after=}"
[ "$FIRST_ARG_WITHOUT_OPTION_PREFIX" != "$1" ] && RECORD_TO_WAIT_FOR="$FIRST_ARG_WITHOUT_OPTION_PREFIX"

#
# Store arguments (minus duplicates) in RSLT, separated by newlines.
#
# Doesn't work properly if an argument itself contains whitespace.
#
uniquify()
{
	local E
	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 ###

# The following must be the content of the factory-provided interface-order file
PATTERNS="lo.inet6
lo.inet
lo.@(dnsmasq|pdnsd)
lo.!(pdns|pdns-recursor)
lo
tun*
tap*
hso*
em+([0-9])?(_+([0-9]))*
p+([0-9])p+([0-9])?(_+([0-9]))*
@(br|eth)*([^.]).inet6
@(br|eth)*([^.]).ip6.@(dhclient|dhcpcd|pump|udhcpc)
@(br|eth)*([^.]).inet
@(br|eth)*([^.]).@(dhclient|dhcpcd|pump|udhcpc)
@(br|eth)*
@(ath|wifi|wlan)*([^.]).inet6
@(ath|wifi|wlan)*([^.]).ip6.@(dhclient|dhcpcd|pump|udhcpc)
@(ath|wifi|wlan)*([^.]).inet
@(ath|wifi|wlan)*([^.]).@(dhclient|dhcpcd|pump|udhcpc)
@(ath|wifi|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, however, is essential; it
# 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
# Result is in RSLT

for FLNM in $RSLT ; do
	if [ "$RECORD_TO_WAIT_FOR" ] ; then
		[ "$FLNM" = "$RECORD_TO_WAIT_FOR" ] && RECORD_TO_WAIT_FOR=""
		continue
	fi
	# Only list records of non-zero size
	[ -s "$FLNM" ] && echo "$FLNM"
done
exit 0

Zerion Mini Shell 1.0