diff options
Diffstat (limited to 'bsdconfig/timezone/share/menus.subr')
-rw-r--r-- | bsdconfig/timezone/share/menus.subr | 225 |
1 files changed, 0 insertions, 225 deletions
diff --git a/bsdconfig/timezone/share/menus.subr b/bsdconfig/timezone/share/menus.subr deleted file mode 100644 index ef3979be49a5..000000000000 --- a/bsdconfig/timezone/share/menus.subr +++ /dev/null @@ -1,225 +0,0 @@ -if [ ! "$_TIMEZONE_MENUS_SUBR" ]; then _TIMEZONE_MENUS_SUBR=1 -# -# Copyright (c) 2011-2012 Devin Teske -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -# SUCH DAMAGE. -# -# $FreeBSD$ -# -############################################################ INCLUDES - -BSDCFG_SHARE="/usr/share/bsdconfig" -. $BSDCFG_SHARE/common.subr || exit 1 -f_dprintf "%s: loading includes..." timezone/menus.subr -f_include $BSDCFG_SHARE/dialog.subr - -############################################################ GLOBALS - -# -# Export special included variables required by awk(1) for `ENVIRON' visibility -# -export DIALOG_MENU_TAGS - -############################################################ FUNCTIONS - -# f_make_menus -# -# Creates the tag/item ordered-pair list environment variables for the -# continent and country menus. -# -# Required variables [from continents.subr]: -# -# CONTINENTS -# Space-separated list of continents. -# continent_*_title -# Desired menu text for the continent represented by *. -# -# Required variables [created by f_read_iso3166_table from iso3166.subr]: -# -# COUNTRIES -# Space-separated list of 2-character country codes. -# country_*_name :: when country_*_nzones < 0 -# Desired menu text for the country-zone represented by *, the 2- -# character country code. -# -# Required variables [created by f_read_zones from zones.subr]: -# -# country_*_nzones -# Number of zones for the country represented by *, the 2- -# character country code. Should be -1 if the country has only -# one single zone, otherwise 1 or greater to indicate how many -# zones the country has. -# country_*_cont :: when country_*_nzones < 0 -# Principal continent (or ocean) in which the country-zone -# represented by *, the 2-character country code, resides. -# country_*_cont_N :: when country_*_nzones > 0 -# Principal continent (or ocean) in which zone-N of the country -# represented by * resides, the 2-character country code. -# country_*_descr_N :: when country_*_nzones > 0 -# Desired submenu text for zone-N of the country represented by -# *, the 2-character country code. -# -# Variables created by this function: -# -# continent_menu_list -# Menu-list of continents. -# continent_*_nitems -# Number of items associated with the continent represented by *, -# the continent identifier. -# continent_*_tlc_N -# 2-character country code of the Nth item in the continent menu -# for the continent represented by *, the continent identifier. -# continent_*_menu_list -# Menu-list of countries/zones for each continent represented by -# *, the continent identifier. -# country_*_menu_list -# For countries that have multiple zones, this is the submenu- -# list of zones for said country represented by *, the 2- -# character country code. -# -# This function is a two-parter. Below is the awk(1) portion of the function, -# afterward is the sh(1) function which utilizes the below awk script. -# -f_make_menus_awk=' -function add_zone_n_to_country_menu(tlc, n) -{ - zone_title = ENVIRON["country_" tlc "_descr_" n] - gsub(/'\''/, "'\''\\'\'\''", zone_title) - country_menu_list[tlc] = country_menu_list[tlc] \ - ( length(country_menu_list[tlc]) > 0 ? "\n" : "" ) \ - n " '\''" zone_title "'\''" -} -BEGIN { - # - # First, count up all the countries in each continent/ocean. - # Be careful to count those countries which have multiple zones - # only once for each. NB: some countries are in multiple - # continents/oceans. - # - i = split(ENVIRON["COUNTRIES"], countries, /[[:space:]]+/) - for (cp = 1; cp <= i; cp++) - { - tlc = countries[cp] - title = ENVIRON["country_" tlc "_name"] - gsub(/'\''/, "'\''\\'\'\''", title) - nzones = ENVIRON["country_" tlc "_nzones"] - if (!nzones) - { - # Country has no zones - continue - } - else if (nzones < 0) - { - # Country has only one zone - cont = ENVIRON["country_" tlc "_cont"] - nitems = ++continent_nitems[cont] - continent_tlc[cont,nitems] = tlc - continent_title[cont,nitems] = title - } - else - { - # Country has one or more zones - for (n = 1; n <= nzones; n++) - { - add_zone_n_to_country_menu(tlc, n) - cont = ENVIRON["country_" tlc "_cont_" n] - for (x = 1; x < n; x++) - { - contx = ENVIRON["country_"tlc"_cont_"x] - if (cont == contx) break - } - if (x == n) - { - nitems = ++continent_nitems[cont] - continent_tlc[cont,nitems] = tlc - continent_title[cont,nitems] = title - } - } - } - } -} -END { - tags = ENVIRON["DIALOG_MENU_TAGS"] - cont_menu_list = "" - tagn = 0 - - # - # Assemble the menu items in the menu list for each continent/ocean. - # - i = split(ENVIRON["CONTINENTS"], array, /[[:space:]]+/) - for (item = 1; item <= i; item++) - { - cont = array[item] - if (!cont) continue - - if (++tagn >= length(tags)) break - tag = substr(tags, tagn, 1) - cont_menu_list = cont_menu_list \ - ( length(cont_menu_list) > 0 ? "\n" : "" ) \ - "'\''" tag "'\'' '\''" \ - ENVIRON["continent_" cont "_title"] "'\''" - - nitems = continent_nitems[cont] - printf "continent_%s_nitems=%d\n", cont, nitems - - menu_list = "" - for (n = 1; n <= nitems; n++) - { - printf "continent_%s_tlc_%d=%s\n", - cont, n, continent_tlc[cont,n] - - title = continent_title[cont,n] - menu_list = menu_list \ - ( length(menu_list) > 0 ? "\n" : "" ) \ - n " '\''" title "'\''" - } - - gsub(/"/, "\\\"", menu_list) - printf "continent_%s_menu_list=\"%s\"\n", cont, menu_list - } - - gsub(/"/, "\\\"", continent_menu_list) - printf "continent_menu_list=\"%s\"\n", cont_menu_list - print "export continent_menu_list" - - # - # Dump the submenus of countries with multiple zones - # - for (tlc in country_menu_list) - { - menu_list = country_menu_list[tlc] - gsub(/"/, "\\\"", menu_list) - printf "country_%s_menu_list=\"%s\"\n", tlc, menu_list - } -} -' -f_make_menus() -{ - eval $( :| awk "$f_make_menus_awk" ) -} - -############################################################ MAIN - -f_dprintf "%s: Successfully loaded." timezone/menus.subr - -fi # ! $_TIMEZONE_MENUS_SUBR |