Imported Upstream version 3.3.1
[debian/amanda] / perl / Amanda / Config.c
index 535ca20d8ef1c6790b7619dd039693a3a6ea4034..cacd064a4fe4500769135e8b4f2e54a4a3fc7d34 100644 (file)
@@ -1,6 +1,6 @@
 /* ----------------------------------------------------------------------------
  * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.39
+ * Version 2.0.4
  * 
  * This file is not intended to be easily readable and contains a number of 
  * coding conventions designed to improve portability and efficiency. Do not make
@@ -8,6 +8,9 @@
  * interface file instead. 
  * ----------------------------------------------------------------------------- */
 
+#include "../config/config.h"
+
+
 #define SWIGPERL
 #define SWIG_CASTRANK_MODE
 
 /* 
    Flags/methods for returning states.
    
-   The SWIG conversion methods, as ConvertPtr, return and integer 
+   The SWIG conversion methods, as ConvertPtr, return an integer 
    that tells if the conversion was successful or not. And if not,
    an error code can be returned (see swigerrors.swg for the codes).
    
@@ -894,6 +897,7 @@ SWIG_Perl_ErrorType(int code) {
 
 /* for raw pointers */
 #define SWIG_ConvertPtr(obj, pp, type, flags)           SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags)
+#define SWIG_ConvertPtrAndOwn(obj, pp, type, flags,own) SWIG_Perl_ConvertPtrAndOwn(SWIG_PERL_OBJECT_CALL obj, pp, type, flags, own)
 #define SWIG_NewPointerObj(p, type, flags)              SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags)
 
 /* for raw packed data */
@@ -1110,10 +1114,14 @@ SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
 /* Function for getting a pointer value */
 
 SWIGRUNTIME int
-SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
+SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags, int *own) {
   swig_cast_info *tc;
   void *voidptr = (void *)0;
   SV *tsv = 0;
+
+  if (own)
+    *own = 0;
+
   /* If magical, apply more magic */
   if (SvGMAGICAL(sv))
     mg_get(sv);
@@ -1145,8 +1153,14 @@ SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *
     return SWIG_OK;
   } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
     if (!SvROK(sv)) {
-      *(ptr) = (void *) 0;
-      return SWIG_OK;
+      /* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value.  */
+      if (SvIOK(sv)) {
+        return SWIG_ERROR;
+      } else {
+        /* NULL pointer (reference to undef). */
+        *(ptr) = (void *) 0;
+        return SWIG_OK;
+      }
     } else {
       return SWIG_ERROR;
     }
@@ -1163,7 +1177,11 @@ SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *
     {
       int newmemory = 0;
       *ptr = SWIG_TypeCast(tc,voidptr,&newmemory);
-      assert(!newmemory); /* newmemory handling not yet implemented */
+      if (newmemory == SWIG_CAST_NEW_MEMORY) {
+        assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
+        if (own)
+          *own = *own | SWIG_CAST_NEW_MEMORY;
+      }
     }
   } else {
     *ptr = voidptr;
@@ -1178,7 +1196,7 @@ SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *
      */
     SV *obj = sv;
     HV *stash = SvSTASH(SvRV(obj));
-    GV *gv = *(GV**) hv_fetch(stash, "OWNER", 5, TRUE);
+    GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
     if (isGV(gv)) {
       HV *hv = GvHVn(gv);
       /*
@@ -1193,9 +1211,14 @@ SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *
   return SWIG_OK;
 }
 
+SWIGRUNTIME int
+SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
+  return SWIG_Perl_ConvertPtrAndOwn(sv, ptr, _t, flags, 0);
+}
+
 SWIGRUNTIME void
 SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
-  if (ptr && (flags & SWIG_SHADOW)) {
+  if (ptr && (flags & (SWIG_SHADOW | SWIG_POINTER_OWN))) {
     SV *self;
     SV *obj=newSV(0);
     HV *hash=newHV();
@@ -1204,7 +1227,7 @@ SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, i
     stash=SvSTASH(SvRV(obj));
     if (flags & SWIG_POINTER_OWN) {
       HV *hv;
-      GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
+      GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
       if (!isGV(gv))
         gv_init(gv, stash, "OWNER", 5, FALSE);
       hv=GvHVn(gv);
@@ -1370,6 +1393,9 @@ SWIG_Perl_SetModule(swig_module_info *module) {
 #ifdef do_close
   #undef do_close
 #endif
+#ifdef do_exec
+  #undef do_exec
+#endif
 #ifdef scalar
   #undef scalar
 #endif
@@ -1460,6 +1486,12 @@ SWIG_Perl_SetModule(swig_module_info *module) {
 #ifdef bind
   #undef bind
 #endif
+#ifdef access
+  #undef access
+#endif
+#ifdef stat
+  #undef stat
+#endif
 
 
 
@@ -1484,14 +1516,16 @@ SWIG_Perl_SetModule(swig_module_info *module) {
 #define SWIGTYPE_p_float swig_types[7]
 #define SWIGTYPE_p_holdingdisk_t swig_types[8]
 #define SWIGTYPE_p_int swig_types[9]
-#define SWIGTYPE_p_interface_t swig_types[10]
-#define SWIGTYPE_p_p_GSList swig_types[11]
-#define SWIGTYPE_p_p_char swig_types[12]
-#define SWIGTYPE_p_pp_script_t swig_types[13]
-#define SWIGTYPE_p_tapetype_t swig_types[14]
-#define SWIGTYPE_p_unsigned_char swig_types[15]
-static swig_type_info *swig_types[17];
-static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0};
+#define SWIGTYPE_p_interactivity_t swig_types[10]
+#define SWIGTYPE_p_interface_t swig_types[11]
+#define SWIGTYPE_p_p_GSList swig_types[12]
+#define SWIGTYPE_p_p_char swig_types[13]
+#define SWIGTYPE_p_pp_script_t swig_types[14]
+#define SWIGTYPE_p_taperscan_t swig_types[15]
+#define SWIGTYPE_p_tapetype_t swig_types[16]
+#define SWIGTYPE_p_unsigned_char swig_types[17]
+static swig_type_info *swig_types[19];
+static swig_module_info swig_module = {swig_types, 18, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -1502,7 +1536,7 @@ static swig_module_info swig_module = {swig_types, 16, 0, 0, 0, 0};
 #define SWIG_name   "Amanda::Configc::boot_Amanda__Config"
 #define SWIG_prefix "Amanda::Configc::"
 
-#define SWIGVERSION 0x010339 
+#define SWIGVERSION 0x020004 
 #define SWIG_VERSION SWIGVERSION
 
 
@@ -1552,6 +1586,198 @@ SWIG_From_int  SWIG_PERL_DECL_ARGS_1(int value)
 }
 
 
+static int
+val_t_to_sv(val_t *val, SV **results) {
+    if (!val) {
+       results[0] = &PL_sv_undef;
+       return 1;
+    } else {
+       switch (val->type) {
+           case CONFTYPE_RATE: {
+               results[0] = sv_newmortal();
+               sv_setnv(results[0], val_t__rate(val)[0]);
+
+               results[1] = sv_newmortal();
+               sv_setnv(results[1], val_t__rate(val)[1]);
+               return 2;
+           }
+
+           case CONFTYPE_INTRANGE: {
+               results[0] = sv_newmortal();
+               sv_setiv(results[0], val_t__intrange(val)[0]);
+
+               results[1] = sv_newmortal();
+               sv_setiv(results[1], val_t__intrange(val)[1]);
+               return 2;
+           }
+
+           case CONFTYPE_EXINCLUDE: {
+               /* exincludes are represented in perl as {
+                *      'list' : [ 'list1', 'list2', ..],
+                *      'file' : [ 'file1', 'file2', ..],
+                *      'optional' : 1,
+                * }
+                */
+               exinclude_t *ei = &val_t__exinclude(val);
+               AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
+               AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
+               SV *optional = sv_newmortal();
+               HV *hv;
+               sle_t *iter;
+
+               /* first set up each of the hash values */
+
+               if (ei->sl_list) {
+                   for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
+                       av_push(list_entries, newSVpv(iter->name, 0));
+                   }
+               }
+
+               if(ei->sl_file) {
+                   for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
+                       av_push(file_entries, newSVpv(iter->name, 0));
+                   }
+               }
+
+               sv_setiv(optional, ei->optional);
+
+               /* now build the hash */
+               hv = (HV *)sv_2mortal((SV *)newHV());
+               
+               hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
+               hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
+               hv_store(hv, "optional", 8, optional, 0);
+               SvREFCNT_inc(optional);
+
+               results[0] = sv_2mortal(newRV((SV *)hv));
+               return 1;
+           }
+
+           case CONFTYPE_PROPLIST:
+               results[0] = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(val)));
+               return 1;
+
+           case CONFTYPE_SIZE:
+               results[0] = sv_2mortal(amglue_newSVi64(val_t__size(val)));
+               return 1;
+
+           case CONFTYPE_INT64:
+               results[0] = sv_2mortal(amglue_newSVi64(val_t__int64(val)));
+               return 1;
+
+           case CONFTYPE_BOOLEAN:          /* all same as INT.. */
+           case CONFTYPE_NO_YES_ALL:
+           case CONFTYPE_COMPRESS:
+           case CONFTYPE_ENCRYPT:
+           case CONFTYPE_STRATEGY:
+           case CONFTYPE_TAPERALGO:
+           case CONFTYPE_PRIORITY:
+           case CONFTYPE_HOLDING:
+           case CONFTYPE_EXECUTE_ON:
+           case CONFTYPE_EXECUTE_WHERE:
+           case CONFTYPE_SEND_AMREPORT_ON:
+           case CONFTYPE_DATA_PATH:
+           case CONFTYPE_PART_CACHE_TYPE:
+           case CONFTYPE_INT:
+               results[0] = sv_2mortal(amglue_newSVi64(val_t__int(val)));
+               return 1;
+
+           case CONFTYPE_ESTIMATELIST: {
+               AV *elist = newAV();
+               estimatelist_t el;
+               for (el=val_t__estimatelist(val); el != NULL; el = el->next) {
+                   av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
+               }
+               results[0] = sv_2mortal(newRV_noinc((SV *)elist));
+               return 1;
+           }
+
+           case CONFTYPE_TIME:
+               results[0] = sv_2mortal(amglue_newSVi64(val_t__time(val)));
+               return 1;
+
+           case CONFTYPE_REAL:
+               results[0] = sv_newmortal();
+               sv_setnv(results[0], val_t__real(val));
+               return 1;
+
+           case CONFTYPE_IDENT:            /* same as STRING */
+           case CONFTYPE_STR:
+           case CONFTYPE_APPLICATION:
+               results[0] = sv_newmortal();
+               sv_setpv(results[0], val_t__str(val));
+               return 1;
+
+           case CONFTYPE_IDENTLIST: {
+               AV *ilist = newAV();
+
+               identlist_t il;
+               for (il=val_t__identlist(val); il != NULL; il = il->next) {
+                   av_push(ilist, newSVpv((char *)il->data, 0));
+               }
+
+               results[0] = sv_2mortal(newRV_noinc((SV *)ilist));
+               return 1;
+           }
+
+           case CONFTYPE_HOST_LIMIT: {
+               AV *av;
+               GSList *iter;
+               host_limit_t *rl = &val_t__host_limit(val);
+
+               av = newAV();
+               if (rl->same_host)
+                   av_push(av, newSVpv("SAMEHOST-SAMEHOST-SAMEHOST", 0));
+               if (rl->server)
+                   av_push(av, newSVpv("SERVER-SERVER-SERVER", 0));
+               for (iter=rl->match_pats; iter != NULL; iter = iter->next) {
+                   av_push(av, newSVpv((char *)iter->data, 0));
+               }
+
+               results[0] = sv_2mortal(newRV_noinc((SV *)av));
+               return 1;
+           }
+
+           case CONFTYPE_AUTOLABEL: {
+               autolabel_t *autolabel = &val_t__autolabel(val);
+               HV *hv;
+
+               /* now build the hash */
+               hv = (HV *)sv_2mortal((SV *)newHV());
+               hv_store(hv, "template", 8,
+                       (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
+                       0);
+               hv_store(hv, "other_config", 12,
+                       (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
+                       0);
+               hv_store(hv, "non_amanda", 10,
+                       (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
+                       0);
+               hv_store(hv, "volume_error", 12,
+                       (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
+                       0);
+               hv_store(hv, "empty", 5,
+                       (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
+                       0);
+
+               results[0] = sv_2mortal(newRV((SV *)hv));
+               return 1;
+           }
+
+           /* No match yet -> not one of the "complex" types */
+           default:
+               SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
+               break;
+       }
+    }
+
+    return 0;
+
+fail:
+    SWIG_croak_null();
+}
+
+
 SWIGINTERN swig_type_info*
 SWIG_pchar_descriptor(void)
 {
@@ -1631,7 +1857,9 @@ SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val)
     const char *nptr = SvPV_nolen(obj);
     if (nptr) {
       char *endptr;
-      double v = strtod(nptr, &endptr);
+      double v;
+      errno = 0;
+      v = strtod(nptr, &endptr);
       if (errno == ERANGE) {
        errno = 0;
        return SWIG_OverflowError;
@@ -2227,186 +2455,18 @@ XS(_wrap_getconf) {
     }
     result = (val_t *)getconf(arg1);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -2519,186 +2579,18 @@ XS(_wrap_getconf_byname) {
     arg1 = (char *)(buf1);
     result = (val_t *)getconf_byname(arg1);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
@@ -2865,186 +2757,18 @@ XS(_wrap_tapetype_getconf) {
     }
     result = (val_t *)tapetype_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -3198,186 +2922,18 @@ XS(_wrap_dumptype_getconf) {
     }
     result = (val_t *)dumptype_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -3531,186 +3087,18 @@ XS(_wrap_interface_getconf) {
     }
     result = (val_t *)interface_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -3892,186 +3280,18 @@ XS(_wrap_holdingdisk_getconf) {
     }
     result = (val_t *)holdingdisk_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -4225,186 +3445,18 @@ XS(_wrap_application_getconf) {
     }
     result = (val_t *)application_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -4558,186 +3610,18 @@ XS(_wrap_pp_script_getconf) {
     }
     result = (val_t *)pp_script_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -4891,186 +3775,18 @@ XS(_wrap_device_config_getconf) {
     }
     result = (val_t *)device_config_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -5224,186 +3940,18 @@ XS(_wrap_changer_config_getconf) {
     }
     result = (val_t *)changer_config_getconf(arg1,arg2);
     {
-      if (!result) {
-        ST(argvi) = &PL_sv_undef;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
         argvi++;
-      } else {
-        switch (result->type) {
-          case CONFTYPE_RATE: {
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setnv(ST(argvi), val_t__rate(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_INTRANGE: {
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[0]);
-            argvi++;
-            
-            ST(argvi)= sv_newmortal();
-            sv_setiv(ST(argvi), val_t__intrange(result)[1]);
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_EXINCLUDE: {
-            /* exincludes are represented in perl as {
-                        *      'list' : [ 'list1', 'list2', ..],
-                        *      'file' : [ 'file1', 'file2', ..],
-                        *      'optional' : 1,
-                        * }
-                        */
-            exinclude_t *ei = &val_t__exinclude(result);
-            AV *list_entries = (AV *)sv_2mortal((SV *)newAV());
-            AV *file_entries = (AV *)sv_2mortal((SV *)newAV());
-            SV *optional = sv_newmortal();
-            HV *hv;
-            sle_t *iter;
-            
-            /* first set up each of the hash values */
-            
-            if (ei->sl_list) {
-              for (iter = ei->sl_list->first; iter != NULL; iter = iter->next) {
-                av_push(list_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            if(ei->sl_file) {
-              for (iter = ei->sl_file->first; iter != NULL; iter = iter->next) {
-                av_push(file_entries, newSVpv(iter->name, 0));
-              }
-            }
-            
-            sv_setiv(optional, ei->optional);
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            
-            hv_store(hv, "file", 4, newRV((SV *)file_entries), 0);
-            hv_store(hv, "list", 4, newRV((SV *)list_entries), 0);
-            hv_store(hv, "optional", 8, optional, 0);
-            SvREFCNT_inc(optional);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_PROPLIST:
-          ST(argvi) = sv_2mortal(g_hash_table_to_hashref_property(val_t__proplist(result)));
-          argvi++;
-          break;
-          
-        case CONFTYPE_SIZE:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__size(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_INT64:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int64(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_BOOLEAN:           /* all same as INT.. */
-        case CONFTYPE_COMPRESS:
-        case CONFTYPE_ENCRYPT:
-        case CONFTYPE_STRATEGY:
-        case CONFTYPE_TAPERALGO:
-        case CONFTYPE_PRIORITY:
-        case CONFTYPE_HOLDING:
-        case CONFTYPE_EXECUTE_ON:
-        case CONFTYPE_EXECUTE_WHERE:
-        case CONFTYPE_SEND_AMREPORT_ON:
-        case CONFTYPE_DATA_PATH:
-        case CONFTYPE_INT:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__int(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-          case CONFTYPE_ESTIMATELIST: {
-            AV *elist = newAV();
-            estimatelist_t el;
-            for (el=val_t__estimatelist(result); el != NULL; el = el->next) {
-              av_push(elist, newSVuv(GPOINTER_TO_INT(el->data)));
-            }
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)elist));
-            argvi++;
-            break;
-          }
-          
-        case CONFTYPE_TIME:
-          SP += argvi; PUTBACK;
-          ST(argvi) = sv_2mortal(amglue_newSVi64(val_t__time(result)));
-          SPAGAIN; SP -= argvi; argvi++;
-          break;
-          
-        case CONFTYPE_REAL:
-          ST(argvi) = sv_newmortal();
-          sv_setnv(ST(argvi), val_t__real(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENT:     /* same as STRING */
-        case CONFTYPE_STR:
-        case CONFTYPE_APPLICATION:
-          ST(argvi) = sv_newmortal();
-          sv_setpv(ST(argvi), val_t__str(result));
-          argvi++;
-          break;
-          
-          case CONFTYPE_IDENTLIST: {
-            AV *ilist = newAV();
-            
-            identlist_t il;
-            for (il=val_t__identlist(result); il != NULL; il = il->next) {
-              av_push(ilist, newSVpv((char *)il->data, 0));
-            }
-            
-            ST(argvi) = sv_2mortal(newRV_noinc((SV *)ilist));
-            argvi++;
-            break;
-          }
-          
-          case CONFTYPE_AUTOLABEL: {
-            autolabel_t *autolabel = &val_t__autolabel(result);
-            HV *hv;
-            
-            /* now build the hash */
-            hv = (HV *)sv_2mortal((SV *)newHV());
-            hv_store(hv, "template", 8,
-              (autolabel->template)? newSVpv(autolabel->template, 0) : newSV(0),
-              0);
-            hv_store(hv, "other_config", 12,
-              (autolabel->autolabel & AL_OTHER_CONFIG)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "non_amanda", 10,
-              (autolabel->autolabel & AL_NON_AMANDA)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "volume_error", 12,
-              (autolabel->autolabel & AL_VOLUME_ERROR)? &PL_sv_yes : &PL_sv_no,
-              0);
-            hv_store(hv, "empty", 5,
-              (autolabel->autolabel & AL_EMPTY)? &PL_sv_yes : &PL_sv_no,
-              0);
-            
-            ST(argvi) = sv_2mortal(newRV((SV *)hv));
-            argvi++;
-            break;
-          }
-          
-          /* No match yet -> not one of the "complex" types */
-        default:
-          SWIG_exception(SWIG_TypeError, "Unknown val_t conftype");
-          break;
-        }
       }
     }
     
@@ -5495,113 +4043,443 @@ XS(_wrap_changer_config_seen) {
 }
 
 
-XS(_wrap_getconf_unit_divisor) {
+XS(_wrap_lookup_interactivity) {
   {
+    char *arg1 = (char *) 0 ;
+    int res1 ;
+    char *buf1 = 0 ;
+    int alloc1 = 0 ;
     int argvi = 0;
-    long result;
+    interactivity_t *result = 0 ;
     dXSARGS;
     
-    if ((items < 0) || (items > 0)) {
-      SWIG_croak("Usage: getconf_unit_divisor();");
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: lookup_interactivity(identifier);");
     }
-    result = (long)getconf_unit_divisor();
-    {
-      SV *for_stack;
-      SP += argvi; PUTBACK;
-      for_stack = sv_2mortal(amglue_newSVi64(result));
-      SPAGAIN; SP -= argvi;
-      ST(argvi) = for_stack;
-      argvi++;
+    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lookup_interactivity" "', argument " "1"" of type '" "char *""'");
     }
+    arg1 = (char *)(buf1);
+    result = (interactivity_t *)lookup_interactivity(arg1);
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_interactivity_t, 0 | 0); argvi++ ;
+    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
     XSRETURN(argvi);
   fail:
+    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
     SWIG_croak_null();
   }
 }
 
 
-XS(_wrap_config_init) {
+XS(_wrap_interactivity_getconf) {
   {
-    config_init_flags arg1 ;
-    char *arg2 = (char *) 0 ;
-    int res2 ;
-    char *buf2 = 0 ;
-    int alloc2 = 0 ;
+    interactivity_t *arg1 = (interactivity_t *) 0 ;
+    interactivity_key arg2 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
     int argvi = 0;
-    cfgerr_level_t result;
+    val_t *result = 0 ;
     dXSARGS;
     
     if ((items < 2) || (items > 2)) {
-      SWIG_croak("Usage: config_init(flags,arg_config_name);");
+      SWIG_croak("Usage: interactivity_getconf(app,key);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_interactivity_t, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "interactivity_getconf" "', argument " "1"" of type '" "interactivity_t *""'"); 
     }
+    arg1 = (interactivity_t *)(argp1);
     {
       if (sizeof(signed int) == 1) {
-        arg1 = amglue_SvI8(ST(0));
+        arg2 = amglue_SvI8(ST(1));
       } else if (sizeof(signed int) == 2) {
-        arg1 = amglue_SvI16(ST(0));
+        arg2 = amglue_SvI16(ST(1));
       } else if (sizeof(signed int) == 4) {
-        arg1 = amglue_SvI32(ST(0));
+        arg2 = amglue_SvI32(ST(1));
       } else if (sizeof(signed int) == 8) {
-        arg1 = amglue_SvI64(ST(0));
+        arg2 = amglue_SvI64(ST(1));
       } else {
         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
       }
     }
-    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
-    if (!SWIG_IsOK(res2)) {
-      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "config_init" "', argument " "2"" of type '" "char *""'");
-    }
-    arg2 = (char *)(buf2);
-    result = (cfgerr_level_t)config_init(arg1,arg2);
+    result = (val_t *)interactivity_getconf(arg1,arg2);
     {
-      SV *for_stack;
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
       SP += argvi; PUTBACK;
-      for_stack = sv_2mortal(amglue_newSVi64(result));
+      nresults = val_t_to_sv(result, results);
       SPAGAIN; SP -= argvi;
-      ST(argvi) = for_stack;
-      argvi++;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
+        argvi++;
+      }
     }
     
-    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+    
     XSRETURN(argvi);
   fail:
     
-    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+    
     SWIG_croak_null();
   }
 }
 
 
-XS(_wrap_config_uninit) {
+XS(_wrap_interactivity_name) {
   {
+    interactivity_t *arg1 = (interactivity_t *) 0 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
     int argvi = 0;
+    char *result = 0 ;
     dXSARGS;
     
-    if ((items < 0) || (items > 0)) {
-      SWIG_croak("Usage: config_uninit();");
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: interactivity_name(app);");
     }
-    config_uninit();
-    ST(argvi) = sv_newmortal();
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_interactivity_t, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "interactivity_name" "', argument " "1"" of type '" "interactivity_t *""'"); 
+    }
+    arg1 = (interactivity_t *)(argp1);
+    result = (char *)interactivity_name(arg1);
+    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
+    
     XSRETURN(argvi);
   fail:
+    
     SWIG_croak_null();
   }
 }
 
 
-XS(_wrap_get_config_options) {
+XS(_wrap_interactivity_seen) {
   {
-    int arg1 ;
+    interactivity_t *arg1 = (interactivity_t *) 0 ;
+    interactivity_key arg2 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
     int argvi = 0;
-    char **result = 0 ;
+    gboolean result;
     dXSARGS;
     
-    if ((items < 1) || (items > 1)) {
-      SWIG_croak("Usage: get_config_options(first);");
+    if ((items < 2) || (items > 2)) {
+      SWIG_croak("Usage: interactivity_seen(app,key);");
     }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_interactivity_t, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "interactivity_seen" "', argument " "1"" of type '" "interactivity_t *""'"); 
+    }
+    arg1 = (interactivity_t *)(argp1);
     {
       if (sizeof(signed int) == 1) {
-        arg1 = amglue_SvI8(ST(0));
+        arg2 = amglue_SvI8(ST(1));
+      } else if (sizeof(signed int) == 2) {
+        arg2 = amglue_SvI16(ST(1));
+      } else if (sizeof(signed int) == 4) {
+        arg2 = amglue_SvI32(ST(1));
+      } else if (sizeof(signed int) == 8) {
+        arg2 = amglue_SvI64(ST(1));
+      } else {
+        g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
+      }
+    }
+    result = (gboolean)interactivity_seen(arg1,arg2);
+    {
+      if (result)
+      ST(argvi) = &PL_sv_yes;
+      else
+      ST(argvi) = &PL_sv_no;
+      argvi++;
+    }
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_lookup_taperscan) {
+  {
+    char *arg1 = (char *) 0 ;
+    int res1 ;
+    char *buf1 = 0 ;
+    int alloc1 = 0 ;
+    int argvi = 0;
+    taperscan_t *result = 0 ;
+    dXSARGS;
+    
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: lookup_taperscan(identifier);");
+    }
+    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "lookup_taperscan" "', argument " "1"" of type '" "char *""'");
+    }
+    arg1 = (char *)(buf1);
+    result = (taperscan_t *)lookup_taperscan(arg1);
+    ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_taperscan_t, 0 | 0); argvi++ ;
+    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+    XSRETURN(argvi);
+  fail:
+    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_taperscan_getconf) {
+  {
+    taperscan_t *arg1 = (taperscan_t *) 0 ;
+    taperscan_key arg2 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
+    int argvi = 0;
+    val_t *result = 0 ;
+    dXSARGS;
+    
+    if ((items < 2) || (items > 2)) {
+      SWIG_croak("Usage: taperscan_getconf(app,key);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_taperscan_t, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "taperscan_getconf" "', argument " "1"" of type '" "taperscan_t *""'"); 
+    }
+    arg1 = (taperscan_t *)(argp1);
+    {
+      if (sizeof(signed int) == 1) {
+        arg2 = amglue_SvI8(ST(1));
+      } else if (sizeof(signed int) == 2) {
+        arg2 = amglue_SvI16(ST(1));
+      } else if (sizeof(signed int) == 4) {
+        arg2 = amglue_SvI32(ST(1));
+      } else if (sizeof(signed int) == 8) {
+        arg2 = amglue_SvI64(ST(1));
+      } else {
+        g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
+      }
+    }
+    result = (val_t *)taperscan_getconf(arg1,arg2);
+    {
+      SV *results[3], **iter;
+      int nresults;
+      
+      /* save the stack, since val_t_to_sv may invoke arbitrary Perl code */
+      SP += argvi; PUTBACK;
+      nresults = val_t_to_sv(result, results);
+      SPAGAIN; SP -= argvi;
+      
+      /* add val_t_to_sv's results to the stack */
+      for (iter = results; nresults; iter++, nresults--) {
+        ST(argvi) = *iter;
+        argvi++;
+      }
+    }
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_taperscan_name) {
+  {
+    taperscan_t *arg1 = (taperscan_t *) 0 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
+    int argvi = 0;
+    char *result = 0 ;
+    dXSARGS;
+    
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: taperscan_name(app);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_taperscan_t, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "taperscan_name" "', argument " "1"" of type '" "taperscan_t *""'"); 
+    }
+    arg1 = (taperscan_t *)(argp1);
+    result = (char *)taperscan_name(arg1);
+    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
+    
+    XSRETURN(argvi);
+  fail:
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_taperscan_seen) {
+  {
+    taperscan_t *arg1 = (taperscan_t *) 0 ;
+    taperscan_key arg2 ;
+    void *argp1 = 0 ;
+    int res1 = 0 ;
+    int argvi = 0;
+    gboolean result;
+    dXSARGS;
+    
+    if ((items < 2) || (items > 2)) {
+      SWIG_croak("Usage: taperscan_seen(app,key);");
+    }
+    res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_taperscan_t, 0 |  0 );
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "taperscan_seen" "', argument " "1"" of type '" "taperscan_t *""'"); 
+    }
+    arg1 = (taperscan_t *)(argp1);
+    {
+      if (sizeof(signed int) == 1) {
+        arg2 = amglue_SvI8(ST(1));
+      } else if (sizeof(signed int) == 2) {
+        arg2 = amglue_SvI16(ST(1));
+      } else if (sizeof(signed int) == 4) {
+        arg2 = amglue_SvI32(ST(1));
+      } else if (sizeof(signed int) == 8) {
+        arg2 = amglue_SvI64(ST(1));
+      } else {
+        g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
+      }
+    }
+    result = (gboolean)taperscan_seen(arg1,arg2);
+    {
+      if (result)
+      ST(argvi) = &PL_sv_yes;
+      else
+      ST(argvi) = &PL_sv_no;
+      argvi++;
+    }
+    
+    
+    XSRETURN(argvi);
+  fail:
+    
+    
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_getconf_unit_divisor) {
+  {
+    int argvi = 0;
+    long result;
+    dXSARGS;
+    
+    if ((items < 0) || (items > 0)) {
+      SWIG_croak("Usage: getconf_unit_divisor();");
+    }
+    result = (long)getconf_unit_divisor();
+    {
+      SV *for_stack;
+      SP += argvi; PUTBACK;
+      for_stack = sv_2mortal(amglue_newSVi64(result));
+      SPAGAIN; SP -= argvi;
+      ST(argvi) = for_stack;
+      argvi++;
+    }
+    XSRETURN(argvi);
+  fail:
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_config_init) {
+  {
+    config_init_flags arg1 ;
+    char *arg2 = (char *) 0 ;
+    int res2 ;
+    char *buf2 = 0 ;
+    int alloc2 = 0 ;
+    int argvi = 0;
+    cfgerr_level_t result;
+    dXSARGS;
+    
+    if ((items < 2) || (items > 2)) {
+      SWIG_croak("Usage: config_init(flags,arg_config_name);");
+    }
+    {
+      if (sizeof(signed int) == 1) {
+        arg1 = amglue_SvI8(ST(0));
+      } else if (sizeof(signed int) == 2) {
+        arg1 = amglue_SvI16(ST(0));
+      } else if (sizeof(signed int) == 4) {
+        arg1 = amglue_SvI32(ST(0));
+      } else if (sizeof(signed int) == 8) {
+        arg1 = amglue_SvI64(ST(0));
+      } else {
+        g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
+      }
+    }
+    res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
+    if (!SWIG_IsOK(res2)) {
+      SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "config_init" "', argument " "2"" of type '" "char *""'");
+    }
+    arg2 = (char *)(buf2);
+    result = (cfgerr_level_t)config_init(arg1,arg2);
+    {
+      SV *for_stack;
+      SP += argvi; PUTBACK;
+      for_stack = sv_2mortal(amglue_newSVi64(result));
+      SPAGAIN; SP -= argvi;
+      ST(argvi) = for_stack;
+      argvi++;
+    }
+    
+    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+    XSRETURN(argvi);
+  fail:
+    
+    if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_config_uninit) {
+  {
+    int argvi = 0;
+    dXSARGS;
+    
+    if ((items < 0) || (items > 0)) {
+      SWIG_croak("Usage: config_uninit();");
+    }
+    config_uninit();
+    ST(argvi) = sv_newmortal();
+    XSRETURN(argvi);
+  fail:
+    SWIG_croak_null();
+  }
+}
+
+
+XS(_wrap_get_config_options) {
+  {
+    int arg1 ;
+    int argvi = 0;
+    char **result = 0 ;
+    dXSARGS;
+    
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: get_config_options(first);");
+    }
+    {
+      if (sizeof(signed int) == 1) {
+        arg1 = amglue_SvI8(ST(0));
       } else if (sizeof(signed int) == 2) {
         arg1 = amglue_SvI16(ST(0));
       } else if (sizeof(signed int) == 4) {
@@ -6081,6 +4959,35 @@ XS(_wrap_C_string_to_boolean) {
 }
 
 
+XS(_wrap_amandaify_property_name) {
+  {
+    gchar *arg1 = (gchar *) 0 ;
+    int res1 ;
+    char *buf1 = 0 ;
+    int alloc1 = 0 ;
+    int argvi = 0;
+    gchar *result = 0 ;
+    dXSARGS;
+    
+    if ((items < 1) || (items > 1)) {
+      SWIG_croak("Usage: amandaify_property_name(name);");
+    }
+    res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
+    if (!SWIG_IsOK(res1)) {
+      SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "amandaify_property_name" "', argument " "1"" of type '" "gchar const *""'");
+    }
+    arg1 = (gchar *)(buf1);
+    result = (gchar *)amandaify_property_name((char const *)arg1);
+    ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
+    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+    XSRETURN(argvi);
+  fail:
+    if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
+    SWIG_croak_null();
+  }
+}
+
+
 
 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
 
@@ -6093,11 +5000,13 @@ static swig_type_info _swigt__p_double = {"_p_double", "double *|gdouble *", 0,
 static swig_type_info _swigt__p_dumptype_t = {"_p_dumptype_t", "dumptype_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_float = {"_p_float", "float *|gfloat *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_holdingdisk_t = {"_p_holdingdisk_t", "holdingdisk_t *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_int = {"_p_int", "application_key *|strategy_t *|pp_script_key *|int *|autolabel_enum_t *|comp_t *|dump_holdingdisk_t *|device_config_key *|changer_config_key *|confparm_key *|interface_key *|holdingdisk_key *|dumptype_key *|tapetype_key *|cfgerr_level_t *|encrypt_t *|taperalgo_t *|gboolean *|data_path_t *|execute_on_t *|send_amreport_on_t *|estimate_t *|config_init_flags *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_int = {"_p_int", "taperscan_key *|application_key *|strategy_t *|pp_script_key *|int *|autolabel_enum_t *|comp_t *|dump_holdingdisk_t *|changer_config_key *|confparm_key *|interface_key *|device_config_key *|holdingdisk_key *|dumptype_key *|tapetype_key *|interactivity_key *|part_cache_type_t *|cfgerr_level_t *|encrypt_t *|taperalgo_t *|gboolean *|data_path_t *|execute_on_t *|send_amreport_on_t *|estimate_t *|config_init_flags *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_interactivity_t = {"_p_interactivity_t", "interactivity_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_interface_t = {"_p_interface_t", "interface_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_p_GSList = {"_p_p_GSList", "GSList **", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_pp_script_t = {"_p_pp_script_t", "pp_script_t *", 0, 0, (void*)0, 0};
+static swig_type_info _swigt__p_taperscan_t = {"_p_taperscan_t", "taperscan_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_tapetype_t = {"_p_tapetype_t", "tapetype_t *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "guchar *|unsigned char *", 0, 0, (void*)0, 0};
 
@@ -6112,10 +5021,12 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_float,
   &_swigt__p_holdingdisk_t,
   &_swigt__p_int,
+  &_swigt__p_interactivity_t,
   &_swigt__p_interface_t,
   &_swigt__p_p_GSList,
   &_swigt__p_p_char,
   &_swigt__p_pp_script_t,
+  &_swigt__p_taperscan_t,
   &_swigt__p_tapetype_t,
   &_swigt__p_unsigned_char,
 };
@@ -6130,10 +5041,12 @@ static swig_cast_info _swigc__p_dumptype_t[] = {  {&_swigt__p_dumptype_t, 0, 0,
 static swig_cast_info _swigc__p_float[] = {  {&_swigt__p_float, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_holdingdisk_t[] = {  {&_swigt__p_holdingdisk_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_interactivity_t[] = {  {&_swigt__p_interactivity_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_interface_t[] = {  {&_swigt__p_interface_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_p_GSList[] = {  {&_swigt__p_p_GSList, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_p_char[] = {  {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_pp_script_t[] = {  {&_swigt__p_pp_script_t, 0, 0, 0},{0, 0, 0, 0}};
+static swig_cast_info _swigc__p_taperscan_t[] = {  {&_swigt__p_taperscan_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_tapetype_t[] = {  {&_swigt__p_tapetype_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
 
@@ -6148,10 +5061,12 @@ static swig_cast_info *swig_cast_initial[] = {
   _swigc__p_float,
   _swigc__p_holdingdisk_t,
   _swigc__p_int,
+  _swigc__p_interactivity_t,
   _swigc__p_interface_t,
   _swigc__p_p_GSList,
   _swigc__p_p_char,
   _swigc__p_pp_script_t,
+  _swigc__p_taperscan_t,
   _swigc__p_tapetype_t,
   _swigc__p_unsigned_char,
 };
@@ -6226,6 +5141,14 @@ static swig_command_info swig_commands[] = {
 {"Amanda::Configc::changer_config_getconf", _wrap_changer_config_getconf},
 {"Amanda::Configc::changer_config_name", _wrap_changer_config_name},
 {"Amanda::Configc::changer_config_seen", _wrap_changer_config_seen},
+{"Amanda::Configc::lookup_interactivity", _wrap_lookup_interactivity},
+{"Amanda::Configc::interactivity_getconf", _wrap_interactivity_getconf},
+{"Amanda::Configc::interactivity_name", _wrap_interactivity_name},
+{"Amanda::Configc::interactivity_seen", _wrap_interactivity_seen},
+{"Amanda::Configc::lookup_taperscan", _wrap_lookup_taperscan},
+{"Amanda::Configc::taperscan_getconf", _wrap_taperscan_getconf},
+{"Amanda::Configc::taperscan_name", _wrap_taperscan_name},
+{"Amanda::Configc::taperscan_seen", _wrap_taperscan_seen},
 {"Amanda::Configc::getconf_unit_divisor", _wrap_getconf_unit_divisor},
 {"Amanda::Configc::config_init", _wrap_config_init},
 {"Amanda::Configc::config_uninit", _wrap_config_uninit},
@@ -6246,6 +5169,7 @@ static swig_command_info swig_commands[] = {
 {"Amanda::Configc::taperalgo2str", _wrap_taperalgo2str},
 {"Amanda::Configc::find_multiplier", _wrap_find_multiplier},
 {"Amanda::Configc::C_string_to_boolean", _wrap_C_string_to_boolean},
+{"Amanda::Configc::amandaify_property_name", _wrap_amandaify_property_name},
 {0,0}
 };
 /* -----------------------------------------------------------------------------
@@ -6540,1112 +5464,1267 @@ XS(SWIG_init) {
     SvREADONLY_on(sv);
   }
   
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_ORG", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_ORG)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CONF", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CONF)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_AMDUMP_SERVER", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AMDUMP_SERVER)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_INDEX_SERVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_INDEX_SERVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPE_SERVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPE_SERVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AUTH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AUTH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_SSH_KEYS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_SSH_KEYS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AMANDAD_PATH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AMANDAD_PATH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CLIENT_USERNAME", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CLIENT_USERNAME)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CLIENT_PORT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CLIENT_PORT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_GNUTAR_LIST_DIR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_GNUTAR_LIST_DIR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AMANDATES", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AMANDATES)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_MAILER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_MAILER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_MAILTO", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_MAILTO)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DUMPUSER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DUMPUSER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPEDEV", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPEDEV)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEVICE_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEVICE_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CHANGERDEV", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CHANGERDEV)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CHANGERFILE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CHANGERFILE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_LABELSTR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_LABELSTR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AUTOLABEL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AUTOLABEL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_META_AUTOLABEL", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_META_AUTOLABEL)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPELIST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPELIST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DISKFILE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DISKFILE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_INFOFILE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_INFOFILE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_LOGDIR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_LOGDIR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_INDEXDIR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_INDEXDIR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPETYPE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPETYPE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DUMPCYCLE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DUMPCYCLE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_RUNSPERCYCLE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_RUNSPERCYCLE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPECYCLE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPECYCLE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_NETUSAGE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_NETUSAGE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_INPARALLEL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_INPARALLEL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DUMPORDER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DUMPORDER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_BUMPPERCENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_BUMPPERCENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_BUMPSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_BUMPSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_BUMPMULT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_BUMPMULT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_BUMPDAYS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_BUMPDAYS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TPCHANGER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TPCHANGER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_RUNTAPES", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_RUNTAPES)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_MAX_DLE_BY_VOLUME", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_MAX_DLE_BY_VOLUME)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_MAXDUMPS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_MAXDUMPS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_ETIMEOUT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_ETIMEOUT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DTIMEOUT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DTIMEOUT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CTIMEOUT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CTIMEOUT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
-    SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPEBUFS", TRUE | 0x2 | GV_ADDMULTI);
-    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPEBUFS)));
-    SvREADONLY_on(sv);
-  } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEVICE_OUTPUT_BUFFER_SIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEVICE_OUTPUT_BUFFER_SIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_PRINTER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_PRINTER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AUTOFLUSH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AUTOFLUSH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_RESERVE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_RESERVE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_MAXDUMPSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_MAXDUMPSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_COLUMNSPEC", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_COLUMNSPEC)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AMRECOVER_DO_FSF", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AMRECOVER_DO_FSF)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AMRECOVER_CHECK_LABEL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AMRECOVER_CHECK_LABEL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_AMRECOVER_CHANGER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_AMRECOVER_CHANGER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPERALGO", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPERALGO)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_FLUSH_THRESHOLD_DUMPED", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_FLUSH_THRESHOLD_DUMPED)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_FLUSH_THRESHOLD_SCHEDULED", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_FLUSH_THRESHOLD_SCHEDULED)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPERFLUSH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPERFLUSH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DISPLAYUNIT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DISPLAYUNIT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_KRB5KEYTAB", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_KRB5KEYTAB)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_KRB5PRINCIPAL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_KRB5PRINCIPAL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_LABEL_NEW_TAPES", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_LABEL_NEW_TAPES)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_USETIMESTAMPS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_USETIMESTAMPS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_REP_TRIES", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_REP_TRIES)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_CONNECT_TRIES", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_CONNECT_TRIES)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_REQ_TRIES", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_REQ_TRIES)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_AMANDAD", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_AMANDAD)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_RECOVERY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_RECOVERY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_AMIDXTAPED", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_AMIDXTAPED)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_AMINDEXD", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_AMINDEXD)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_AMRECOVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_AMRECOVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_AUTH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_AUTH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_EVENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_EVENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_HOLDING", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_HOLDING)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_PROTOCOL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_PROTOCOL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_PLANNER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_PLANNER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_DRIVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_DRIVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_DUMPER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_DUMPER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_CHUNKER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_CHUNKER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_TAPER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_TAPER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_SELFCHECK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_SELFCHECK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_SENDSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_SENDSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_DEBUG_SENDBACKUP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_DEBUG_SENDBACKUP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_RESERVED_UDP_PORT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_RESERVED_UDP_PORT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_RESERVED_TCP_PORT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_RESERVED_TCP_PORT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_UNRESERVED_TCP_PORT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_UNRESERVED_TCP_PORT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_HOLDINGDISK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_HOLDINGDISK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CNF_SEND_AMREPORT_ON", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_SEND_AMREPORT_ON)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPER_PARALLEL_WRITE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPER_PARALLEL_WRITE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_RECOVERY_LIMIT", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_RECOVERY_LIMIT)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_INTERACTIVITY", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_INTERACTIVITY)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_TAPERSCAN", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_TAPERSCAN)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "CNF_EJECT_VOLUME", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CNF_EJECT_VOLUME)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_LBL_TEMPL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_LBL_TEMPL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_BLOCKSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_BLOCKSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_READBLOCKSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_READBLOCKSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_LENGTH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_LENGTH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_FILEMARK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_FILEMARK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_SPEED", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_SPEED)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
-    SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_FILE_PAD", TRUE | 0x2 | GV_ADDMULTI);
-    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_FILE_PAD)));
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_PART_SIZE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_PART_SIZE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_PART_CACHE_TYPE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_PART_CACHE_TYPE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_PART_CACHE_DIR", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_PART_CACHE_DIR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPETYPE_PART_CACHE_MAX_SIZE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPETYPE_PART_CACHE_MAX_SIZE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_PROGRAM", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_PROGRAM)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SRVCOMPPROG", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SRVCOMPPROG)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_CLNTCOMPPROG", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_CLNTCOMPPROG)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SRV_ENCRYPT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SRV_ENCRYPT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_CLNT_ENCRYPT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_CLNT_ENCRYPT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_AMANDAD_PATH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_AMANDAD_PATH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_CLIENT_USERNAME", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_CLIENT_USERNAME)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_CLIENT_PORT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_CLIENT_PORT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SSH_KEYS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SSH_KEYS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_AUTH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_AUTH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_EXCLUDE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_EXCLUDE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_INCLUDE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_INCLUDE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_PRIORITY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_PRIORITY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_DUMPCYCLE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_DUMPCYCLE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_MAXDUMPS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_MAXDUMPS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_MAXPROMOTEDAY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_MAXPROMOTEDAY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_BUMPPERCENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_BUMPPERCENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_BUMPSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_BUMPSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_BUMPDAYS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_BUMPDAYS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_BUMPMULT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_BUMPMULT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_STARTTIME", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_STARTTIME)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_STRATEGY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_STRATEGY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_ESTIMATELIST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_ESTIMATELIST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_COMPRESS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_COMPRESS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_ENCRYPT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_ENCRYPT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SRV_DECRYPT_OPT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SRV_DECRYPT_OPT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_CLNT_DECRYPT_OPT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_CLNT_DECRYPT_OPT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_COMPRATE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_COMPRATE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_TAPE_SPLITSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_TAPE_SPLITSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_FALLBACK_SPLITSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_FALLBACK_SPLITSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SPLIT_DISKBUFFER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SPLIT_DISKBUFFER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_RECORD", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_RECORD)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SKIP_INCR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SKIP_INCR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SKIP_FULL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SKIP_FULL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_HOLDINGDISK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_HOLDINGDISK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_KENCRYPT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_KENCRYPT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_IGNORE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_IGNORE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_INDEX", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_INDEX)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_APPLICATION", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_APPLICATION)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_SCRIPTLIST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_SCRIPTLIST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_DATA_PATH", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_DATA_PATH)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_ALLOW_SPLIT", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_ALLOW_SPLIT)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_RECOVERY_LIMIT", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_RECOVERY_LIMIT)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "DUMPTYPE_DUMP_LIMIT", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DUMPTYPE_DUMP_LIMIT)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "INTER_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(INTER_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "INTER_MAXUSAGE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(INTER_MAXUSAGE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLDING_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLDING_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLDING_DISKDIR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLDING_DISKDIR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLDING_DISKSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLDING_DISKSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLDING_CHUNKSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLDING_CHUNKSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "APPLICATION_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(APPLICATION_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "APPLICATION_PLUGIN", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(APPLICATION_PLUGIN)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "APPLICATION_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(APPLICATION_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "APPLICATION_CLIENT_NAME", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(APPLICATION_CLIENT_NAME)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_PLUGIN", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_PLUGIN)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_EXECUTE_ON", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_EXECUTE_ON)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_EXECUTE_WHERE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_EXECUTE_WHERE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_ORDER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_ORDER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_SINGLE_EXECUTION", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_SINGLE_EXECUTION)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "PP_SCRIPT_CLIENT_NAME", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PP_SCRIPT_CLIENT_NAME)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_CONFIG_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_CONFIG_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_CONFIG_TAPEDEV", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_CONFIG_TAPEDEV)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DEVICE_CONFIG_DEVICE_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DEVICE_CONFIG_DEVICE_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_COMMENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_TAPEDEV", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_TAPEDEV)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_TPCHANGER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_TPCHANGER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_CHANGERDEV", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_CHANGERDEV)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_CHANGERFILE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_CHANGERFILE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CHANGER_CONFIG_DEVICE_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CHANGER_CONFIG_DEVICE_PROPERTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "INTERACTIVITY_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(INTERACTIVITY_COMMENT)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "INTERACTIVITY_PLUGIN", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(INTERACTIVITY_PLUGIN)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "INTERACTIVITY_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(INTERACTIVITY_PROPERTY)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPERSCAN_COMMENT", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPERSCAN_COMMENT)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPERSCAN_PLUGIN", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPERSCAN_PLUGIN)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "TAPERSCAN_PROPERTY", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(TAPERSCAN_PROPERTY)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLD_NEVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLD_NEVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLD_AUTO", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLD_AUTO)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "HOLD_REQUIRED", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(HOLD_REQUIRED)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_NONE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_NONE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_FAST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_FAST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_BEST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_BEST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_CUST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_CUST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_SERVER_FAST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_SERVER_FAST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_SERVER_BEST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_SERVER_BEST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "COMP_SERVER_CUST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(COMP_SERVER_CUST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ENCRYPT_NONE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ENCRYPT_NONE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ENCRYPT_CUST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ENCRYPT_CUST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ENCRYPT_SERV_CUST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ENCRYPT_SERV_CUST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_SKIP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_SKIP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_STANDARD", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_STANDARD)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_NOFULL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_NOFULL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_NOINC", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_NOINC)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_4", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_4)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_5", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_5)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_HANOI", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_HANOI)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DS_INCRONLY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DS_INCRONLY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ES_CLIENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ES_CLIENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ES_SERVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ES_SERVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ES_CALCSIZE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ES_CALCSIZE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "AL_OTHER_CONFIG", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(AL_OTHER_CONFIG)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "AL_NON_AMANDA", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(AL_NON_AMANDA)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "AL_VOLUME_ERROR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(AL_VOLUME_ERROR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "AL_EMPTY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(AL_EMPTY)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ALGO_FIRST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ALGO_FIRST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ALGO_FIRSTFIT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ALGO_FIRSTFIT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ALGO_LARGEST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ALGO_LARGEST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ALGO_LARGESTFIT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ALGO_LARGESTFIT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ALGO_SMALLEST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ALGO_SMALLEST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "ALGO_LAST", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(ALGO_LAST)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_AMCHECK", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_AMCHECK)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_DLE_AMCHECK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_DLE_AMCHECK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_HOST_AMCHECK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_HOST_AMCHECK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_AMCHECK", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_AMCHECK)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_DLE_AMCHECK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_DLE_AMCHECK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_HOST_AMCHECK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_HOST_AMCHECK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_ESTIMATE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_ESTIMATE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_DLE_ESTIMATE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_DLE_ESTIMATE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_HOST_ESTIMATE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_HOST_ESTIMATE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_ESTIMATE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_ESTIMATE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_DLE_ESTIMATE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_DLE_ESTIMATE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_HOST_ESTIMATE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_HOST_ESTIMATE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_BACKUP", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_BACKUP)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_DLE_BACKUP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_DLE_BACKUP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_PRE_HOST_BACKUP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_PRE_HOST_BACKUP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_BACKUP", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_BACKUP)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_DLE_BACKUP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_DLE_BACKUP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "EXECUTE_ON_POST_HOST_BACKUP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(EXECUTE_ON_POST_HOST_BACKUP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "SEND_AMREPORT_ALL", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(SEND_AMREPORT_ALL)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "SEND_AMREPORT_STRANGE", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(SEND_AMREPORT_STRANGE)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "SEND_AMREPORT_ERROR", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(SEND_AMREPORT_ERROR)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "SEND_AMREPORT_NEVER", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(SEND_AMREPORT_NEVER)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DATA_PATH_AMANDA", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DATA_PATH_AMANDA)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "DATA_PATH_DIRECTTCP", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(DATA_PATH_DIRECTTCP)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "PART_CACHE_TYPE_NONE", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PART_CACHE_TYPE_NONE)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "PART_CACHE_TYPE_DISK", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PART_CACHE_TYPE_DISK)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+    SV *sv = get_sv((char*) SWIG_prefix "PART_CACHE_TYPE_MEMORY", TRUE | 0x2 | GV_ADDMULTI);
+    sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(PART_CACHE_TYPE_MEMORY)));
+    SvREADONLY_on(sv);
+  } while(0) /*@SWIG@*/;
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CFGERR_OK", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CFGERR_OK)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CFGERR_WARNINGS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CFGERR_WARNINGS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CFGERR_ERRORS", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CFGERR_ERRORS)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CONFIG_INIT_EXPLICIT_NAME", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONFIG_INIT_EXPLICIT_NAME)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CONFIG_INIT_USE_CWD", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONFIG_INIT_USE_CWD)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CONFIG_INIT_CLIENT", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONFIG_INIT_CLIENT)));
     SvREADONLY_on(sv);
   } while(0) /*@SWIG@*/;
-  /*@SWIG:/usr/share/swig/1.3.39/perl5/perltypemaps.swg,65,%set_constant@*/ do {
+  /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
     SV *sv = get_sv((char*) SWIG_prefix "CONFIG_INIT_OVERLAY", TRUE | 0x2 | GV_ADDMULTI);
     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONFIG_INIT_OVERLAY)));
     SvREADONLY_on(sv);