Imported Upstream version 2.6.1
[debian/amanda] / perl / Amanda / Config.pm
index b254c923cbab11e5306b141017dbeee779915f01..beaf07ba6659639a39507f270e449ea4628bf846 100644 (file)
@@ -1,5 +1,5 @@
 # This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.33
+# Version 1.3.35
 #
 # Don't modify this file, modify the SWIG interface instead.
 
@@ -53,6 +53,7 @@ package Amanda::Config;
 *getconf_seen = *Amanda::Configc::getconf_seen;
 *getconf_byname = *Amanda::Configc::getconf_byname;
 *getconf_list = *Amanda::Configc::getconf_list;
+*getconf_byname_strs = *Amanda::Configc::getconf_byname_strs;
 *lookup_tapetype = *Amanda::Configc::lookup_tapetype;
 *tapetype_getconf = *Amanda::Configc::tapetype_getconf;
 *tapetype_name = *Amanda::Configc::tapetype_name;
@@ -71,18 +72,37 @@ package Amanda::Config;
 *holdingdisk_getconf = *Amanda::Configc::holdingdisk_getconf;
 *holdingdisk_name = *Amanda::Configc::holdingdisk_name;
 *holdingdisk_seen = *Amanda::Configc::holdingdisk_seen;
+*lookup_application = *Amanda::Configc::lookup_application;
+*application_getconf = *Amanda::Configc::application_getconf;
+*application_name = *Amanda::Configc::application_name;
+*application_seen = *Amanda::Configc::application_seen;
+*lookup_pp_script = *Amanda::Configc::lookup_pp_script;
+*pp_script_getconf = *Amanda::Configc::pp_script_getconf;
+*pp_script_name = *Amanda::Configc::pp_script_name;
+*pp_script_seen = *Amanda::Configc::pp_script_seen;
+*lookup_device_config = *Amanda::Configc::lookup_device_config;
+*device_config_getconf = *Amanda::Configc::device_config_getconf;
+*device_config_name = *Amanda::Configc::device_config_name;
+*device_config_seen = *Amanda::Configc::device_config_seen;
+*lookup_changer_config = *Amanda::Configc::lookup_changer_config;
+*changer_config_getconf = *Amanda::Configc::changer_config_getconf;
+*changer_config_name = *Amanda::Configc::changer_config_name;
+*changer_config_seen = *Amanda::Configc::changer_config_seen;
 *getconf_unit_divisor = *Amanda::Configc::getconf_unit_divisor;
-*new_config_overwrites = *Amanda::Configc::new_config_overwrites;
-*free_config_overwrites = *Amanda::Configc::free_config_overwrites;
-*add_config_overwrite = *Amanda::Configc::add_config_overwrite;
-*add_config_overwrite_opt = *Amanda::Configc::add_config_overwrite_opt;
-*apply_config_overwrites = *Amanda::Configc::apply_config_overwrites;
 *config_init = *Amanda::Configc::config_init;
 *config_uninit = *Amanda::Configc::config_uninit;
 *get_config_options = *Amanda::Configc::get_config_options;
 *get_config_name = *Amanda::Configc::get_config_name;
 *get_config_dir = *Amanda::Configc::get_config_dir;
 *get_config_filename = *Amanda::Configc::get_config_filename;
+*config_print_errors = *Amanda::Configc::config_print_errors;
+*config_clear_errors = *Amanda::Configc::config_clear_errors;
+*config_errors = *Amanda::Configc::config_errors;
+*new_config_overwrites = *Amanda::Configc::new_config_overwrites;
+*free_config_overwrites = *Amanda::Configc::free_config_overwrites;
+*add_config_overwrite = *Amanda::Configc::add_config_overwrite;
+*add_config_overwrite_opt = *Amanda::Configc::add_config_overwrite_opt;
+*apply_config_overwrites = *Amanda::Configc::apply_config_overwrites;
 *dump_configuration = *Amanda::Configc::dump_configuration;
 *config_dir_relative = *Amanda::Configc::config_dir_relative;
 *taperalgo2str = *Amanda::Configc::taperalgo2str;
@@ -102,10 +122,12 @@ package Amanda::Config;
 *CNF_CLIENT_USERNAME = *Amanda::Configc::CNF_CLIENT_USERNAME;
 *CNF_GNUTAR_LIST_DIR = *Amanda::Configc::CNF_GNUTAR_LIST_DIR;
 *CNF_AMANDATES = *Amanda::Configc::CNF_AMANDATES;
+*CNF_MAILER = *Amanda::Configc::CNF_MAILER;
 *CNF_MAILTO = *Amanda::Configc::CNF_MAILTO;
 *CNF_DUMPUSER = *Amanda::Configc::CNF_DUMPUSER;
 *CNF_TAPEDEV = *Amanda::Configc::CNF_TAPEDEV;
 *CNF_DEVICE_PROPERTY = *Amanda::Configc::CNF_DEVICE_PROPERTY;
+*CNF_PROPERTY = *Amanda::Configc::CNF_PROPERTY;
 *CNF_CHANGERDEV = *Amanda::Configc::CNF_CHANGERDEV;
 *CNF_CHANGERFILE = *Amanda::Configc::CNF_CHANGERFILE;
 *CNF_LABELSTR = *Amanda::Configc::CNF_LABELSTR;
@@ -218,12 +240,31 @@ package Amanda::Config;
 *DUMPTYPE_KENCRYPT = *Amanda::Configc::DUMPTYPE_KENCRYPT;
 *DUMPTYPE_IGNORE = *Amanda::Configc::DUMPTYPE_IGNORE;
 *DUMPTYPE_INDEX = *Amanda::Configc::DUMPTYPE_INDEX;
+*DUMPTYPE_APPLICATION = *Amanda::Configc::DUMPTYPE_APPLICATION;
+*DUMPTYPE_PP_SCRIPTLIST = *Amanda::Configc::DUMPTYPE_PP_SCRIPTLIST;
+*DUMPTYPE_PROPERTY = *Amanda::Configc::DUMPTYPE_PROPERTY;
 *INTER_COMMENT = *Amanda::Configc::INTER_COMMENT;
 *INTER_MAXUSAGE = *Amanda::Configc::INTER_MAXUSAGE;
 *HOLDING_COMMENT = *Amanda::Configc::HOLDING_COMMENT;
 *HOLDING_DISKDIR = *Amanda::Configc::HOLDING_DISKDIR;
 *HOLDING_DISKSIZE = *Amanda::Configc::HOLDING_DISKSIZE;
 *HOLDING_CHUNKSIZE = *Amanda::Configc::HOLDING_CHUNKSIZE;
+*APPLICATION_COMMENT = *Amanda::Configc::APPLICATION_COMMENT;
+*APPLICATION_PLUGIN = *Amanda::Configc::APPLICATION_PLUGIN;
+*APPLICATION_PROPERTY = *Amanda::Configc::APPLICATION_PROPERTY;
+*PP_SCRIPT_COMMENT = *Amanda::Configc::PP_SCRIPT_COMMENT;
+*PP_SCRIPT_PLUGIN = *Amanda::Configc::PP_SCRIPT_PLUGIN;
+*PP_SCRIPT_PROPERTY = *Amanda::Configc::PP_SCRIPT_PROPERTY;
+*PP_SCRIPT_EXECUTE_ON = *Amanda::Configc::PP_SCRIPT_EXECUTE_ON;
+*PP_SCRIPT_EXECUTE_WHERE = *Amanda::Configc::PP_SCRIPT_EXECUTE_WHERE;
+*DEVICE_CONFIG_COMMENT = *Amanda::Configc::DEVICE_CONFIG_COMMENT;
+*DEVICE_CONFIG_TAPEDEV = *Amanda::Configc::DEVICE_CONFIG_TAPEDEV;
+*DEVICE_CONFIG_DEVICE_PROPERTY = *Amanda::Configc::DEVICE_CONFIG_DEVICE_PROPERTY;
+*CHANGER_CONFIG_COMMENT = *Amanda::Configc::CHANGER_CONFIG_COMMENT;
+*CHANGER_CONFIG_TAPEDEV = *Amanda::Configc::CHANGER_CONFIG_TAPEDEV;
+*CHANGER_CONFIG_TPCHANGER = *Amanda::Configc::CHANGER_CONFIG_TPCHANGER;
+*CHANGER_CONFIG_CHANGERDEV = *Amanda::Configc::CHANGER_CONFIG_CHANGERDEV;
+*CHANGER_CONFIG_CHANGERFILE = *Amanda::Configc::CHANGER_CONFIG_CHANGERFILE;
 *HOLD_NEVER = *Amanda::Configc::HOLD_NEVER;
 *HOLD_AUTO = *Amanda::Configc::HOLD_AUTO;
 *HOLD_REQUIRED = *Amanda::Configc::HOLD_REQUIRED;
@@ -254,6 +295,22 @@ package Amanda::Config;
 *ALGO_LARGESTFIT = *Amanda::Configc::ALGO_LARGESTFIT;
 *ALGO_SMALLEST = *Amanda::Configc::ALGO_SMALLEST;
 *ALGO_LAST = *Amanda::Configc::ALGO_LAST;
+*EXECUTE_ON_PRE_DLE_AMCHECK = *Amanda::Configc::EXECUTE_ON_PRE_DLE_AMCHECK;
+*EXECUTE_ON_PRE_HOST_AMCHECK = *Amanda::Configc::EXECUTE_ON_PRE_HOST_AMCHECK;
+*EXECUTE_ON_POST_DLE_AMCHECK = *Amanda::Configc::EXECUTE_ON_POST_DLE_AMCHECK;
+*EXECUTE_ON_POST_HOST_AMCHECK = *Amanda::Configc::EXECUTE_ON_POST_HOST_AMCHECK;
+*EXECUTE_ON_PRE_DLE_ESTIMATE = *Amanda::Configc::EXECUTE_ON_PRE_DLE_ESTIMATE;
+*EXECUTE_ON_PRE_HOST_ESTIMATE = *Amanda::Configc::EXECUTE_ON_PRE_HOST_ESTIMATE;
+*EXECUTE_ON_POST_DLE_ESTIMATE = *Amanda::Configc::EXECUTE_ON_POST_DLE_ESTIMATE;
+*EXECUTE_ON_POST_HOST_ESTIMATE = *Amanda::Configc::EXECUTE_ON_POST_HOST_ESTIMATE;
+*EXECUTE_ON_PRE_DLE_BACKUP = *Amanda::Configc::EXECUTE_ON_PRE_DLE_BACKUP;
+*EXECUTE_ON_PRE_HOST_BACKUP = *Amanda::Configc::EXECUTE_ON_PRE_HOST_BACKUP;
+*EXECUTE_ON_POST_DLE_BACKUP = *Amanda::Configc::EXECUTE_ON_POST_DLE_BACKUP;
+*EXECUTE_ON_POST_HOST_BACKUP = *Amanda::Configc::EXECUTE_ON_POST_HOST_BACKUP;
+*SEND_AMREPORT_ALL = *Amanda::Configc::SEND_AMREPORT_ALL;
+*SEND_AMREPORT_STRANGE = *Amanda::Configc::SEND_AMREPORT_STRANGE;
+*SEND_AMREPORT_ERROR = *Amanda::Configc::SEND_AMREPORT_ERROR;
+*SEND_AMREPORT_NEVER = *Amanda::Configc::SEND_AMREPORT_NEVER;
 *debug_amandad = *Amanda::Configc::debug_amandad;
 *debug_amidxtaped = *Amanda::Configc::debug_amidxtaped;
 *debug_amindexd = *Amanda::Configc::debug_amindexd;
@@ -270,11 +327,13 @@ package Amanda::Config;
 *debug_selfcheck = *Amanda::Configc::debug_selfcheck;
 *debug_sendsize = *Amanda::Configc::debug_sendsize;
 *debug_sendbackup = *Amanda::Configc::debug_sendbackup;
+*CFGERR_OK = *Amanda::Configc::CFGERR_OK;
+*CFGERR_WARNINGS = *Amanda::Configc::CFGERR_WARNINGS;
+*CFGERR_ERRORS = *Amanda::Configc::CFGERR_ERRORS;
 *CONFIG_INIT_EXPLICIT_NAME = *Amanda::Configc::CONFIG_INIT_EXPLICIT_NAME;
 *CONFIG_INIT_USE_CWD = *Amanda::Configc::CONFIG_INIT_USE_CWD;
 *CONFIG_INIT_CLIENT = *Amanda::Configc::CONFIG_INIT_CLIENT;
 *CONFIG_INIT_OVERLAY = *Amanda::Configc::CONFIG_INIT_OVERLAY;
-*CONFIG_INIT_FATAL = *Amanda::Configc::CONFIG_INIT_FATAL;
 
 @EXPORT_OK = ();
 %EXPORT_TAGS = ();
@@ -329,9 +388,6 @@ is loaded.
 =item If C<CONFIG_INIT_OVERLAY> is given, then any existing
 configuration is not reset.
 
-=item If C<CONFIG_INIT_FATAL> is given, then any errors are considered
-fatal, and C<config_init> does not return.
-
 =back
 
 See C<conffile.h> for more detailed information on these flags and
@@ -346,6 +402,19 @@ and filename (C</etc/amanda/DailySet1/amanda.conf>) are
 available from C<get_config_name()>, C<get_config_dir()>, and
 C<get_config_filename()>, respectively.
 
+=head3 CONFIG ERRORS
+
+This module collects configuration errors and warnings in a list, and also
+tracks the overall error level with an enumeration: C<$CFGERR_OK>,
+C<$CFGERR_WARNINGS>, and C<$CFGERR_ERRORS>.  C<config_init> and
+C<apply_config_overwrites> both return the current level.  The level and the
+list of error messages are available from C<config_errors>:
+
+  my ($cfgerr_level, @errors) = Amanda::Configconfig_errors();
+
+As a convenience, C<config_print_errors> will print all error messages to
+stderr.  The error state can be cleared with C<config_clear_errors>.
+
 =head2 CONFIG OVERWRITES
 
 Most Amanda applications accept the command-line option C<-o>
@@ -434,6 +503,10 @@ with constants beginning with C<$TAPETYPE_>
 
 with constants beginning with C<$DUMPTYPE_>
 
+=item C<interface>
+
+with constants beginning with C<$INTER_>
+
 =item C<holdingdisk>
 
 with constants beginning with C<$HOLDING_>
@@ -446,14 +519,28 @@ with constants beginning with C<$APPLICATION_>
 
 with constants beginning with C<$PP_SCRIPT_>
 
+=item C<device>
+
+with constants beginning with C<$DEVICE_CONFIG_>.
+
+=item C<changer>
+
+with constants beginning with C<$CHANGER_CONFIG_>.
+
 =back
 
 See C<conffile.h> for the names of the constants themselves.
 
-Parameter values are available by name from C<getconf_byname($name)>.
-This function implements the C<TYP:NAME:PARAM> syntax advertised by
-C<amgetconf> to access values in subsections.  C<getconf_list($typ)>
-returns a list of the names of all subsections of the given type.
+Parameter values are available by name from C<getconf_byname($name)> and
+C<getconf_byname_strs($name, $str_needs_quotes)>.  These functions implement
+the C<TYP:NAME:PARAM> syntax advertised by C<amgetconf> to access values in
+subsections.  The first function returns a perl value, while the second returns
+a string suitable for use in C<amanda.conf>, including quotes around strings if
+C<$str_needs_quotes> is true.
+
+C<getconf_list($typ)> returns a list of the names of all subsections of the
+given type.  C<%subsection_names> is a hash whose keys are allowed subsection
+names.
 
 The C<$CNF_DISPLAYUNIT> implies a certain divisor to convert from
 kilobytes to the desired unit.  This divisor is available from
@@ -557,6 +644,11 @@ push @{$EXPORT_TAGS{"confparm_key"}}, qw($CNF_AMANDATES);
 
 $_confparm_key_VALUES{"CNF_AMANDATES"} = $CNF_AMANDATES;
 
+push @EXPORT_OK, qw($CNF_MAILER);
+push @{$EXPORT_TAGS{"confparm_key"}}, qw($CNF_MAILER);
+
+$_confparm_key_VALUES{"CNF_MAILER"} = $CNF_MAILER;
+
 push @EXPORT_OK, qw($CNF_MAILTO);
 push @{$EXPORT_TAGS{"confparm_key"}}, qw($CNF_MAILTO);
 
@@ -577,6 +669,11 @@ push @{$EXPORT_TAGS{"confparm_key"}}, qw($CNF_DEVICE_PROPERTY);
 
 $_confparm_key_VALUES{"CNF_DEVICE_PROPERTY"} = $CNF_DEVICE_PROPERTY;
 
+push @EXPORT_OK, qw($CNF_PROPERTY);
+push @{$EXPORT_TAGS{"confparm_key"}}, qw($CNF_PROPERTY);
+
+$_confparm_key_VALUES{"CNF_PROPERTY"} = $CNF_PROPERTY;
+
 push @EXPORT_OK, qw($CNF_CHANGERDEV);
 push @{$EXPORT_TAGS{"confparm_key"}}, qw($CNF_CHANGERDEV);
 
@@ -1185,6 +1282,21 @@ push @{$EXPORT_TAGS{"dumptype_key"}}, qw($DUMPTYPE_INDEX);
 
 $_dumptype_key_VALUES{"DUMPTYPE_INDEX"} = $DUMPTYPE_INDEX;
 
+push @EXPORT_OK, qw($DUMPTYPE_APPLICATION);
+push @{$EXPORT_TAGS{"dumptype_key"}}, qw($DUMPTYPE_APPLICATION);
+
+$_dumptype_key_VALUES{"DUMPTYPE_APPLICATION"} = $DUMPTYPE_APPLICATION;
+
+push @EXPORT_OK, qw($DUMPTYPE_PP_SCRIPTLIST);
+push @{$EXPORT_TAGS{"dumptype_key"}}, qw($DUMPTYPE_PP_SCRIPTLIST);
+
+$_dumptype_key_VALUES{"DUMPTYPE_PP_SCRIPTLIST"} = $DUMPTYPE_PP_SCRIPTLIST;
+
+push @EXPORT_OK, qw($DUMPTYPE_PROPERTY);
+push @{$EXPORT_TAGS{"dumptype_key"}}, qw($DUMPTYPE_PROPERTY);
+
+$_dumptype_key_VALUES{"DUMPTYPE_PROPERTY"} = $DUMPTYPE_PROPERTY;
+
 #copy symbols in dumptype_key to getconf
 push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"dumptype_key"}};
 
@@ -1266,6 +1378,182 @@ $_holdingdisk_key_VALUES{"HOLDING_CHUNKSIZE"} = $HOLDING_CHUNKSIZE;
 #copy symbols in holdingdisk_key to getconf
 push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"holdingdisk_key"}};
 
+push @EXPORT_OK, qw(application_key_to_string);
+push @{$EXPORT_TAGS{"application_key"}}, qw(application_key_to_string);
+
+my %_application_key_VALUES;
+#Convert an enum value to a single string
+sub application_key_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_application_key_VALUES) {
+       my $v = $_application_key_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($APPLICATION_COMMENT);
+push @{$EXPORT_TAGS{"application_key"}}, qw($APPLICATION_COMMENT);
+
+$_application_key_VALUES{"APPLICATION_COMMENT"} = $APPLICATION_COMMENT;
+
+push @EXPORT_OK, qw($APPLICATION_PLUGIN);
+push @{$EXPORT_TAGS{"application_key"}}, qw($APPLICATION_PLUGIN);
+
+$_application_key_VALUES{"APPLICATION_PLUGIN"} = $APPLICATION_PLUGIN;
+
+push @EXPORT_OK, qw($APPLICATION_PROPERTY);
+push @{$EXPORT_TAGS{"application_key"}}, qw($APPLICATION_PROPERTY);
+
+$_application_key_VALUES{"APPLICATION_PROPERTY"} = $APPLICATION_PROPERTY;
+
+#copy symbols in application_key to getconf
+push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"application_key"}};
+
+push @EXPORT_OK, qw(pp_script_key_to_string);
+push @{$EXPORT_TAGS{"pp_script_key"}}, qw(pp_script_key_to_string);
+
+my %_pp_script_key_VALUES;
+#Convert an enum value to a single string
+sub pp_script_key_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_pp_script_key_VALUES) {
+       my $v = $_pp_script_key_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($PP_SCRIPT_COMMENT);
+push @{$EXPORT_TAGS{"pp_script_key"}}, qw($PP_SCRIPT_COMMENT);
+
+$_pp_script_key_VALUES{"PP_SCRIPT_COMMENT"} = $PP_SCRIPT_COMMENT;
+
+push @EXPORT_OK, qw($PP_SCRIPT_PLUGIN);
+push @{$EXPORT_TAGS{"pp_script_key"}}, qw($PP_SCRIPT_PLUGIN);
+
+$_pp_script_key_VALUES{"PP_SCRIPT_PLUGIN"} = $PP_SCRIPT_PLUGIN;
+
+push @EXPORT_OK, qw($PP_SCRIPT_PROPERTY);
+push @{$EXPORT_TAGS{"pp_script_key"}}, qw($PP_SCRIPT_PROPERTY);
+
+$_pp_script_key_VALUES{"PP_SCRIPT_PROPERTY"} = $PP_SCRIPT_PROPERTY;
+
+push @EXPORT_OK, qw($PP_SCRIPT_EXECUTE_ON);
+push @{$EXPORT_TAGS{"pp_script_key"}}, qw($PP_SCRIPT_EXECUTE_ON);
+
+$_pp_script_key_VALUES{"PP_SCRIPT_EXECUTE_ON"} = $PP_SCRIPT_EXECUTE_ON;
+
+push @EXPORT_OK, qw($PP_SCRIPT_EXECUTE_WHERE);
+push @{$EXPORT_TAGS{"pp_script_key"}}, qw($PP_SCRIPT_EXECUTE_WHERE);
+
+$_pp_script_key_VALUES{"PP_SCRIPT_EXECUTE_WHERE"} = $PP_SCRIPT_EXECUTE_WHERE;
+
+#copy symbols in pp_script_key to getconf
+push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"pp_script_key"}};
+
+push @EXPORT_OK, qw(device_config_key_to_string);
+push @{$EXPORT_TAGS{"device_config_key"}}, qw(device_config_key_to_string);
+
+my %_device_config_key_VALUES;
+#Convert an enum value to a single string
+sub device_config_key_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_device_config_key_VALUES) {
+       my $v = $_device_config_key_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($DEVICE_CONFIG_COMMENT);
+push @{$EXPORT_TAGS{"device_config_key"}}, qw($DEVICE_CONFIG_COMMENT);
+
+$_device_config_key_VALUES{"DEVICE_CONFIG_COMMENT"} = $DEVICE_CONFIG_COMMENT;
+
+push @EXPORT_OK, qw($DEVICE_CONFIG_TAPEDEV);
+push @{$EXPORT_TAGS{"device_config_key"}}, qw($DEVICE_CONFIG_TAPEDEV);
+
+$_device_config_key_VALUES{"DEVICE_CONFIG_TAPEDEV"} = $DEVICE_CONFIG_TAPEDEV;
+
+push @EXPORT_OK, qw($DEVICE_CONFIG_DEVICE_PROPERTY);
+push @{$EXPORT_TAGS{"device_config_key"}}, qw($DEVICE_CONFIG_DEVICE_PROPERTY);
+
+$_device_config_key_VALUES{"DEVICE_CONFIG_DEVICE_PROPERTY"} = $DEVICE_CONFIG_DEVICE_PROPERTY;
+
+#copy symbols in device_config_key to getconf
+push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"device_config_key"}};
+
+push @EXPORT_OK, qw(changer_config_key_to_string);
+push @{$EXPORT_TAGS{"changer_config_key"}}, qw(changer_config_key_to_string);
+
+my %_changer_config_key_VALUES;
+#Convert an enum value to a single string
+sub changer_config_key_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_changer_config_key_VALUES) {
+       my $v = $_changer_config_key_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($CHANGER_CONFIG_COMMENT);
+push @{$EXPORT_TAGS{"changer_config_key"}}, qw($CHANGER_CONFIG_COMMENT);
+
+$_changer_config_key_VALUES{"CHANGER_CONFIG_COMMENT"} = $CHANGER_CONFIG_COMMENT;
+
+push @EXPORT_OK, qw($CHANGER_CONFIG_TAPEDEV);
+push @{$EXPORT_TAGS{"changer_config_key"}}, qw($CHANGER_CONFIG_TAPEDEV);
+
+$_changer_config_key_VALUES{"CHANGER_CONFIG_TAPEDEV"} = $CHANGER_CONFIG_TAPEDEV;
+
+push @EXPORT_OK, qw($CHANGER_CONFIG_TPCHANGER);
+push @{$EXPORT_TAGS{"changer_config_key"}}, qw($CHANGER_CONFIG_TPCHANGER);
+
+$_changer_config_key_VALUES{"CHANGER_CONFIG_TPCHANGER"} = $CHANGER_CONFIG_TPCHANGER;
+
+push @EXPORT_OK, qw($CHANGER_CONFIG_CHANGERDEV);
+push @{$EXPORT_TAGS{"changer_config_key"}}, qw($CHANGER_CONFIG_CHANGERDEV);
+
+$_changer_config_key_VALUES{"CHANGER_CONFIG_CHANGERDEV"} = $CHANGER_CONFIG_CHANGERDEV;
+
+push @EXPORT_OK, qw($CHANGER_CONFIG_CHANGERFILE);
+push @{$EXPORT_TAGS{"changer_config_key"}}, qw($CHANGER_CONFIG_CHANGERFILE);
+
+$_changer_config_key_VALUES{"CHANGER_CONFIG_CHANGERFILE"} = $CHANGER_CONFIG_CHANGERFILE;
+
+#copy symbols in changer_config_key to getconf
+push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"changer_config_key"}};
+
 push @EXPORT_OK, qw(dump_holdingdisk_t_to_string);
 push @{$EXPORT_TAGS{"dump_holdingdisk_t"}}, qw(dump_holdingdisk_t_to_string);
 
@@ -1560,10 +1848,140 @@ $_taperalgo_t_VALUES{"ALGO_LAST"} = $ALGO_LAST;
 #copy symbols in taperalgo_t to getconf
 push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"taperalgo_t"}};
 
+push @EXPORT_OK, qw(execute_on_t_to_string);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw(execute_on_t_to_string);
+
+my %_execute_on_t_VALUES;
+#Convert an enum value to a single string
+sub execute_on_t_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_execute_on_t_VALUES) {
+       my $v = $_execute_on_t_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($EXECUTE_ON_PRE_DLE_AMCHECK);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_DLE_AMCHECK);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_PRE_DLE_AMCHECK"} = $EXECUTE_ON_PRE_DLE_AMCHECK;
+
+push @EXPORT_OK, qw($EXECUTE_ON_PRE_HOST_AMCHECK);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_HOST_AMCHECK);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_PRE_HOST_AMCHECK"} = $EXECUTE_ON_PRE_HOST_AMCHECK;
+
+push @EXPORT_OK, qw($EXECUTE_ON_POST_DLE_AMCHECK);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_DLE_AMCHECK);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_POST_DLE_AMCHECK"} = $EXECUTE_ON_POST_DLE_AMCHECK;
+
+push @EXPORT_OK, qw($EXECUTE_ON_POST_HOST_AMCHECK);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_HOST_AMCHECK);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_POST_HOST_AMCHECK"} = $EXECUTE_ON_POST_HOST_AMCHECK;
+
+push @EXPORT_OK, qw($EXECUTE_ON_PRE_DLE_ESTIMATE);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_DLE_ESTIMATE);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_PRE_DLE_ESTIMATE"} = $EXECUTE_ON_PRE_DLE_ESTIMATE;
+
+push @EXPORT_OK, qw($EXECUTE_ON_PRE_HOST_ESTIMATE);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_HOST_ESTIMATE);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_PRE_HOST_ESTIMATE"} = $EXECUTE_ON_PRE_HOST_ESTIMATE;
+
+push @EXPORT_OK, qw($EXECUTE_ON_POST_DLE_ESTIMATE);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_DLE_ESTIMATE);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_POST_DLE_ESTIMATE"} = $EXECUTE_ON_POST_DLE_ESTIMATE;
+
+push @EXPORT_OK, qw($EXECUTE_ON_POST_HOST_ESTIMATE);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_HOST_ESTIMATE);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_POST_HOST_ESTIMATE"} = $EXECUTE_ON_POST_HOST_ESTIMATE;
+
+push @EXPORT_OK, qw($EXECUTE_ON_PRE_DLE_BACKUP);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_DLE_BACKUP);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_PRE_DLE_BACKUP"} = $EXECUTE_ON_PRE_DLE_BACKUP;
+
+push @EXPORT_OK, qw($EXECUTE_ON_PRE_HOST_BACKUP);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_HOST_BACKUP);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_PRE_HOST_BACKUP"} = $EXECUTE_ON_PRE_HOST_BACKUP;
+
+push @EXPORT_OK, qw($EXECUTE_ON_POST_DLE_BACKUP);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_DLE_BACKUP);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_POST_DLE_BACKUP"} = $EXECUTE_ON_POST_DLE_BACKUP;
+
+push @EXPORT_OK, qw($EXECUTE_ON_POST_HOST_BACKUP);
+push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_HOST_BACKUP);
+
+$_execute_on_t_VALUES{"EXECUTE_ON_POST_HOST_BACKUP"} = $EXECUTE_ON_POST_HOST_BACKUP;
+
+#copy symbols in execute_on_t to getconf
+push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"execute_on_t"}};
+
+push @EXPORT_OK, qw(send_amreport_on_t_to_string);
+push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw(send_amreport_on_t_to_string);
+
+my %_send_amreport_on_t_VALUES;
+#Convert an enum value to a single string
+sub send_amreport_on_t_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_send_amreport_on_t_VALUES) {
+       my $v = $_send_amreport_on_t_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($SEND_AMREPORT_ALL);
+push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_ALL);
+
+$_send_amreport_on_t_VALUES{"SEND_AMREPORT_ALL"} = $SEND_AMREPORT_ALL;
+
+push @EXPORT_OK, qw($SEND_AMREPORT_STRANGE);
+push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_STRANGE);
+
+$_send_amreport_on_t_VALUES{"SEND_AMREPORT_STRANGE"} = $SEND_AMREPORT_STRANGE;
+
+push @EXPORT_OK, qw($SEND_AMREPORT_ERROR);
+push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_ERROR);
+
+$_send_amreport_on_t_VALUES{"SEND_AMREPORT_ERROR"} = $SEND_AMREPORT_ERROR;
+
+push @EXPORT_OK, qw($SEND_AMREPORT_NEVER);
+push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_NEVER);
+
+$_send_amreport_on_t_VALUES{"SEND_AMREPORT_NEVER"} = $SEND_AMREPORT_NEVER;
+
+#copy symbols in send_amreport_on_t to getconf
+push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"send_amreport_on_t"}};
+
 push @EXPORT_OK, qw(getconf getconf_seen 
-    getconf_byname getconf_list);
+    getconf_byname getconf_byname_strs
+    getconf_list);
 push @{$EXPORT_TAGS{"getconf"}}, qw(getconf getconf_seen 
-    getconf_byname getconf_list);
+    getconf_byname getconf_byname_strs
+    getconf_list);
 
 push @EXPORT_OK, qw(lookup_tapetype tapetype_getconf tapetype_name
     tapetype_seen tapetype_seen);
@@ -1587,6 +2005,40 @@ push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_holdingdisk holdingdisk_getconf holdi
     getconf_holdingdisks holdingdisk_next
     holdingdisk_seen holdingdisk_seen);
 
+push @EXPORT_OK, qw(lookup_application application_getconf application_name
+    application_seen application_seen);
+push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_application application_getconf application_name
+    application_seen application_seen);
+
+push @EXPORT_OK, qw(lookup_pp_script pp_script_getconf pp_script_name
+    pp_script_seen pp_script_seen);
+push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_pp_script pp_script_getconf pp_script_name
+    pp_script_seen pp_script_seen);
+
+push @EXPORT_OK, qw(lookup_device_config device_config_getconf device_config_name
+    device_config_seen device_config_seen);
+push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_device_config device_config_getconf device_config_name
+    device_config_seen device_config_seen);
+
+push @EXPORT_OK, qw(lookup_changer_config changer_config_getconf changer_config_name
+    changer_config_seen changer_config_seen);
+push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_changer_config changer_config_getconf changer_config_name
+    changer_config_seen changer_config_seen);
+
+our %subsection_names = (
+    "tapetype" => 1,
+    "dumptype" => 1,
+    "interface" => 1,
+    "holdingdisk" => 1,
+    "application-tool" => 1,
+    "script-tool" => 1,
+    "device" => 1,
+    "changer" => 1,
+);
+
+push @EXPORT_OK, qw(%subsection_names);
+push @{$EXPORT_TAGS{"getconf"}}, qw(%subsection_names);
+
 push @EXPORT_OK, qw(getconf_unit_divisor
 
     $debug_amandad $debug_amidxtaped $debug_amindexd $debug_amrecover
@@ -1600,10 +2052,44 @@ push @{$EXPORT_TAGS{"getconf"}}, qw(getconf_unit_divisor
     $debug_planner $debug_driver $debug_dumper $debug_chunker
     $debug_taper $debug_selfcheck $debug_sendsize $debug_sendbackup);
 
-push @EXPORT_OK, qw(new_config_overwrites free_config_overwrites add_config_overwrite
-    add_config_overwrite_opt apply_config_overwrites);
-push @{$EXPORT_TAGS{"init"}}, qw(new_config_overwrites free_config_overwrites add_config_overwrite
-    add_config_overwrite_opt apply_config_overwrites);
+push @EXPORT_OK, qw(cfgerr_level_t_to_string);
+push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw(cfgerr_level_t_to_string);
+
+my %_cfgerr_level_t_VALUES;
+#Convert an enum value to a single string
+sub cfgerr_level_t_to_string {
+    my ($enumval) = @_;
+
+    for my $k (keys %_cfgerr_level_t_VALUES) {
+       my $v = $_cfgerr_level_t_VALUES{$k};
+
+       #is this a matching flag?
+       if ($enumval == $v) {
+           return $k;
+       }
+    }
+
+#default, just return the number
+    return $enumval;
+}
+
+push @EXPORT_OK, qw($CFGERR_OK);
+push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw($CFGERR_OK);
+
+$_cfgerr_level_t_VALUES{"CFGERR_OK"} = $CFGERR_OK;
+
+push @EXPORT_OK, qw($CFGERR_WARNINGS);
+push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw($CFGERR_WARNINGS);
+
+$_cfgerr_level_t_VALUES{"CFGERR_WARNINGS"} = $CFGERR_WARNINGS;
+
+push @EXPORT_OK, qw($CFGERR_ERRORS);
+push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw($CFGERR_ERRORS);
+
+$_cfgerr_level_t_VALUES{"CFGERR_ERRORS"} = $CFGERR_ERRORS;
+
+#copy symbols in cfgerr_level_t to init
+push @{$EXPORT_TAGS{"init"}},  @{$EXPORT_TAGS{"cfgerr_level_t"}};
 
 push @EXPORT_OK, qw(config_init_flags_to_strings);
 push @{$EXPORT_TAGS{"config_init_flags"}}, qw(config_init_flags_to_strings);
@@ -1651,23 +2137,19 @@ push @{$EXPORT_TAGS{"config_init_flags"}}, qw($CONFIG_INIT_OVERLAY);
 
 $_config_init_flags_VALUES{"CONFIG_INIT_OVERLAY"} = $CONFIG_INIT_OVERLAY;
 
-push @EXPORT_OK, qw($CONFIG_INIT_FATAL);
-push @{$EXPORT_TAGS{"config_init_flags"}}, qw($CONFIG_INIT_FATAL);
-
-$_config_init_flags_VALUES{"CONFIG_INIT_FATAL"} = $CONFIG_INIT_FATAL;
-
 #copy symbols in config_init_flags to init
 push @{$EXPORT_TAGS{"init"}},  @{$EXPORT_TAGS{"config_init_flags"}};
 
-push @EXPORT_OK, qw(config_init config_uninit get_config_options);
-push @{$EXPORT_TAGS{"init"}}, qw(config_init config_uninit get_config_options);
-
-push @EXPORT_OK, qw(get_config_name 
-    get_config_dir 
-    get_config_filename);
-push @{$EXPORT_TAGS{"init"}}, qw(get_config_name 
-    get_config_dir 
-    get_config_filename);
+push @EXPORT_OK, qw(config_init config_uninit get_config_options
+    get_config_name get_config_dir get_config_filename
+    config_print_errors config_clear_errors config_errors
+    new_config_overwrites free_config_overwrites add_config_overwrite
+    add_config_overwrite_opt apply_config_overwrites);
+push @{$EXPORT_TAGS{"init"}}, qw(config_init config_uninit get_config_options
+    get_config_name get_config_dir get_config_filename
+    config_print_errors config_clear_errors config_errors
+    new_config_overwrites free_config_overwrites add_config_overwrite
+    add_config_overwrite_opt apply_config_overwrites);
 
 push @EXPORT_OK, qw(dump_configuration config_dir_relative taperalgo2str find_multiplier);
 1;