1# This file was automatically generated by SWIG (http://www.swig.org).
2# Version 3.0.7
3#
4# Do not make changes to this file unless you know what you are doing--modify
5# the SWIG interface file instead.
6
7package Amanda::Config;
8use base qw(Exporter);
9use base qw(DynaLoader);
10package Amanda::Configc;
11bootstrap Amanda::Config;
12package Amanda::Config;
13@EXPORT = qw();
14
15# ---------- BASE METHODS -------------
16
17package Amanda::Config;
18
19sub TIEHASH {
20    my ($classname,$obj) = @_;
21    return bless $obj, $classname;
22}
23
24sub CLEAR { }
25
26sub FIRSTKEY { }
27
28sub NEXTKEY { }
29
30sub FETCH {
31    my ($self,$field) = @_;
32    my $member_func = "swig_${field}_get";
33    $self->$member_func();
34}
35
36sub STORE {
37    my ($self,$field,$newval) = @_;
38    my $member_func = "swig_${field}_set";
39    $self->$member_func($newval);
40}
41
42sub this {
43    my $ptr = shift;
44    return tied(%$ptr);
45}
46
47
48# ------- FUNCTION WRAPPERS --------
49
50package Amanda::Config;
51
52*data_path_from_string = *Amanda::Configc::data_path_from_string;
53*getconf = *Amanda::Configc::getconf;
54*getconf_seen = *Amanda::Configc::getconf_seen;
55*getconf_linenum = *Amanda::Configc::getconf_linenum;
56*getconf_byname = *Amanda::Configc::getconf_byname;
57*getconf_list = *Amanda::Configc::getconf_list;
58*getconf_byname_strs = *Amanda::Configc::getconf_byname_strs;
59*lookup_tapetype = *Amanda::Configc::lookup_tapetype;
60*tapetype_getconf = *Amanda::Configc::tapetype_getconf;
61*tapetype_name = *Amanda::Configc::tapetype_name;
62*tapetype_seen = *Amanda::Configc::tapetype_seen;
63*lookup_dumptype = *Amanda::Configc::lookup_dumptype;
64*dumptype_getconf = *Amanda::Configc::dumptype_getconf;
65*dumptype_name = *Amanda::Configc::dumptype_name;
66*dumptype_seen = *Amanda::Configc::dumptype_seen;
67*lookup_interface = *Amanda::Configc::lookup_interface;
68*interface_getconf = *Amanda::Configc::interface_getconf;
69*interface_name = *Amanda::Configc::interface_name;
70*interface_seen = *Amanda::Configc::interface_seen;
71*lookup_holdingdisk = *Amanda::Configc::lookup_holdingdisk;
72*getconf_holdingdisks = *Amanda::Configc::getconf_holdingdisks;
73*holdingdisk_getconf = *Amanda::Configc::holdingdisk_getconf;
74*holdingdisk_name = *Amanda::Configc::holdingdisk_name;
75*holdingdisk_seen = *Amanda::Configc::holdingdisk_seen;
76*lookup_application = *Amanda::Configc::lookup_application;
77*application_getconf = *Amanda::Configc::application_getconf;
78*application_name = *Amanda::Configc::application_name;
79*application_seen = *Amanda::Configc::application_seen;
80*lookup_pp_script = *Amanda::Configc::lookup_pp_script;
81*pp_script_getconf = *Amanda::Configc::pp_script_getconf;
82*pp_script_name = *Amanda::Configc::pp_script_name;
83*pp_script_seen = *Amanda::Configc::pp_script_seen;
84*lookup_device_config = *Amanda::Configc::lookup_device_config;
85*device_config_getconf = *Amanda::Configc::device_config_getconf;
86*device_config_name = *Amanda::Configc::device_config_name;
87*device_config_seen = *Amanda::Configc::device_config_seen;
88*lookup_changer_config = *Amanda::Configc::lookup_changer_config;
89*changer_config_getconf = *Amanda::Configc::changer_config_getconf;
90*changer_config_name = *Amanda::Configc::changer_config_name;
91*changer_config_seen = *Amanda::Configc::changer_config_seen;
92*lookup_interactivity = *Amanda::Configc::lookup_interactivity;
93*interactivity_getconf = *Amanda::Configc::interactivity_getconf;
94*interactivity_name = *Amanda::Configc::interactivity_name;
95*interactivity_seen = *Amanda::Configc::interactivity_seen;
96*lookup_taperscan = *Amanda::Configc::lookup_taperscan;
97*taperscan_getconf = *Amanda::Configc::taperscan_getconf;
98*taperscan_name = *Amanda::Configc::taperscan_name;
99*taperscan_seen = *Amanda::Configc::taperscan_seen;
100*getconf_unit_divisor = *Amanda::Configc::getconf_unit_divisor;
101*config_init = *Amanda::Configc::config_init;
102*config_uninit = *Amanda::Configc::config_uninit;
103*get_config_options = *Amanda::Configc::get_config_options;
104*get_config_name = *Amanda::Configc::get_config_name;
105*get_config_dir = *Amanda::Configc::get_config_dir;
106*get_config_filename = *Amanda::Configc::get_config_filename;
107*config_print_errors = *Amanda::Configc::config_print_errors;
108*config_clear_errors = *Amanda::Configc::config_clear_errors;
109*config_errors = *Amanda::Configc::config_errors;
110*new_config_overrides = *Amanda::Configc::new_config_overrides;
111*free_config_overrides = *Amanda::Configc::free_config_overrides;
112*add_config_override = *Amanda::Configc::add_config_override;
113*add_config_override_opt = *Amanda::Configc::add_config_override_opt;
114*set_config_overrides = *Amanda::Configc::set_config_overrides;
115*dump_configuration = *Amanda::Configc::dump_configuration;
116*config_dir_relative = *Amanda::Configc::config_dir_relative;
117*taperalgo2str = *Amanda::Configc::taperalgo2str;
118*find_multiplier = *Amanda::Configc::find_multiplier;
119*C_string_to_boolean = *Amanda::Configc::C_string_to_boolean;
120*amandaify_property_name = *Amanda::Configc::amandaify_property_name;
121
122# ------- VARIABLE STUBS --------
123
124package Amanda::Config;
125
126*CNF_ORG = *Amanda::Configc::CNF_ORG;
127*CNF_CONF = *Amanda::Configc::CNF_CONF;
128*CNF_AMDUMP_SERVER = *Amanda::Configc::CNF_AMDUMP_SERVER;
129*CNF_INDEX_SERVER = *Amanda::Configc::CNF_INDEX_SERVER;
130*CNF_TAPE_SERVER = *Amanda::Configc::CNF_TAPE_SERVER;
131*CNF_AUTH = *Amanda::Configc::CNF_AUTH;
132*CNF_SSH_KEYS = *Amanda::Configc::CNF_SSH_KEYS;
133*CNF_AMANDAD_PATH = *Amanda::Configc::CNF_AMANDAD_PATH;
134*CNF_CLIENT_USERNAME = *Amanda::Configc::CNF_CLIENT_USERNAME;
135*CNF_CLIENT_PORT = *Amanda::Configc::CNF_CLIENT_PORT;
136*CNF_GNUTAR_LIST_DIR = *Amanda::Configc::CNF_GNUTAR_LIST_DIR;
137*CNF_AMANDATES = *Amanda::Configc::CNF_AMANDATES;
138*CNF_MAILER = *Amanda::Configc::CNF_MAILER;
139*CNF_MAILTO = *Amanda::Configc::CNF_MAILTO;
140*CNF_DUMPUSER = *Amanda::Configc::CNF_DUMPUSER;
141*CNF_TAPEDEV = *Amanda::Configc::CNF_TAPEDEV;
142*CNF_DEVICE_PROPERTY = *Amanda::Configc::CNF_DEVICE_PROPERTY;
143*CNF_PROPERTY = *Amanda::Configc::CNF_PROPERTY;
144*CNF_CHANGERDEV = *Amanda::Configc::CNF_CHANGERDEV;
145*CNF_CHANGERFILE = *Amanda::Configc::CNF_CHANGERFILE;
146*CNF_LABELSTR = *Amanda::Configc::CNF_LABELSTR;
147*CNF_AUTOLABEL = *Amanda::Configc::CNF_AUTOLABEL;
148*CNF_META_AUTOLABEL = *Amanda::Configc::CNF_META_AUTOLABEL;
149*CNF_TAPELIST = *Amanda::Configc::CNF_TAPELIST;
150*CNF_DISKFILE = *Amanda::Configc::CNF_DISKFILE;
151*CNF_INFOFILE = *Amanda::Configc::CNF_INFOFILE;
152*CNF_LOGDIR = *Amanda::Configc::CNF_LOGDIR;
153*CNF_INDEXDIR = *Amanda::Configc::CNF_INDEXDIR;
154*CNF_TAPETYPE = *Amanda::Configc::CNF_TAPETYPE;
155*CNF_DUMPCYCLE = *Amanda::Configc::CNF_DUMPCYCLE;
156*CNF_RUNSPERCYCLE = *Amanda::Configc::CNF_RUNSPERCYCLE;
157*CNF_TAPECYCLE = *Amanda::Configc::CNF_TAPECYCLE;
158*CNF_NETUSAGE = *Amanda::Configc::CNF_NETUSAGE;
159*CNF_INPARALLEL = *Amanda::Configc::CNF_INPARALLEL;
160*CNF_DUMPORDER = *Amanda::Configc::CNF_DUMPORDER;
161*CNF_BUMPPERCENT = *Amanda::Configc::CNF_BUMPPERCENT;
162*CNF_BUMPSIZE = *Amanda::Configc::CNF_BUMPSIZE;
163*CNF_BUMPMULT = *Amanda::Configc::CNF_BUMPMULT;
164*CNF_BUMPDAYS = *Amanda::Configc::CNF_BUMPDAYS;
165*CNF_TPCHANGER = *Amanda::Configc::CNF_TPCHANGER;
166*CNF_RUNTAPES = *Amanda::Configc::CNF_RUNTAPES;
167*CNF_MAX_DLE_BY_VOLUME = *Amanda::Configc::CNF_MAX_DLE_BY_VOLUME;
168*CNF_MAXDUMPS = *Amanda::Configc::CNF_MAXDUMPS;
169*CNF_ETIMEOUT = *Amanda::Configc::CNF_ETIMEOUT;
170*CNF_DTIMEOUT = *Amanda::Configc::CNF_DTIMEOUT;
171*CNF_CTIMEOUT = *Amanda::Configc::CNF_CTIMEOUT;
172*CNF_DEVICE_OUTPUT_BUFFER_SIZE = *Amanda::Configc::CNF_DEVICE_OUTPUT_BUFFER_SIZE;
173*CNF_PRINTER = *Amanda::Configc::CNF_PRINTER;
174*CNF_AUTOFLUSH = *Amanda::Configc::CNF_AUTOFLUSH;
175*CNF_RESERVE = *Amanda::Configc::CNF_RESERVE;
176*CNF_MAXDUMPSIZE = *Amanda::Configc::CNF_MAXDUMPSIZE;
177*CNF_COLUMNSPEC = *Amanda::Configc::CNF_COLUMNSPEC;
178*CNF_AMRECOVER_DO_FSF = *Amanda::Configc::CNF_AMRECOVER_DO_FSF;
179*CNF_AMRECOVER_CHECK_LABEL = *Amanda::Configc::CNF_AMRECOVER_CHECK_LABEL;
180*CNF_AMRECOVER_CHANGER = *Amanda::Configc::CNF_AMRECOVER_CHANGER;
181*CNF_TAPERALGO = *Amanda::Configc::CNF_TAPERALGO;
182*CNF_FLUSH_THRESHOLD_DUMPED = *Amanda::Configc::CNF_FLUSH_THRESHOLD_DUMPED;
183*CNF_FLUSH_THRESHOLD_SCHEDULED = *Amanda::Configc::CNF_FLUSH_THRESHOLD_SCHEDULED;
184*CNF_TAPERFLUSH = *Amanda::Configc::CNF_TAPERFLUSH;
185*CNF_DISPLAYUNIT = *Amanda::Configc::CNF_DISPLAYUNIT;
186*CNF_KRB5KEYTAB = *Amanda::Configc::CNF_KRB5KEYTAB;
187*CNF_KRB5PRINCIPAL = *Amanda::Configc::CNF_KRB5PRINCIPAL;
188*CNF_LABEL_NEW_TAPES = *Amanda::Configc::CNF_LABEL_NEW_TAPES;
189*CNF_USETIMESTAMPS = *Amanda::Configc::CNF_USETIMESTAMPS;
190*CNF_REP_TRIES = *Amanda::Configc::CNF_REP_TRIES;
191*CNF_CONNECT_TRIES = *Amanda::Configc::CNF_CONNECT_TRIES;
192*CNF_REQ_TRIES = *Amanda::Configc::CNF_REQ_TRIES;
193*CNF_DEBUG_AMANDAD = *Amanda::Configc::CNF_DEBUG_AMANDAD;
194*CNF_DEBUG_RECOVERY = *Amanda::Configc::CNF_DEBUG_RECOVERY;
195*CNF_DEBUG_AMIDXTAPED = *Amanda::Configc::CNF_DEBUG_AMIDXTAPED;
196*CNF_DEBUG_AMINDEXD = *Amanda::Configc::CNF_DEBUG_AMINDEXD;
197*CNF_DEBUG_AMRECOVER = *Amanda::Configc::CNF_DEBUG_AMRECOVER;
198*CNF_DEBUG_AUTH = *Amanda::Configc::CNF_DEBUG_AUTH;
199*CNF_DEBUG_EVENT = *Amanda::Configc::CNF_DEBUG_EVENT;
200*CNF_DEBUG_HOLDING = *Amanda::Configc::CNF_DEBUG_HOLDING;
201*CNF_DEBUG_PROTOCOL = *Amanda::Configc::CNF_DEBUG_PROTOCOL;
202*CNF_DEBUG_PLANNER = *Amanda::Configc::CNF_DEBUG_PLANNER;
203*CNF_DEBUG_DRIVER = *Amanda::Configc::CNF_DEBUG_DRIVER;
204*CNF_DEBUG_DUMPER = *Amanda::Configc::CNF_DEBUG_DUMPER;
205*CNF_DEBUG_CHUNKER = *Amanda::Configc::CNF_DEBUG_CHUNKER;
206*CNF_DEBUG_TAPER = *Amanda::Configc::CNF_DEBUG_TAPER;
207*CNF_DEBUG_SELFCHECK = *Amanda::Configc::CNF_DEBUG_SELFCHECK;
208*CNF_DEBUG_SENDSIZE = *Amanda::Configc::CNF_DEBUG_SENDSIZE;
209*CNF_DEBUG_SENDBACKUP = *Amanda::Configc::CNF_DEBUG_SENDBACKUP;
210*CNF_RESERVED_UDP_PORT = *Amanda::Configc::CNF_RESERVED_UDP_PORT;
211*CNF_RESERVED_TCP_PORT = *Amanda::Configc::CNF_RESERVED_TCP_PORT;
212*CNF_UNRESERVED_TCP_PORT = *Amanda::Configc::CNF_UNRESERVED_TCP_PORT;
213*CNF_HOLDINGDISK = *Amanda::Configc::CNF_HOLDINGDISK;
214*CNF_SEND_AMREPORT_ON = *Amanda::Configc::CNF_SEND_AMREPORT_ON;
215*CNF_TAPER_PARALLEL_WRITE = *Amanda::Configc::CNF_TAPER_PARALLEL_WRITE;
216*CNF_RECOVERY_LIMIT = *Amanda::Configc::CNF_RECOVERY_LIMIT;
217*CNF_INTERACTIVITY = *Amanda::Configc::CNF_INTERACTIVITY;
218*CNF_TAPERSCAN = *Amanda::Configc::CNF_TAPERSCAN;
219*CNF_EJECT_VOLUME = *Amanda::Configc::CNF_EJECT_VOLUME;
220*CNF_TMPDIR = *Amanda::Configc::CNF_TMPDIR;
221*CNF_REPORT_USE_MEDIA = *Amanda::Configc::CNF_REPORT_USE_MEDIA;
222*CNF_REPORT_NEXT_MEDIA = *Amanda::Configc::CNF_REPORT_NEXT_MEDIA;
223*CNF_REPORT_FORMAT = *Amanda::Configc::CNF_REPORT_FORMAT;
224*TAPETYPE_COMMENT = *Amanda::Configc::TAPETYPE_COMMENT;
225*TAPETYPE_LBL_TEMPL = *Amanda::Configc::TAPETYPE_LBL_TEMPL;
226*TAPETYPE_BLOCKSIZE = *Amanda::Configc::TAPETYPE_BLOCKSIZE;
227*TAPETYPE_READBLOCKSIZE = *Amanda::Configc::TAPETYPE_READBLOCKSIZE;
228*TAPETYPE_LENGTH = *Amanda::Configc::TAPETYPE_LENGTH;
229*TAPETYPE_FILEMARK = *Amanda::Configc::TAPETYPE_FILEMARK;
230*TAPETYPE_SPEED = *Amanda::Configc::TAPETYPE_SPEED;
231*TAPETYPE_PART_SIZE = *Amanda::Configc::TAPETYPE_PART_SIZE;
232*TAPETYPE_PART_CACHE_TYPE = *Amanda::Configc::TAPETYPE_PART_CACHE_TYPE;
233*TAPETYPE_PART_CACHE_DIR = *Amanda::Configc::TAPETYPE_PART_CACHE_DIR;
234*TAPETYPE_PART_CACHE_MAX_SIZE = *Amanda::Configc::TAPETYPE_PART_CACHE_MAX_SIZE;
235*DUMPTYPE_COMMENT = *Amanda::Configc::DUMPTYPE_COMMENT;
236*DUMPTYPE_PROGRAM = *Amanda::Configc::DUMPTYPE_PROGRAM;
237*DUMPTYPE_SRVCOMPPROG = *Amanda::Configc::DUMPTYPE_SRVCOMPPROG;
238*DUMPTYPE_CLNTCOMPPROG = *Amanda::Configc::DUMPTYPE_CLNTCOMPPROG;
239*DUMPTYPE_SRV_ENCRYPT = *Amanda::Configc::DUMPTYPE_SRV_ENCRYPT;
240*DUMPTYPE_CLNT_ENCRYPT = *Amanda::Configc::DUMPTYPE_CLNT_ENCRYPT;
241*DUMPTYPE_AMANDAD_PATH = *Amanda::Configc::DUMPTYPE_AMANDAD_PATH;
242*DUMPTYPE_CLIENT_USERNAME = *Amanda::Configc::DUMPTYPE_CLIENT_USERNAME;
243*DUMPTYPE_CLIENT_PORT = *Amanda::Configc::DUMPTYPE_CLIENT_PORT;
244*DUMPTYPE_SSH_KEYS = *Amanda::Configc::DUMPTYPE_SSH_KEYS;
245*DUMPTYPE_AUTH = *Amanda::Configc::DUMPTYPE_AUTH;
246*DUMPTYPE_EXCLUDE = *Amanda::Configc::DUMPTYPE_EXCLUDE;
247*DUMPTYPE_INCLUDE = *Amanda::Configc::DUMPTYPE_INCLUDE;
248*DUMPTYPE_PRIORITY = *Amanda::Configc::DUMPTYPE_PRIORITY;
249*DUMPTYPE_DUMPCYCLE = *Amanda::Configc::DUMPTYPE_DUMPCYCLE;
250*DUMPTYPE_MAXDUMPS = *Amanda::Configc::DUMPTYPE_MAXDUMPS;
251*DUMPTYPE_MAXPROMOTEDAY = *Amanda::Configc::DUMPTYPE_MAXPROMOTEDAY;
252*DUMPTYPE_BUMPPERCENT = *Amanda::Configc::DUMPTYPE_BUMPPERCENT;
253*DUMPTYPE_BUMPSIZE = *Amanda::Configc::DUMPTYPE_BUMPSIZE;
254*DUMPTYPE_BUMPDAYS = *Amanda::Configc::DUMPTYPE_BUMPDAYS;
255*DUMPTYPE_BUMPMULT = *Amanda::Configc::DUMPTYPE_BUMPMULT;
256*DUMPTYPE_STARTTIME = *Amanda::Configc::DUMPTYPE_STARTTIME;
257*DUMPTYPE_STRATEGY = *Amanda::Configc::DUMPTYPE_STRATEGY;
258*DUMPTYPE_ESTIMATELIST = *Amanda::Configc::DUMPTYPE_ESTIMATELIST;
259*DUMPTYPE_COMPRESS = *Amanda::Configc::DUMPTYPE_COMPRESS;
260*DUMPTYPE_ENCRYPT = *Amanda::Configc::DUMPTYPE_ENCRYPT;
261*DUMPTYPE_SRV_DECRYPT_OPT = *Amanda::Configc::DUMPTYPE_SRV_DECRYPT_OPT;
262*DUMPTYPE_CLNT_DECRYPT_OPT = *Amanda::Configc::DUMPTYPE_CLNT_DECRYPT_OPT;
263*DUMPTYPE_COMPRATE = *Amanda::Configc::DUMPTYPE_COMPRATE;
264*DUMPTYPE_TAPE_SPLITSIZE = *Amanda::Configc::DUMPTYPE_TAPE_SPLITSIZE;
265*DUMPTYPE_FALLBACK_SPLITSIZE = *Amanda::Configc::DUMPTYPE_FALLBACK_SPLITSIZE;
266*DUMPTYPE_SPLIT_DISKBUFFER = *Amanda::Configc::DUMPTYPE_SPLIT_DISKBUFFER;
267*DUMPTYPE_RECORD = *Amanda::Configc::DUMPTYPE_RECORD;
268*DUMPTYPE_SKIP_INCR = *Amanda::Configc::DUMPTYPE_SKIP_INCR;
269*DUMPTYPE_SKIP_FULL = *Amanda::Configc::DUMPTYPE_SKIP_FULL;
270*DUMPTYPE_HOLDINGDISK = *Amanda::Configc::DUMPTYPE_HOLDINGDISK;
271*DUMPTYPE_KENCRYPT = *Amanda::Configc::DUMPTYPE_KENCRYPT;
272*DUMPTYPE_IGNORE = *Amanda::Configc::DUMPTYPE_IGNORE;
273*DUMPTYPE_INDEX = *Amanda::Configc::DUMPTYPE_INDEX;
274*DUMPTYPE_APPLICATION = *Amanda::Configc::DUMPTYPE_APPLICATION;
275*DUMPTYPE_SCRIPTLIST = *Amanda::Configc::DUMPTYPE_SCRIPTLIST;
276*DUMPTYPE_PROPERTY = *Amanda::Configc::DUMPTYPE_PROPERTY;
277*DUMPTYPE_DATA_PATH = *Amanda::Configc::DUMPTYPE_DATA_PATH;
278*DUMPTYPE_ALLOW_SPLIT = *Amanda::Configc::DUMPTYPE_ALLOW_SPLIT;
279*DUMPTYPE_MAX_WARNINGS = *Amanda::Configc::DUMPTYPE_MAX_WARNINGS;
280*DUMPTYPE_RECOVERY_LIMIT = *Amanda::Configc::DUMPTYPE_RECOVERY_LIMIT;
281*DUMPTYPE_DUMP_LIMIT = *Amanda::Configc::DUMPTYPE_DUMP_LIMIT;
282*INTER_COMMENT = *Amanda::Configc::INTER_COMMENT;
283*INTER_MAXUSAGE = *Amanda::Configc::INTER_MAXUSAGE;
284*HOLDING_COMMENT = *Amanda::Configc::HOLDING_COMMENT;
285*HOLDING_DISKDIR = *Amanda::Configc::HOLDING_DISKDIR;
286*HOLDING_DISKSIZE = *Amanda::Configc::HOLDING_DISKSIZE;
287*HOLDING_CHUNKSIZE = *Amanda::Configc::HOLDING_CHUNKSIZE;
288*APPLICATION_COMMENT = *Amanda::Configc::APPLICATION_COMMENT;
289*APPLICATION_PLUGIN = *Amanda::Configc::APPLICATION_PLUGIN;
290*APPLICATION_PROPERTY = *Amanda::Configc::APPLICATION_PROPERTY;
291*APPLICATION_CLIENT_NAME = *Amanda::Configc::APPLICATION_CLIENT_NAME;
292*PP_SCRIPT_COMMENT = *Amanda::Configc::PP_SCRIPT_COMMENT;
293*PP_SCRIPT_PLUGIN = *Amanda::Configc::PP_SCRIPT_PLUGIN;
294*PP_SCRIPT_PROPERTY = *Amanda::Configc::PP_SCRIPT_PROPERTY;
295*PP_SCRIPT_EXECUTE_ON = *Amanda::Configc::PP_SCRIPT_EXECUTE_ON;
296*PP_SCRIPT_EXECUTE_WHERE = *Amanda::Configc::PP_SCRIPT_EXECUTE_WHERE;
297*PP_SCRIPT_ORDER = *Amanda::Configc::PP_SCRIPT_ORDER;
298*PP_SCRIPT_SINGLE_EXECUTION = *Amanda::Configc::PP_SCRIPT_SINGLE_EXECUTION;
299*PP_SCRIPT_CLIENT_NAME = *Amanda::Configc::PP_SCRIPT_CLIENT_NAME;
300*DEVICE_CONFIG_COMMENT = *Amanda::Configc::DEVICE_CONFIG_COMMENT;
301*DEVICE_CONFIG_TAPEDEV = *Amanda::Configc::DEVICE_CONFIG_TAPEDEV;
302*DEVICE_CONFIG_DEVICE_PROPERTY = *Amanda::Configc::DEVICE_CONFIG_DEVICE_PROPERTY;
303*CHANGER_CONFIG_COMMENT = *Amanda::Configc::CHANGER_CONFIG_COMMENT;
304*CHANGER_CONFIG_TAPEDEV = *Amanda::Configc::CHANGER_CONFIG_TAPEDEV;
305*CHANGER_CONFIG_TPCHANGER = *Amanda::Configc::CHANGER_CONFIG_TPCHANGER;
306*CHANGER_CONFIG_CHANGERDEV = *Amanda::Configc::CHANGER_CONFIG_CHANGERDEV;
307*CHANGER_CONFIG_CHANGERFILE = *Amanda::Configc::CHANGER_CONFIG_CHANGERFILE;
308*CHANGER_CONFIG_PROPERTY = *Amanda::Configc::CHANGER_CONFIG_PROPERTY;
309*CHANGER_CONFIG_DEVICE_PROPERTY = *Amanda::Configc::CHANGER_CONFIG_DEVICE_PROPERTY;
310*INTERACTIVITY_COMMENT = *Amanda::Configc::INTERACTIVITY_COMMENT;
311*INTERACTIVITY_PLUGIN = *Amanda::Configc::INTERACTIVITY_PLUGIN;
312*INTERACTIVITY_PROPERTY = *Amanda::Configc::INTERACTIVITY_PROPERTY;
313*TAPERSCAN_COMMENT = *Amanda::Configc::TAPERSCAN_COMMENT;
314*TAPERSCAN_PLUGIN = *Amanda::Configc::TAPERSCAN_PLUGIN;
315*TAPERSCAN_PROPERTY = *Amanda::Configc::TAPERSCAN_PROPERTY;
316*HOLD_NEVER = *Amanda::Configc::HOLD_NEVER;
317*HOLD_AUTO = *Amanda::Configc::HOLD_AUTO;
318*HOLD_REQUIRED = *Amanda::Configc::HOLD_REQUIRED;
319*COMP_NONE = *Amanda::Configc::COMP_NONE;
320*COMP_FAST = *Amanda::Configc::COMP_FAST;
321*COMP_BEST = *Amanda::Configc::COMP_BEST;
322*COMP_CUST = *Amanda::Configc::COMP_CUST;
323*COMP_SERVER_FAST = *Amanda::Configc::COMP_SERVER_FAST;
324*COMP_SERVER_BEST = *Amanda::Configc::COMP_SERVER_BEST;
325*COMP_SERVER_CUST = *Amanda::Configc::COMP_SERVER_CUST;
326*ENCRYPT_NONE = *Amanda::Configc::ENCRYPT_NONE;
327*ENCRYPT_CUST = *Amanda::Configc::ENCRYPT_CUST;
328*ENCRYPT_SERV_CUST = *Amanda::Configc::ENCRYPT_SERV_CUST;
329*DS_SKIP = *Amanda::Configc::DS_SKIP;
330*DS_STANDARD = *Amanda::Configc::DS_STANDARD;
331*DS_NOFULL = *Amanda::Configc::DS_NOFULL;
332*DS_NOINC = *Amanda::Configc::DS_NOINC;
333*DS_4 = *Amanda::Configc::DS_4;
334*DS_5 = *Amanda::Configc::DS_5;
335*DS_HANOI = *Amanda::Configc::DS_HANOI;
336*DS_INCRONLY = *Amanda::Configc::DS_INCRONLY;
337*ES_CLIENT = *Amanda::Configc::ES_CLIENT;
338*ES_SERVER = *Amanda::Configc::ES_SERVER;
339*ES_CALCSIZE = *Amanda::Configc::ES_CALCSIZE;
340*AL_OTHER_CONFIG = *Amanda::Configc::AL_OTHER_CONFIG;
341*AL_NON_AMANDA = *Amanda::Configc::AL_NON_AMANDA;
342*AL_VOLUME_ERROR = *Amanda::Configc::AL_VOLUME_ERROR;
343*AL_EMPTY = *Amanda::Configc::AL_EMPTY;
344*ALGO_FIRST = *Amanda::Configc::ALGO_FIRST;
345*ALGO_FIRSTFIT = *Amanda::Configc::ALGO_FIRSTFIT;
346*ALGO_LARGEST = *Amanda::Configc::ALGO_LARGEST;
347*ALGO_LARGESTFIT = *Amanda::Configc::ALGO_LARGESTFIT;
348*ALGO_SMALLEST = *Amanda::Configc::ALGO_SMALLEST;
349*ALGO_LAST = *Amanda::Configc::ALGO_LAST;
350*EXECUTE_ON_PRE_AMCHECK = *Amanda::Configc::EXECUTE_ON_PRE_AMCHECK;
351*EXECUTE_ON_PRE_DLE_AMCHECK = *Amanda::Configc::EXECUTE_ON_PRE_DLE_AMCHECK;
352*EXECUTE_ON_PRE_HOST_AMCHECK = *Amanda::Configc::EXECUTE_ON_PRE_HOST_AMCHECK;
353*EXECUTE_ON_POST_AMCHECK = *Amanda::Configc::EXECUTE_ON_POST_AMCHECK;
354*EXECUTE_ON_POST_DLE_AMCHECK = *Amanda::Configc::EXECUTE_ON_POST_DLE_AMCHECK;
355*EXECUTE_ON_POST_HOST_AMCHECK = *Amanda::Configc::EXECUTE_ON_POST_HOST_AMCHECK;
356*EXECUTE_ON_PRE_ESTIMATE = *Amanda::Configc::EXECUTE_ON_PRE_ESTIMATE;
357*EXECUTE_ON_PRE_DLE_ESTIMATE = *Amanda::Configc::EXECUTE_ON_PRE_DLE_ESTIMATE;
358*EXECUTE_ON_PRE_HOST_ESTIMATE = *Amanda::Configc::EXECUTE_ON_PRE_HOST_ESTIMATE;
359*EXECUTE_ON_POST_ESTIMATE = *Amanda::Configc::EXECUTE_ON_POST_ESTIMATE;
360*EXECUTE_ON_POST_DLE_ESTIMATE = *Amanda::Configc::EXECUTE_ON_POST_DLE_ESTIMATE;
361*EXECUTE_ON_POST_HOST_ESTIMATE = *Amanda::Configc::EXECUTE_ON_POST_HOST_ESTIMATE;
362*EXECUTE_ON_PRE_BACKUP = *Amanda::Configc::EXECUTE_ON_PRE_BACKUP;
363*EXECUTE_ON_PRE_DLE_BACKUP = *Amanda::Configc::EXECUTE_ON_PRE_DLE_BACKUP;
364*EXECUTE_ON_PRE_HOST_BACKUP = *Amanda::Configc::EXECUTE_ON_PRE_HOST_BACKUP;
365*EXECUTE_ON_POST_BACKUP = *Amanda::Configc::EXECUTE_ON_POST_BACKUP;
366*EXECUTE_ON_POST_DLE_BACKUP = *Amanda::Configc::EXECUTE_ON_POST_DLE_BACKUP;
367*EXECUTE_ON_POST_HOST_BACKUP = *Amanda::Configc::EXECUTE_ON_POST_HOST_BACKUP;
368*SEND_AMREPORT_ALL = *Amanda::Configc::SEND_AMREPORT_ALL;
369*SEND_AMREPORT_STRANGE = *Amanda::Configc::SEND_AMREPORT_STRANGE;
370*SEND_AMREPORT_ERROR = *Amanda::Configc::SEND_AMREPORT_ERROR;
371*SEND_AMREPORT_NEVER = *Amanda::Configc::SEND_AMREPORT_NEVER;
372*DATA_PATH_AMANDA = *Amanda::Configc::DATA_PATH_AMANDA;
373*DATA_PATH_DIRECTTCP = *Amanda::Configc::DATA_PATH_DIRECTTCP;
374*PART_CACHE_TYPE_NONE = *Amanda::Configc::PART_CACHE_TYPE_NONE;
375*PART_CACHE_TYPE_DISK = *Amanda::Configc::PART_CACHE_TYPE_DISK;
376*PART_CACHE_TYPE_MEMORY = *Amanda::Configc::PART_CACHE_TYPE_MEMORY;
377*debug_amandad = *Amanda::Configc::debug_amandad;
378*debug_recovery = *Amanda::Configc::debug_recovery;
379*debug_amidxtaped = *Amanda::Configc::debug_amidxtaped;
380*debug_amindexd = *Amanda::Configc::debug_amindexd;
381*debug_amrecover = *Amanda::Configc::debug_amrecover;
382*debug_auth = *Amanda::Configc::debug_auth;
383*debug_event = *Amanda::Configc::debug_event;
384*debug_holding = *Amanda::Configc::debug_holding;
385*debug_protocol = *Amanda::Configc::debug_protocol;
386*debug_planner = *Amanda::Configc::debug_planner;
387*debug_driver = *Amanda::Configc::debug_driver;
388*debug_dumper = *Amanda::Configc::debug_dumper;
389*debug_chunker = *Amanda::Configc::debug_chunker;
390*debug_taper = *Amanda::Configc::debug_taper;
391*debug_selfcheck = *Amanda::Configc::debug_selfcheck;
392*debug_sendsize = *Amanda::Configc::debug_sendsize;
393*debug_sendbackup = *Amanda::Configc::debug_sendbackup;
394*CFGERR_OK = *Amanda::Configc::CFGERR_OK;
395*CFGERR_WARNINGS = *Amanda::Configc::CFGERR_WARNINGS;
396*CFGERR_ERRORS = *Amanda::Configc::CFGERR_ERRORS;
397*CONFIG_INIT_EXPLICIT_NAME = *Amanda::Configc::CONFIG_INIT_EXPLICIT_NAME;
398*CONFIG_INIT_USE_CWD = *Amanda::Configc::CONFIG_INIT_USE_CWD;
399*CONFIG_INIT_CLIENT = *Amanda::Configc::CONFIG_INIT_CLIENT;
400*CONFIG_INIT_OVERLAY = *Amanda::Configc::CONFIG_INIT_OVERLAY;
401
402@EXPORT_OK = ();
403%EXPORT_TAGS = ();
404
405
406=head1 NAME
407
408Amanda::Config - access to Amanda configuration parameters
409
410=head1 SYNOPSIS
411
412    use Amanda::Config qw( :init :getconf );
413
414    my $config_name = shift @ARGV;
415    config_init($CONFIG_INIT_EXPLICIT_NAME, $config_name);
416    apply_config_overrides($config_overrides);
417    my ($cfgerr_level, @cfgerr_errors) = config_errors();
418    if ($cfgerr_level >= $CFGERR_WARNINGS) {
419	config_print_errors();
420	if ($cfgerr_level >= $CFGERR_ERRORS) {
421	    die("errors processing config file");
422	}
423    }
424
425    print "tape device is ", getconf($CNF_TAPEDEV), "\n";
426
427This API closely parallels the C API.
428
429=head1 INITIALIZATION
430
431The Amanda configuration is treated as a global state for the
432application.  It is not possible to load two configurations
433simultaneously.
434
435All initialization-related symbols can be imported with the tag
436C<:init>.
437
438=head2 LOADING CONFIGURATION
439
440The Amanda configuration is loaded with the aptly named
441C<config_init($flags, $name)>.  Because of the great variety in
442invocation method among Amanda applications, this function has a number
443of flags that affect its behavior.  These flags can be OR'd together.
444
445=over
446
447=item If C<CONFIG_INIT_EXPLICIT_NAME> is given, then the C<$name> parameter can
448contain the name of a configuration to load.  Note that if the parameter is
449C<".">, this is equivalent to C<CONFIG_INIT_USE_CWD>.
450
451=item If C<CONFIG_INIT_USE_CWD> is given, and if the current directory
452contains C<amanda.conf>, then that file is loaded.
453
454=item If C<CONFIG_INIT_CLIENT> is given, then a client configuration
455is loaded.
456
457=item If C<CONFIG_INIT_OVERLAY> is given, then any existing
458configuration is not reset.
459
460=back
461
462See C<conffile.h> for more detailed information on these flags and
463their interactions.
464
465C<config_uninit()> reverses the effects of C<config_init>.  It is
466not often used.
467
468Once the configuration is loaded, the configuration name
469(e.g., "DailySet1"), directory (C</etc/amanda/DailySet1>),
470and filename (C</etc/amanda/DailySet1/amanda.conf>) are
471available from C<get_config_name()>, C<get_config_dir()>, and
472C<get_config_filename()>, respectively.
473
474=head3 CONFIG ERRORS
475
476This module collects configuration errors and warnings in a list, and also
477tracks the overall error level with an enumeration: C<$CFGERR_OK>,
478C<$CFGERR_WARNINGS>, and C<$CFGERR_ERRORS>.  C<config_init> and
479C<apply_config_overrides> both return the current level.  The level and the
480list of error messages are available from C<config_errors>:
481
482  my ($cfgerr_level, @errors) = Amanda::Config::config_errors();
483
484As a convenience, C<config_print_errors> will print all error messages to
485stderr.  The error state can be cleared with C<config_clear_errors>.
486
487=head2 CONFIG OVERWRITES
488
489Most Amanda applications accept the command-line option C<-o>
490to "overwrite" configuration values in C<amanda.conf>.  In Perl
491applications, these options should be parsed with L<Getopt::Long|Getopt::Long>, with
492the action being a call to C<add_config_override_opt>.  For example:
493
494  my $config_overrides = new_config_overrides($#ARGV+1);
495    GetOptions(
496	# ...
497	'o=s' => sub { add_config_override_opt($config_overrides, $_[1]); },
498    ) or usage();
499  my $cfg_ok = config_init($CONFIG_INIT_EXPLICIT_NAME | $CONFIG_INIT_USE_CWD, $config_name);
500  apply_config_overrides($config_overrides);
501
502C<new_config_overrides($size_estimate)> creates a new
503overwrites object, using the given size as an estimate of
504the number of items it will contain (C<$#ARGC/2> is a good
505estimate).  Individual configuration options are then added via
506C<add_config_override($co, $key, $value)> (which takes a key/value
507pair) or C<add_config_override_opt($co, $optarg)>, which parses a
508string following C<-o> on the command line.
509
510Once the overwrites are gathered, they are applied with
511C<apply_config_overrides($co)>, which applies the overwrites to the
512active configuration.  No further operations can be performed on the
513overwrites object after C<apply_config_overrides> has been called.
514
515The utility function C<get_config_options()> returns a list of
516command-line arguments to represent any overwrites that were used
517to generate the current configuration.  (TODO: this function isn't
518available yet)
519
520=head1 PARAMETER ACCESS
521
522Amanda configurations consist of "global" parameters and several
523sets of "subsections" -- one set for dumptypes, one for tapetypes,
524and so on.
525
526All of the global parameters are represented by a constant beginning with
527C<$CNF_>, e.g., C<$CNF_LABELSTR>.  The function C<getconf($cnf)> returns the
528value of parameter C<$cnf>, in whatever format is appropriate for the parameter
529(see DATA FORMATS, below).  C<getconf_seen($cnf)> returns a true value if
530C<$cnf> was seen in the configuration file.  If it was not seen, then it will
531have its default value.  C<getconf_linenum($cnf)> returns the line number in
532the configuration file where it is set, 0 if it is not in a configuration file,
533or -2 if it is set in a command line argument.
534
535Some parameters have enumerated types.  The values for those
536enumerations are available from this module with the same name as
537in C<conffile.h>.  For example, C<$CNF_TAPERALGO> will yield a value
538from the enumeration C<taperalgo_t>, the constants for which all
539begin with C<$ALGO_>.  See C<conffile.h> for the details.
540
541Each subsection type C<TYP> has the following functions:
542
543=over
544
545=item C<lookup_TYP($subsec_name)>
546
547which returns an opaque object
548(C<$ss>) representing the subsection, or C<undef> if no subsection
549with that name exists;
550
551=item C<TYP_name($ss)>
552
553returning the name of the subsection;
554
555=item C<TYP_getconf($ss, $cnf)>
556
557which fetches a parameter value from C<$ss>; and
558
559=item C<TYP_seen($ss, $cnf)>
560
561which returns a true value if <$cnf> was seen in the subsection.
562
563=back
564
565The subsections are:
566
567=over
568
569=item C<tapetype>
570
571with constants beginning with C<$TAPETYPE_>
572
573=item C<dumptype>
574
575with constants beginning with C<$DUMPTYPE_>
576
577=item C<interface>
578
579with constants beginning with C<$INTER_>
580
581=item C<holdingdisk>
582
583with constants beginning with C<$HOLDING_>
584
585=item C<application>
586
587with constants beginning with C<$APPLICATION_>
588
589=item C<script>
590
591with constants beginning with C<$PP_SCRIPT_>
592
593=item C<device>
594
595with constants beginning with C<$DEVICE_CONFIG_>.
596
597=item C<changer>
598
599with constants beginning with C<$CHANGER_CONFIG_>.
600
601=back
602
603See C<conffile.h> for the names of the constants themselves.
604
605=head2 DATA FORMATS
606
607Each configuration parameter has a "conftype", as assigned in
608C<common-src/conffile.c>.  The translation of most of these types into Perl
609values is straightforward:
610
611  CONFTYPE_INT                        Math::BigInt
612  CONFTYPE_INT64                      Math::BigInt
613  CONFTYPE_REAL                       floating-point value
614  CONFTYPE_STR                        string
615  CONFTYPE_IDENT                      string
616  CONFTYPE_TIME                       Math::BigInt (epoch value)
617  CONFTYPE_SIZE                       Math::BigInt
618  CONFTYPE_BOOLEAN                    Math::BigInt
619  CONFTYPE_COMPRESS                   Math::BigInt
620  CONFTYPE_ENCRYPT                    Math::BigInt
621  CONFTYPE_HOLDING                    Math::BigInt
622  CONFTYPE_ESTIMATELIST               [ Math::BigInt, .. ]
623  CONFTYPE_STRATEGY                   Math::BigInt
624  CONFTYPE_TAPERALGO                  Math::BigInt
625  CONFTYPE_PRIORITY                   Math::BigInt
626  CONFTYPE_RATE                       float, float
627  CONFTYPE_INTRANGE                   Math::BigInt, Math::BigInt
628  CONFTYPE_APPLICATION                string
629  CONFTYPE_EXECUTE_ON                 string
630  CONFTYPE_EXECUTE_WHERE              Math::BigInt
631  CONFTYPE_SEND_AMREPORT_ON           Math::BigInt
632  CONFTYPE_IDENTLIST                  [ string, .. ]
633  CONFTYPE_PART_CACHE_TYPE	      Math::BigInt
634  CONFTYPE_RECOVERY_LIMIT             [ string, .. ] (undef if not specified;
635					    undef in the list means same-host)
636
637Note that C<CONFTYPE_INTRANGE> and C<CONFTYPE_RATE> each return two values, not
638an array reference.
639
640Include and exclude lists with type C<CONFTYPE_EXINCLUDE> return a hash giving
641all listed filenames (in the C<list> key), include/exclude files (C<files>),
642and a boolean indicating that the list is optional (C<optional>):
643
644  { list => [ str, .. ], file => [ str, .. ], optional => Math::BigInt }
645
646Properties are represented as a hash of hashes.  The keys are the property
647names, converted to ASCII lowercase.  Each property has a C<values> array
648giving all values specified for this property, as well as booleans C<priority>
649and C<append> that are true if the corresponding keyword was supplied.
650
651  { prop1 => { values => [ str, .. ] priority => int, append => int },
652    prop2 => { .. } .. }
653
654Note that integer types of all sizes become C<Math::BigInt> objects rather than
655Perl integers, as is the habit throughout Amanda.
656
657The C<CNF_AUTOLABEL> value is a hash with the following keys
658
659  template	label template, or undef
660  other_config	boolean
661  non_amanda	boolean
662  volume_error	boolean
663  empty		boolean
664
665=head2 OTHER ACCESS
666
667Parameter values are available by name from C<getconf_byname($name)> and
668C<getconf_byname_strs($name, $str_needs_quotes)>.  These functions implement
669the C<TYP:NAME:PARAM> syntax advertised by C<amgetconf> to access values in
670subsections.  The first function returns a Perl value (see DATA FORMATS,
671above), while the second returns a list of strings suitable for use in
672C<amanda.conf>, including quotes around strings if C<$str_needs_quotes> is
673true.
674
675C<getconf_list($typ)> returns a list of the names of all subsections of the
676given type.  C<%subsection_names> is a hash whose keys are allowed subsection
677names.
678
679=head2 DERIVED VALUES
680
681The C<$CNF_DISPLAYUNIT> implies a certain divisor to convert from
682kilobytes to the desired unit.  This divisor is available from
683C<getconf_unit_divisor()>.  Note carefully that it is a I<divisor>
684for a value in I<kilobytes>!
685
686Finally, various subsections of Amanda enable verbose debugging via
687configuration parameters.  The status of each parameter is available
688a similarly-named variable, e.g., C<$debug_auth>.
689
690All parameter access functions and constants can be imported with
691the tag C<:getconf>.
692
693=head1 MISCELLANEOUS
694
695These functions defy categorization.
696
697The function C<config_dir_relative> will interpret a path relative to
698the current configuration directory.  Absolute paths are passed through
699unchanged, while relative paths are converted to absolute paths.
700
701C<dump_configuration()> dumps the current configuration, in a format
702suitable for re-evaluation for this module, to standard output.
703This function may be revised to return a string.
704
705Several parts of Amanda need to convert unit modifier value like
706"gbytes" to a multiplier.  The function C<find_multiplier($str)>
707returns the unit multiplier for such a string.  For example, "mbytes"
708is converted to 1048576 (1024*1024).
709
710C<string_to_boolean()> takes a string and returns 0 if it matches any of
711Amanda's names for false, or 1 if matches a name for true. If it can't be
712interpreted, C<undef> is returned.
713
714C<amandaify_property_name()> converts a string into Amanda's property style:
715all lower-case and with "-" replacing "_".
716
717=head1 CONSTANTS
718
719This section lists all of the configuration parameter constants defined in this
720module.  All of these constants are available with the C<:getconf> export tag.
721
722=cut
723
724
725push @EXPORT_OK, qw(confparm_key_to_string);
726push @{$EXPORT_TAGS{"confparm_key"}}, qw(confparm_key_to_string);
727
728my %_confparm_key_VALUES;
729#Convert an enum value to a single string
730sub confparm_key_to_string {
731    my ($enumval) = @_;
732
733    for my $k (keys %_confparm_key_VALUES) {
734	my $v = $_confparm_key_VALUES{$k};
735
736	#is this a matching flag?
737	if ($enumval == $v) {
738	    return $k;
739	}
740    }
741
742#default, just return the number
743    return $enumval;
744}
745
746push @EXPORT_OK, qw( $CNF_ORG $CNF_CONF $CNF_AMDUMP_SERVER $CNF_INDEX_SERVER $CNF_TAPE_SERVER $CNF_AUTH $CNF_SSH_KEYS $CNF_AMANDAD_PATH $CNF_CLIENT_USERNAME $CNF_CLIENT_PORT $CNF_GNUTAR_LIST_DIR $CNF_AMANDATES $CNF_MAILER $CNF_MAILTO $CNF_DUMPUSER $CNF_TAPEDEV $CNF_DEVICE_PROPERTY $CNF_PROPERTY $CNF_CHANGERDEV $CNF_CHANGERFILE $CNF_LABELSTR $CNF_AUTOLABEL $CNF_META_AUTOLABEL $CNF_TAPELIST $CNF_DISKFILE $CNF_INFOFILE $CNF_LOGDIR $CNF_INDEXDIR $CNF_TAPETYPE $CNF_DUMPCYCLE $CNF_RUNSPERCYCLE $CNF_TAPECYCLE $CNF_NETUSAGE $CNF_INPARALLEL $CNF_DUMPORDER $CNF_BUMPPERCENT $CNF_BUMPSIZE $CNF_BUMPMULT $CNF_BUMPDAYS $CNF_TPCHANGER $CNF_RUNTAPES $CNF_MAX_DLE_BY_VOLUME $CNF_MAXDUMPS $CNF_ETIMEOUT $CNF_DTIMEOUT $CNF_CTIMEOUT $CNF_DEVICE_OUTPUT_BUFFER_SIZE $CNF_PRINTER $CNF_AUTOFLUSH $CNF_RESERVE $CNF_MAXDUMPSIZE $CNF_COLUMNSPEC $CNF_AMRECOVER_DO_FSF $CNF_AMRECOVER_CHECK_LABEL $CNF_AMRECOVER_CHANGER $CNF_TAPERALGO $CNF_FLUSH_THRESHOLD_DUMPED $CNF_FLUSH_THRESHOLD_SCHEDULED $CNF_TAPERFLUSH $CNF_DISPLAYUNIT $CNF_KRB5KEYTAB $CNF_KRB5PRINCIPAL $CNF_LABEL_NEW_TAPES $CNF_USETIMESTAMPS $CNF_REP_TRIES $CNF_CONNECT_TRIES $CNF_REQ_TRIES $CNF_DEBUG_AMANDAD $CNF_DEBUG_RECOVERY $CNF_DEBUG_AMIDXTAPED $CNF_DEBUG_AMINDEXD $CNF_DEBUG_AMRECOVER $CNF_DEBUG_AUTH $CNF_DEBUG_EVENT $CNF_DEBUG_HOLDING $CNF_DEBUG_PROTOCOL $CNF_DEBUG_PLANNER $CNF_DEBUG_DRIVER $CNF_DEBUG_DUMPER $CNF_DEBUG_CHUNKER $CNF_DEBUG_TAPER $CNF_DEBUG_SELFCHECK $CNF_DEBUG_SENDSIZE $CNF_DEBUG_SENDBACKUP $CNF_RESERVED_UDP_PORT $CNF_RESERVED_TCP_PORT $CNF_UNRESERVED_TCP_PORT $CNF_HOLDINGDISK $CNF_SEND_AMREPORT_ON $CNF_TAPER_PARALLEL_WRITE $CNF_RECOVERY_LIMIT  $CNF_INTERACTIVITY  $CNF_TAPERSCAN  $CNF_EJECT_VOLUME  $CNF_TMPDIR  $CNF_REPORT_USE_MEDIA  $CNF_REPORT_NEXT_MEDIA  $CNF_REPORT_FORMAT);
747push @{$EXPORT_TAGS{"confparm_key"}}, qw( $CNF_ORG $CNF_CONF $CNF_AMDUMP_SERVER $CNF_INDEX_SERVER $CNF_TAPE_SERVER $CNF_AUTH $CNF_SSH_KEYS $CNF_AMANDAD_PATH $CNF_CLIENT_USERNAME $CNF_CLIENT_PORT $CNF_GNUTAR_LIST_DIR $CNF_AMANDATES $CNF_MAILER $CNF_MAILTO $CNF_DUMPUSER $CNF_TAPEDEV $CNF_DEVICE_PROPERTY $CNF_PROPERTY $CNF_CHANGERDEV $CNF_CHANGERFILE $CNF_LABELSTR $CNF_AUTOLABEL $CNF_META_AUTOLABEL $CNF_TAPELIST $CNF_DISKFILE $CNF_INFOFILE $CNF_LOGDIR $CNF_INDEXDIR $CNF_TAPETYPE $CNF_DUMPCYCLE $CNF_RUNSPERCYCLE $CNF_TAPECYCLE $CNF_NETUSAGE $CNF_INPARALLEL $CNF_DUMPORDER $CNF_BUMPPERCENT $CNF_BUMPSIZE $CNF_BUMPMULT $CNF_BUMPDAYS $CNF_TPCHANGER $CNF_RUNTAPES $CNF_MAX_DLE_BY_VOLUME $CNF_MAXDUMPS $CNF_ETIMEOUT $CNF_DTIMEOUT $CNF_CTIMEOUT $CNF_DEVICE_OUTPUT_BUFFER_SIZE $CNF_PRINTER $CNF_AUTOFLUSH $CNF_RESERVE $CNF_MAXDUMPSIZE $CNF_COLUMNSPEC $CNF_AMRECOVER_DO_FSF $CNF_AMRECOVER_CHECK_LABEL $CNF_AMRECOVER_CHANGER $CNF_TAPERALGO $CNF_FLUSH_THRESHOLD_DUMPED $CNF_FLUSH_THRESHOLD_SCHEDULED $CNF_TAPERFLUSH $CNF_DISPLAYUNIT $CNF_KRB5KEYTAB $CNF_KRB5PRINCIPAL $CNF_LABEL_NEW_TAPES $CNF_USETIMESTAMPS $CNF_REP_TRIES $CNF_CONNECT_TRIES $CNF_REQ_TRIES $CNF_DEBUG_AMANDAD $CNF_DEBUG_RECOVERY $CNF_DEBUG_AMIDXTAPED $CNF_DEBUG_AMINDEXD $CNF_DEBUG_AMRECOVER $CNF_DEBUG_AUTH $CNF_DEBUG_EVENT $CNF_DEBUG_HOLDING $CNF_DEBUG_PROTOCOL $CNF_DEBUG_PLANNER $CNF_DEBUG_DRIVER $CNF_DEBUG_DUMPER $CNF_DEBUG_CHUNKER $CNF_DEBUG_TAPER $CNF_DEBUG_SELFCHECK $CNF_DEBUG_SENDSIZE $CNF_DEBUG_SENDBACKUP $CNF_RESERVED_UDP_PORT $CNF_RESERVED_TCP_PORT $CNF_UNRESERVED_TCP_PORT $CNF_HOLDINGDISK $CNF_SEND_AMREPORT_ON $CNF_TAPER_PARALLEL_WRITE $CNF_RECOVERY_LIMIT  $CNF_INTERACTIVITY  $CNF_TAPERSCAN  $CNF_EJECT_VOLUME  $CNF_TMPDIR  $CNF_REPORT_USE_MEDIA  $CNF_REPORT_NEXT_MEDIA  $CNF_REPORT_FORMAT);
748      foreach (qw(  CNF_ORG CNF_CONF CNF_AMDUMP_SERVER CNF_INDEX_SERVER CNF_TAPE_SERVER CNF_AUTH CNF_SSH_KEYS CNF_AMANDAD_PATH CNF_CLIENT_USERNAME CNF_CLIENT_PORT CNF_GNUTAR_LIST_DIR CNF_AMANDATES CNF_MAILER CNF_MAILTO CNF_DUMPUSER CNF_TAPEDEV CNF_DEVICE_PROPERTY CNF_PROPERTY CNF_CHANGERDEV CNF_CHANGERFILE CNF_LABELSTR CNF_AUTOLABEL CNF_META_AUTOLABEL CNF_TAPELIST CNF_DISKFILE CNF_INFOFILE CNF_LOGDIR CNF_INDEXDIR CNF_TAPETYPE CNF_DUMPCYCLE CNF_RUNSPERCYCLE CNF_TAPECYCLE CNF_NETUSAGE CNF_INPARALLEL CNF_DUMPORDER CNF_BUMPPERCENT CNF_BUMPSIZE CNF_BUMPMULT CNF_BUMPDAYS CNF_TPCHANGER CNF_RUNTAPES CNF_MAX_DLE_BY_VOLUME CNF_MAXDUMPS CNF_ETIMEOUT CNF_DTIMEOUT CNF_CTIMEOUT CNF_DEVICE_OUTPUT_BUFFER_SIZE CNF_PRINTER CNF_AUTOFLUSH CNF_RESERVE CNF_MAXDUMPSIZE CNF_COLUMNSPEC CNF_AMRECOVER_DO_FSF CNF_AMRECOVER_CHECK_LABEL CNF_AMRECOVER_CHANGER CNF_TAPERALGO CNF_FLUSH_THRESHOLD_DUMPED CNF_FLUSH_THRESHOLD_SCHEDULED CNF_TAPERFLUSH CNF_DISPLAYUNIT CNF_KRB5KEYTAB CNF_KRB5PRINCIPAL CNF_LABEL_NEW_TAPES CNF_USETIMESTAMPS CNF_REP_TRIES CNF_CONNECT_TRIES CNF_REQ_TRIES CNF_DEBUG_AMANDAD CNF_DEBUG_RECOVERY CNF_DEBUG_AMIDXTAPED CNF_DEBUG_AMINDEXD CNF_DEBUG_AMRECOVER CNF_DEBUG_AUTH CNF_DEBUG_EVENT CNF_DEBUG_HOLDING CNF_DEBUG_PROTOCOL CNF_DEBUG_PLANNER CNF_DEBUG_DRIVER CNF_DEBUG_DUMPER CNF_DEBUG_CHUNKER CNF_DEBUG_TAPER CNF_DEBUG_SELFCHECK CNF_DEBUG_SENDSIZE CNF_DEBUG_SENDBACKUP CNF_RESERVED_UDP_PORT CNF_RESERVED_TCP_PORT CNF_UNRESERVED_TCP_PORT CNF_HOLDINGDISK CNF_SEND_AMREPORT_ON CNF_TAPER_PARALLEL_WRITE CNF_RECOVERY_LIMIT  CNF_INTERACTIVITY  CNF_TAPERSCAN  CNF_EJECT_VOLUME  CNF_TMPDIR  CNF_REPORT_USE_MEDIA  CNF_REPORT_NEXT_MEDIA  CNF_REPORT_FORMAT)) {  	$_confparm_key_VALUES{$_} = $$_;      }
749#copy symbols in confparm_key to getconf
750push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"confparm_key"}};
751
752
753use Amanda::Config::FoldingHash;
754
755=pod
756
757Global Parameters:       C<$CNF_ORG> C<$CNF_CONF> C<$CNF_AMDUMP_SERVER> C<$CNF_INDEX_SERVER> C<$CNF_TAPE_SERVER> C<$CNF_AUTH> C<$CNF_SSH_KEYS> C<$CNF_AMANDAD_PATH> C<$CNF_CLIENT_USERNAME> C<$CNF_CLIENT_PORT> C<$CNF_GNUTAR_LIST_DIR> C<$CNF_AMANDATES> C<$CNF_MAILER> C<$CNF_MAILTO> C<$CNF_DUMPUSER> C<$CNF_TAPEDEV> C<$CNF_DEVICE_PROPERTY> C<$CNF_PROPERTY> C<$CNF_CHANGERDEV> C<$CNF_CHANGERFILE> C<$CNF_LABELSTR> C<$CNF_AUTOLABEL> C<$CNF_META_AUTOLABEL> C<$CNF_TAPELIST> C<$CNF_DISKFILE> C<$CNF_INFOFILE> C<$CNF_LOGDIR> C<$CNF_INDEXDIR> C<$CNF_TAPETYPE> C<$CNF_DUMPCYCLE> C<$CNF_RUNSPERCYCLE> C<$CNF_TAPECYCLE> C<$CNF_NETUSAGE> C<$CNF_INPARALLEL> C<$CNF_DUMPORDER> C<$CNF_BUMPPERCENT> C<$CNF_BUMPSIZE> C<$CNF_BUMPMULT> C<$CNF_BUMPDAYS> C<$CNF_TPCHANGER> C<$CNF_RUNTAPES> C<$CNF_MAX_DLE_BY_VOLUME> C<$CNF_MAXDUMPS> C<$CNF_ETIMEOUT> C<$CNF_DTIMEOUT> C<$CNF_CTIMEOUT> C<$CNF_DEVICE_OUTPUT_BUFFER_SIZE> C<$CNF_PRINTER> C<$CNF_AUTOFLUSH> C<$CNF_RESERVE> C<$CNF_MAXDUMPSIZE> C<$CNF_COLUMNSPEC> C<$CNF_AMRECOVER_DO_FSF> C<$CNF_AMRECOVER_CHECK_LABEL> C<$CNF_AMRECOVER_CHANGER> C<$CNF_TAPERALGO> C<$CNF_FLUSH_THRESHOLD_DUMPED> C<$CNF_FLUSH_THRESHOLD_SCHEDULED> C<$CNF_TAPERFLUSH> C<$CNF_DISPLAYUNIT> C<$CNF_KRB5KEYTAB> C<$CNF_KRB5PRINCIPAL> C<$CNF_LABEL_NEW_TAPES> C<$CNF_USETIMESTAMPS> C<$CNF_REP_TRIES> C<$CNF_CONNECT_TRIES> C<$CNF_REQ_TRIES> C<$CNF_DEBUG_AMANDAD> C<$CNF_DEBUG_RECOVERY> C<$CNF_DEBUG_AMIDXTAPED> C<$CNF_DEBUG_AMINDEXD> C<$CNF_DEBUG_AMRECOVER> C<$CNF_DEBUG_AUTH> C<$CNF_DEBUG_EVENT> C<$CNF_DEBUG_HOLDING> C<$CNF_DEBUG_PROTOCOL> C<$CNF_DEBUG_PLANNER> C<$CNF_DEBUG_DRIVER> C<$CNF_DEBUG_DUMPER> C<$CNF_DEBUG_CHUNKER> C<$CNF_DEBUG_TAPER> C<$CNF_DEBUG_SELFCHECK> C<$CNF_DEBUG_SENDSIZE> C<$CNF_DEBUG_SENDBACKUP> C<$CNF_RESERVED_UDP_PORT> C<$CNF_RESERVED_TCP_PORT> C<$CNF_UNRESERVED_TCP_PORT> C<$CNF_HOLDINGDISK> C<$CNF_SEND_AMREPORT_ON> C<$CNF_TAPER_PARALLEL_WRITE> C<$CNF_RECOVERY_LIMIT>  C<$CNF_INTERACTIVITY>  C<$CNF_TAPERSCAN>  C<$CNF_EJECT_VOLUME>  C<$CNF_TMPDIR>  C<$CNF_REPORT_USE_MEDIA>  C<$CNF_REPORT_NEXT_MEDIA>  C<$CNF_REPORT_FORMAT>
758
759=cut
760
761push @EXPORT_OK, qw(tapetype_key_to_string);
762push @{$EXPORT_TAGS{"tapetype_key"}}, qw(tapetype_key_to_string);
763
764my %_tapetype_key_VALUES;
765#Convert an enum value to a single string
766sub tapetype_key_to_string {
767    my ($enumval) = @_;
768
769    for my $k (keys %_tapetype_key_VALUES) {
770	my $v = $_tapetype_key_VALUES{$k};
771
772	#is this a matching flag?
773	if ($enumval == $v) {
774	    return $k;
775	}
776    }
777
778#default, just return the number
779    return $enumval;
780}
781
782push @EXPORT_OK, qw( $TAPETYPE_COMMENT $TAPETYPE_LBL_TEMPL $TAPETYPE_BLOCKSIZE $TAPETYPE_READBLOCKSIZE $TAPETYPE_LENGTH $TAPETYPE_FILEMARK $TAPETYPE_SPEED $TAPETYPE_PART_SIZE $TAPETYPE_PART_CACHE_TYPE $TAPETYPE_PART_CACHE_DIR $TAPETYPE_PART_CACHE_MAX_SIZE);
783push @{$EXPORT_TAGS{"tapetype_key"}}, qw( $TAPETYPE_COMMENT $TAPETYPE_LBL_TEMPL $TAPETYPE_BLOCKSIZE $TAPETYPE_READBLOCKSIZE $TAPETYPE_LENGTH $TAPETYPE_FILEMARK $TAPETYPE_SPEED $TAPETYPE_PART_SIZE $TAPETYPE_PART_CACHE_TYPE $TAPETYPE_PART_CACHE_DIR $TAPETYPE_PART_CACHE_MAX_SIZE);
784      foreach (qw(  TAPETYPE_COMMENT TAPETYPE_LBL_TEMPL TAPETYPE_BLOCKSIZE TAPETYPE_READBLOCKSIZE TAPETYPE_LENGTH TAPETYPE_FILEMARK TAPETYPE_SPEED TAPETYPE_PART_SIZE TAPETYPE_PART_CACHE_TYPE TAPETYPE_PART_CACHE_DIR TAPETYPE_PART_CACHE_MAX_SIZE)) {  	$_tapetype_key_VALUES{$_} = $$_;      }
785#copy symbols in tapetype_key to getconf
786push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"tapetype_key"}};
787
788
789use Amanda::Config::FoldingHash;
790
791=pod
792
793Tapetype Parameters:       C<$TAPETYPE_COMMENT> C<$TAPETYPE_LBL_TEMPL> C<$TAPETYPE_BLOCKSIZE> C<$TAPETYPE_READBLOCKSIZE> C<$TAPETYPE_LENGTH> C<$TAPETYPE_FILEMARK> C<$TAPETYPE_SPEED> C<$TAPETYPE_PART_SIZE> C<$TAPETYPE_PART_CACHE_TYPE> C<$TAPETYPE_PART_CACHE_DIR> C<$TAPETYPE_PART_CACHE_MAX_SIZE>
794
795=cut
796
797push @EXPORT_OK, qw(dumptype_key_to_string);
798push @{$EXPORT_TAGS{"dumptype_key"}}, qw(dumptype_key_to_string);
799
800my %_dumptype_key_VALUES;
801#Convert an enum value to a single string
802sub dumptype_key_to_string {
803    my ($enumval) = @_;
804
805    for my $k (keys %_dumptype_key_VALUES) {
806	my $v = $_dumptype_key_VALUES{$k};
807
808	#is this a matching flag?
809	if ($enumval == $v) {
810	    return $k;
811	}
812    }
813
814#default, just return the number
815    return $enumval;
816}
817
818push @EXPORT_OK, qw( $DUMPTYPE_COMMENT $DUMPTYPE_PROGRAM $DUMPTYPE_SRVCOMPPROG $DUMPTYPE_CLNTCOMPPROG $DUMPTYPE_SRV_ENCRYPT $DUMPTYPE_CLNT_ENCRYPT $DUMPTYPE_AMANDAD_PATH $DUMPTYPE_CLIENT_USERNAME $DUMPTYPE_CLIENT_PORT $DUMPTYPE_SSH_KEYS $DUMPTYPE_AUTH $DUMPTYPE_EXCLUDE $DUMPTYPE_INCLUDE $DUMPTYPE_PRIORITY $DUMPTYPE_DUMPCYCLE $DUMPTYPE_MAXDUMPS $DUMPTYPE_MAXPROMOTEDAY $DUMPTYPE_BUMPPERCENT $DUMPTYPE_BUMPSIZE $DUMPTYPE_BUMPDAYS $DUMPTYPE_BUMPMULT $DUMPTYPE_STARTTIME $DUMPTYPE_STRATEGY $DUMPTYPE_ESTIMATELIST $DUMPTYPE_COMPRESS $DUMPTYPE_ENCRYPT $DUMPTYPE_SRV_DECRYPT_OPT $DUMPTYPE_CLNT_DECRYPT_OPT $DUMPTYPE_COMPRATE $DUMPTYPE_TAPE_SPLITSIZE $DUMPTYPE_FALLBACK_SPLITSIZE $DUMPTYPE_SPLIT_DISKBUFFER $DUMPTYPE_RECORD $DUMPTYPE_SKIP_INCR $DUMPTYPE_SKIP_FULL $DUMPTYPE_HOLDINGDISK $DUMPTYPE_KENCRYPT $DUMPTYPE_IGNORE $DUMPTYPE_INDEX $DUMPTYPE_APPLICATION $DUMPTYPE_SCRIPTLIST $DUMPTYPE_PROPERTY $DUMPTYPE_DATA_PATH $DUMPTYPE_ALLOW_SPLIT $DUMPTYPE_MAX_WARNINGS $DUMPTYPE_RECOVERY_LIMIT  $DUMPTYPE_DUMP_LIMIT);
819push @{$EXPORT_TAGS{"dumptype_key"}}, qw( $DUMPTYPE_COMMENT $DUMPTYPE_PROGRAM $DUMPTYPE_SRVCOMPPROG $DUMPTYPE_CLNTCOMPPROG $DUMPTYPE_SRV_ENCRYPT $DUMPTYPE_CLNT_ENCRYPT $DUMPTYPE_AMANDAD_PATH $DUMPTYPE_CLIENT_USERNAME $DUMPTYPE_CLIENT_PORT $DUMPTYPE_SSH_KEYS $DUMPTYPE_AUTH $DUMPTYPE_EXCLUDE $DUMPTYPE_INCLUDE $DUMPTYPE_PRIORITY $DUMPTYPE_DUMPCYCLE $DUMPTYPE_MAXDUMPS $DUMPTYPE_MAXPROMOTEDAY $DUMPTYPE_BUMPPERCENT $DUMPTYPE_BUMPSIZE $DUMPTYPE_BUMPDAYS $DUMPTYPE_BUMPMULT $DUMPTYPE_STARTTIME $DUMPTYPE_STRATEGY $DUMPTYPE_ESTIMATELIST $DUMPTYPE_COMPRESS $DUMPTYPE_ENCRYPT $DUMPTYPE_SRV_DECRYPT_OPT $DUMPTYPE_CLNT_DECRYPT_OPT $DUMPTYPE_COMPRATE $DUMPTYPE_TAPE_SPLITSIZE $DUMPTYPE_FALLBACK_SPLITSIZE $DUMPTYPE_SPLIT_DISKBUFFER $DUMPTYPE_RECORD $DUMPTYPE_SKIP_INCR $DUMPTYPE_SKIP_FULL $DUMPTYPE_HOLDINGDISK $DUMPTYPE_KENCRYPT $DUMPTYPE_IGNORE $DUMPTYPE_INDEX $DUMPTYPE_APPLICATION $DUMPTYPE_SCRIPTLIST $DUMPTYPE_PROPERTY $DUMPTYPE_DATA_PATH $DUMPTYPE_ALLOW_SPLIT $DUMPTYPE_MAX_WARNINGS $DUMPTYPE_RECOVERY_LIMIT  $DUMPTYPE_DUMP_LIMIT);
820      foreach (qw(  DUMPTYPE_COMMENT DUMPTYPE_PROGRAM DUMPTYPE_SRVCOMPPROG DUMPTYPE_CLNTCOMPPROG DUMPTYPE_SRV_ENCRYPT DUMPTYPE_CLNT_ENCRYPT DUMPTYPE_AMANDAD_PATH DUMPTYPE_CLIENT_USERNAME DUMPTYPE_CLIENT_PORT DUMPTYPE_SSH_KEYS DUMPTYPE_AUTH DUMPTYPE_EXCLUDE DUMPTYPE_INCLUDE DUMPTYPE_PRIORITY DUMPTYPE_DUMPCYCLE DUMPTYPE_MAXDUMPS DUMPTYPE_MAXPROMOTEDAY DUMPTYPE_BUMPPERCENT DUMPTYPE_BUMPSIZE DUMPTYPE_BUMPDAYS DUMPTYPE_BUMPMULT DUMPTYPE_STARTTIME DUMPTYPE_STRATEGY DUMPTYPE_ESTIMATELIST DUMPTYPE_COMPRESS DUMPTYPE_ENCRYPT DUMPTYPE_SRV_DECRYPT_OPT DUMPTYPE_CLNT_DECRYPT_OPT DUMPTYPE_COMPRATE DUMPTYPE_TAPE_SPLITSIZE DUMPTYPE_FALLBACK_SPLITSIZE DUMPTYPE_SPLIT_DISKBUFFER DUMPTYPE_RECORD DUMPTYPE_SKIP_INCR DUMPTYPE_SKIP_FULL DUMPTYPE_HOLDINGDISK DUMPTYPE_KENCRYPT DUMPTYPE_IGNORE DUMPTYPE_INDEX DUMPTYPE_APPLICATION DUMPTYPE_SCRIPTLIST DUMPTYPE_PROPERTY DUMPTYPE_DATA_PATH DUMPTYPE_ALLOW_SPLIT DUMPTYPE_MAX_WARNINGS DUMPTYPE_RECOVERY_LIMIT  DUMPTYPE_DUMP_LIMIT)) {  	$_dumptype_key_VALUES{$_} = $$_;      }
821#copy symbols in dumptype_key to getconf
822push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"dumptype_key"}};
823
824
825use Amanda::Config::FoldingHash;
826
827=pod
828
829Dumptype Parameters:       C<$DUMPTYPE_COMMENT> C<$DUMPTYPE_PROGRAM> C<$DUMPTYPE_SRVCOMPPROG> C<$DUMPTYPE_CLNTCOMPPROG> C<$DUMPTYPE_SRV_ENCRYPT> C<$DUMPTYPE_CLNT_ENCRYPT> C<$DUMPTYPE_AMANDAD_PATH> C<$DUMPTYPE_CLIENT_USERNAME> C<$DUMPTYPE_CLIENT_PORT> C<$DUMPTYPE_SSH_KEYS> C<$DUMPTYPE_AUTH> C<$DUMPTYPE_EXCLUDE> C<$DUMPTYPE_INCLUDE> C<$DUMPTYPE_PRIORITY> C<$DUMPTYPE_DUMPCYCLE> C<$DUMPTYPE_MAXDUMPS> C<$DUMPTYPE_MAXPROMOTEDAY> C<$DUMPTYPE_BUMPPERCENT> C<$DUMPTYPE_BUMPSIZE> C<$DUMPTYPE_BUMPDAYS> C<$DUMPTYPE_BUMPMULT> C<$DUMPTYPE_STARTTIME> C<$DUMPTYPE_STRATEGY> C<$DUMPTYPE_ESTIMATELIST> C<$DUMPTYPE_COMPRESS> C<$DUMPTYPE_ENCRYPT> C<$DUMPTYPE_SRV_DECRYPT_OPT> C<$DUMPTYPE_CLNT_DECRYPT_OPT> C<$DUMPTYPE_COMPRATE> C<$DUMPTYPE_TAPE_SPLITSIZE> C<$DUMPTYPE_FALLBACK_SPLITSIZE> C<$DUMPTYPE_SPLIT_DISKBUFFER> C<$DUMPTYPE_RECORD> C<$DUMPTYPE_SKIP_INCR> C<$DUMPTYPE_SKIP_FULL> C<$DUMPTYPE_HOLDINGDISK> C<$DUMPTYPE_KENCRYPT> C<$DUMPTYPE_IGNORE> C<$DUMPTYPE_INDEX> C<$DUMPTYPE_APPLICATION> C<$DUMPTYPE_SCRIPTLIST> C<$DUMPTYPE_PROPERTY> C<$DUMPTYPE_DATA_PATH> C<$DUMPTYPE_ALLOW_SPLIT> C<$DUMPTYPE_MAX_WARNINGS> C<$DUMPTYPE_RECOVERY_LIMIT>  C<$DUMPTYPE_DUMP_LIMIT>
830
831=cut
832
833push @EXPORT_OK, qw(interface_key_to_string);
834push @{$EXPORT_TAGS{"interface_key"}}, qw(interface_key_to_string);
835
836my %_interface_key_VALUES;
837#Convert an enum value to a single string
838sub interface_key_to_string {
839    my ($enumval) = @_;
840
841    for my $k (keys %_interface_key_VALUES) {
842	my $v = $_interface_key_VALUES{$k};
843
844	#is this a matching flag?
845	if ($enumval == $v) {
846	    return $k;
847	}
848    }
849
850#default, just return the number
851    return $enumval;
852}
853
854push @EXPORT_OK, qw( $INTER_COMMENT $INTER_MAXUSAGE);
855push @{$EXPORT_TAGS{"interface_key"}}, qw( $INTER_COMMENT $INTER_MAXUSAGE);
856      foreach (qw(  INTER_COMMENT INTER_MAXUSAGE)) {  	$_interface_key_VALUES{$_} = $$_;      }
857#copy symbols in interface_key to getconf
858push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"interface_key"}};
859
860
861use Amanda::Config::FoldingHash;
862
863=pod
864
865Dumptype Parameters:       C<$INTER_COMMENT> C<$INTER_MAXUSAGE>
866
867=cut
868
869push @EXPORT_OK, qw(holdingdisk_key_to_string);
870push @{$EXPORT_TAGS{"holdingdisk_key"}}, qw(holdingdisk_key_to_string);
871
872my %_holdingdisk_key_VALUES;
873#Convert an enum value to a single string
874sub holdingdisk_key_to_string {
875    my ($enumval) = @_;
876
877    for my $k (keys %_holdingdisk_key_VALUES) {
878	my $v = $_holdingdisk_key_VALUES{$k};
879
880	#is this a matching flag?
881	if ($enumval == $v) {
882	    return $k;
883	}
884    }
885
886#default, just return the number
887    return $enumval;
888}
889
890push @EXPORT_OK, qw( $HOLDING_COMMENT $HOLDING_DISKDIR $HOLDING_DISKSIZE $HOLDING_CHUNKSIZE);
891push @{$EXPORT_TAGS{"holdingdisk_key"}}, qw( $HOLDING_COMMENT $HOLDING_DISKDIR $HOLDING_DISKSIZE $HOLDING_CHUNKSIZE);
892      foreach (qw(  HOLDING_COMMENT HOLDING_DISKDIR HOLDING_DISKSIZE HOLDING_CHUNKSIZE)) {  	$_holdingdisk_key_VALUES{$_} = $$_;      }
893#copy symbols in holdingdisk_key to getconf
894push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"holdingdisk_key"}};
895
896
897use Amanda::Config::FoldingHash;
898
899=pod
900
901Holdingdisk Parameters:       C<$HOLDING_COMMENT> C<$HOLDING_DISKDIR> C<$HOLDING_DISKSIZE> C<$HOLDING_CHUNKSIZE>
902
903=cut
904
905push @EXPORT_OK, qw(application_key_to_string);
906push @{$EXPORT_TAGS{"application_key"}}, qw(application_key_to_string);
907
908my %_application_key_VALUES;
909#Convert an enum value to a single string
910sub application_key_to_string {
911    my ($enumval) = @_;
912
913    for my $k (keys %_application_key_VALUES) {
914	my $v = $_application_key_VALUES{$k};
915
916	#is this a matching flag?
917	if ($enumval == $v) {
918	    return $k;
919	}
920    }
921
922#default, just return the number
923    return $enumval;
924}
925
926push @EXPORT_OK, qw( $APPLICATION_COMMENT $APPLICATION_PLUGIN $APPLICATION_PROPERTY  $APPLICATION_CLIENT_NAME);
927push @{$EXPORT_TAGS{"application_key"}}, qw( $APPLICATION_COMMENT $APPLICATION_PLUGIN $APPLICATION_PROPERTY  $APPLICATION_CLIENT_NAME);
928      foreach (qw(  APPLICATION_COMMENT APPLICATION_PLUGIN APPLICATION_PROPERTY  APPLICATION_CLIENT_NAME)) {  	$_application_key_VALUES{$_} = $$_;      }
929#copy symbols in application_key to getconf
930push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"application_key"}};
931
932
933use Amanda::Config::FoldingHash;
934
935=pod
936
937Application Parameters:       C<$APPLICATION_COMMENT> C<$APPLICATION_PLUGIN> C<$APPLICATION_PROPERTY>  C<$APPLICATION_CLIENT_NAME>
938
939=cut
940
941push @EXPORT_OK, qw(pp_script_key_to_string);
942push @{$EXPORT_TAGS{"pp_script_key"}}, qw(pp_script_key_to_string);
943
944my %_pp_script_key_VALUES;
945#Convert an enum value to a single string
946sub pp_script_key_to_string {
947    my ($enumval) = @_;
948
949    for my $k (keys %_pp_script_key_VALUES) {
950	my $v = $_pp_script_key_VALUES{$k};
951
952	#is this a matching flag?
953	if ($enumval == $v) {
954	    return $k;
955	}
956    }
957
958#default, just return the number
959    return $enumval;
960}
961
962push @EXPORT_OK, qw( $PP_SCRIPT_COMMENT $PP_SCRIPT_PLUGIN $PP_SCRIPT_PROPERTY $PP_SCRIPT_EXECUTE_ON $PP_SCRIPT_EXECUTE_WHERE $PP_SCRIPT_ORDER $PP_SCRIPT_SINGLE_EXECUTION $PP_SCRIPT_CLIENT_NAME);
963push @{$EXPORT_TAGS{"pp_script_key"}}, qw( $PP_SCRIPT_COMMENT $PP_SCRIPT_PLUGIN $PP_SCRIPT_PROPERTY $PP_SCRIPT_EXECUTE_ON $PP_SCRIPT_EXECUTE_WHERE $PP_SCRIPT_ORDER $PP_SCRIPT_SINGLE_EXECUTION $PP_SCRIPT_CLIENT_NAME);
964      foreach (qw(  PP_SCRIPT_COMMENT PP_SCRIPT_PLUGIN PP_SCRIPT_PROPERTY PP_SCRIPT_EXECUTE_ON PP_SCRIPT_EXECUTE_WHERE PP_SCRIPT_ORDER PP_SCRIPT_SINGLE_EXECUTION PP_SCRIPT_CLIENT_NAME)) {  	$_pp_script_key_VALUES{$_} = $$_;      }
965#copy symbols in pp_script_key to getconf
966push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"pp_script_key"}};
967
968
969use Amanda::Config::FoldingHash;
970
971=pod
972
973Pre/Post-Script Parameters:       C<$PP_SCRIPT_COMMENT> C<$PP_SCRIPT_PLUGIN> C<$PP_SCRIPT_PROPERTY> C<$PP_SCRIPT_EXECUTE_ON> C<$PP_SCRIPT_EXECUTE_WHERE> C<$PP_SCRIPT_ORDER> C<$PP_SCRIPT_SINGLE_EXECUTION> C<$PP_SCRIPT_CLIENT_NAME>
974
975=cut
976
977push @EXPORT_OK, qw(device_config_key_to_string);
978push @{$EXPORT_TAGS{"device_config_key"}}, qw(device_config_key_to_string);
979
980my %_device_config_key_VALUES;
981#Convert an enum value to a single string
982sub device_config_key_to_string {
983    my ($enumval) = @_;
984
985    for my $k (keys %_device_config_key_VALUES) {
986	my $v = $_device_config_key_VALUES{$k};
987
988	#is this a matching flag?
989	if ($enumval == $v) {
990	    return $k;
991	}
992    }
993
994#default, just return the number
995    return $enumval;
996}
997
998push @EXPORT_OK, qw( $DEVICE_CONFIG_COMMENT $DEVICE_CONFIG_TAPEDEV $DEVICE_CONFIG_DEVICE_PROPERTY);
999push @{$EXPORT_TAGS{"device_config_key"}}, qw( $DEVICE_CONFIG_COMMENT $DEVICE_CONFIG_TAPEDEV $DEVICE_CONFIG_DEVICE_PROPERTY);
1000      foreach (qw(  DEVICE_CONFIG_COMMENT DEVICE_CONFIG_TAPEDEV DEVICE_CONFIG_DEVICE_PROPERTY)) {  	$_device_config_key_VALUES{$_} = $$_;      }
1001#copy symbols in device_config_key to getconf
1002push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"device_config_key"}};
1003
1004
1005use Amanda::Config::FoldingHash;
1006
1007=pod
1008
1009Pre/Post-Script Parameters:       C<$DEVICE_CONFIG_COMMENT> C<$DEVICE_CONFIG_TAPEDEV> C<$DEVICE_CONFIG_DEVICE_PROPERTY>
1010
1011=cut
1012
1013push @EXPORT_OK, qw(changer_config_key_to_string);
1014push @{$EXPORT_TAGS{"changer_config_key"}}, qw(changer_config_key_to_string);
1015
1016my %_changer_config_key_VALUES;
1017#Convert an enum value to a single string
1018sub changer_config_key_to_string {
1019    my ($enumval) = @_;
1020
1021    for my $k (keys %_changer_config_key_VALUES) {
1022	my $v = $_changer_config_key_VALUES{$k};
1023
1024	#is this a matching flag?
1025	if ($enumval == $v) {
1026	    return $k;
1027	}
1028    }
1029
1030#default, just return the number
1031    return $enumval;
1032}
1033
1034push @EXPORT_OK, qw( $CHANGER_CONFIG_COMMENT $CHANGER_CONFIG_TAPEDEV $CHANGER_CONFIG_TPCHANGER $CHANGER_CONFIG_CHANGERDEV $CHANGER_CONFIG_CHANGERFILE $CHANGER_CONFIG_PROPERTY $CHANGER_CONFIG_DEVICE_PROPERTY);
1035push @{$EXPORT_TAGS{"changer_config_key"}}, qw( $CHANGER_CONFIG_COMMENT $CHANGER_CONFIG_TAPEDEV $CHANGER_CONFIG_TPCHANGER $CHANGER_CONFIG_CHANGERDEV $CHANGER_CONFIG_CHANGERFILE $CHANGER_CONFIG_PROPERTY $CHANGER_CONFIG_DEVICE_PROPERTY);
1036      foreach (qw(  CHANGER_CONFIG_COMMENT CHANGER_CONFIG_TAPEDEV CHANGER_CONFIG_TPCHANGER CHANGER_CONFIG_CHANGERDEV CHANGER_CONFIG_CHANGERFILE CHANGER_CONFIG_PROPERTY CHANGER_CONFIG_DEVICE_PROPERTY)) {  	$_changer_config_key_VALUES{$_} = $$_;      }
1037#copy symbols in changer_config_key to getconf
1038push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"changer_config_key"}};
1039
1040
1041use Amanda::Config::FoldingHash;
1042
1043=pod
1044
1045Pre/Post-Script Parameters:       C<$CHANGER_CONFIG_COMMENT> C<$CHANGER_CONFIG_TAPEDEV> C<$CHANGER_CONFIG_TPCHANGER> C<$CHANGER_CONFIG_CHANGERDEV> C<$CHANGER_CONFIG_CHANGERFILE> C<$CHANGER_CONFIG_PROPERTY> C<$CHANGER_CONFIG_DEVICE_PROPERTY>
1046
1047=cut
1048
1049push @EXPORT_OK, qw(interactivity_key_to_string);
1050push @{$EXPORT_TAGS{"interactivity_key"}}, qw(interactivity_key_to_string);
1051
1052my %_interactivity_key_VALUES;
1053#Convert an enum value to a single string
1054sub interactivity_key_to_string {
1055    my ($enumval) = @_;
1056
1057    for my $k (keys %_interactivity_key_VALUES) {
1058	my $v = $_interactivity_key_VALUES{$k};
1059
1060	#is this a matching flag?
1061	if ($enumval == $v) {
1062	    return $k;
1063	}
1064    }
1065
1066#default, just return the number
1067    return $enumval;
1068}
1069
1070push @EXPORT_OK, qw( $INTERACTIVITY_COMMENT $INTERACTIVITY_PLUGIN $INTERACTIVITY_PROPERTY);
1071push @{$EXPORT_TAGS{"interactivity_key"}}, qw( $INTERACTIVITY_COMMENT $INTERACTIVITY_PLUGIN $INTERACTIVITY_PROPERTY);
1072      foreach (qw(  INTERACTIVITY_COMMENT INTERACTIVITY_PLUGIN INTERACTIVITY_PROPERTY)) {  	$_interactivity_key_VALUES{$_} = $$_;      }
1073#copy symbols in interactivity_key to getconf
1074push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"interactivity_key"}};
1075
1076
1077use Amanda::Config::FoldingHash;
1078
1079=pod
1080
1081Interactivity Parameters:       C<$INTERACTIVITY_COMMENT> C<$INTERACTIVITY_PLUGIN> C<$INTERACTIVITY_PROPERTY>
1082
1083=cut
1084
1085push @EXPORT_OK, qw(taperscan_key_to_string);
1086push @{$EXPORT_TAGS{"taperscan_key"}}, qw(taperscan_key_to_string);
1087
1088my %_taperscan_key_VALUES;
1089#Convert an enum value to a single string
1090sub taperscan_key_to_string {
1091    my ($enumval) = @_;
1092
1093    for my $k (keys %_taperscan_key_VALUES) {
1094	my $v = $_taperscan_key_VALUES{$k};
1095
1096	#is this a matching flag?
1097	if ($enumval == $v) {
1098	    return $k;
1099	}
1100    }
1101
1102#default, just return the number
1103    return $enumval;
1104}
1105
1106push @EXPORT_OK, qw( $TAPERSCAN_COMMENT $TAPERSCAN_PLUGIN $TAPERSCAN_PROPERTY);
1107push @{$EXPORT_TAGS{"taperscan_key"}}, qw( $TAPERSCAN_COMMENT $TAPERSCAN_PLUGIN $TAPERSCAN_PROPERTY);
1108      foreach (qw(  TAPERSCAN_COMMENT TAPERSCAN_PLUGIN TAPERSCAN_PROPERTY)) {  	$_taperscan_key_VALUES{$_} = $$_;      }
1109#copy symbols in taperscan_key to getconf
1110push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"taperscan_key"}};
1111
1112
1113use Amanda::Config::FoldingHash;
1114
1115=pod
1116
1117Taperscan Parameters:       C<$TAPERSCAN_COMMENT> C<$TAPERSCAN_PLUGIN> C<$TAPERSCAN_PROPERTY>
1118
1119=cut
1120
1121push @EXPORT_OK, qw(dump_holdingdisk_t_to_string);
1122push @{$EXPORT_TAGS{"dump_holdingdisk_t"}}, qw(dump_holdingdisk_t_to_string);
1123
1124my %_dump_holdingdisk_t_VALUES;
1125#Convert an enum value to a single string
1126sub dump_holdingdisk_t_to_string {
1127    my ($enumval) = @_;
1128
1129    for my $k (keys %_dump_holdingdisk_t_VALUES) {
1130	my $v = $_dump_holdingdisk_t_VALUES{$k};
1131
1132	#is this a matching flag?
1133	if ($enumval == $v) {
1134	    return $k;
1135	}
1136    }
1137
1138#default, just return the number
1139    return $enumval;
1140}
1141
1142push @EXPORT_OK, qw($HOLD_NEVER);
1143push @{$EXPORT_TAGS{"dump_holdingdisk_t"}}, qw($HOLD_NEVER);
1144
1145$_dump_holdingdisk_t_VALUES{"HOLD_NEVER"} = $HOLD_NEVER;
1146
1147push @EXPORT_OK, qw($HOLD_AUTO);
1148push @{$EXPORT_TAGS{"dump_holdingdisk_t"}}, qw($HOLD_AUTO);
1149
1150$_dump_holdingdisk_t_VALUES{"HOLD_AUTO"} = $HOLD_AUTO;
1151
1152push @EXPORT_OK, qw($HOLD_REQUIRED);
1153push @{$EXPORT_TAGS{"dump_holdingdisk_t"}}, qw($HOLD_REQUIRED);
1154
1155$_dump_holdingdisk_t_VALUES{"HOLD_REQUIRED"} = $HOLD_REQUIRED;
1156
1157#copy symbols in dump_holdingdisk_t to getconf
1158push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"dump_holdingdisk_t"}};
1159
1160push @EXPORT_OK, qw(comp_t_to_string);
1161push @{$EXPORT_TAGS{"comp_t"}}, qw(comp_t_to_string);
1162
1163my %_comp_t_VALUES;
1164#Convert an enum value to a single string
1165sub comp_t_to_string {
1166    my ($enumval) = @_;
1167
1168    for my $k (keys %_comp_t_VALUES) {
1169	my $v = $_comp_t_VALUES{$k};
1170
1171	#is this a matching flag?
1172	if ($enumval == $v) {
1173	    return $k;
1174	}
1175    }
1176
1177#default, just return the number
1178    return $enumval;
1179}
1180
1181push @EXPORT_OK, qw($COMP_NONE);
1182push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_NONE);
1183
1184$_comp_t_VALUES{"COMP_NONE"} = $COMP_NONE;
1185
1186push @EXPORT_OK, qw($COMP_FAST);
1187push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_FAST);
1188
1189$_comp_t_VALUES{"COMP_FAST"} = $COMP_FAST;
1190
1191push @EXPORT_OK, qw($COMP_BEST);
1192push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_BEST);
1193
1194$_comp_t_VALUES{"COMP_BEST"} = $COMP_BEST;
1195
1196push @EXPORT_OK, qw($COMP_CUST);
1197push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_CUST);
1198
1199$_comp_t_VALUES{"COMP_CUST"} = $COMP_CUST;
1200
1201push @EXPORT_OK, qw($COMP_SERVER_FAST);
1202push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_SERVER_FAST);
1203
1204$_comp_t_VALUES{"COMP_SERVER_FAST"} = $COMP_SERVER_FAST;
1205
1206push @EXPORT_OK, qw($COMP_SERVER_BEST);
1207push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_SERVER_BEST);
1208
1209$_comp_t_VALUES{"COMP_SERVER_BEST"} = $COMP_SERVER_BEST;
1210
1211push @EXPORT_OK, qw($COMP_SERVER_CUST);
1212push @{$EXPORT_TAGS{"comp_t"}}, qw($COMP_SERVER_CUST);
1213
1214$_comp_t_VALUES{"COMP_SERVER_CUST"} = $COMP_SERVER_CUST;
1215
1216#copy symbols in comp_t to getconf
1217push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"comp_t"}};
1218
1219push @EXPORT_OK, qw(encrypt_t_to_string);
1220push @{$EXPORT_TAGS{"encrypt_t"}}, qw(encrypt_t_to_string);
1221
1222my %_encrypt_t_VALUES;
1223#Convert an enum value to a single string
1224sub encrypt_t_to_string {
1225    my ($enumval) = @_;
1226
1227    for my $k (keys %_encrypt_t_VALUES) {
1228	my $v = $_encrypt_t_VALUES{$k};
1229
1230	#is this a matching flag?
1231	if ($enumval == $v) {
1232	    return $k;
1233	}
1234    }
1235
1236#default, just return the number
1237    return $enumval;
1238}
1239
1240push @EXPORT_OK, qw($ENCRYPT_NONE);
1241push @{$EXPORT_TAGS{"encrypt_t"}}, qw($ENCRYPT_NONE);
1242
1243$_encrypt_t_VALUES{"ENCRYPT_NONE"} = $ENCRYPT_NONE;
1244
1245push @EXPORT_OK, qw($ENCRYPT_CUST);
1246push @{$EXPORT_TAGS{"encrypt_t"}}, qw($ENCRYPT_CUST);
1247
1248$_encrypt_t_VALUES{"ENCRYPT_CUST"} = $ENCRYPT_CUST;
1249
1250push @EXPORT_OK, qw($ENCRYPT_SERV_CUST);
1251push @{$EXPORT_TAGS{"encrypt_t"}}, qw($ENCRYPT_SERV_CUST);
1252
1253$_encrypt_t_VALUES{"ENCRYPT_SERV_CUST"} = $ENCRYPT_SERV_CUST;
1254
1255#copy symbols in encrypt_t to getconf
1256push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"encrypt_t"}};
1257
1258push @EXPORT_OK, qw(strategy_t_to_string);
1259push @{$EXPORT_TAGS{"strategy_t"}}, qw(strategy_t_to_string);
1260
1261my %_strategy_t_VALUES;
1262#Convert an enum value to a single string
1263sub strategy_t_to_string {
1264    my ($enumval) = @_;
1265
1266    for my $k (keys %_strategy_t_VALUES) {
1267	my $v = $_strategy_t_VALUES{$k};
1268
1269	#is this a matching flag?
1270	if ($enumval == $v) {
1271	    return $k;
1272	}
1273    }
1274
1275#default, just return the number
1276    return $enumval;
1277}
1278
1279push @EXPORT_OK, qw($DS_SKIP);
1280push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_SKIP);
1281
1282$_strategy_t_VALUES{"DS_SKIP"} = $DS_SKIP;
1283
1284push @EXPORT_OK, qw($DS_STANDARD);
1285push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_STANDARD);
1286
1287$_strategy_t_VALUES{"DS_STANDARD"} = $DS_STANDARD;
1288
1289push @EXPORT_OK, qw($DS_NOFULL);
1290push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_NOFULL);
1291
1292$_strategy_t_VALUES{"DS_NOFULL"} = $DS_NOFULL;
1293
1294push @EXPORT_OK, qw($DS_NOINC);
1295push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_NOINC);
1296
1297$_strategy_t_VALUES{"DS_NOINC"} = $DS_NOINC;
1298
1299push @EXPORT_OK, qw($DS_4);
1300push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_4);
1301
1302$_strategy_t_VALUES{"DS_4"} = $DS_4;
1303
1304push @EXPORT_OK, qw($DS_5);
1305push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_5);
1306
1307$_strategy_t_VALUES{"DS_5"} = $DS_5;
1308
1309push @EXPORT_OK, qw($DS_HANOI);
1310push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_HANOI);
1311
1312$_strategy_t_VALUES{"DS_HANOI"} = $DS_HANOI;
1313
1314push @EXPORT_OK, qw($DS_INCRONLY);
1315push @{$EXPORT_TAGS{"strategy_t"}}, qw($DS_INCRONLY);
1316
1317$_strategy_t_VALUES{"DS_INCRONLY"} = $DS_INCRONLY;
1318
1319#copy symbols in strategy_t to getconf
1320push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"strategy_t"}};
1321
1322push @EXPORT_OK, qw(estimate_t_to_string);
1323push @{$EXPORT_TAGS{"estimate_t"}}, qw(estimate_t_to_string);
1324
1325my %_estimate_t_VALUES;
1326#Convert an enum value to a single string
1327sub estimate_t_to_string {
1328    my ($enumval) = @_;
1329
1330    for my $k (keys %_estimate_t_VALUES) {
1331	my $v = $_estimate_t_VALUES{$k};
1332
1333	#is this a matching flag?
1334	if ($enumval == $v) {
1335	    return $k;
1336	}
1337    }
1338
1339#default, just return the number
1340    return $enumval;
1341}
1342
1343push @EXPORT_OK, qw($ES_CLIENT);
1344push @{$EXPORT_TAGS{"estimate_t"}}, qw($ES_CLIENT);
1345
1346$_estimate_t_VALUES{"ES_CLIENT"} = $ES_CLIENT;
1347
1348push @EXPORT_OK, qw($ES_SERVER);
1349push @{$EXPORT_TAGS{"estimate_t"}}, qw($ES_SERVER);
1350
1351$_estimate_t_VALUES{"ES_SERVER"} = $ES_SERVER;
1352
1353push @EXPORT_OK, qw($ES_CALCSIZE);
1354push @{$EXPORT_TAGS{"estimate_t"}}, qw($ES_CALCSIZE);
1355
1356$_estimate_t_VALUES{"ES_CALCSIZE"} = $ES_CALCSIZE;
1357
1358#copy symbols in estimate_t to getconf
1359push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"estimate_t"}};
1360
1361push @EXPORT_OK, qw(autolabel_enum_t_to_string);
1362push @{$EXPORT_TAGS{"autolabel_enum_t"}}, qw(autolabel_enum_t_to_string);
1363
1364my %_autolabel_enum_t_VALUES;
1365#Convert an enum value to a single string
1366sub autolabel_enum_t_to_string {
1367    my ($enumval) = @_;
1368
1369    for my $k (keys %_autolabel_enum_t_VALUES) {
1370	my $v = $_autolabel_enum_t_VALUES{$k};
1371
1372	#is this a matching flag?
1373	if ($enumval == $v) {
1374	    return $k;
1375	}
1376    }
1377
1378#default, just return the number
1379    return $enumval;
1380}
1381
1382push @EXPORT_OK, qw($AL_OTHER_CONFIG);
1383push @{$EXPORT_TAGS{"autolabel_enum_t"}}, qw($AL_OTHER_CONFIG);
1384
1385$_autolabel_enum_t_VALUES{"AL_OTHER_CONFIG"} = $AL_OTHER_CONFIG;
1386
1387push @EXPORT_OK, qw($AL_NON_AMANDA);
1388push @{$EXPORT_TAGS{"autolabel_enum_t"}}, qw($AL_NON_AMANDA);
1389
1390$_autolabel_enum_t_VALUES{"AL_NON_AMANDA"} = $AL_NON_AMANDA;
1391
1392push @EXPORT_OK, qw($AL_VOLUME_ERROR);
1393push @{$EXPORT_TAGS{"autolabel_enum_t"}}, qw($AL_VOLUME_ERROR);
1394
1395$_autolabel_enum_t_VALUES{"AL_VOLUME_ERROR"} = $AL_VOLUME_ERROR;
1396
1397push @EXPORT_OK, qw($AL_EMPTY);
1398push @{$EXPORT_TAGS{"autolabel_enum_t"}}, qw($AL_EMPTY);
1399
1400$_autolabel_enum_t_VALUES{"AL_EMPTY"} = $AL_EMPTY;
1401
1402#copy symbols in autolabel_enum_t to getconf
1403push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"autolabel_enum_t"}};
1404
1405push @EXPORT_OK, qw(taperalgo_t_to_string);
1406push @{$EXPORT_TAGS{"taperalgo_t"}}, qw(taperalgo_t_to_string);
1407
1408my %_taperalgo_t_VALUES;
1409#Convert an enum value to a single string
1410sub taperalgo_t_to_string {
1411    my ($enumval) = @_;
1412
1413    for my $k (keys %_taperalgo_t_VALUES) {
1414	my $v = $_taperalgo_t_VALUES{$k};
1415
1416	#is this a matching flag?
1417	if ($enumval == $v) {
1418	    return $k;
1419	}
1420    }
1421
1422#default, just return the number
1423    return $enumval;
1424}
1425
1426push @EXPORT_OK, qw($ALGO_FIRST);
1427push @{$EXPORT_TAGS{"taperalgo_t"}}, qw($ALGO_FIRST);
1428
1429$_taperalgo_t_VALUES{"ALGO_FIRST"} = $ALGO_FIRST;
1430
1431push @EXPORT_OK, qw($ALGO_FIRSTFIT);
1432push @{$EXPORT_TAGS{"taperalgo_t"}}, qw($ALGO_FIRSTFIT);
1433
1434$_taperalgo_t_VALUES{"ALGO_FIRSTFIT"} = $ALGO_FIRSTFIT;
1435
1436push @EXPORT_OK, qw($ALGO_LARGEST);
1437push @{$EXPORT_TAGS{"taperalgo_t"}}, qw($ALGO_LARGEST);
1438
1439$_taperalgo_t_VALUES{"ALGO_LARGEST"} = $ALGO_LARGEST;
1440
1441push @EXPORT_OK, qw($ALGO_LARGESTFIT);
1442push @{$EXPORT_TAGS{"taperalgo_t"}}, qw($ALGO_LARGESTFIT);
1443
1444$_taperalgo_t_VALUES{"ALGO_LARGESTFIT"} = $ALGO_LARGESTFIT;
1445
1446push @EXPORT_OK, qw($ALGO_SMALLEST);
1447push @{$EXPORT_TAGS{"taperalgo_t"}}, qw($ALGO_SMALLEST);
1448
1449$_taperalgo_t_VALUES{"ALGO_SMALLEST"} = $ALGO_SMALLEST;
1450
1451push @EXPORT_OK, qw($ALGO_LAST);
1452push @{$EXPORT_TAGS{"taperalgo_t"}}, qw($ALGO_LAST);
1453
1454$_taperalgo_t_VALUES{"ALGO_LAST"} = $ALGO_LAST;
1455
1456#copy symbols in taperalgo_t to getconf
1457push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"taperalgo_t"}};
1458
1459push @EXPORT_OK, qw(execute_on_t_to_string);
1460push @{$EXPORT_TAGS{"execute_on_t"}}, qw(execute_on_t_to_string);
1461
1462my %_execute_on_t_VALUES;
1463#Convert an enum value to a single string
1464sub execute_on_t_to_string {
1465    my ($enumval) = @_;
1466
1467    for my $k (keys %_execute_on_t_VALUES) {
1468	my $v = $_execute_on_t_VALUES{$k};
1469
1470	#is this a matching flag?
1471	if ($enumval == $v) {
1472	    return $k;
1473	}
1474    }
1475
1476#default, just return the number
1477    return $enumval;
1478}
1479
1480push @EXPORT_OK, qw($EXECUTE_ON_PRE_AMCHECK);
1481push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_AMCHECK);
1482
1483$_execute_on_t_VALUES{"EXECUTE_ON_PRE_AMCHECK"} = $EXECUTE_ON_PRE_AMCHECK;
1484
1485push @EXPORT_OK, qw($EXECUTE_ON_PRE_DLE_AMCHECK);
1486push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_DLE_AMCHECK);
1487
1488$_execute_on_t_VALUES{"EXECUTE_ON_PRE_DLE_AMCHECK"} = $EXECUTE_ON_PRE_DLE_AMCHECK;
1489
1490push @EXPORT_OK, qw($EXECUTE_ON_PRE_HOST_AMCHECK);
1491push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_HOST_AMCHECK);
1492
1493$_execute_on_t_VALUES{"EXECUTE_ON_PRE_HOST_AMCHECK"} = $EXECUTE_ON_PRE_HOST_AMCHECK;
1494
1495push @EXPORT_OK, qw($EXECUTE_ON_POST_AMCHECK);
1496push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_AMCHECK);
1497
1498$_execute_on_t_VALUES{"EXECUTE_ON_POST_AMCHECK"} = $EXECUTE_ON_POST_AMCHECK;
1499
1500push @EXPORT_OK, qw($EXECUTE_ON_POST_DLE_AMCHECK);
1501push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_DLE_AMCHECK);
1502
1503$_execute_on_t_VALUES{"EXECUTE_ON_POST_DLE_AMCHECK"} = $EXECUTE_ON_POST_DLE_AMCHECK;
1504
1505push @EXPORT_OK, qw($EXECUTE_ON_POST_HOST_AMCHECK);
1506push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_HOST_AMCHECK);
1507
1508$_execute_on_t_VALUES{"EXECUTE_ON_POST_HOST_AMCHECK"} = $EXECUTE_ON_POST_HOST_AMCHECK;
1509
1510push @EXPORT_OK, qw($EXECUTE_ON_PRE_ESTIMATE);
1511push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_ESTIMATE);
1512
1513$_execute_on_t_VALUES{"EXECUTE_ON_PRE_ESTIMATE"} = $EXECUTE_ON_PRE_ESTIMATE;
1514
1515push @EXPORT_OK, qw($EXECUTE_ON_PRE_DLE_ESTIMATE);
1516push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_DLE_ESTIMATE);
1517
1518$_execute_on_t_VALUES{"EXECUTE_ON_PRE_DLE_ESTIMATE"} = $EXECUTE_ON_PRE_DLE_ESTIMATE;
1519
1520push @EXPORT_OK, qw($EXECUTE_ON_PRE_HOST_ESTIMATE);
1521push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_HOST_ESTIMATE);
1522
1523$_execute_on_t_VALUES{"EXECUTE_ON_PRE_HOST_ESTIMATE"} = $EXECUTE_ON_PRE_HOST_ESTIMATE;
1524
1525push @EXPORT_OK, qw($EXECUTE_ON_POST_ESTIMATE);
1526push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_ESTIMATE);
1527
1528$_execute_on_t_VALUES{"EXECUTE_ON_POST_ESTIMATE"} = $EXECUTE_ON_POST_ESTIMATE;
1529
1530push @EXPORT_OK, qw($EXECUTE_ON_POST_DLE_ESTIMATE);
1531push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_DLE_ESTIMATE);
1532
1533$_execute_on_t_VALUES{"EXECUTE_ON_POST_DLE_ESTIMATE"} = $EXECUTE_ON_POST_DLE_ESTIMATE;
1534
1535push @EXPORT_OK, qw($EXECUTE_ON_POST_HOST_ESTIMATE);
1536push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_HOST_ESTIMATE);
1537
1538$_execute_on_t_VALUES{"EXECUTE_ON_POST_HOST_ESTIMATE"} = $EXECUTE_ON_POST_HOST_ESTIMATE;
1539
1540push @EXPORT_OK, qw($EXECUTE_ON_PRE_BACKUP);
1541push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_BACKUP);
1542
1543$_execute_on_t_VALUES{"EXECUTE_ON_PRE_BACKUP"} = $EXECUTE_ON_PRE_BACKUP;
1544
1545push @EXPORT_OK, qw($EXECUTE_ON_PRE_DLE_BACKUP);
1546push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_DLE_BACKUP);
1547
1548$_execute_on_t_VALUES{"EXECUTE_ON_PRE_DLE_BACKUP"} = $EXECUTE_ON_PRE_DLE_BACKUP;
1549
1550push @EXPORT_OK, qw($EXECUTE_ON_PRE_HOST_BACKUP);
1551push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_PRE_HOST_BACKUP);
1552
1553$_execute_on_t_VALUES{"EXECUTE_ON_PRE_HOST_BACKUP"} = $EXECUTE_ON_PRE_HOST_BACKUP;
1554
1555push @EXPORT_OK, qw($EXECUTE_ON_POST_BACKUP);
1556push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_BACKUP);
1557
1558$_execute_on_t_VALUES{"EXECUTE_ON_POST_BACKUP"} = $EXECUTE_ON_POST_BACKUP;
1559
1560push @EXPORT_OK, qw($EXECUTE_ON_POST_DLE_BACKUP);
1561push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_DLE_BACKUP);
1562
1563$_execute_on_t_VALUES{"EXECUTE_ON_POST_DLE_BACKUP"} = $EXECUTE_ON_POST_DLE_BACKUP;
1564
1565push @EXPORT_OK, qw($EXECUTE_ON_POST_HOST_BACKUP);
1566push @{$EXPORT_TAGS{"execute_on_t"}}, qw($EXECUTE_ON_POST_HOST_BACKUP);
1567
1568$_execute_on_t_VALUES{"EXECUTE_ON_POST_HOST_BACKUP"} = $EXECUTE_ON_POST_HOST_BACKUP;
1569
1570#copy symbols in execute_on_t to getconf
1571push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"execute_on_t"}};
1572
1573push @EXPORT_OK, qw(send_amreport_on_t_to_string);
1574push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw(send_amreport_on_t_to_string);
1575
1576my %_send_amreport_on_t_VALUES;
1577#Convert an enum value to a single string
1578sub send_amreport_on_t_to_string {
1579    my ($enumval) = @_;
1580
1581    for my $k (keys %_send_amreport_on_t_VALUES) {
1582	my $v = $_send_amreport_on_t_VALUES{$k};
1583
1584	#is this a matching flag?
1585	if ($enumval == $v) {
1586	    return $k;
1587	}
1588    }
1589
1590#default, just return the number
1591    return $enumval;
1592}
1593
1594push @EXPORT_OK, qw($SEND_AMREPORT_ALL);
1595push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_ALL);
1596
1597$_send_amreport_on_t_VALUES{"SEND_AMREPORT_ALL"} = $SEND_AMREPORT_ALL;
1598
1599push @EXPORT_OK, qw($SEND_AMREPORT_STRANGE);
1600push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_STRANGE);
1601
1602$_send_amreport_on_t_VALUES{"SEND_AMREPORT_STRANGE"} = $SEND_AMREPORT_STRANGE;
1603
1604push @EXPORT_OK, qw($SEND_AMREPORT_ERROR);
1605push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_ERROR);
1606
1607$_send_amreport_on_t_VALUES{"SEND_AMREPORT_ERROR"} = $SEND_AMREPORT_ERROR;
1608
1609push @EXPORT_OK, qw($SEND_AMREPORT_NEVER);
1610push @{$EXPORT_TAGS{"send_amreport_on_t"}}, qw($SEND_AMREPORT_NEVER);
1611
1612$_send_amreport_on_t_VALUES{"SEND_AMREPORT_NEVER"} = $SEND_AMREPORT_NEVER;
1613
1614#copy symbols in send_amreport_on_t to getconf
1615push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"send_amreport_on_t"}};
1616
1617push @EXPORT_OK, qw(data_path_t_to_string);
1618push @{$EXPORT_TAGS{"data_path_t"}}, qw(data_path_t_to_string);
1619
1620my %_data_path_t_VALUES;
1621#Convert an enum value to a single string
1622sub data_path_t_to_string {
1623    my ($enumval) = @_;
1624
1625    for my $k (keys %_data_path_t_VALUES) {
1626	my $v = $_data_path_t_VALUES{$k};
1627
1628	#is this a matching flag?
1629	if ($enumval == $v) {
1630	    return $k;
1631	}
1632    }
1633
1634#default, just return the number
1635    return $enumval;
1636}
1637
1638push @EXPORT_OK, qw($DATA_PATH_AMANDA);
1639push @{$EXPORT_TAGS{"data_path_t"}}, qw($DATA_PATH_AMANDA);
1640
1641$_data_path_t_VALUES{"DATA_PATH_AMANDA"} = $DATA_PATH_AMANDA;
1642
1643push @EXPORT_OK, qw($DATA_PATH_DIRECTTCP);
1644push @{$EXPORT_TAGS{"data_path_t"}}, qw($DATA_PATH_DIRECTTCP);
1645
1646$_data_path_t_VALUES{"DATA_PATH_DIRECTTCP"} = $DATA_PATH_DIRECTTCP;
1647
1648#copy symbols in data_path_t to getconf
1649push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"data_path_t"}};
1650
1651push @EXPORT_OK, qw(part_cache_type_t_to_string);
1652push @{$EXPORT_TAGS{"part_cache_type_t"}}, qw(part_cache_type_t_to_string);
1653
1654my %_part_cache_type_t_VALUES;
1655#Convert an enum value to a single string
1656sub part_cache_type_t_to_string {
1657    my ($enumval) = @_;
1658
1659    for my $k (keys %_part_cache_type_t_VALUES) {
1660	my $v = $_part_cache_type_t_VALUES{$k};
1661
1662	#is this a matching flag?
1663	if ($enumval == $v) {
1664	    return $k;
1665	}
1666    }
1667
1668#default, just return the number
1669    return $enumval;
1670}
1671
1672push @EXPORT_OK, qw($PART_CACHE_TYPE_NONE);
1673push @{$EXPORT_TAGS{"part_cache_type_t"}}, qw($PART_CACHE_TYPE_NONE);
1674
1675$_part_cache_type_t_VALUES{"PART_CACHE_TYPE_NONE"} = $PART_CACHE_TYPE_NONE;
1676
1677push @EXPORT_OK, qw($PART_CACHE_TYPE_DISK);
1678push @{$EXPORT_TAGS{"part_cache_type_t"}}, qw($PART_CACHE_TYPE_DISK);
1679
1680$_part_cache_type_t_VALUES{"PART_CACHE_TYPE_DISK"} = $PART_CACHE_TYPE_DISK;
1681
1682push @EXPORT_OK, qw($PART_CACHE_TYPE_MEMORY);
1683push @{$EXPORT_TAGS{"part_cache_type_t"}}, qw($PART_CACHE_TYPE_MEMORY);
1684
1685$_part_cache_type_t_VALUES{"PART_CACHE_TYPE_MEMORY"} = $PART_CACHE_TYPE_MEMORY;
1686
1687#copy symbols in part_cache_type_t to getconf
1688push @{$EXPORT_TAGS{"getconf"}},  @{$EXPORT_TAGS{"part_cache_type_t"}};
1689
1690$LIMIT_SAMEHOST="SAMEHOST-SAMEHOST-SAMEHOST";
1691$LIMIT_SERVER="SERVER-SERVER-SERVER";
1692
1693push @EXPORT_OK, qw(getconf getconf_seen getconf_linenum
1694    getconf_byname getconf_byname_strs
1695    getconf_list);
1696push @{$EXPORT_TAGS{"getconf"}}, qw(getconf getconf_seen getconf_linenum
1697    getconf_byname getconf_byname_strs
1698    getconf_list);
1699
1700push @EXPORT_OK, qw(lookup_tapetype tapetype_getconf tapetype_name
1701    tapetype_seen tapetype_seen);
1702push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_tapetype tapetype_getconf tapetype_name
1703    tapetype_seen tapetype_seen);
1704
1705push @EXPORT_OK, qw(lookup_dumptype dumptype_getconf dumptype_name
1706    dumptype_seen dumptype_seen);
1707push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_dumptype dumptype_getconf dumptype_name
1708    dumptype_seen dumptype_seen);
1709
1710push @EXPORT_OK, qw(lookup_interface interface_getconf interface_name
1711    interface_seen interface_seen);
1712push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_interface interface_getconf interface_name
1713    interface_seen interface_seen);
1714
1715push @EXPORT_OK, qw(lookup_holdingdisk holdingdisk_getconf holdingdisk_name
1716    getconf_holdingdisks
1717    holdingdisk_seen holdingdisk_seen);
1718push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_holdingdisk holdingdisk_getconf holdingdisk_name
1719    getconf_holdingdisks
1720    holdingdisk_seen holdingdisk_seen);
1721
1722push @EXPORT_OK, qw(lookup_application application_getconf application_name
1723    application_seen application_seen);
1724push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_application application_getconf application_name
1725    application_seen application_seen);
1726
1727push @EXPORT_OK, qw(lookup_pp_script pp_script_getconf pp_script_name
1728    pp_script_seen pp_script_seen);
1729push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_pp_script pp_script_getconf pp_script_name
1730    pp_script_seen pp_script_seen);
1731
1732push @EXPORT_OK, qw(lookup_device_config device_config_getconf device_config_name
1733    device_config_seen device_config_seen);
1734push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_device_config device_config_getconf device_config_name
1735    device_config_seen device_config_seen);
1736
1737push @EXPORT_OK, qw(lookup_changer_config changer_config_getconf changer_config_name
1738    changer_config_seen changer_config_seen);
1739push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_changer_config changer_config_getconf changer_config_name
1740    changer_config_seen changer_config_seen);
1741
1742push @EXPORT_OK, qw(lookup_interactivity interactivity_getconf interactivity_name
1743    interactivity_seen interactivity_seen);
1744push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_interactivity interactivity_getconf interactivity_name
1745    interactivity_seen interactivity_seen);
1746
1747push @EXPORT_OK, qw(lookup_taperscan taperscan_getconf taperscan_name
1748    taperscan_seen taperscan_seen);
1749push @{$EXPORT_TAGS{"getconf"}}, qw(lookup_taperscan taperscan_getconf taperscan_name
1750    taperscan_seen taperscan_seen);
1751
1752# only those keys with a value of '1' should be shown; the
1753# others are deprecated
1754our %subsection_names = (
1755    "tapetype" => 1,
1756    "dumptype" => 1,
1757    "interface" => 1,
1758    "holdingdisk" => 1,
1759    "application" => 1,
1760    "script" => 1,
1761    "application-tool" => 0,
1762    "script-tool" => 0,
1763    "device" => 1,
1764    "changer" => 1,
1765);
1766
1767push @EXPORT_OK, qw(%subsection_names);
1768push @{$EXPORT_TAGS{"getconf"}}, qw(%subsection_names);
1769
1770push @EXPORT_OK, qw(getconf_unit_divisor
1771
1772    $debug_amandad $debug_recovery $debug_amidxtaped $debug_amindexd $debug_amrecover
1773    $debug_auth $debug_event $debug_holding $debug_protocol
1774    $debug_planner $debug_driver $debug_dumper $debug_chunker
1775    $debug_taper $debug_selfcheck $debug_sendsize $debug_sendbackup);
1776push @{$EXPORT_TAGS{"getconf"}}, qw(getconf_unit_divisor
1777
1778    $debug_amandad $debug_recovery $debug_amidxtaped $debug_amindexd $debug_amrecover
1779    $debug_auth $debug_event $debug_holding $debug_protocol
1780    $debug_planner $debug_driver $debug_dumper $debug_chunker
1781    $debug_taper $debug_selfcheck $debug_sendsize $debug_sendbackup);
1782
1783push @EXPORT_OK, qw(cfgerr_level_t_to_string);
1784push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw(cfgerr_level_t_to_string);
1785
1786my %_cfgerr_level_t_VALUES;
1787#Convert an enum value to a single string
1788sub cfgerr_level_t_to_string {
1789    my ($enumval) = @_;
1790
1791    for my $k (keys %_cfgerr_level_t_VALUES) {
1792	my $v = $_cfgerr_level_t_VALUES{$k};
1793
1794	#is this a matching flag?
1795	if ($enumval == $v) {
1796	    return $k;
1797	}
1798    }
1799
1800#default, just return the number
1801    return $enumval;
1802}
1803
1804push @EXPORT_OK, qw($CFGERR_OK);
1805push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw($CFGERR_OK);
1806
1807$_cfgerr_level_t_VALUES{"CFGERR_OK"} = $CFGERR_OK;
1808
1809push @EXPORT_OK, qw($CFGERR_WARNINGS);
1810push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw($CFGERR_WARNINGS);
1811
1812$_cfgerr_level_t_VALUES{"CFGERR_WARNINGS"} = $CFGERR_WARNINGS;
1813
1814push @EXPORT_OK, qw($CFGERR_ERRORS);
1815push @{$EXPORT_TAGS{"cfgerr_level_t"}}, qw($CFGERR_ERRORS);
1816
1817$_cfgerr_level_t_VALUES{"CFGERR_ERRORS"} = $CFGERR_ERRORS;
1818
1819#copy symbols in cfgerr_level_t to init
1820push @{$EXPORT_TAGS{"init"}},  @{$EXPORT_TAGS{"cfgerr_level_t"}};
1821
1822push @EXPORT_OK, qw(config_init_flags_to_strings);
1823push @{$EXPORT_TAGS{"config_init_flags"}}, qw(config_init_flags_to_strings);
1824
1825my %_config_init_flags_VALUES;
1826#Convert a flag value to a list of names for flags that are set.
1827sub config_init_flags_to_strings {
1828    my ($flags) = @_;
1829    my @result = ();
1830
1831    for my $k (keys %_config_init_flags_VALUES) {
1832	my $v = $_config_init_flags_VALUES{$k};
1833
1834	#is this a matching flag?
1835	if (($v == 0 && $flags == 0) || ($v != 0 && ($flags & $v) == $v)) {
1836	    push @result, $k;
1837	}
1838    }
1839
1840#by default, just return the number as a 1-element list
1841    if (!@result) {
1842	return ($flags);
1843    }
1844
1845    return @result;
1846}
1847
1848push @EXPORT_OK, qw($CONFIG_INIT_EXPLICIT_NAME);
1849push @{$EXPORT_TAGS{"config_init_flags"}}, qw($CONFIG_INIT_EXPLICIT_NAME);
1850
1851$_config_init_flags_VALUES{"CONFIG_INIT_EXPLICIT_NAME"} = $CONFIG_INIT_EXPLICIT_NAME;
1852
1853push @EXPORT_OK, qw($CONFIG_INIT_USE_CWD);
1854push @{$EXPORT_TAGS{"config_init_flags"}}, qw($CONFIG_INIT_USE_CWD);
1855
1856$_config_init_flags_VALUES{"CONFIG_INIT_USE_CWD"} = $CONFIG_INIT_USE_CWD;
1857
1858push @EXPORT_OK, qw($CONFIG_INIT_CLIENT);
1859push @{$EXPORT_TAGS{"config_init_flags"}}, qw($CONFIG_INIT_CLIENT);
1860
1861$_config_init_flags_VALUES{"CONFIG_INIT_CLIENT"} = $CONFIG_INIT_CLIENT;
1862
1863push @EXPORT_OK, qw($CONFIG_INIT_OVERLAY);
1864push @{$EXPORT_TAGS{"config_init_flags"}}, qw($CONFIG_INIT_OVERLAY);
1865
1866$_config_init_flags_VALUES{"CONFIG_INIT_OVERLAY"} = $CONFIG_INIT_OVERLAY;
1867
1868#copy symbols in config_init_flags to init
1869push @{$EXPORT_TAGS{"init"}},  @{$EXPORT_TAGS{"config_init_flags"}};
1870
1871push @EXPORT_OK, qw(config_init config_uninit get_config_options
1872    get_config_name get_config_dir get_config_filename
1873    config_print_errors config_clear_errors config_errors
1874    new_config_overrides free_config_overrides add_config_override
1875    add_config_override_opt set_config_overrides);
1876push @{$EXPORT_TAGS{"init"}}, qw(config_init config_uninit get_config_options
1877    get_config_name get_config_dir get_config_filename
1878    config_print_errors config_clear_errors config_errors
1879    new_config_overrides free_config_overrides add_config_override
1880    add_config_override_opt set_config_overrides);
1881
1882push @EXPORT_OK, qw(dump_configuration config_dir_relative taperalgo2str find_multiplier);
1883
1884
1885sub string_to_boolean {
1886    my ($str) = @_;
1887    my $ret = C_string_to_boolean($str);
1888    return undef unless $ret >= 0;
1889    return $ret;
1890}
1891
1892
1893push @EXPORT_OK, qw(string_to_boolean);
1894
1895push @EXPORT_OK, qw(amandaify_property_name);
18961;
1897