From: Stefan Schantl Date: Fri, 11 Sep 2020 10:11:18 +0000 (+0200) Subject: location-functions.pl: Refactor get_locations() function to use the X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=62c2fa9f7dd1fafc3cf043425af4c7d79ad0dece;p=people%2Fstevee%2Fipfire-2.x.git location-functions.pl: Refactor get_locations() function to use the Location module. Signed-off-by: Stefan Schantl --- diff --git a/config/cfgroot/location-functions.pl b/config/cfgroot/location-functions.pl index ab99e71d37..a94d5909e1 100644 --- a/config/cfgroot/location-functions.pl +++ b/config/cfgroot/location-functions.pl @@ -38,6 +38,9 @@ my %not_iso_3166_location = ( "fx" => "France, Metropolitan" ); +# Array which contains special country codes. +my @special_locations = ( "A1", "A2", "A3" ); + # Directory where the libloc database and keyfile lives. our $location_dir = "/var/lib/location/"; @@ -167,29 +170,14 @@ sub get_full_country_name($) { # Function to get all available locations. sub get_locations() { - my @locations = (); - - # Get listed country codes from ISO 3166-1. - my @locations_lc = &Locale::Codes::Country::all_country_codes(); - - # The Codes::Country module provides the country codes only in lower case. - # So we have to loop over the array and convert them into upper case format. - foreach my $ccode (@locations_lc) { - # Convert the country code to uppercase. - my $ccode_uc = uc($ccode); + # Create libloc database handle. + my $db_handle = &init(); - # Add the converted ccode to the locations array. - push(@locations, $ccode_uc); - } - - # Add locations from not_iso_3166_locations. - foreach my $location (keys %not_iso_3166_location) { - # Convert the location into uppercase. - my $location_uc = uc($location); + # Get locations which are stored in the location database. + my @database_locations = &Location::database_countries($db_handle); - # Add the location to the locations array. - push(@locations, $location_uc); - } + # Merge special locations array and the database locations array. + my @locations = (@special_locations, @database_locations); # Sort locations array in alphabetical order. my @sorted_locations = sort(@locations);