From: Michael Tremer Date: Thu, 17 Aug 2017 19:39:55 +0000 (+0000) Subject: Introduce list_directory X-Git-Tag: 010~245 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60b1f3783a04ee50d5f9877a4009caf2168b079f;p=people%2Fms%2Fnetwork.git Introduce list_directory This function lists all files in a directory which is a functionality that we use very very often. Signed-off-by: Michael Tremer --- diff --git a/src/functions/functions.device b/src/functions/functions.device index 12bf203f..5ac03c60 100644 --- a/src/functions/functions.device +++ b/src/functions/functions.device @@ -113,10 +113,7 @@ device_ifindex_to_name() { assert isset idx local device device_idx - for device in ${SYS_CLASS_NET}/*; do - device=$(basename ${device}) - device_exists ${device} || continue - + for device in $(list_directory "${SYS_CLASS_NET}"); do device_idx=$(device_get_ifindex ${device}) if [ "${device_idx}" = "${idx}" ]; then @@ -493,18 +490,13 @@ device_set_address() { device_get() { local device - local devices - - for device in ${SYS_CLASS_NET}/*; do - device=$(basename ${device}) - + for device in $(list_directory "${SYS_CLASS_NET}"); do # bonding_masters is no device [ "${device}" = "bonding_masters" ] && continue - devices="${devices} ${device}" + echo "${device}" done - echo ${devices} return ${EXIT_OK} } @@ -1016,12 +1008,7 @@ device_get_queues() { local device=${1} - local queue - for queue in ${SYS_CLASS_NET}/${device}/queues/*; do - [ -d "${queue}" ] || continue - - basename "${queue}" - done + list_directory "${SYS_CLASS_NET}/${device}/queues" } device_supports_multiqueue() { diff --git a/src/functions/functions.hook b/src/functions/functions.hook index 48f8a548..ad51ad5a 100644 --- a/src/functions/functions.hook +++ b/src/functions/functions.hook @@ -104,9 +104,7 @@ hook_list() { assert isset dir local hook - for hook in ${dir}/*; do - hook="$(basename "${hook}")" - + for hook in $(list_directory "${dir}"); do if hook_exists "${type}" "${hook}"; then echo "${hook}" fi diff --git a/src/functions/functions.interrupts b/src/functions/functions.interrupts index 3bd2c01e..c443a936 100644 --- a/src/functions/functions.interrupts +++ b/src/functions/functions.interrupts @@ -20,14 +20,7 @@ ############################################################################### interrupts_list() { - local interrupt - for interrupt in /proc/irq/*; do - [ -d "${interrupt}" ] || continue - - basename "${interrupt}" - done - - return ${EXIT_OK} + list_directory "/proc/irq" } interrupt_use_smp_affinity() { diff --git a/src/functions/functions.ipsec b/src/functions/functions.ipsec index 6c2a0df8..a15ff468 100644 --- a/src/functions/functions.ipsec +++ b/src/functions/functions.ipsec @@ -1195,11 +1195,7 @@ ipsec_connection_destroy() { # List all ipsec connections ipsec_list_connections() { - local connection - for connection in ${NETWORK_IPSEC_CONNS_DIR}/*; do - [ -d ${connection} ] || continue - basename ${connection} - done + list_directory "${NETWORK_IPSEC_CONNS_DIR}" } ipsec_connection_to_strongswan() { diff --git a/src/functions/functions.list b/src/functions/functions.list index 9ca13b97..c7a22cd1 100644 --- a/src/functions/functions.list +++ b/src/functions/functions.list @@ -194,3 +194,21 @@ list_head() { return ${EXIT_ERROR} } + +list_directory() { + local dir="${1}" + + # Only works for directories + if [ ! -d "${dir}" ]; then + return ${EXIT_ERROR} + fi + + local path + for path in ${dir}/*; do + if [ -e "${path}" ]; then + basename "${path}" + fi + done + + return ${EXIT_OK} +} diff --git a/src/functions/functions.phy b/src/functions/functions.phy index f79cb95f..a0a53ff5 100644 --- a/src/functions/functions.phy +++ b/src/functions/functions.phy @@ -35,13 +35,7 @@ phy_exists() { } phy_list() { - local phy - - for phy in $(phy_dir)/*; do - [ -d "${phy}" ] || continue - - basename ${phy} - done + list_directory "$(phy_dir)" } phy_get() { diff --git a/src/functions/functions.ports b/src/functions/functions.ports index 5defe016..2537f815 100644 --- a/src/functions/functions.ports +++ b/src/functions/functions.ports @@ -25,13 +25,7 @@ port_dir() { } port_list() { - local port - for port in $(port_dir)/*; do - port="$(basename "${port}")" - if port_exists "${port}"; then - print "${port}" - fi - done + list_directory "$(port_dir)" } port_list_in_use() { @@ -280,8 +274,7 @@ port_cmd() { ports_get() { local port - for port in $(port_dir)/*; do - port=$(basename ${port}) + for port in $(list_directory "$(port_dir)"); do if port_exists ${port}; then echo "${port}" fi diff --git a/src/functions/functions.vpn-security-policies b/src/functions/functions.vpn-security-policies index 14386ecc..435d1bcd 100644 --- a/src/functions/functions.vpn-security-policies +++ b/src/functions/functions.vpn-security-policies @@ -1188,21 +1188,12 @@ _vpn_security_policies_make_esp_proposal() { # List all security policies vpn_security_policies_list_all() { - local security_policy - for security_policy in ${NETWORK_SHARE_DIR}/vpn/security-policies/*; do - [ -f ${security_policy} ] || continue - basename ${security_policy} - done + list_directory "${NETWORK_SHARE_DIR}/vpn/security-policies" # Add all user-defined policies vpn_security_policies_list_user } vpn_security_policies_list_user() { - local security_policy - for security_policy in ${NETWORK_CONFIG_DIR}/vpn/security-policies/*; do - [ -f ${security_policy} ] || continue - - basename ${security_policy} - done + list_directory "${NETWORK_CONFIG_DIR}/vpn/security-policies" } diff --git a/src/functions/functions.zone b/src/functions/functions.zone index e9e2dd44..0d9c29ad 100644 --- a/src/functions/functions.zone +++ b/src/functions/functions.zone @@ -457,10 +457,8 @@ zone_get_ports() { assert isset zone local port - for port in $(zone_dir ${zone})/ports/*; do - port=$(basename ${port}) - - if port_exists ${port}; then + for port in $(list_directory "$(zone_dir ${zone})/ports"); do + if port_exists "${port}"; then echo "${port}" fi done @@ -472,9 +470,7 @@ zone_get_ports_num() { local counter=0 local port - for port in $(zone_dir "${zone}")/ports/*; do - port="$(basename "${port}")" - + for port in $(list_directory "$(zone_dir "${zone}")/ports"); do if port_exists "${port}"; then counter=$(( ${counter} + 1 )) fi @@ -723,11 +719,10 @@ zones_show() { zones_get_all() { local zone - for zone in $(zone_dir)/*; do - zone=$(basename ${zone}) - zone_exists ${zone} || continue - - echo "${zone}" + for zone in $(list_directory "$(zone_dir)"); do + if zone_exists ${zone}; then + echo "${zone}" + fi done } @@ -816,12 +811,7 @@ zones_get() { zone_ports_list() { local zone=${1} - local port - for port in $(zone_dir ${zone})/ports/*; do - [ -e "${port}" ] || continue - - echo $(basename ${port}) - done + list_directory "$(zone_dir ${zone})/ports" } zone_port_attach() { @@ -1086,12 +1076,7 @@ zone_configs_status() { zone_configs_list() { local zone=${1} - local config - for config in $(zone_dir ${zone})/configs/*; do - [ -e "${config}" ] || continue - - basename ${config} - done + list_directory "$(zone_dir ${zone})/configs" } zone_config_get_new_id() {