Imported Upstream version 3.3.2
[debian/amanda] / perl / Amanda / Util.c
1 /* ----------------------------------------------------------------------------
2  * This file was automatically generated by SWIG (http://www.swig.org).
3  * Version 2.0.4
4  * 
5  * This file is not intended to be easily readable and contains a number of 
6  * coding conventions designed to improve portability and efficiency. Do not make
7  * changes to this file unless you know what you are doing--modify the SWIG 
8  * interface file instead. 
9  * ----------------------------------------------------------------------------- */
10
11 #include "../config/config.h"
12
13
14 #define SWIGPERL
15 #define SWIG_CASTRANK_MODE
16
17 /* -----------------------------------------------------------------------------
18  *  This section contains generic SWIG labels for method/variable
19  *  declarations/attributes, and other compiler dependent labels.
20  * ----------------------------------------------------------------------------- */
21
22 /* template workaround for compilers that cannot correctly implement the C++ standard */
23 #ifndef SWIGTEMPLATEDISAMBIGUATOR
24 # if defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x560)
25 #  define SWIGTEMPLATEDISAMBIGUATOR template
26 # elif defined(__HP_aCC)
27 /* Needed even with `aCC -AA' when `aCC -V' reports HP ANSI C++ B3910B A.03.55 */
28 /* If we find a maximum version that requires this, the test would be __HP_aCC <= 35500 for A.03.55 */
29 #  define SWIGTEMPLATEDISAMBIGUATOR template
30 # else
31 #  define SWIGTEMPLATEDISAMBIGUATOR
32 # endif
33 #endif
34
35 /* inline attribute */
36 #ifndef SWIGINLINE
37 # if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
38 #   define SWIGINLINE inline
39 # else
40 #   define SWIGINLINE
41 # endif
42 #endif
43
44 /* attribute recognised by some compilers to avoid 'unused' warnings */
45 #ifndef SWIGUNUSED
46 # if defined(__GNUC__)
47 #   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
48 #     define SWIGUNUSED __attribute__ ((__unused__)) 
49 #   else
50 #     define SWIGUNUSED
51 #   endif
52 # elif defined(__ICC)
53 #   define SWIGUNUSED __attribute__ ((__unused__)) 
54 # else
55 #   define SWIGUNUSED 
56 # endif
57 #endif
58
59 #ifndef SWIG_MSC_UNSUPPRESS_4505
60 # if defined(_MSC_VER)
61 #   pragma warning(disable : 4505) /* unreferenced local function has been removed */
62 # endif 
63 #endif
64
65 #ifndef SWIGUNUSEDPARM
66 # ifdef __cplusplus
67 #   define SWIGUNUSEDPARM(p)
68 # else
69 #   define SWIGUNUSEDPARM(p) p SWIGUNUSED 
70 # endif
71 #endif
72
73 /* internal SWIG method */
74 #ifndef SWIGINTERN
75 # define SWIGINTERN static SWIGUNUSED
76 #endif
77
78 /* internal inline SWIG method */
79 #ifndef SWIGINTERNINLINE
80 # define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
81 #endif
82
83 /* exporting methods */
84 #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
85 #  ifndef GCC_HASCLASSVISIBILITY
86 #    define GCC_HASCLASSVISIBILITY
87 #  endif
88 #endif
89
90 #ifndef SWIGEXPORT
91 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
92 #   if defined(STATIC_LINKED)
93 #     define SWIGEXPORT
94 #   else
95 #     define SWIGEXPORT __declspec(dllexport)
96 #   endif
97 # else
98 #   if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
99 #     define SWIGEXPORT __attribute__ ((visibility("default")))
100 #   else
101 #     define SWIGEXPORT
102 #   endif
103 # endif
104 #endif
105
106 /* calling conventions for Windows */
107 #ifndef SWIGSTDCALL
108 # if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
109 #   define SWIGSTDCALL __stdcall
110 # else
111 #   define SWIGSTDCALL
112 # endif 
113 #endif
114
115 /* Deal with Microsoft's attempt at deprecating C standard runtime functions */
116 #if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
117 # define _CRT_SECURE_NO_DEPRECATE
118 #endif
119
120 /* Deal with Microsoft's attempt at deprecating methods in the standard C++ library */
121 #if !defined(SWIG_NO_SCL_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_SCL_SECURE_NO_DEPRECATE)
122 # define _SCL_SECURE_NO_DEPRECATE
123 #endif
124
125
126 /* -----------------------------------------------------------------------------
127  * swigrun.swg
128  *
129  * This file contains generic C API SWIG runtime support for pointer
130  * type checking.
131  * ----------------------------------------------------------------------------- */
132
133 /* This should only be incremented when either the layout of swig_type_info changes,
134    or for whatever reason, the runtime changes incompatibly */
135 #define SWIG_RUNTIME_VERSION "4"
136
137 /* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
138 #ifdef SWIG_TYPE_TABLE
139 # define SWIG_QUOTE_STRING(x) #x
140 # define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
141 # define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
142 #else
143 # define SWIG_TYPE_TABLE_NAME
144 #endif
145
146 /*
147   You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
148   creating a static or dynamic library from the SWIG runtime code.
149   In 99.9% of the cases, SWIG just needs to declare them as 'static'.
150   
151   But only do this if strictly necessary, ie, if you have problems
152   with your compiler or suchlike.
153 */
154
155 #ifndef SWIGRUNTIME
156 # define SWIGRUNTIME SWIGINTERN
157 #endif
158
159 #ifndef SWIGRUNTIMEINLINE
160 # define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
161 #endif
162
163 /*  Generic buffer size */
164 #ifndef SWIG_BUFFER_SIZE
165 # define SWIG_BUFFER_SIZE 1024
166 #endif
167
168 /* Flags for pointer conversions */
169 #define SWIG_POINTER_DISOWN        0x1
170 #define SWIG_CAST_NEW_MEMORY       0x2
171
172 /* Flags for new pointer objects */
173 #define SWIG_POINTER_OWN           0x1
174
175
176 /* 
177    Flags/methods for returning states.
178    
179    The SWIG conversion methods, as ConvertPtr, return an integer 
180    that tells if the conversion was successful or not. And if not,
181    an error code can be returned (see swigerrors.swg for the codes).
182    
183    Use the following macros/flags to set or process the returning
184    states.
185    
186    In old versions of SWIG, code such as the following was usually written:
187
188      if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
189        // success code
190      } else {
191        //fail code
192      }
193
194    Now you can be more explicit:
195
196     int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
197     if (SWIG_IsOK(res)) {
198       // success code
199     } else {
200       // fail code
201     }
202
203    which is the same really, but now you can also do
204
205     Type *ptr;
206     int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
207     if (SWIG_IsOK(res)) {
208       // success code
209       if (SWIG_IsNewObj(res) {
210         ...
211         delete *ptr;
212       } else {
213         ...
214       }
215     } else {
216       // fail code
217     }
218     
219    I.e., now SWIG_ConvertPtr can return new objects and you can
220    identify the case and take care of the deallocation. Of course that
221    also requires SWIG_ConvertPtr to return new result values, such as
222
223       int SWIG_ConvertPtr(obj, ptr,...) {         
224         if (<obj is ok>) {                             
225           if (<need new object>) {                     
226             *ptr = <ptr to new allocated object>; 
227             return SWIG_NEWOBJ;                
228           } else {                                     
229             *ptr = <ptr to old object>;        
230             return SWIG_OLDOBJ;                
231           }                                    
232         } else {                                       
233           return SWIG_BADOBJ;                  
234         }                                              
235       }
236
237    Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
238    more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
239    SWIG errors code.
240
241    Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
242    allows to return the 'cast rank', for example, if you have this
243
244        int food(double)
245        int fooi(int);
246
247    and you call
248  
249       food(1)   // cast rank '1'  (1 -> 1.0)
250       fooi(1)   // cast rank '0'
251
252    just use the SWIG_AddCast()/SWIG_CheckState()
253 */
254
255 #define SWIG_OK                    (0) 
256 #define SWIG_ERROR                 (-1)
257 #define SWIG_IsOK(r)               (r >= 0)
258 #define SWIG_ArgError(r)           ((r != SWIG_ERROR) ? r : SWIG_TypeError)  
259
260 /* The CastRankLimit says how many bits are used for the cast rank */
261 #define SWIG_CASTRANKLIMIT         (1 << 8)
262 /* The NewMask denotes the object was created (using new/malloc) */
263 #define SWIG_NEWOBJMASK            (SWIG_CASTRANKLIMIT  << 1)
264 /* The TmpMask is for in/out typemaps that use temporal objects */
265 #define SWIG_TMPOBJMASK            (SWIG_NEWOBJMASK << 1)
266 /* Simple returning values */
267 #define SWIG_BADOBJ                (SWIG_ERROR)
268 #define SWIG_OLDOBJ                (SWIG_OK)
269 #define SWIG_NEWOBJ                (SWIG_OK | SWIG_NEWOBJMASK)
270 #define SWIG_TMPOBJ                (SWIG_OK | SWIG_TMPOBJMASK)
271 /* Check, add and del mask methods */
272 #define SWIG_AddNewMask(r)         (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
273 #define SWIG_DelNewMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
274 #define SWIG_IsNewObj(r)           (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
275 #define SWIG_AddTmpMask(r)         (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
276 #define SWIG_DelTmpMask(r)         (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
277 #define SWIG_IsTmpObj(r)           (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
278
279 /* Cast-Rank Mode */
280 #if defined(SWIG_CASTRANK_MODE)
281 #  ifndef SWIG_TypeRank
282 #    define SWIG_TypeRank             unsigned long
283 #  endif
284 #  ifndef SWIG_MAXCASTRANK            /* Default cast allowed */
285 #    define SWIG_MAXCASTRANK          (2)
286 #  endif
287 #  define SWIG_CASTRANKMASK          ((SWIG_CASTRANKLIMIT) -1)
288 #  define SWIG_CastRank(r)           (r & SWIG_CASTRANKMASK)
289 SWIGINTERNINLINE int SWIG_AddCast(int r) { 
290   return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
291 }
292 SWIGINTERNINLINE int SWIG_CheckState(int r) { 
293   return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0; 
294 }
295 #else /* no cast-rank mode */
296 #  define SWIG_AddCast
297 #  define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
298 #endif
299
300
301 #include <string.h>
302
303 #ifdef __cplusplus
304 extern "C" {
305 #endif
306
307 typedef void *(*swig_converter_func)(void *, int *);
308 typedef struct swig_type_info *(*swig_dycast_func)(void **);
309
310 /* Structure to store information on one type */
311 typedef struct swig_type_info {
312   const char             *name;                 /* mangled name of this type */
313   const char             *str;                  /* human readable name of this type */
314   swig_dycast_func        dcast;                /* dynamic cast function down a hierarchy */
315   struct swig_cast_info  *cast;                 /* linked list of types that can cast into this type */
316   void                   *clientdata;           /* language specific type data */
317   int                    owndata;               /* flag if the structure owns the clientdata */
318 } swig_type_info;
319
320 /* Structure to store a type and conversion function used for casting */
321 typedef struct swig_cast_info {
322   swig_type_info         *type;                 /* pointer to type that is equivalent to this type */
323   swig_converter_func     converter;            /* function to cast the void pointers */
324   struct swig_cast_info  *next;                 /* pointer to next cast in linked list */
325   struct swig_cast_info  *prev;                 /* pointer to the previous cast */
326 } swig_cast_info;
327
328 /* Structure used to store module information
329  * Each module generates one structure like this, and the runtime collects
330  * all of these structures and stores them in a circularly linked list.*/
331 typedef struct swig_module_info {
332   swig_type_info         **types;               /* Array of pointers to swig_type_info structures that are in this module */
333   size_t                 size;                  /* Number of types in this module */
334   struct swig_module_info *next;                /* Pointer to next element in circularly linked list */
335   swig_type_info         **type_initial;        /* Array of initially generated type structures */
336   swig_cast_info         **cast_initial;        /* Array of initially generated casting structures */
337   void                    *clientdata;          /* Language specific module data */
338 } swig_module_info;
339
340 /* 
341   Compare two type names skipping the space characters, therefore
342   "char*" == "char *" and "Class<int>" == "Class<int >", etc.
343
344   Return 0 when the two name types are equivalent, as in
345   strncmp, but skipping ' '.
346 */
347 SWIGRUNTIME int
348 SWIG_TypeNameComp(const char *f1, const char *l1,
349                   const char *f2, const char *l2) {
350   for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
351     while ((*f1 == ' ') && (f1 != l1)) ++f1;
352     while ((*f2 == ' ') && (f2 != l2)) ++f2;
353     if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
354   }
355   return (int)((l1 - f1) - (l2 - f2));
356 }
357
358 /*
359   Check type equivalence in a name list like <name1>|<name2>|...
360   Return 0 if not equal, 1 if equal
361 */
362 SWIGRUNTIME int
363 SWIG_TypeEquiv(const char *nb, const char *tb) {
364   int equiv = 0;
365   const char* te = tb + strlen(tb);
366   const char* ne = nb;
367   while (!equiv && *ne) {
368     for (nb = ne; *ne; ++ne) {
369       if (*ne == '|') break;
370     }
371     equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
372     if (*ne) ++ne;
373   }
374   return equiv;
375 }
376
377 /*
378   Check type equivalence in a name list like <name1>|<name2>|...
379   Return 0 if equal, -1 if nb < tb, 1 if nb > tb
380 */
381 SWIGRUNTIME int
382 SWIG_TypeCompare(const char *nb, const char *tb) {
383   int equiv = 0;
384   const char* te = tb + strlen(tb);
385   const char* ne = nb;
386   while (!equiv && *ne) {
387     for (nb = ne; *ne; ++ne) {
388       if (*ne == '|') break;
389     }
390     equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
391     if (*ne) ++ne;
392   }
393   return equiv;
394 }
395
396
397 /*
398   Check the typename
399 */
400 SWIGRUNTIME swig_cast_info *
401 SWIG_TypeCheck(const char *c, swig_type_info *ty) {
402   if (ty) {
403     swig_cast_info *iter = ty->cast;
404     while (iter) {
405       if (strcmp(iter->type->name, c) == 0) {
406         if (iter == ty->cast)
407           return iter;
408         /* Move iter to the top of the linked list */
409         iter->prev->next = iter->next;
410         if (iter->next)
411           iter->next->prev = iter->prev;
412         iter->next = ty->cast;
413         iter->prev = 0;
414         if (ty->cast) ty->cast->prev = iter;
415         ty->cast = iter;
416         return iter;
417       }
418       iter = iter->next;
419     }
420   }
421   return 0;
422 }
423
424 /* 
425   Identical to SWIG_TypeCheck, except strcmp is replaced with a pointer comparison
426 */
427 SWIGRUNTIME swig_cast_info *
428 SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *ty) {
429   if (ty) {
430     swig_cast_info *iter = ty->cast;
431     while (iter) {
432       if (iter->type == from) {
433         if (iter == ty->cast)
434           return iter;
435         /* Move iter to the top of the linked list */
436         iter->prev->next = iter->next;
437         if (iter->next)
438           iter->next->prev = iter->prev;
439         iter->next = ty->cast;
440         iter->prev = 0;
441         if (ty->cast) ty->cast->prev = iter;
442         ty->cast = iter;
443         return iter;
444       }
445       iter = iter->next;
446     }
447   }
448   return 0;
449 }
450
451 /*
452   Cast a pointer up an inheritance hierarchy
453 */
454 SWIGRUNTIMEINLINE void *
455 SWIG_TypeCast(swig_cast_info *ty, void *ptr, int *newmemory) {
456   return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr, newmemory);
457 }
458
459 /* 
460    Dynamic pointer casting. Down an inheritance hierarchy
461 */
462 SWIGRUNTIME swig_type_info *
463 SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
464   swig_type_info *lastty = ty;
465   if (!ty || !ty->dcast) return ty;
466   while (ty && (ty->dcast)) {
467     ty = (*ty->dcast)(ptr);
468     if (ty) lastty = ty;
469   }
470   return lastty;
471 }
472
473 /*
474   Return the name associated with this type
475 */
476 SWIGRUNTIMEINLINE const char *
477 SWIG_TypeName(const swig_type_info *ty) {
478   return ty->name;
479 }
480
481 /*
482   Return the pretty name associated with this type,
483   that is an unmangled type name in a form presentable to the user.
484 */
485 SWIGRUNTIME const char *
486 SWIG_TypePrettyName(const swig_type_info *type) {
487   /* The "str" field contains the equivalent pretty names of the
488      type, separated by vertical-bar characters.  We choose
489      to print the last name, as it is often (?) the most
490      specific. */
491   if (!type) return NULL;
492   if (type->str != NULL) {
493     const char *last_name = type->str;
494     const char *s;
495     for (s = type->str; *s; s++)
496       if (*s == '|') last_name = s+1;
497     return last_name;
498   }
499   else
500     return type->name;
501 }
502
503 /* 
504    Set the clientdata field for a type
505 */
506 SWIGRUNTIME void
507 SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
508   swig_cast_info *cast = ti->cast;
509   /* if (ti->clientdata == clientdata) return; */
510   ti->clientdata = clientdata;
511   
512   while (cast) {
513     if (!cast->converter) {
514       swig_type_info *tc = cast->type;
515       if (!tc->clientdata) {
516         SWIG_TypeClientData(tc, clientdata);
517       }
518     }    
519     cast = cast->next;
520   }
521 }
522 SWIGRUNTIME void
523 SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
524   SWIG_TypeClientData(ti, clientdata);
525   ti->owndata = 1;
526 }
527   
528 /*
529   Search for a swig_type_info structure only by mangled name
530   Search is a O(log #types)
531   
532   We start searching at module start, and finish searching when start == end.  
533   Note: if start == end at the beginning of the function, we go all the way around
534   the circular list.
535 */
536 SWIGRUNTIME swig_type_info *
537 SWIG_MangledTypeQueryModule(swig_module_info *start, 
538                             swig_module_info *end, 
539                             const char *name) {
540   swig_module_info *iter = start;
541   do {
542     if (iter->size) {
543       register size_t l = 0;
544       register size_t r = iter->size - 1;
545       do {
546         /* since l+r >= 0, we can (>> 1) instead (/ 2) */
547         register size_t i = (l + r) >> 1; 
548         const char *iname = iter->types[i]->name;
549         if (iname) {
550           register int compare = strcmp(name, iname);
551           if (compare == 0) {       
552             return iter->types[i];
553           } else if (compare < 0) {
554             if (i) {
555               r = i - 1;
556             } else {
557               break;
558             }
559           } else if (compare > 0) {
560             l = i + 1;
561           }
562         } else {
563           break; /* should never happen */
564         }
565       } while (l <= r);
566     }
567     iter = iter->next;
568   } while (iter != end);
569   return 0;
570 }
571
572 /*
573   Search for a swig_type_info structure for either a mangled name or a human readable name.
574   It first searches the mangled names of the types, which is a O(log #types)
575   If a type is not found it then searches the human readable names, which is O(#types).
576   
577   We start searching at module start, and finish searching when start == end.  
578   Note: if start == end at the beginning of the function, we go all the way around
579   the circular list.
580 */
581 SWIGRUNTIME swig_type_info *
582 SWIG_TypeQueryModule(swig_module_info *start, 
583                      swig_module_info *end, 
584                      const char *name) {
585   /* STEP 1: Search the name field using binary search */
586   swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
587   if (ret) {
588     return ret;
589   } else {
590     /* STEP 2: If the type hasn't been found, do a complete search
591        of the str field (the human readable name) */
592     swig_module_info *iter = start;
593     do {
594       register size_t i = 0;
595       for (; i < iter->size; ++i) {
596         if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
597           return iter->types[i];
598       }
599       iter = iter->next;
600     } while (iter != end);
601   }
602   
603   /* neither found a match */
604   return 0;
605 }
606
607 /* 
608    Pack binary data into a string
609 */
610 SWIGRUNTIME char *
611 SWIG_PackData(char *c, void *ptr, size_t sz) {
612   static const char hex[17] = "0123456789abcdef";
613   register const unsigned char *u = (unsigned char *) ptr;
614   register const unsigned char *eu =  u + sz;
615   for (; u != eu; ++u) {
616     register unsigned char uu = *u;
617     *(c++) = hex[(uu & 0xf0) >> 4];
618     *(c++) = hex[uu & 0xf];
619   }
620   return c;
621 }
622
623 /* 
624    Unpack binary data from a string
625 */
626 SWIGRUNTIME const char *
627 SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
628   register unsigned char *u = (unsigned char *) ptr;
629   register const unsigned char *eu = u + sz;
630   for (; u != eu; ++u) {
631     register char d = *(c++);
632     register unsigned char uu;
633     if ((d >= '0') && (d <= '9'))
634       uu = ((d - '0') << 4);
635     else if ((d >= 'a') && (d <= 'f'))
636       uu = ((d - ('a'-10)) << 4);
637     else 
638       return (char *) 0;
639     d = *(c++);
640     if ((d >= '0') && (d <= '9'))
641       uu |= (d - '0');
642     else if ((d >= 'a') && (d <= 'f'))
643       uu |= (d - ('a'-10));
644     else 
645       return (char *) 0;
646     *u = uu;
647   }
648   return c;
649 }
650
651 /* 
652    Pack 'void *' into a string buffer.
653 */
654 SWIGRUNTIME char *
655 SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
656   char *r = buff;
657   if ((2*sizeof(void *) + 2) > bsz) return 0;
658   *(r++) = '_';
659   r = SWIG_PackData(r,&ptr,sizeof(void *));
660   if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
661   strcpy(r,name);
662   return buff;
663 }
664
665 SWIGRUNTIME const char *
666 SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
667   if (*c != '_') {
668     if (strcmp(c,"NULL") == 0) {
669       *ptr = (void *) 0;
670       return name;
671     } else {
672       return 0;
673     }
674   }
675   return SWIG_UnpackData(++c,ptr,sizeof(void *));
676 }
677
678 SWIGRUNTIME char *
679 SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
680   char *r = buff;
681   size_t lname = (name ? strlen(name) : 0);
682   if ((2*sz + 2 + lname) > bsz) return 0;
683   *(r++) = '_';
684   r = SWIG_PackData(r,ptr,sz);
685   if (lname) {
686     strncpy(r,name,lname+1);
687   } else {
688     *r = 0;
689   }
690   return buff;
691 }
692
693 SWIGRUNTIME const char *
694 SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
695   if (*c != '_') {
696     if (strcmp(c,"NULL") == 0) {
697       memset(ptr,0,sz);
698       return name;
699     } else {
700       return 0;
701     }
702   }
703   return SWIG_UnpackData(++c,ptr,sz);
704 }
705
706 #ifdef __cplusplus
707 }
708 #endif
709
710 /*  Errors in SWIG */
711 #define  SWIG_UnknownError         -1 
712 #define  SWIG_IOError              -2 
713 #define  SWIG_RuntimeError         -3 
714 #define  SWIG_IndexError           -4 
715 #define  SWIG_TypeError            -5 
716 #define  SWIG_DivisionByZero       -6 
717 #define  SWIG_OverflowError        -7 
718 #define  SWIG_SyntaxError          -8 
719 #define  SWIG_ValueError           -9 
720 #define  SWIG_SystemError          -10
721 #define  SWIG_AttributeError       -11
722 #define  SWIG_MemoryError          -12 
723 #define  SWIG_NullReferenceError   -13
724
725
726
727 #ifdef __cplusplus
728 /* Needed on some windows machines---since MS plays funny games with the header files under C++ */
729 #include <math.h>
730 #include <stdlib.h>
731 extern "C" {
732 #endif
733 #include "EXTERN.h"
734 #include "perl.h"
735 #include "XSUB.h"
736
737 /* Add in functionality missing in older versions of Perl. Much of this is based on Devel-PPPort on cpan. */
738
739 /* Add PERL_REVISION, PERL_VERSION, PERL_SUBVERSION if missing */
740 #ifndef PERL_REVISION
741 #  if !defined(__PATCHLEVEL_H_INCLUDED__) && !(defined(PATCHLEVEL) && defined(SUBVERSION))
742 #    define PERL_PATCHLEVEL_H_IMPLICIT
743 #    include <patchlevel.h>
744 #  endif
745 #  if !(defined(PERL_VERSION) || (defined(SUBVERSION) && defined(PATCHLEVEL)))
746 #    include <could_not_find_Perl_patchlevel.h>
747 #  endif
748 #  ifndef PERL_REVISION
749 #    define PERL_REVISION       (5)
750 #    define PERL_VERSION        PATCHLEVEL
751 #    define PERL_SUBVERSION     SUBVERSION
752 #  endif
753 #endif
754
755 #if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
756 #define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
757 #endif
758
759 #ifndef SvIOK_UV
760 # define SvIOK_UV(sv)       (SvIOK(sv) && (SvUVX(sv) == SvIVX(sv)))
761 #endif
762
763 #ifndef SvUOK
764 # define SvUOK(sv)           SvIOK_UV(sv)
765 #endif
766
767 #if ((PERL_VERSION < 4) || ((PERL_VERSION == 4) && (PERL_SUBVERSION <= 5)))
768 #  define PL_sv_undef               sv_undef
769 #  define PL_na                     na
770 #  define PL_errgv                  errgv
771 #  define PL_sv_no                  sv_no
772 #  define PL_sv_yes                 sv_yes
773 #  define PL_markstack_ptr          markstack_ptr
774 #endif
775
776 #ifndef IVSIZE
777 #  ifdef LONGSIZE
778 #    define IVSIZE LONGSIZE
779 #  else
780 #    define IVSIZE 4 /* A bold guess, but the best we can make. */
781 #  endif
782 #endif
783
784 #ifndef INT2PTR
785 #  if (IVSIZE == PTRSIZE) && (UVSIZE == PTRSIZE)
786 #    define PTRV                  UV
787 #    define INT2PTR(any,d)        (any)(d)
788 #  else
789 #    if PTRSIZE == LONGSIZE
790 #      define PTRV                unsigned long
791 #    else
792 #      define PTRV                unsigned
793 #    endif
794 #    define INT2PTR(any,d)        (any)(PTRV)(d)
795 #  endif
796
797 #  define NUM2PTR(any,d)  (any)(PTRV)(d)
798 #  define PTR2IV(p)       INT2PTR(IV,p)
799 #  define PTR2UV(p)       INT2PTR(UV,p)
800 #  define PTR2NV(p)       NUM2PTR(NV,p)
801
802 #  if PTRSIZE == LONGSIZE
803 #    define PTR2ul(p)     (unsigned long)(p)
804 #  else
805 #    define PTR2ul(p)     INT2PTR(unsigned long,p)
806 #  endif
807 #endif /* !INT2PTR */
808
809 #ifndef SvPV_nolen
810 # define SvPV_nolen(x) SvPV(x,PL_na)
811 #endif
812
813 #ifndef get_sv
814 #  define get_sv perl_get_sv
815 #endif
816
817 #ifndef ERRSV
818 #  define ERRSV get_sv("@",FALSE)
819 #endif
820
821 #ifndef pTHX_
822 #define pTHX_
823 #endif   
824
825 #include <string.h>
826 #ifdef __cplusplus
827 }
828 #endif
829
830 /* -----------------------------------------------------------------------------
831  * error manipulation
832  * ----------------------------------------------------------------------------- */
833
834 SWIGINTERN const char*
835 SWIG_Perl_ErrorType(int code) {
836   const char* type = 0;
837   switch(code) {
838   case SWIG_MemoryError:
839     type = "MemoryError";
840     break;
841   case SWIG_IOError:
842     type = "IOError";
843     break;
844   case SWIG_RuntimeError:
845     type = "RuntimeError";
846     break;
847   case SWIG_IndexError:
848     type = "IndexError";
849     break;
850   case SWIG_TypeError:
851     type = "TypeError";
852     break;
853   case SWIG_DivisionByZero:
854     type = "ZeroDivisionError";
855     break;
856   case SWIG_OverflowError:
857     type = "OverflowError";
858     break;
859   case SWIG_SyntaxError:
860     type = "SyntaxError";
861     break;
862   case SWIG_ValueError:
863     type = "ValueError";
864     break;
865   case SWIG_SystemError:
866     type = "SystemError";
867     break;
868   case SWIG_AttributeError:
869     type = "AttributeError";
870     break;
871   default:
872     type = "RuntimeError";
873   }
874   return type;
875 }
876
877
878
879
880 /* -----------------------------------------------------------------------------
881  * perlrun.swg
882  *
883  * This file contains the runtime support for Perl modules
884  * and includes code for managing global variables and pointer
885  * type checking.
886  * ----------------------------------------------------------------------------- */
887
888 #ifdef PERL_OBJECT
889 #define SWIG_PERL_OBJECT_DECL CPerlObj *SWIGUNUSEDPARM(pPerl),
890 #define SWIG_PERL_OBJECT_CALL pPerl,
891 #else
892 #define SWIG_PERL_OBJECT_DECL
893 #define SWIG_PERL_OBJECT_CALL
894 #endif
895
896 /* Common SWIG API */
897
898 /* for raw pointers */
899 #define SWIG_ConvertPtr(obj, pp, type, flags)           SWIG_Perl_ConvertPtr(SWIG_PERL_OBJECT_CALL obj, pp, type, flags)
900 #define SWIG_ConvertPtrAndOwn(obj, pp, type, flags,own) SWIG_Perl_ConvertPtrAndOwn(SWIG_PERL_OBJECT_CALL obj, pp, type, flags, own)
901 #define SWIG_NewPointerObj(p, type, flags)              SWIG_Perl_NewPointerObj(SWIG_PERL_OBJECT_CALL p, type, flags)
902
903 /* for raw packed data */
904 #define SWIG_ConvertPacked(obj, p, s, type)             SWIG_Perl_ConvertPacked(SWIG_PERL_OBJECT_CALL obj, p, s, type)
905 #define SWIG_NewPackedObj(p, s, type)                   SWIG_Perl_NewPackedObj(SWIG_PERL_OBJECT_CALL p, s, type)
906
907 /* for class or struct pointers */
908 #define SWIG_ConvertInstance(obj, pptr, type, flags)    SWIG_ConvertPtr(obj, pptr, type, flags)
909 #define SWIG_NewInstanceObj(ptr, type, flags)           SWIG_NewPointerObj(ptr, type, flags)
910
911 /* for C or C++ function pointers */
912 #define SWIG_ConvertFunctionPtr(obj, pptr, type)        SWIG_ConvertPtr(obj, pptr, type, 0)
913 #define SWIG_NewFunctionPtrObj(ptr, type)               SWIG_NewPointerObj(ptr, type, 0)
914
915 /* for C++ member pointers, ie, member methods */
916 #define SWIG_ConvertMember(obj, ptr, sz, ty)            SWIG_ConvertPacked(obj, ptr, sz, ty)
917 #define SWIG_NewMemberObj(ptr, sz, type)                SWIG_NewPackedObj(ptr, sz, type)
918
919
920 /* Runtime API */
921
922 #define SWIG_GetModule(clientdata)                      SWIG_Perl_GetModule()
923 #define SWIG_SetModule(clientdata, pointer)             SWIG_Perl_SetModule(pointer)
924
925
926 /* Error manipulation */
927
928 #define SWIG_ErrorType(code)                            SWIG_Perl_ErrorType(code)               
929 #define SWIG_Error(code, msg)                           sv_setpvf(GvSV(PL_errgv),"%s %s\n", SWIG_ErrorType(code), msg)
930 #define SWIG_fail                                       goto fail                                                   
931
932 /* Perl-specific SWIG API */
933
934 #define SWIG_MakePtr(sv, ptr, type, flags)              SWIG_Perl_MakePtr(SWIG_PERL_OBJECT_CALL sv, ptr, type, flags)
935 #define SWIG_MakePackedObj(sv, p, s, type)              SWIG_Perl_MakePackedObj(SWIG_PERL_OBJECT_CALL sv, p, s, type)
936 #define SWIG_SetError(str)                              SWIG_Error(SWIG_RuntimeError, str)
937
938
939 #define SWIG_PERL_DECL_ARGS_1(arg1)                     (SWIG_PERL_OBJECT_DECL arg1)
940 #define SWIG_PERL_CALL_ARGS_1(arg1)                     (SWIG_PERL_OBJECT_CALL arg1)
941 #define SWIG_PERL_DECL_ARGS_2(arg1, arg2)               (SWIG_PERL_OBJECT_DECL arg1, arg2)
942 #define SWIG_PERL_CALL_ARGS_2(arg1, arg2)               (SWIG_PERL_OBJECT_CALL arg1, arg2)
943
944 /* -----------------------------------------------------------------------------
945  * pointers/data manipulation
946  * ----------------------------------------------------------------------------- */
947
948 /* For backward compatibility only */
949 #define SWIG_POINTER_EXCEPTION  0
950
951 #ifdef __cplusplus
952 extern "C" {
953 #endif
954
955 #define SWIG_OWNER   SWIG_POINTER_OWN
956 #define SWIG_SHADOW  SWIG_OWNER << 1
957
958 #define SWIG_MAYBE_PERL_OBJECT SWIG_PERL_OBJECT_DECL
959
960 /* SWIG Perl macros */
961
962 /* Macro to declare an XS function */
963 #ifndef XSPROTO
964 #   define XSPROTO(name) void name(pTHX_ CV* cv)
965 #endif
966
967 /* Macro to call an XS function */
968 #ifdef PERL_OBJECT 
969 #  define SWIG_CALLXS(_name) _name(cv,pPerl) 
970 #else 
971 #  ifndef MULTIPLICITY 
972 #    define SWIG_CALLXS(_name) _name(cv) 
973 #  else 
974 #    define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv) 
975 #  endif 
976 #endif 
977
978 #ifdef PERL_OBJECT
979 #define MAGIC_PPERL  CPerlObj *pPerl = (CPerlObj *) this;
980
981 #ifdef __cplusplus
982 extern "C" {
983 #endif
984 typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
985 #ifdef __cplusplus
986 }
987 #endif
988
989 #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
990 #define SWIGCLASS_STATIC
991
992 #else /* PERL_OBJECT */
993
994 #define MAGIC_PPERL
995 #define SWIGCLASS_STATIC static SWIGUNUSED
996
997 #ifndef MULTIPLICITY
998 #define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
999
1000 #ifdef __cplusplus
1001 extern "C" {
1002 #endif
1003 typedef int (*SwigMagicFunc)(SV *, MAGIC *);
1004 #ifdef __cplusplus
1005 }
1006 #endif
1007
1008 #else /* MULTIPLICITY */
1009
1010 #define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
1011
1012 #ifdef __cplusplus
1013 extern "C" {
1014 #endif
1015 typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
1016 #ifdef __cplusplus
1017 }
1018 #endif
1019
1020 #endif /* MULTIPLICITY */
1021 #endif /* PERL_OBJECT */
1022
1023 /* Workaround for bug in perl 5.6.x croak and earlier */
1024 #if (PERL_VERSION < 8)
1025 #  ifdef PERL_OBJECT
1026 #    define SWIG_croak_null() SWIG_Perl_croak_null(pPerl)
1027 static void SWIG_Perl_croak_null(CPerlObj *pPerl)
1028 #  else
1029 static void SWIG_croak_null()
1030 #  endif
1031 {
1032   SV *err=ERRSV;
1033 #  if (PERL_VERSION < 6)
1034   croak("%_", err);
1035 #  else
1036   if (SvOK(err) && !SvROK(err)) croak("%_", err);
1037   croak(Nullch);
1038 #  endif
1039 }
1040 #else
1041 #  define SWIG_croak_null() croak(Nullch)
1042 #endif
1043
1044
1045 /* 
1046    Define how strict is the cast between strings and integers/doubles
1047    when overloading between these types occurs.
1048    
1049    The default is making it as strict as possible by using SWIG_AddCast
1050    when needed.
1051    
1052    You can use -DSWIG_PERL_NO_STRICT_STR2NUM at compilation time to
1053    disable the SWIG_AddCast, making the casting between string and
1054    numbers less strict.
1055
1056    In the end, we try to solve the overloading between strings and
1057    numerical types in the more natural way, but if you can avoid it,
1058    well, avoid it using %rename, for example.
1059 */
1060 #ifndef SWIG_PERL_NO_STRICT_STR2NUM
1061 # ifndef SWIG_PERL_STRICT_STR2NUM
1062 #  define SWIG_PERL_STRICT_STR2NUM
1063 # endif
1064 #endif
1065 #ifdef SWIG_PERL_STRICT_STR2NUM
1066 /* string takes precedence */
1067 #define SWIG_Str2NumCast(x) SWIG_AddCast(x)  
1068 #else
1069 /* number takes precedence */
1070 #define SWIG_Str2NumCast(x) x
1071 #endif
1072
1073
1074
1075 #include <stdlib.h>
1076
1077 SWIGRUNTIME const char *
1078 SWIG_Perl_TypeProxyName(const swig_type_info *type) {
1079   if (!type) return NULL;
1080   if (type->clientdata != NULL) {
1081     return (const char*) type->clientdata;
1082   } 
1083   else {
1084     return type->name;
1085   }
1086 }
1087
1088 /* Identical to SWIG_TypeCheck, except for strcmp comparison */
1089 SWIGRUNTIME swig_cast_info *
1090 SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
1091   if (ty) {
1092     swig_cast_info *iter = ty->cast;
1093     while (iter) {
1094       if ( (!iter->type->clientdata && (strcmp(iter->type->name, c) == 0)) ||
1095             (iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0)) ) {
1096         if (iter == ty->cast)
1097           return iter;
1098         /* Move iter to the top of the linked list */
1099         iter->prev->next = iter->next;
1100         if (iter->next)
1101           iter->next->prev = iter->prev;
1102         iter->next = ty->cast;
1103         iter->prev = 0;
1104         if (ty->cast) ty->cast->prev = iter;
1105         ty->cast = iter;
1106         return iter;
1107       }
1108       iter = iter->next;
1109     }
1110   }
1111   return 0;
1112 }
1113
1114 /* Function for getting a pointer value */
1115
1116 SWIGRUNTIME int
1117 SWIG_Perl_ConvertPtrAndOwn(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags, int *own) {
1118   swig_cast_info *tc;
1119   void *voidptr = (void *)0;
1120   SV *tsv = 0;
1121
1122   if (own)
1123     *own = 0;
1124
1125   /* If magical, apply more magic */
1126   if (SvGMAGICAL(sv))
1127     mg_get(sv);
1128
1129   /* Check to see if this is an object */
1130   if (sv_isobject(sv)) {
1131     IV tmp = 0;
1132     tsv = (SV*) SvRV(sv);
1133     if ((SvTYPE(tsv) == SVt_PVHV)) {
1134       MAGIC *mg;
1135       if (SvMAGICAL(tsv)) {
1136         mg = mg_find(tsv,'P');
1137         if (mg) {
1138           sv = mg->mg_obj;
1139           if (sv_isobject(sv)) {
1140             tsv = (SV*)SvRV(sv);
1141             tmp = SvIV(tsv);
1142           }
1143         }
1144       } else {
1145         return SWIG_ERROR;
1146       }
1147     } else {
1148       tmp = SvIV(tsv);
1149     }
1150     voidptr = INT2PTR(void *,tmp);
1151   } else if (! SvOK(sv)) {            /* Check for undef */
1152     *(ptr) = (void *) 0;
1153     return SWIG_OK;
1154   } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */
1155     if (!SvROK(sv)) {
1156       /* In Perl 5.12 and later, SVt_RV == SVt_IV, so sv could be a valid integer value.  */
1157       if (SvIOK(sv)) {
1158         return SWIG_ERROR;
1159       } else {
1160         /* NULL pointer (reference to undef). */
1161         *(ptr) = (void *) 0;
1162         return SWIG_OK;
1163       }
1164     } else {
1165       return SWIG_ERROR;
1166     }
1167   } else {                            /* Don't know what it is */
1168     return SWIG_ERROR;
1169   }
1170   if (_t) {
1171     /* Now see if the types match */
1172     char *_c = HvNAME(SvSTASH(SvRV(sv)));
1173     tc = SWIG_TypeProxyCheck(_c,_t);
1174     if (!tc) {
1175       return SWIG_ERROR;
1176     }
1177     {
1178       int newmemory = 0;
1179       *ptr = SWIG_TypeCast(tc,voidptr,&newmemory);
1180       if (newmemory == SWIG_CAST_NEW_MEMORY) {
1181         assert(own); /* badly formed typemap which will lead to a memory leak - it must set and use own to delete *ptr */
1182         if (own)
1183           *own = *own | SWIG_CAST_NEW_MEMORY;
1184       }
1185     }
1186   } else {
1187     *ptr = voidptr;
1188   }
1189
1190   /* 
1191    *  DISOWN implementation: we need a perl guru to check this one.
1192    */
1193   if (tsv && (flags & SWIG_POINTER_DISOWN)) {
1194     /* 
1195      *  almost copy paste code from below SWIG_POINTER_OWN setting
1196      */
1197     SV *obj = sv;
1198     HV *stash = SvSTASH(SvRV(obj));
1199     GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
1200     if (isGV(gv)) {
1201       HV *hv = GvHVn(gv);
1202       /*
1203        * To set ownership (see below), a newSViv(1) entry is added. 
1204        * Hence, to remove ownership, we delete the entry.
1205        */
1206       if (hv_exists_ent(hv, obj, 0)) {
1207         hv_delete_ent(hv, obj, 0, 0);
1208       }
1209     }
1210   }
1211   return SWIG_OK;
1212 }
1213
1214 SWIGRUNTIME int
1215 SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
1216   return SWIG_Perl_ConvertPtrAndOwn(sv, ptr, _t, flags, 0);
1217 }
1218
1219 SWIGRUNTIME void
1220 SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
1221   if (ptr && (flags & (SWIG_SHADOW | SWIG_POINTER_OWN))) {
1222     SV *self;
1223     SV *obj=newSV(0);
1224     HV *hash=newHV();
1225     HV *stash;
1226     sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr);
1227     stash=SvSTASH(SvRV(obj));
1228     if (flags & SWIG_POINTER_OWN) {
1229       HV *hv;
1230       GV *gv = *(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
1231       if (!isGV(gv))
1232         gv_init(gv, stash, "OWNER", 5, FALSE);
1233       hv=GvHVn(gv);
1234       hv_store_ent(hv, obj, newSViv(1), 0);
1235     }
1236     sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
1237     SvREFCNT_dec(obj);
1238     self=newRV_noinc((SV *)hash);
1239     sv_setsv(sv, self);
1240     SvREFCNT_dec((SV *)self);
1241     sv_bless(sv, stash);
1242   }
1243   else {
1244     sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr);
1245   }
1246 }
1247
1248 SWIGRUNTIMEINLINE SV *
1249 SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
1250   SV *result = sv_newmortal();
1251   SWIG_MakePtr(result, ptr, t, flags);
1252   return result;
1253 }
1254
1255 SWIGRUNTIME void
1256 SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
1257   char result[1024];
1258   char *r = result;
1259   if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return;
1260   *(r++) = '_';
1261   r = SWIG_PackData(r,ptr,sz);
1262   strcpy(r,SWIG_Perl_TypeProxyName(type));
1263   sv_setpv(sv, result);
1264 }
1265
1266 SWIGRUNTIME SV *
1267 SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) {
1268   SV *result = sv_newmortal();
1269   SWIG_Perl_MakePackedObj(result, ptr, sz, type);
1270   return result;
1271 }
1272
1273 /* Convert a packed value value */
1274 SWIGRUNTIME int
1275 SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) {
1276   swig_cast_info *tc;
1277   const char  *c = 0;
1278
1279   if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
1280   c = SvPV_nolen(obj);
1281   /* Pointer values must start with leading underscore */
1282   if (*c != '_') return SWIG_ERROR;
1283   c++;
1284   c = SWIG_UnpackData(c,ptr,sz);
1285   if (ty) {
1286     tc = SWIG_TypeCheck(c,ty);
1287     if (!tc) return SWIG_ERROR;
1288   }
1289   return SWIG_OK;
1290 }
1291
1292
1293 /* Macros for low-level exception handling */
1294 #define SWIG_croak(x)    { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }
1295
1296
1297 typedef XSPROTO(SwigPerlWrapper);
1298 typedef SwigPerlWrapper *SwigPerlWrapperPtr;
1299
1300 /* Structure for command table */
1301 typedef struct {
1302   const char         *name;
1303   SwigPerlWrapperPtr  wrapper;
1304 } swig_command_info;
1305
1306 /* Information for constant table */
1307
1308 #define SWIG_INT     1
1309 #define SWIG_FLOAT   2
1310 #define SWIG_STRING  3
1311 #define SWIG_POINTER 4
1312 #define SWIG_BINARY  5
1313
1314 /* Constant information structure */
1315 typedef struct swig_constant_info {
1316     int              type;
1317     const char      *name;
1318     long             lvalue;
1319     double           dvalue;
1320     void            *pvalue;
1321     swig_type_info **ptype;
1322 } swig_constant_info;
1323
1324
1325 /* Structure for variable table */
1326 typedef struct {
1327   const char   *name;
1328   SwigMagicFunc   set;
1329   SwigMagicFunc   get;
1330   swig_type_info  **type;
1331 } swig_variable_info;
1332
1333 /* Magic variable code */
1334 #ifndef PERL_OBJECT
1335 #define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
1336   #ifndef MULTIPLICITY
1337      SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) 
1338   #else
1339      SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) 
1340   #endif
1341 #else
1342 #  define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
1343 SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) 
1344 #endif
1345 {
1346   MAGIC *mg;
1347   sv_magic(sv,sv,'U',(char *) name,strlen(name));
1348   mg = mg_find(sv,'U');
1349   mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
1350   mg->mg_virtual->svt_get = (SwigMagicFunc) get;
1351   mg->mg_virtual->svt_set = (SwigMagicFunc) set;
1352   mg->mg_virtual->svt_len = 0;
1353   mg->mg_virtual->svt_clear = 0;
1354   mg->mg_virtual->svt_free = 0;
1355 }
1356
1357
1358 SWIGRUNTIME swig_module_info *
1359 SWIG_Perl_GetModule(void) {
1360   static void *type_pointer = (void *)0;
1361   SV *pointer;
1362
1363   /* first check if pointer already created */
1364   if (!type_pointer) {
1365     pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE | GV_ADDMULTI);
1366     if (pointer && SvOK(pointer)) {
1367       type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
1368     }
1369   }
1370
1371   return (swig_module_info *) type_pointer;
1372 }
1373
1374 SWIGRUNTIME void
1375 SWIG_Perl_SetModule(swig_module_info *module) {
1376   SV *pointer;
1377
1378   /* create a new pointer */
1379   pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE | GV_ADDMULTI);
1380   sv_setiv(pointer, PTR2IV(module));
1381 }
1382
1383 #ifdef __cplusplus
1384 }
1385 #endif
1386
1387 /* Workaround perl5 global namespace pollution. Note that undefining library
1388  * functions like fopen will not solve the problem on all platforms as fopen
1389  * might be a macro on Windows but not necessarily on other operating systems. */
1390 #ifdef do_open
1391   #undef do_open
1392 #endif
1393 #ifdef do_close
1394   #undef do_close
1395 #endif
1396 #ifdef do_exec
1397   #undef do_exec
1398 #endif
1399 #ifdef scalar
1400   #undef scalar
1401 #endif
1402 #ifdef list
1403   #undef list
1404 #endif
1405 #ifdef apply
1406   #undef apply
1407 #endif
1408 #ifdef convert
1409   #undef convert
1410 #endif
1411 #ifdef Error
1412   #undef Error
1413 #endif
1414 #ifdef form
1415   #undef form
1416 #endif
1417 #ifdef vform
1418   #undef vform
1419 #endif
1420 #ifdef LABEL
1421   #undef LABEL
1422 #endif
1423 #ifdef METHOD
1424   #undef METHOD
1425 #endif
1426 #ifdef Move
1427   #undef Move
1428 #endif
1429 #ifdef yylex
1430   #undef yylex
1431 #endif
1432 #ifdef yyparse
1433   #undef yyparse
1434 #endif
1435 #ifdef yyerror
1436   #undef yyerror
1437 #endif
1438 #ifdef invert
1439   #undef invert
1440 #endif
1441 #ifdef ref
1442   #undef ref
1443 #endif
1444 #ifdef read
1445   #undef read
1446 #endif
1447 #ifdef write
1448   #undef write
1449 #endif
1450 #ifdef eof
1451   #undef eof
1452 #endif
1453 #ifdef bool
1454   #undef bool
1455 #endif
1456 #ifdef close
1457   #undef close
1458 #endif
1459 #ifdef rewind
1460   #undef rewind
1461 #endif
1462 #ifdef free
1463   #undef free
1464 #endif
1465 #ifdef malloc
1466   #undef malloc
1467 #endif
1468 #ifdef calloc
1469   #undef calloc
1470 #endif
1471 #ifdef Stat
1472   #undef Stat
1473 #endif
1474 #ifdef check
1475   #undef check
1476 #endif
1477 #ifdef seekdir
1478   #undef seekdir
1479 #endif
1480 #ifdef open
1481   #undef open
1482 #endif
1483 #ifdef readdir
1484   #undef readdir
1485 #endif
1486 #ifdef bind
1487   #undef bind
1488 #endif
1489 #ifdef access
1490   #undef access
1491 #endif
1492 #ifdef stat
1493   #undef stat
1494 #endif
1495
1496
1497
1498 #define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) 
1499
1500 #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else 
1501
1502
1503
1504   #define SWIG_exception(code, msg) do { SWIG_Error(code, msg); SWIG_fail;; } while(0) 
1505
1506
1507 /* -------- TYPES TABLE (BEGIN) -------- */
1508
1509 #define SWIGTYPE_p_GPtrArray swig_types[0]
1510 #define SWIGTYPE_p_char swig_types[1]
1511 #define SWIGTYPE_p_double swig_types[2]
1512 #define SWIGTYPE_p_file_lock swig_types[3]
1513 #define SWIGTYPE_p_float swig_types[4]
1514 #define SWIGTYPE_p_fs_usage swig_types[5]
1515 #define SWIGTYPE_p_in_port_t swig_types[6]
1516 #define SWIGTYPE_p_int swig_types[7]
1517 #define SWIGTYPE_p_unsigned_char swig_types[8]
1518 static swig_type_info *swig_types[10];
1519 static swig_module_info swig_module = {swig_types, 9, 0, 0, 0, 0};
1520 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
1521 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
1522
1523 /* -------- TYPES TABLE (END) -------- */
1524
1525 #define SWIG_init    boot_Amanda__Util
1526
1527 #define SWIG_name   "Amanda::Utilc::boot_Amanda__Util"
1528 #define SWIG_prefix "Amanda::Utilc::"
1529
1530 #define SWIGVERSION 0x020004 
1531 #define SWIG_VERSION SWIGVERSION
1532
1533
1534 #define SWIG_as_voidptr(a) (void *)((const void *)(a)) 
1535 #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) 
1536
1537
1538 #ifdef __cplusplus
1539 extern "C"
1540 #endif
1541 #ifndef PERL_OBJECT
1542 #ifndef MULTIPLICITY
1543 SWIGEXPORT void SWIG_init (CV* cv);
1544 #else
1545 SWIGEXPORT void SWIG_init (pTHXo_ CV* cv);
1546 #endif
1547 #else
1548 SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);
1549 #endif
1550
1551
1552 #include "amglue.h"
1553
1554
1555 #include "amglue.h"
1556
1557
1558 #include "amglue.h"
1559
1560
1561 #include <unistd.h>
1562 #include "amglue.h"
1563 #include "debug.h"
1564 #include "full-read.h"
1565 #include "full-write.h"
1566 #include "fsusage.h"
1567 #include "stream.h"
1568 /* use a relative path here to avoid conflicting with Perl's util.h. */
1569 #include "../common-src/util.h"
1570 #include "file.h"
1571 #include "sockaddr-util.h"
1572
1573
1574 SWIGINTERNINLINE SV *
1575 SWIG_FromCharPtrAndSize(const char* carray, size_t size)
1576 {
1577   SV *obj = sv_newmortal();
1578   if (carray) {
1579     sv_setpvn(obj, carray, size);
1580   } else {
1581     sv_setsv(obj, &PL_sv_undef);
1582   }
1583   return obj;
1584 }
1585
1586
1587 SWIGINTERNINLINE SV * 
1588 SWIG_FromCharPtr(const char *cptr)
1589
1590   return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));
1591 }
1592
1593
1594 SWIGINTERNINLINE SV *
1595 SWIG_From_long  SWIG_PERL_DECL_ARGS_1(long value)
1596 {    
1597   SV *obj = sv_newmortal();
1598   sv_setiv(obj, (IV) value);
1599   return obj;
1600 }
1601
1602
1603 SWIGINTERNINLINE SV *
1604 SWIG_From_int  SWIG_PERL_DECL_ARGS_1(int value)
1605 {    
1606   return SWIG_From_long  SWIG_PERL_CALL_ARGS_1(value);
1607 }
1608
1609
1610 SWIGINTERN swig_type_info*
1611 SWIG_pchar_descriptor(void)
1612 {
1613   static int init = 0;
1614   static swig_type_info* info = 0;
1615   if (!init) {
1616     info = SWIG_TypeQuery("_p_char");
1617     init = 1;
1618   }
1619   return info;
1620 }
1621
1622
1623 SWIGINTERN int
1624 SWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc)
1625 {
1626   if (SvMAGICAL(obj)) {
1627      SV *tmp = sv_newmortal();
1628      SvSetSV(tmp, obj);
1629      obj = tmp;
1630   }
1631   if (SvPOK(obj)) {
1632     STRLEN len = 0;
1633     char *cstr = SvPV(obj, len); 
1634     size_t size = len + 1;
1635     if (cptr)  {
1636       if (alloc) {
1637         if (*alloc == SWIG_NEWOBJ) {
1638           *cptr = (char *)memcpy((char *)malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));
1639         } else {
1640           *cptr = cstr;
1641           *alloc = SWIG_OLDOBJ;
1642         }
1643       }
1644     }
1645     if (psize) *psize = size;
1646     return SWIG_OK;
1647   } else {
1648     swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
1649     if (pchar_descriptor) {
1650       char* vptr = 0; 
1651       if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {
1652         if (cptr) *cptr = vptr;
1653         if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;
1654         if (alloc) *alloc = SWIG_OLDOBJ;
1655         return SWIG_OK;
1656       }
1657     }
1658   }
1659   return SWIG_TypeError;
1660 }
1661
1662
1663
1664
1665
1666 char *perl_hexdecode_string(const char *str) {
1667     GError *err = NULL;
1668     char *tmp;
1669     tmp = hexdecode_string(str, &err);
1670     if (err) {
1671         g_free(tmp);
1672         croak_gerror("Amanda util: hexdecode", &err);
1673     }
1674     return tmp;
1675 }
1676
1677
1678 void get_fs_usage_(const char *file, struct fs_usage *fsp)
1679 {
1680     int rv = get_fs_usage(file, NULL, fsp);
1681     if (rv == -1)
1682         /* signal an error to the typemap */
1683         fsp->fsu_blocksize = 0;
1684 }
1685
1686
1687 #include <limits.h>
1688 #if !defined(SWIG_NO_LLONG_MAX)
1689 # if !defined(LLONG_MAX) && defined(__GNUC__) && defined (__LONG_LONG_MAX__)
1690 #   define LLONG_MAX __LONG_LONG_MAX__
1691 #   define LLONG_MIN (-LLONG_MAX - 1LL)
1692 #   define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL)
1693 # endif
1694 #endif
1695
1696
1697 SWIGINTERN int
1698 SWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val)
1699 {
1700   if (SvNIOK(obj)) {
1701     if (val) *val = SvNV(obj);
1702     return SWIG_OK;
1703   } else if (SvIOK(obj)) {
1704     if (val) *val = (double) SvIV(obj);
1705     return SWIG_AddCast(SWIG_OK);
1706   } else {
1707     const char *nptr = SvPV_nolen(obj);
1708     if (nptr) {
1709       char *endptr;
1710       double v;
1711       errno = 0;
1712       v = strtod(nptr, &endptr);
1713       if (errno == ERANGE) {
1714         errno = 0;
1715         return SWIG_OverflowError;
1716       } else {
1717         if (*endptr == '\0') {
1718           if (val) *val = v;
1719           return SWIG_Str2NumCast(SWIG_OK);
1720         }
1721       }
1722     }
1723   }
1724   return SWIG_TypeError;
1725 }
1726
1727
1728 #include <float.h>
1729
1730
1731 #include <math.h>
1732
1733
1734 SWIGINTERNINLINE int
1735 SWIG_CanCastAsInteger(double *d, double min, double max) {
1736   double x = *d;
1737   if ((min <= x && x <= max)) {
1738    double fx = floor(x);
1739    double cx = ceil(x);
1740    double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */
1741    if ((errno == EDOM) || (errno == ERANGE)) {
1742      errno = 0;
1743    } else {
1744      double summ, reps, diff;
1745      if (rd < x) {
1746        diff = x - rd;
1747      } else if (rd > x) {
1748        diff = rd - x;
1749      } else {
1750        return 1;
1751      }
1752      summ = rd + x;
1753      reps = diff/summ;
1754      if (reps < 8*DBL_EPSILON) {
1755        *d = rd;
1756        return 1;
1757      }
1758    }
1759   }
1760   return 0;
1761 }
1762
1763
1764 SWIGINTERN int
1765 SWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val)
1766 {
1767   if (SvIOK(obj)) {
1768     if (val) *val = SvIV(obj);
1769     return SWIG_OK;
1770   } else {
1771     int dispatch = 0;
1772     const char *nptr = SvPV_nolen(obj);
1773     if (nptr) {
1774       char *endptr;
1775       long v;
1776       errno = 0;
1777       v = strtol(nptr, &endptr,0);
1778       if (errno == ERANGE) {
1779         errno = 0;
1780         return SWIG_OverflowError;
1781       } else {
1782         if (*endptr == '\0') {
1783           if (val) *val = v;
1784           return SWIG_Str2NumCast(SWIG_OK);
1785         }
1786       }
1787     }
1788     if (!dispatch) {
1789       double d;
1790       int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
1791       if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) {
1792         if (val) *val = (long)(d);
1793         return res;
1794       }
1795     }
1796   }
1797   return SWIG_TypeError;
1798 }
1799
1800
1801 SWIGINTERN int
1802 SWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val)
1803 {
1804   long v;
1805   int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v);
1806   if (SWIG_IsOK(res)) {
1807     if ((v < INT_MIN || v > INT_MAX)) {
1808       return SWIG_OverflowError;
1809     } else {
1810       if (val) *val = (int)(v);
1811     }
1812   }  
1813   return res;
1814 }
1815
1816
1817 int
1818 set_blocking(int fd, gboolean blocking)
1819 {
1820     int flags = fcntl(fd, F_GETFL, 0);
1821     if (flags < 0)
1822         return flags;
1823     if (blocking)
1824         flags &= ~O_NONBLOCK;
1825     else
1826         flags |= O_NONBLOCK;
1827     flags = fcntl(fd, F_SETFL, flags);
1828     if (flags < 0)
1829         return flags;
1830     return 0;
1831 }
1832
1833 SWIGINTERN file_lock *new_file_lock(char const *filename){
1834             return file_lock_new(filename);
1835         }
1836
1837 SWIGINTERN int
1838 SWIG_AsVal_unsigned_SS_long SWIG_PERL_DECL_ARGS_2(SV *obj, unsigned long *val) 
1839 {
1840   if (SvUOK(obj)) {
1841     if (val) *val = SvUV(obj);
1842     return SWIG_OK;
1843   } else  if (SvIOK(obj)) {
1844     long v = SvIV(obj);
1845     if (v >= 0) {
1846       if (val) *val = v;
1847       return SWIG_OK;
1848     } else {
1849       return SWIG_OverflowError;
1850     }
1851   } else {
1852     int dispatch = 0;
1853     const char *nptr = SvPV_nolen(obj);
1854     if (nptr) {
1855       char *endptr;
1856       unsigned long v;
1857       errno = 0;
1858       v = strtoul(nptr, &endptr,0);
1859       if (errno == ERANGE) {
1860         errno = 0;
1861         return SWIG_OverflowError;
1862       } else {
1863         if (*endptr == '\0') {
1864           if (val) *val = v;
1865           return SWIG_Str2NumCast(SWIG_OK);
1866         }
1867       }
1868     }
1869     if (!dispatch) {
1870       double d;
1871       int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d));
1872       if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, 0, ULONG_MAX)) {
1873         if (val) *val = (unsigned long)(d);
1874         return res;
1875       }
1876     }
1877   }
1878   return SWIG_TypeError;
1879 }
1880
1881
1882 SWIGINTERNINLINE int
1883 SWIG_AsVal_size_t SWIG_PERL_DECL_ARGS_2(SV * obj, size_t *val)
1884 {
1885   unsigned long v;
1886   int res = SWIG_AsVal_unsigned_SS_long SWIG_PERL_CALL_ARGS_2(obj, val ? &v : 0);
1887   if (SWIG_IsOK(res) && val) *val = (size_t)(v);
1888   return res;
1889 }
1890
1891 SWIGINTERN SV *file_lock_data(file_lock *self){
1892             if (self->data) {
1893                 return newSVpvn(self->data, self->len);
1894             } else {
1895                 return &PL_sv_undef;
1896             }
1897         }
1898
1899 void weaken_ref(SV *rv) {
1900     sv_rvweaken(rv);
1901 }
1902
1903
1904 static guint64 gettimeofday_for_perl(void)
1905 {
1906     GTimeVal t;
1907     g_get_current_time(&t);
1908     return (guint64)t.tv_sec * G_USEC_PER_SEC + (guint64)t.tv_usec;
1909 }
1910
1911  typedef int socketfd; 
1912
1913 char *check_security_fd(int fd, char *userstr)
1914 {
1915     socklen_t_equiv i;
1916     struct sockaddr_in addr;
1917     char *errstr;
1918
1919     /* get the remote address */
1920     i = SIZEOF(addr);
1921     if (getpeername(fd, (struct sockaddr *)&addr, &i) == -1) {
1922         return g_strdup_printf("getpeername: %s", strerror(errno));
1923     }
1924
1925     /* require IPv4 and not port 20 -- apparently this was a common attack
1926      * vector for much older Amandas */
1927     if ((addr.sin_family != (sa_family_t)AF_INET)
1928                 || (ntohs(addr.sin_port) == 20)) {
1929         return g_strdup_printf("connection rejected from %s family %d port %d",
1930              inet_ntoa(addr.sin_addr), addr.sin_family, htons(addr.sin_port));
1931     }
1932
1933     /* call out to check_security */
1934     if (!check_security((sockaddr_union *)&addr, userstr, 0, &errstr))
1935         return errstr;
1936
1937     return NULL;
1938 }
1939
1940 #ifdef __cplusplus
1941 extern "C" {
1942 #endif
1943
1944 #ifdef PERL_OBJECT
1945 #define MAGIC_CLASS _wrap_Amanda__Util_var::
1946 class _wrap_Amanda__Util_var : public CPerlObj {
1947 public:
1948 #else
1949 #define MAGIC_CLASS
1950 #endif
1951 SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) {
1952     MAGIC_PPERL
1953     croak("Value is read-only.");
1954     return 0;
1955 }
1956
1957
1958 #ifdef PERL_OBJECT
1959 };
1960 #endif
1961
1962 #ifdef __cplusplus
1963 }
1964 #endif
1965
1966 #ifdef __cplusplus
1967 extern "C" {
1968 #endif
1969 XS(_wrap_get_original_cwd) {
1970   {
1971     int argvi = 0;
1972     char *result = 0 ;
1973     dXSARGS;
1974     
1975     if ((items < 0) || (items > 0)) {
1976       SWIG_croak("Usage: get_original_cwd();");
1977     }
1978     result = (char *)get_original_cwd();
1979     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
1980     XSRETURN(argvi);
1981   fail:
1982     SWIG_croak_null();
1983   }
1984 }
1985
1986
1987 XS(_wrap_hexencode) {
1988   {
1989     char *arg1 = (char *) 0 ;
1990     int res1 ;
1991     char *buf1 = 0 ;
1992     int alloc1 = 0 ;
1993     int argvi = 0;
1994     char *result = 0 ;
1995     dXSARGS;
1996     
1997     if ((items < 1) || (items > 1)) {
1998       SWIG_croak("Usage: hexencode(char *);");
1999     }
2000     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2001     if (!SWIG_IsOK(res1)) {
2002       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hexencode" "', argument " "1"" of type '" "char *""'");
2003     }
2004     arg1 = (char *)(buf1);
2005     result = (char *)hexencode_string(arg1);
2006     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2007     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2008     XSRETURN(argvi);
2009   fail:
2010     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2011     SWIG_croak_null();
2012   }
2013 }
2014
2015
2016 XS(_wrap_hexdecode) {
2017   {
2018     char *arg1 = (char *) 0 ;
2019     int res1 ;
2020     char *buf1 = 0 ;
2021     int alloc1 = 0 ;
2022     int argvi = 0;
2023     char *result = 0 ;
2024     dXSARGS;
2025     
2026     if ((items < 1) || (items > 1)) {
2027       SWIG_croak("Usage: hexdecode(char *);");
2028     }
2029     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2030     if (!SWIG_IsOK(res1)) {
2031       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "hexdecode" "', argument " "1"" of type '" "char *""'");
2032     }
2033     arg1 = (char *)(buf1);
2034     result = (char *)perl_hexdecode_string(arg1);
2035     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2036     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2037     XSRETURN(argvi);
2038   fail:
2039     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2040     SWIG_croak_null();
2041   }
2042 }
2043
2044
2045 XS(_wrap_sanitise_filename) {
2046   {
2047     char *arg1 = (char *) 0 ;
2048     int res1 ;
2049     char *buf1 = 0 ;
2050     int alloc1 = 0 ;
2051     int argvi = 0;
2052     char *result = 0 ;
2053     dXSARGS;
2054     
2055     if ((items < 1) || (items > 1)) {
2056       SWIG_croak("Usage: sanitise_filename(inp);");
2057     }
2058     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2059     if (!SWIG_IsOK(res1)) {
2060       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "sanitise_filename" "', argument " "1"" of type '" "char *""'");
2061     }
2062     arg1 = (char *)(buf1);
2063     result = (char *)sanitise_filename(arg1);
2064     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2065     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2066     free((char*)result);
2067     XSRETURN(argvi);
2068   fail:
2069     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2070     SWIG_croak_null();
2071   }
2072 }
2073
2074
2075 XS(_wrap_quote_string) {
2076   {
2077     char *arg1 = (char *) 0 ;
2078     int res1 ;
2079     char *buf1 = 0 ;
2080     int alloc1 = 0 ;
2081     int argvi = 0;
2082     char *result = 0 ;
2083     dXSARGS;
2084     
2085     if ((items < 1) || (items > 1)) {
2086       SWIG_croak("Usage: quote_string(char *);");
2087     }
2088     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2089     if (!SWIG_IsOK(res1)) {
2090       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "quote_string" "', argument " "1"" of type '" "char *""'");
2091     }
2092     arg1 = (char *)(buf1);
2093     result = (char *)quote_string(arg1);
2094     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2095     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2096     free((char*)result);
2097     XSRETURN(argvi);
2098   fail:
2099     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2100     SWIG_croak_null();
2101   }
2102 }
2103
2104
2105 XS(_wrap_unquote_string) {
2106   {
2107     char *arg1 = (char *) 0 ;
2108     int res1 ;
2109     char *buf1 = 0 ;
2110     int alloc1 = 0 ;
2111     int argvi = 0;
2112     char *result = 0 ;
2113     dXSARGS;
2114     
2115     if ((items < 1) || (items > 1)) {
2116       SWIG_croak("Usage: unquote_string(char *);");
2117     }
2118     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2119     if (!SWIG_IsOK(res1)) {
2120       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "unquote_string" "', argument " "1"" of type '" "char *""'");
2121     }
2122     arg1 = (char *)(buf1);
2123     result = (char *)unquote_string(arg1);
2124     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2125     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2126     free((char*)result);
2127     XSRETURN(argvi);
2128   fail:
2129     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2130     SWIG_croak_null();
2131   }
2132 }
2133
2134
2135 XS(_wrap_expand_braced_alternates) {
2136   {
2137     char *arg1 = (char *) 0 ;
2138     int res1 ;
2139     char *buf1 = 0 ;
2140     int alloc1 = 0 ;
2141     int argvi = 0;
2142     GPtrArray *result = 0 ;
2143     dXSARGS;
2144     
2145     if ((items < 1) || (items > 1)) {
2146       SWIG_croak("Usage: expand_braced_alternates(char *);");
2147     }
2148     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2149     if (!SWIG_IsOK(res1)) {
2150       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "expand_braced_alternates" "', argument " "1"" of type '" "char *""'");
2151     }
2152     arg1 = (char *)(buf1);
2153     result = (GPtrArray *)expand_braced_alternates(arg1);
2154     {
2155       if (result) {
2156         guint i;
2157         for (i = 0; i < result->len; i++) {
2158           ST(argvi) = sv_2mortal(newSVpv(g_ptr_array_index(result, i), 0));
2159           argvi++;
2160         }
2161         g_ptr_array_free(result, TRUE);
2162       } else {
2163         ST(argvi) = &PL_sv_undef;
2164         argvi++;
2165       }
2166     }
2167     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2168     XSRETURN(argvi);
2169   fail:
2170     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2171     SWIG_croak_null();
2172   }
2173 }
2174
2175
2176 XS(_wrap_collapse_braced_alternates) {
2177   {
2178     GPtrArray *arg1 = (GPtrArray *) 0 ;
2179     int argvi = 0;
2180     char *result = 0 ;
2181     dXSARGS;
2182     
2183     if ((items < 1) || (items > 1)) {
2184       SWIG_croak("Usage: collapse_braced_alternates(source);");
2185     }
2186     {
2187       AV *av;
2188       guint len;
2189       int i;
2190       
2191       if (!SvROK(ST(0)) || SvTYPE(SvRV(ST(0))) != SVt_PVAV) {
2192         SWIG_exception(SWIG_TypeError, "Expected an arrayref");
2193       }
2194       av = (AV *)SvRV(ST(0));
2195       
2196       len = av_len(av)+1; /* av_len(av) is like $#av */
2197       arg1 = g_ptr_array_sized_new(len);
2198       for (i = 0; i < len; i++) {
2199         SV **elt = av_fetch(av, i, 0);
2200         if (!elt || !SvPOK(*elt)) {
2201           SWIG_exception(SWIG_TypeError, "Non-string in arrayref");
2202         }
2203         g_ptr_array_add(arg1, SvPV_nolen(*elt)); /* TODO: handle unicode here */
2204       }
2205     }
2206     result = (char *)collapse_braced_alternates(arg1);
2207     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
2208     {
2209       g_ptr_array_free(arg1, FALSE);
2210     }
2211     free((char*)result);
2212     XSRETURN(argvi);
2213   fail:
2214     {
2215       g_ptr_array_free(arg1, FALSE);
2216     }
2217     SWIG_croak_null();
2218   }
2219 }
2220
2221
2222 XS(_wrap_split_quoted_strings) {
2223   {
2224     gchar *arg1 = (gchar *) 0 ;
2225     int res1 ;
2226     char *buf1 = 0 ;
2227     int alloc1 = 0 ;
2228     int argvi = 0;
2229     gchar **result = 0 ;
2230     dXSARGS;
2231     
2232     if ((items < 1) || (items > 1)) {
2233       SWIG_croak("Usage: split_quoted_strings(string);");
2234     }
2235     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2236     if (!SWIG_IsOK(res1)) {
2237       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "split_quoted_strings" "', argument " "1"" of type '" "gchar const *""'");
2238     }
2239     arg1 = (gchar *)(buf1);
2240     result = (gchar **)split_quoted_strings((char const *)arg1);
2241     {
2242       gchar **iter;
2243       
2244       if (result) {
2245         /* Count the DeviceProperties */
2246         EXTEND(SP, g_strv_length(result)); /* make room for return values */
2247         
2248         /* Note that we set ST(argvi) several times. the nature of
2249                  * SWIG's wrapping is such that incrementing argvi points
2250                  * ST(argvi) to the next location in perl's argument stack.
2251                  */
2252         
2253         for (iter = result; *iter; iter++) {
2254           ST(argvi) = sv_2mortal(newSVpv(*iter, 0));
2255           g_free(*iter);
2256           argvi++;
2257         }
2258         g_free(result);
2259       }
2260     }
2261     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2262     XSRETURN(argvi);
2263   fail:
2264     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2265     SWIG_croak_null();
2266   }
2267 }
2268
2269
2270 XS(_wrap_get_fs_usage) {
2271   {
2272     char *arg1 = (char *) 0 ;
2273     struct fs_usage *arg2 = (struct fs_usage *) 0 ;
2274     int res1 ;
2275     char *buf1 = 0 ;
2276     int alloc1 = 0 ;
2277     struct fs_usage fsu2 ;
2278     int argvi = 0;
2279     dXSARGS;
2280     
2281     {
2282       bzero(&fsu2, sizeof(fsu2));
2283       arg2 = &fsu2;
2284     }
2285     if ((items < 1) || (items > 1)) {
2286       SWIG_croak("Usage: get_fs_usage(file);");
2287     }
2288     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2289     if (!SWIG_IsOK(res1)) {
2290       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_fs_usage" "', argument " "1"" of type '" "char const *""'");
2291     }
2292     arg1 = (char *)(buf1);
2293     get_fs_usage_((char const *)arg1,arg2);
2294     ST(argvi) = sv_newmortal();
2295     {
2296       SV *sv;
2297       HV *hv;
2298       
2299       /* if there was an error, assume that fsu_blocksize isn't changed,
2300            * and return undef. */
2301       if (arg2->fsu_blocksize) {
2302         SP += argvi; PUTBACK; /* save the perl stack so amglue_newSVi64 doesn't kill it */
2303         hv = (HV *)sv_2mortal((SV *)newHV());
2304         hv_store(hv, "blocksize", 9, amglue_newSVi64(arg2->fsu_blocksize), 0);
2305         hv_store(hv, "blocks", 6, amglue_newSVi64(arg2->fsu_blocks), 0);
2306         hv_store(hv, "bfree", 5, amglue_newSVi64(arg2->fsu_bfree), 0);
2307         hv_store(hv, "bavail", 6, amglue_newSVi64(arg2->fsu_bavail), 0);
2308         hv_store(hv, "bavail_top_bit_set", 18, newSViv(arg2->fsu_bavail_top_bit_set), 0);
2309         hv_store(hv, "files", 5, amglue_newSVi64(arg2->fsu_files), 0);
2310         hv_store(hv, "ffree", 5, amglue_newSVi64(arg2->fsu_ffree), 0);
2311         
2312         ST(argvi) = newRV((SV *)hv);
2313         SPAGAIN; SP -= argvi;
2314         argvi++;
2315       }
2316     }
2317     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2318     
2319     XSRETURN(argvi);
2320   fail:
2321     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2322     
2323     SWIG_croak_null();
2324   }
2325 }
2326
2327
2328 XS(_wrap_fsync) {
2329   {
2330     int arg1 ;
2331     int argvi = 0;
2332     int result;
2333     dXSARGS;
2334     
2335     if ((items < 1) || (items > 1)) {
2336       SWIG_croak("Usage: fsync(fd);");
2337     }
2338     {
2339       IO *io = NULL;
2340       PerlIO *pio = NULL;
2341       int fd = -1;
2342       
2343       if (SvIOK(ST(0))) {
2344         /* plain old integer */
2345         arg1 = SvIV(ST(0));
2346       } else {
2347         /* try extracting as filehandle */
2348         
2349         /* note: sv_2io may call die() */
2350         io = sv_2io(ST(0));
2351         if (io) {
2352           pio = IoIFP(io);
2353         }
2354         if (pio) {
2355           fd = PerlIO_fileno(pio);
2356         }
2357         if (fd >= 0) {
2358           arg1 = fd;
2359         } else {
2360           SWIG_exception(SWIG_TypeError, "Expected integer file descriptor "
2361             "or file handle for argument 1");
2362         }
2363       }
2364     }
2365     result = (int)fsync(arg1);
2366     {
2367       SV *for_stack;
2368       SP += argvi; PUTBACK;
2369       for_stack = sv_2mortal(amglue_newSVi64(result));
2370       SPAGAIN; SP -= argvi;
2371       ST(argvi) = for_stack;
2372       argvi++;
2373     }
2374     
2375     XSRETURN(argvi);
2376   fail:
2377     
2378     SWIG_croak_null();
2379   }
2380 }
2381
2382
2383 XS(_wrap_set_blocking) {
2384   {
2385     int arg1 ;
2386     gboolean arg2 ;
2387     int argvi = 0;
2388     int result;
2389     dXSARGS;
2390     
2391     if ((items < 2) || (items > 2)) {
2392       SWIG_croak("Usage: set_blocking(fd,blocking);");
2393     }
2394     {
2395       IO *io = NULL;
2396       PerlIO *pio = NULL;
2397       int fd = -1;
2398       
2399       if (SvIOK(ST(0))) {
2400         /* plain old integer */
2401         arg1 = SvIV(ST(0));
2402       } else {
2403         /* try extracting as filehandle */
2404         
2405         /* note: sv_2io may call die() */
2406         io = sv_2io(ST(0));
2407         if (io) {
2408           pio = IoIFP(io);
2409         }
2410         if (pio) {
2411           fd = PerlIO_fileno(pio);
2412         }
2413         if (fd >= 0) {
2414           arg1 = fd;
2415         } else {
2416           SWIG_exception(SWIG_TypeError, "Expected integer file descriptor "
2417             "or file handle for argument 1");
2418         }
2419       }
2420     }
2421     {
2422       arg2 = SvTRUE(ST(1));
2423     }
2424     result = (int)set_blocking(arg1,arg2);
2425     {
2426       SV *for_stack;
2427       SP += argvi; PUTBACK;
2428       for_stack = sv_2mortal(amglue_newSVi64(result));
2429       SPAGAIN; SP -= argvi;
2430       ST(argvi) = for_stack;
2431       argvi++;
2432     }
2433     
2434     
2435     XSRETURN(argvi);
2436   fail:
2437     
2438     
2439     SWIG_croak_null();
2440   }
2441 }
2442
2443
2444 XS(_wrap_new_file_lock) {
2445   {
2446     char *arg1 = (char *) 0 ;
2447     int res1 ;
2448     char *buf1 = 0 ;
2449     int alloc1 = 0 ;
2450     int argvi = 0;
2451     file_lock *result = 0 ;
2452     dXSARGS;
2453     
2454     if ((items < 1) || (items > 1)) {
2455       SWIG_croak("Usage: new_file_lock(filename);");
2456     }
2457     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
2458     if (!SWIG_IsOK(res1)) {
2459       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_file_lock" "', argument " "1"" of type '" "char const *""'");
2460     }
2461     arg1 = (char *)(buf1);
2462     result = (file_lock *)new_file_lock((char const *)arg1);
2463     ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_file_lock, SWIG_OWNER | SWIG_SHADOW); argvi++ ;
2464     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2465     XSRETURN(argvi);
2466   fail:
2467     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
2468     SWIG_croak_null();
2469   }
2470 }
2471
2472
2473 XS(_wrap_file_lock_lock) {
2474   {
2475     file_lock *arg1 = (file_lock *) 0 ;
2476     void *argp1 = 0 ;
2477     int res1 = 0 ;
2478     int argvi = 0;
2479     int result;
2480     dXSARGS;
2481     
2482     if ((items < 1) || (items > 1)) {
2483       SWIG_croak("Usage: file_lock_lock(self);");
2484     }
2485     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2486     if (!SWIG_IsOK(res1)) {
2487       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_lock" "', argument " "1"" of type '" "file_lock *""'"); 
2488     }
2489     arg1 = (file_lock *)(argp1);
2490     result = (int)file_lock_lock(arg1);
2491     {
2492       SV *for_stack;
2493       SP += argvi; PUTBACK;
2494       for_stack = sv_2mortal(amglue_newSVi64(result));
2495       SPAGAIN; SP -= argvi;
2496       ST(argvi) = for_stack;
2497       argvi++;
2498     }
2499     
2500     XSRETURN(argvi);
2501   fail:
2502     
2503     SWIG_croak_null();
2504   }
2505 }
2506
2507
2508 XS(_wrap_file_lock_lock_wr) {
2509   {
2510     file_lock *arg1 = (file_lock *) 0 ;
2511     void *argp1 = 0 ;
2512     int res1 = 0 ;
2513     int argvi = 0;
2514     int result;
2515     dXSARGS;
2516     
2517     if ((items < 1) || (items > 1)) {
2518       SWIG_croak("Usage: file_lock_lock_wr(self);");
2519     }
2520     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2521     if (!SWIG_IsOK(res1)) {
2522       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_lock_wr" "', argument " "1"" of type '" "file_lock *""'"); 
2523     }
2524     arg1 = (file_lock *)(argp1);
2525     result = (int)file_lock_lock_wr(arg1);
2526     {
2527       SV *for_stack;
2528       SP += argvi; PUTBACK;
2529       for_stack = sv_2mortal(amglue_newSVi64(result));
2530       SPAGAIN; SP -= argvi;
2531       ST(argvi) = for_stack;
2532       argvi++;
2533     }
2534     
2535     XSRETURN(argvi);
2536   fail:
2537     
2538     SWIG_croak_null();
2539   }
2540 }
2541
2542
2543 XS(_wrap_file_lock_lock_rd) {
2544   {
2545     file_lock *arg1 = (file_lock *) 0 ;
2546     void *argp1 = 0 ;
2547     int res1 = 0 ;
2548     int argvi = 0;
2549     int result;
2550     dXSARGS;
2551     
2552     if ((items < 1) || (items > 1)) {
2553       SWIG_croak("Usage: file_lock_lock_rd(self);");
2554     }
2555     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2556     if (!SWIG_IsOK(res1)) {
2557       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_lock_rd" "', argument " "1"" of type '" "file_lock *""'"); 
2558     }
2559     arg1 = (file_lock *)(argp1);
2560     result = (int)file_lock_lock_rd(arg1);
2561     {
2562       SV *for_stack;
2563       SP += argvi; PUTBACK;
2564       for_stack = sv_2mortal(amglue_newSVi64(result));
2565       SPAGAIN; SP -= argvi;
2566       ST(argvi) = for_stack;
2567       argvi++;
2568     }
2569     
2570     XSRETURN(argvi);
2571   fail:
2572     
2573     SWIG_croak_null();
2574   }
2575 }
2576
2577
2578 XS(_wrap_file_lock_unlock) {
2579   {
2580     file_lock *arg1 = (file_lock *) 0 ;
2581     void *argp1 = 0 ;
2582     int res1 = 0 ;
2583     int argvi = 0;
2584     int result;
2585     dXSARGS;
2586     
2587     if ((items < 1) || (items > 1)) {
2588       SWIG_croak("Usage: file_lock_unlock(self);");
2589     }
2590     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2591     if (!SWIG_IsOK(res1)) {
2592       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_unlock" "', argument " "1"" of type '" "file_lock *""'"); 
2593     }
2594     arg1 = (file_lock *)(argp1);
2595     result = (int)file_lock_unlock(arg1);
2596     {
2597       SV *for_stack;
2598       SP += argvi; PUTBACK;
2599       for_stack = sv_2mortal(amglue_newSVi64(result));
2600       SPAGAIN; SP -= argvi;
2601       ST(argvi) = for_stack;
2602       argvi++;
2603     }
2604     
2605     XSRETURN(argvi);
2606   fail:
2607     
2608     SWIG_croak_null();
2609   }
2610 }
2611
2612
2613 XS(_wrap_file_lock_locked) {
2614   {
2615     file_lock *arg1 = (file_lock *) 0 ;
2616     void *argp1 = 0 ;
2617     int res1 = 0 ;
2618     int argvi = 0;
2619     int result;
2620     dXSARGS;
2621     
2622     if ((items < 1) || (items > 1)) {
2623       SWIG_croak("Usage: file_lock_locked(self);");
2624     }
2625     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2626     if (!SWIG_IsOK(res1)) {
2627       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_locked" "', argument " "1"" of type '" "file_lock *""'"); 
2628     }
2629     arg1 = (file_lock *)(argp1);
2630     result = (int)file_lock_locked(arg1);
2631     {
2632       SV *for_stack;
2633       SP += argvi; PUTBACK;
2634       for_stack = sv_2mortal(amglue_newSVi64(result));
2635       SPAGAIN; SP -= argvi;
2636       ST(argvi) = for_stack;
2637       argvi++;
2638     }
2639     
2640     XSRETURN(argvi);
2641   fail:
2642     
2643     SWIG_croak_null();
2644   }
2645 }
2646
2647
2648 XS(_wrap_file_lock_write) {
2649   {
2650     file_lock *arg1 = (file_lock *) 0 ;
2651     char *arg2 = (char *) 0 ;
2652     size_t arg3 ;
2653     void *argp1 = 0 ;
2654     int res1 = 0 ;
2655     int argvi = 0;
2656     int result;
2657     dXSARGS;
2658     
2659     if ((items < 2) || (items > 2)) {
2660       SWIG_croak("Usage: file_lock_write(self,data,len);");
2661     }
2662     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2663     if (!SWIG_IsOK(res1)) {
2664       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_write" "', argument " "1"" of type '" "file_lock *""'"); 
2665     }
2666     arg1 = (file_lock *)(argp1);
2667     {
2668       arg2 = SvPV(ST(1), arg3);
2669     }
2670     result = (int)file_lock_write(arg1,(char const *)arg2,arg3);
2671     {
2672       SV *for_stack;
2673       SP += argvi; PUTBACK;
2674       for_stack = sv_2mortal(amglue_newSVi64(result));
2675       SPAGAIN; SP -= argvi;
2676       ST(argvi) = for_stack;
2677       argvi++;
2678     }
2679     
2680     
2681     XSRETURN(argvi);
2682   fail:
2683     
2684     
2685     SWIG_croak_null();
2686   }
2687 }
2688
2689
2690 XS(_wrap_file_lock_data) {
2691   {
2692     file_lock *arg1 = (file_lock *) 0 ;
2693     void *argp1 = 0 ;
2694     int res1 = 0 ;
2695     int argvi = 0;
2696     SV *result = 0 ;
2697     dXSARGS;
2698     
2699     if ((items < 1) || (items > 1)) {
2700       SWIG_croak("Usage: file_lock_data(self);");
2701     }
2702     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, 0 |  0 );
2703     if (!SWIG_IsOK(res1)) {
2704       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "file_lock_data" "', argument " "1"" of type '" "file_lock *""'"); 
2705     }
2706     arg1 = (file_lock *)(argp1);
2707     result = (SV *)file_lock_data(arg1);
2708     {
2709       ST(argvi) = result; argvi++; 
2710     }
2711     
2712     XSRETURN(argvi);
2713   fail:
2714     
2715     SWIG_croak_null();
2716   }
2717 }
2718
2719
2720 XS(_wrap_delete_file_lock) {
2721   {
2722     file_lock *arg1 = (file_lock *) 0 ;
2723     void *argp1 = 0 ;
2724     int res1 = 0 ;
2725     int argvi = 0;
2726     dXSARGS;
2727     
2728     if ((items < 1) || (items > 1)) {
2729       SWIG_croak("Usage: delete_file_lock(self);");
2730     }
2731     res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_file_lock, SWIG_POINTER_DISOWN |  0 );
2732     if (!SWIG_IsOK(res1)) {
2733       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_file_lock" "', argument " "1"" of type '" "file_lock *""'"); 
2734     }
2735     arg1 = (file_lock *)(argp1);
2736     free((char *) arg1);
2737     ST(argvi) = sv_newmortal();
2738     
2739     XSRETURN(argvi);
2740   fail:
2741     
2742     SWIG_croak_null();
2743   }
2744 }
2745
2746
2747 XS(_wrap_weaken_ref) {
2748   {
2749     SV *arg1 = (SV *) 0 ;
2750     int argvi = 0;
2751     dXSARGS;
2752     
2753     if ((items < 1) || (items > 1)) {
2754       SWIG_croak("Usage: weaken_ref(rv);");
2755     }
2756     arg1 = ST(0);
2757     weaken_ref(arg1);
2758     ST(argvi) = sv_newmortal();
2759     
2760     XSRETURN(argvi);
2761   fail:
2762     
2763     SWIG_croak_null();
2764   }
2765 }
2766
2767
2768 XS(_wrap_gettimeofday) {
2769   {
2770     int argvi = 0;
2771     guint64 result;
2772     dXSARGS;
2773     
2774     if ((items < 0) || (items > 0)) {
2775       SWIG_croak("Usage: gettimeofday();");
2776     }
2777     result = gettimeofday_for_perl();
2778     {
2779       SV *for_stack;
2780       SP += argvi; PUTBACK;
2781       for_stack = sv_2mortal(amglue_newSVu64(result));
2782       SPAGAIN; SP -= argvi;
2783       ST(argvi) = for_stack;
2784       argvi++;
2785     }
2786     XSRETURN(argvi);
2787   fail:
2788     SWIG_croak_null();
2789   }
2790 }
2791
2792
2793 XS(_wrap_openbsd_fd_inform) {
2794   {
2795     int argvi = 0;
2796     dXSARGS;
2797     
2798     if ((items < 0) || (items > 0)) {
2799       SWIG_croak("Usage: openbsd_fd_inform();");
2800     }
2801     openbsd_fd_inform();
2802     ST(argvi) = sv_newmortal();
2803     XSRETURN(argvi);
2804   fail:
2805     SWIG_croak_null();
2806   }
2807 }
2808
2809
2810 XS(_wrap_stream_server) {
2811   {
2812     int arg1 ;
2813     in_port_t *arg2 = (in_port_t *) 0 ;
2814     size_t arg3 ;
2815     size_t arg4 ;
2816     gboolean arg5 ;
2817     in_port_t port2 ;
2818     int argvi = 0;
2819     socketfd result;
2820     dXSARGS;
2821     
2822     {
2823       arg2 = &port2;
2824     }
2825     if ((items < 4) || (items > 4)) {
2826       SWIG_croak("Usage: stream_server(family,sendsize,recvsize,privileged);");
2827     }
2828     {
2829       if (sizeof(signed int) == 1) {
2830         arg1 = amglue_SvI8(ST(0));
2831       } else if (sizeof(signed int) == 2) {
2832         arg1 = amglue_SvI16(ST(0));
2833       } else if (sizeof(signed int) == 4) {
2834         arg1 = amglue_SvI32(ST(0));
2835       } else if (sizeof(signed int) == 8) {
2836         arg1 = amglue_SvI64(ST(0));
2837       } else {
2838         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
2839       }
2840     }
2841     {
2842       if (sizeof(size_t) == 1) {
2843         arg3 = amglue_SvU8(ST(1));
2844       } else if (sizeof(size_t) == 2) {
2845         arg3 = amglue_SvU16(ST(1));
2846       } else if (sizeof(size_t) == 4) {
2847         arg3 = amglue_SvU32(ST(1));
2848       } else if (sizeof(size_t) == 8) {
2849         arg3 = amglue_SvU64(ST(1));
2850       } else {
2851         croak("Unexpected size_t >64 bits?"); /* should be optimized out unless sizeof(size_t) > 8 */
2852       }
2853     }
2854     {
2855       if (sizeof(size_t) == 1) {
2856         arg4 = amglue_SvU8(ST(2));
2857       } else if (sizeof(size_t) == 2) {
2858         arg4 = amglue_SvU16(ST(2));
2859       } else if (sizeof(size_t) == 4) {
2860         arg4 = amglue_SvU32(ST(2));
2861       } else if (sizeof(size_t) == 8) {
2862         arg4 = amglue_SvU64(ST(2));
2863       } else {
2864         croak("Unexpected size_t >64 bits?"); /* should be optimized out unless sizeof(size_t) > 8 */
2865       }
2866     }
2867     {
2868       arg5 = SvTRUE(ST(3));
2869     }
2870     result = stream_server(arg1,arg2,arg3,arg4,arg5);
2871     {
2872       ST(argvi) = sv_2mortal(newSViv(result));
2873       argvi++;
2874     }
2875     {
2876       ST(argvi) = sv_2mortal(newSViv(*arg2));
2877       argvi++;
2878     }
2879     
2880     
2881     
2882     
2883     
2884     XSRETURN(argvi);
2885   fail:
2886     
2887     
2888     
2889     
2890     
2891     SWIG_croak_null();
2892   }
2893 }
2894
2895
2896 XS(_wrap_stream_accept) {
2897   {
2898     int arg1 ;
2899     int arg2 ;
2900     size_t arg3 ;
2901     size_t arg4 ;
2902     int argvi = 0;
2903     socketfd result;
2904     dXSARGS;
2905     
2906     if ((items < 4) || (items > 4)) {
2907       SWIG_croak("Usage: stream_accept(fd,timeout,sendsize,recvsize);");
2908     }
2909     {
2910       IO *io = NULL;
2911       PerlIO *pio = NULL;
2912       int fd = -1;
2913       
2914       if (SvIOK(ST(0))) {
2915         /* plain old integer */
2916         arg1 = SvIV(ST(0));
2917       } else {
2918         /* try extracting as filehandle */
2919         
2920         /* note: sv_2io may call die() */
2921         io = sv_2io(ST(0));
2922         if (io) {
2923           pio = IoIFP(io);
2924         }
2925         if (pio) {
2926           fd = PerlIO_fileno(pio);
2927         }
2928         if (fd >= 0) {
2929           arg1 = fd;
2930         } else {
2931           SWIG_exception(SWIG_TypeError, "Expected integer file descriptor "
2932             "or file handle for argument 1");
2933         }
2934       }
2935     }
2936     {
2937       if (sizeof(signed int) == 1) {
2938         arg2 = amglue_SvI8(ST(1));
2939       } else if (sizeof(signed int) == 2) {
2940         arg2 = amglue_SvI16(ST(1));
2941       } else if (sizeof(signed int) == 4) {
2942         arg2 = amglue_SvI32(ST(1));
2943       } else if (sizeof(signed int) == 8) {
2944         arg2 = amglue_SvI64(ST(1));
2945       } else {
2946         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
2947       }
2948     }
2949     {
2950       if (sizeof(size_t) == 1) {
2951         arg3 = amglue_SvU8(ST(2));
2952       } else if (sizeof(size_t) == 2) {
2953         arg3 = amglue_SvU16(ST(2));
2954       } else if (sizeof(size_t) == 4) {
2955         arg3 = amglue_SvU32(ST(2));
2956       } else if (sizeof(size_t) == 8) {
2957         arg3 = amglue_SvU64(ST(2));
2958       } else {
2959         croak("Unexpected size_t >64 bits?"); /* should be optimized out unless sizeof(size_t) > 8 */
2960       }
2961     }
2962     {
2963       if (sizeof(size_t) == 1) {
2964         arg4 = amglue_SvU8(ST(3));
2965       } else if (sizeof(size_t) == 2) {
2966         arg4 = amglue_SvU16(ST(3));
2967       } else if (sizeof(size_t) == 4) {
2968         arg4 = amglue_SvU32(ST(3));
2969       } else if (sizeof(size_t) == 8) {
2970         arg4 = amglue_SvU64(ST(3));
2971       } else {
2972         croak("Unexpected size_t >64 bits?"); /* should be optimized out unless sizeof(size_t) > 8 */
2973       }
2974     }
2975     result = stream_accept(arg1,arg2,arg3,arg4);
2976     {
2977       ST(argvi) = sv_2mortal(newSViv(result));
2978       argvi++;
2979     }
2980     
2981     
2982     
2983     
2984     XSRETURN(argvi);
2985   fail:
2986     
2987     
2988     
2989     
2990     SWIG_croak_null();
2991   }
2992 }
2993
2994
2995 XS(_wrap_check_security) {
2996   {
2997     int arg1 ;
2998     char *arg2 = (char *) 0 ;
2999     int res2 ;
3000     char *buf2 = 0 ;
3001     int alloc2 = 0 ;
3002     int argvi = 0;
3003     char *result = 0 ;
3004     dXSARGS;
3005     
3006     if ((items < 2) || (items > 2)) {
3007       SWIG_croak("Usage: check_security(fd,userstr);");
3008     }
3009     {
3010       IO *io = NULL;
3011       PerlIO *pio = NULL;
3012       int fd = -1;
3013       
3014       if (SvIOK(ST(0))) {
3015         /* plain old integer */
3016         arg1 = SvIV(ST(0));
3017       } else {
3018         /* try extracting as filehandle */
3019         
3020         /* note: sv_2io may call die() */
3021         io = sv_2io(ST(0));
3022         if (io) {
3023           pio = IoIFP(io);
3024         }
3025         if (pio) {
3026           fd = PerlIO_fileno(pio);
3027         }
3028         if (fd >= 0) {
3029           arg1 = fd;
3030         } else {
3031           SWIG_exception(SWIG_TypeError, "Expected integer file descriptor "
3032             "or file handle for argument 1");
3033         }
3034       }
3035     }
3036     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
3037     if (!SWIG_IsOK(res2)) {
3038       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "check_security" "', argument " "2"" of type '" "char *""'");
3039     }
3040     arg2 = (char *)(buf2);
3041     result = (char *)check_security_fd(arg1,arg2);
3042     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
3043     
3044     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3045     free((char*)result);
3046     XSRETURN(argvi);
3047   fail:
3048     
3049     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3050     SWIG_croak_null();
3051   }
3052 }
3053
3054
3055 XS(_wrap_match_host) {
3056   {
3057     char *arg1 = (char *) 0 ;
3058     char *arg2 = (char *) 0 ;
3059     int res1 ;
3060     char *buf1 = 0 ;
3061     int alloc1 = 0 ;
3062     int res2 ;
3063     char *buf2 = 0 ;
3064     int alloc2 = 0 ;
3065     int argvi = 0;
3066     gboolean result;
3067     dXSARGS;
3068     
3069     if ((items < 2) || (items > 2)) {
3070       SWIG_croak("Usage: match_host(pat,value);");
3071     }
3072     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
3073     if (!SWIG_IsOK(res1)) {
3074       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "match_host" "', argument " "1"" of type '" "char *""'");
3075     }
3076     arg1 = (char *)(buf1);
3077     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
3078     if (!SWIG_IsOK(res2)) {
3079       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "match_host" "', argument " "2"" of type '" "char *""'");
3080     }
3081     arg2 = (char *)(buf2);
3082     result = (gboolean)match_host(arg1,arg2);
3083     {
3084       if (result)
3085       ST(argvi) = &PL_sv_yes;
3086       else
3087       ST(argvi) = &PL_sv_no;
3088       argvi++;
3089     }
3090     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3091     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3092     XSRETURN(argvi);
3093   fail:
3094     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3095     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3096     SWIG_croak_null();
3097   }
3098 }
3099
3100
3101 XS(_wrap_match_disk) {
3102   {
3103     char *arg1 = (char *) 0 ;
3104     char *arg2 = (char *) 0 ;
3105     int res1 ;
3106     char *buf1 = 0 ;
3107     int alloc1 = 0 ;
3108     int res2 ;
3109     char *buf2 = 0 ;
3110     int alloc2 = 0 ;
3111     int argvi = 0;
3112     gboolean result;
3113     dXSARGS;
3114     
3115     if ((items < 2) || (items > 2)) {
3116       SWIG_croak("Usage: match_disk(pat,value);");
3117     }
3118     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
3119     if (!SWIG_IsOK(res1)) {
3120       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "match_disk" "', argument " "1"" of type '" "char *""'");
3121     }
3122     arg1 = (char *)(buf1);
3123     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
3124     if (!SWIG_IsOK(res2)) {
3125       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "match_disk" "', argument " "2"" of type '" "char *""'");
3126     }
3127     arg2 = (char *)(buf2);
3128     result = (gboolean)match_disk(arg1,arg2);
3129     {
3130       if (result)
3131       ST(argvi) = &PL_sv_yes;
3132       else
3133       ST(argvi) = &PL_sv_no;
3134       argvi++;
3135     }
3136     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3137     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3138     XSRETURN(argvi);
3139   fail:
3140     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3141     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3142     SWIG_croak_null();
3143   }
3144 }
3145
3146
3147 XS(_wrap_match_datestamp) {
3148   {
3149     char *arg1 = (char *) 0 ;
3150     char *arg2 = (char *) 0 ;
3151     int res1 ;
3152     char *buf1 = 0 ;
3153     int alloc1 = 0 ;
3154     int res2 ;
3155     char *buf2 = 0 ;
3156     int alloc2 = 0 ;
3157     int argvi = 0;
3158     gboolean result;
3159     dXSARGS;
3160     
3161     if ((items < 2) || (items > 2)) {
3162       SWIG_croak("Usage: match_datestamp(pat,value);");
3163     }
3164     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
3165     if (!SWIG_IsOK(res1)) {
3166       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "match_datestamp" "', argument " "1"" of type '" "char *""'");
3167     }
3168     arg1 = (char *)(buf1);
3169     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
3170     if (!SWIG_IsOK(res2)) {
3171       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "match_datestamp" "', argument " "2"" of type '" "char *""'");
3172     }
3173     arg2 = (char *)(buf2);
3174     result = (gboolean)match_datestamp(arg1,arg2);
3175     {
3176       if (result)
3177       ST(argvi) = &PL_sv_yes;
3178       else
3179       ST(argvi) = &PL_sv_no;
3180       argvi++;
3181     }
3182     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3183     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3184     XSRETURN(argvi);
3185   fail:
3186     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3187     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3188     SWIG_croak_null();
3189   }
3190 }
3191
3192
3193 XS(_wrap_match_level) {
3194   {
3195     char *arg1 = (char *) 0 ;
3196     char *arg2 = (char *) 0 ;
3197     int res1 ;
3198     char *buf1 = 0 ;
3199     int alloc1 = 0 ;
3200     int res2 ;
3201     char *buf2 = 0 ;
3202     int alloc2 = 0 ;
3203     int argvi = 0;
3204     gboolean result;
3205     dXSARGS;
3206     
3207     if ((items < 2) || (items > 2)) {
3208       SWIG_croak("Usage: match_level(pat,value);");
3209     }
3210     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
3211     if (!SWIG_IsOK(res1)) {
3212       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "match_level" "', argument " "1"" of type '" "char *""'");
3213     }
3214     arg1 = (char *)(buf1);
3215     res2 = SWIG_AsCharPtrAndSize(ST(1), &buf2, NULL, &alloc2);
3216     if (!SWIG_IsOK(res2)) {
3217       SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "match_level" "', argument " "2"" of type '" "char *""'");
3218     }
3219     arg2 = (char *)(buf2);
3220     result = (gboolean)match_level(arg1,arg2);
3221     {
3222       if (result)
3223       ST(argvi) = &PL_sv_yes;
3224       else
3225       ST(argvi) = &PL_sv_no;
3226       argvi++;
3227     }
3228     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3229     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3230     XSRETURN(argvi);
3231   fail:
3232     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3233     if (alloc2 == SWIG_NEWOBJ) free((char*)buf2);
3234     SWIG_croak_null();
3235   }
3236 }
3237
3238
3239 XS(_wrap_set_pname) {
3240   {
3241     char *arg1 = (char *) 0 ;
3242     int res1 ;
3243     char *buf1 = 0 ;
3244     int alloc1 = 0 ;
3245     int argvi = 0;
3246     dXSARGS;
3247     
3248     if ((items < 1) || (items > 1)) {
3249       SWIG_croak("Usage: set_pname(name);");
3250     }
3251     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
3252     if (!SWIG_IsOK(res1)) {
3253       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "set_pname" "', argument " "1"" of type '" "char *""'");
3254     }
3255     arg1 = (char *)(buf1);
3256     set_pname(arg1);
3257     ST(argvi) = sv_newmortal();
3258     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3259     XSRETURN(argvi);
3260   fail:
3261     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3262     SWIG_croak_null();
3263   }
3264 }
3265
3266
3267 XS(_wrap_get_pname) {
3268   {
3269     int argvi = 0;
3270     char *result = 0 ;
3271     dXSARGS;
3272     
3273     if ((items < 0) || (items > 0)) {
3274       SWIG_croak("Usage: get_pname();");
3275     }
3276     result = (char *)get_pname();
3277     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
3278     XSRETURN(argvi);
3279   fail:
3280     SWIG_croak_null();
3281   }
3282 }
3283
3284
3285 XS(_wrap_set_ptype) {
3286   {
3287     char *arg1 = (char *) 0 ;
3288     int res1 ;
3289     char *buf1 = 0 ;
3290     int alloc1 = 0 ;
3291     int argvi = 0;
3292     dXSARGS;
3293     
3294     if ((items < 1) || (items > 1)) {
3295       SWIG_croak("Usage: set_ptype(type);");
3296     }
3297     res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1);
3298     if (!SWIG_IsOK(res1)) {
3299       SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "set_ptype" "', argument " "1"" of type '" "char *""'");
3300     }
3301     arg1 = (char *)(buf1);
3302     set_ptype(arg1);
3303     ST(argvi) = sv_newmortal();
3304     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3305     XSRETURN(argvi);
3306   fail:
3307     if (alloc1 == SWIG_NEWOBJ) free((char*)buf1);
3308     SWIG_croak_null();
3309   }
3310 }
3311
3312
3313 XS(_wrap_get_ptype) {
3314   {
3315     int argvi = 0;
3316     char *result = 0 ;
3317     dXSARGS;
3318     
3319     if ((items < 0) || (items > 0)) {
3320       SWIG_croak("Usage: get_ptype();");
3321     }
3322     result = (char *)get_ptype();
3323     ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ;
3324     XSRETURN(argvi);
3325   fail:
3326     SWIG_croak_null();
3327   }
3328 }
3329
3330
3331 XS(_wrap_set_pcontext) {
3332   {
3333     pcontext_t arg1 ;
3334     int argvi = 0;
3335     dXSARGS;
3336     
3337     if ((items < 1) || (items > 1)) {
3338       SWIG_croak("Usage: set_pcontext(context);");
3339     }
3340     {
3341       if (sizeof(signed int) == 1) {
3342         arg1 = amglue_SvI8(ST(0));
3343       } else if (sizeof(signed int) == 2) {
3344         arg1 = amglue_SvI16(ST(0));
3345       } else if (sizeof(signed int) == 4) {
3346         arg1 = amglue_SvI32(ST(0));
3347       } else if (sizeof(signed int) == 8) {
3348         arg1 = amglue_SvI64(ST(0));
3349       } else {
3350         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
3351       }
3352     }
3353     set_pcontext(arg1);
3354     ST(argvi) = sv_newmortal();
3355     
3356     XSRETURN(argvi);
3357   fail:
3358     
3359     SWIG_croak_null();
3360   }
3361 }
3362
3363
3364 XS(_wrap_get_pcontext) {
3365   {
3366     int argvi = 0;
3367     pcontext_t result;
3368     dXSARGS;
3369     
3370     if ((items < 0) || (items > 0)) {
3371       SWIG_croak("Usage: get_pcontext();");
3372     }
3373     result = (pcontext_t)get_pcontext();
3374     {
3375       SV *for_stack;
3376       SP += argvi; PUTBACK;
3377       for_stack = sv_2mortal(amglue_newSVi64(result));
3378       SPAGAIN; SP -= argvi;
3379       ST(argvi) = for_stack;
3380       argvi++;
3381     }
3382     XSRETURN(argvi);
3383   fail:
3384     SWIG_croak_null();
3385   }
3386 }
3387
3388
3389 XS(_wrap_safe_cd) {
3390   {
3391     int argvi = 0;
3392     dXSARGS;
3393     
3394     if ((items < 0) || (items > 0)) {
3395       SWIG_croak("Usage: safe_cd();");
3396     }
3397     safe_cd();
3398     ST(argvi) = sv_newmortal();
3399     XSRETURN(argvi);
3400   fail:
3401     SWIG_croak_null();
3402   }
3403 }
3404
3405
3406 XS(_wrap_check_running_as) {
3407   {
3408     running_as_flags arg1 ;
3409     int argvi = 0;
3410     dXSARGS;
3411     
3412     if ((items < 1) || (items > 1)) {
3413       SWIG_croak("Usage: check_running_as(who);");
3414     }
3415     {
3416       if (sizeof(signed int) == 1) {
3417         arg1 = amglue_SvI8(ST(0));
3418       } else if (sizeof(signed int) == 2) {
3419         arg1 = amglue_SvI16(ST(0));
3420       } else if (sizeof(signed int) == 4) {
3421         arg1 = amglue_SvI32(ST(0));
3422       } else if (sizeof(signed int) == 8) {
3423         arg1 = amglue_SvI64(ST(0));
3424       } else {
3425         g_critical("Unexpected signed int >64 bits?"); /* should be optimized out unless sizeof(signed int) > 8 */
3426       }
3427     }
3428     check_running_as(arg1);
3429     ST(argvi) = sv_newmortal();
3430     
3431     XSRETURN(argvi);
3432   fail:
3433     
3434     SWIG_croak_null();
3435   }
3436 }
3437
3438
3439
3440 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
3441
3442 static swig_type_info _swigt__p_GPtrArray = {"_p_GPtrArray", "GPtrArray *", 0, 0, (void*)0, 0};
3443 static swig_type_info _swigt__p_char = {"_p_char", "gchar *|char *", 0, 0, (void*)0, 0};
3444 static swig_type_info _swigt__p_double = {"_p_double", "double *|gdouble *", 0, 0, (void*)0, 0};
3445 static swig_type_info _swigt__p_file_lock = {"_p_file_lock", "struct file_lock *|file_lock *", 0, 0, (void*)"Amanda::Util::file_lock", 0};
3446 static swig_type_info _swigt__p_float = {"_p_float", "float *|gfloat *", 0, 0, (void*)0, 0};
3447 static swig_type_info _swigt__p_fs_usage = {"_p_fs_usage", "struct fs_usage *", 0, 0, (void*)0, 0};
3448 static swig_type_info _swigt__p_in_port_t = {"_p_in_port_t", "in_port_t *", 0, 0, (void*)0, 0};
3449 static swig_type_info _swigt__p_int = {"_p_int", "int *|pcontext_t *|gboolean *|running_as_flags *", 0, 0, (void*)0, 0};
3450 static swig_type_info _swigt__p_unsigned_char = {"_p_unsigned_char", "guchar *|unsigned char *", 0, 0, (void*)0, 0};
3451
3452 static swig_type_info *swig_type_initial[] = {
3453   &_swigt__p_GPtrArray,
3454   &_swigt__p_char,
3455   &_swigt__p_double,
3456   &_swigt__p_file_lock,
3457   &_swigt__p_float,
3458   &_swigt__p_fs_usage,
3459   &_swigt__p_in_port_t,
3460   &_swigt__p_int,
3461   &_swigt__p_unsigned_char,
3462 };
3463
3464 static swig_cast_info _swigc__p_GPtrArray[] = {  {&_swigt__p_GPtrArray, 0, 0, 0},{0, 0, 0, 0}};
3465 static swig_cast_info _swigc__p_char[] = {  {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
3466 static swig_cast_info _swigc__p_double[] = {  {&_swigt__p_double, 0, 0, 0},{0, 0, 0, 0}};
3467 static swig_cast_info _swigc__p_file_lock[] = {  {&_swigt__p_file_lock, 0, 0, 0},{0, 0, 0, 0}};
3468 static swig_cast_info _swigc__p_float[] = {  {&_swigt__p_float, 0, 0, 0},{0, 0, 0, 0}};
3469 static swig_cast_info _swigc__p_fs_usage[] = {  {&_swigt__p_fs_usage, 0, 0, 0},{0, 0, 0, 0}};
3470 static swig_cast_info _swigc__p_in_port_t[] = {  {&_swigt__p_in_port_t, 0, 0, 0},{0, 0, 0, 0}};
3471 static swig_cast_info _swigc__p_int[] = {  {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
3472 static swig_cast_info _swigc__p_unsigned_char[] = {  {&_swigt__p_unsigned_char, 0, 0, 0},{0, 0, 0, 0}};
3473
3474 static swig_cast_info *swig_cast_initial[] = {
3475   _swigc__p_GPtrArray,
3476   _swigc__p_char,
3477   _swigc__p_double,
3478   _swigc__p_file_lock,
3479   _swigc__p_float,
3480   _swigc__p_fs_usage,
3481   _swigc__p_in_port_t,
3482   _swigc__p_int,
3483   _swigc__p_unsigned_char,
3484 };
3485
3486
3487 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
3488
3489 static swig_constant_info swig_constants[] = {
3490 {0,0,0,0,0,0}
3491 };
3492 #ifdef __cplusplus
3493 }
3494 #endif
3495 static swig_variable_info swig_variables[] = {
3496 {0,0,0,0}
3497 };
3498 static swig_command_info swig_commands[] = {
3499 {"Amanda::Utilc::get_original_cwd", _wrap_get_original_cwd},
3500 {"Amanda::Utilc::hexencode", _wrap_hexencode},
3501 {"Amanda::Utilc::hexdecode", _wrap_hexdecode},
3502 {"Amanda::Utilc::sanitise_filename", _wrap_sanitise_filename},
3503 {"Amanda::Utilc::quote_string", _wrap_quote_string},
3504 {"Amanda::Utilc::unquote_string", _wrap_unquote_string},
3505 {"Amanda::Utilc::expand_braced_alternates", _wrap_expand_braced_alternates},
3506 {"Amanda::Utilc::collapse_braced_alternates", _wrap_collapse_braced_alternates},
3507 {"Amanda::Utilc::split_quoted_strings", _wrap_split_quoted_strings},
3508 {"Amanda::Utilc::get_fs_usage", _wrap_get_fs_usage},
3509 {"Amanda::Utilc::fsync", _wrap_fsync},
3510 {"Amanda::Utilc::set_blocking", _wrap_set_blocking},
3511 {"Amanda::Utilc::new_file_lock", _wrap_new_file_lock},
3512 {"Amanda::Utilc::file_lock_lock", _wrap_file_lock_lock},
3513 {"Amanda::Utilc::file_lock_lock_wr", _wrap_file_lock_lock_wr},
3514 {"Amanda::Utilc::file_lock_lock_rd", _wrap_file_lock_lock_rd},
3515 {"Amanda::Utilc::file_lock_unlock", _wrap_file_lock_unlock},
3516 {"Amanda::Utilc::file_lock_locked", _wrap_file_lock_locked},
3517 {"Amanda::Utilc::file_lock_write", _wrap_file_lock_write},
3518 {"Amanda::Utilc::file_lock_data", _wrap_file_lock_data},
3519 {"Amanda::Utilc::delete_file_lock", _wrap_delete_file_lock},
3520 {"Amanda::Utilc::weaken_ref", _wrap_weaken_ref},
3521 {"Amanda::Utilc::gettimeofday", _wrap_gettimeofday},
3522 {"Amanda::Utilc::openbsd_fd_inform", _wrap_openbsd_fd_inform},
3523 {"Amanda::Utilc::stream_server", _wrap_stream_server},
3524 {"Amanda::Utilc::stream_accept", _wrap_stream_accept},
3525 {"Amanda::Utilc::check_security", _wrap_check_security},
3526 {"Amanda::Utilc::match_host", _wrap_match_host},
3527 {"Amanda::Utilc::match_disk", _wrap_match_disk},
3528 {"Amanda::Utilc::match_datestamp", _wrap_match_datestamp},
3529 {"Amanda::Utilc::match_level", _wrap_match_level},
3530 {"Amanda::Utilc::set_pname", _wrap_set_pname},
3531 {"Amanda::Utilc::get_pname", _wrap_get_pname},
3532 {"Amanda::Utilc::set_ptype", _wrap_set_ptype},
3533 {"Amanda::Utilc::get_ptype", _wrap_get_ptype},
3534 {"Amanda::Utilc::set_pcontext", _wrap_set_pcontext},
3535 {"Amanda::Utilc::get_pcontext", _wrap_get_pcontext},
3536 {"Amanda::Utilc::safe_cd", _wrap_safe_cd},
3537 {"Amanda::Utilc::check_running_as", _wrap_check_running_as},
3538 {0,0}
3539 };
3540 /* -----------------------------------------------------------------------------
3541  * Type initialization:
3542  * This problem is tough by the requirement that no dynamic 
3543  * memory is used. Also, since swig_type_info structures store pointers to 
3544  * swig_cast_info structures and swig_cast_info structures store pointers back
3545  * to swig_type_info structures, we need some lookup code at initialization. 
3546  * The idea is that swig generates all the structures that are needed. 
3547  * The runtime then collects these partially filled structures. 
3548  * The SWIG_InitializeModule function takes these initial arrays out of 
3549  * swig_module, and does all the lookup, filling in the swig_module.types
3550  * array with the correct data and linking the correct swig_cast_info
3551  * structures together.
3552  *
3553  * The generated swig_type_info structures are assigned staticly to an initial 
3554  * array. We just loop through that array, and handle each type individually.
3555  * First we lookup if this type has been already loaded, and if so, use the
3556  * loaded structure instead of the generated one. Then we have to fill in the
3557  * cast linked list. The cast data is initially stored in something like a
3558  * two-dimensional array. Each row corresponds to a type (there are the same
3559  * number of rows as there are in the swig_type_initial array). Each entry in
3560  * a column is one of the swig_cast_info structures for that type.
3561  * The cast_initial array is actually an array of arrays, because each row has
3562  * a variable number of columns. So to actually build the cast linked list,
3563  * we find the array of casts associated with the type, and loop through it 
3564  * adding the casts to the list. The one last trick we need to do is making
3565  * sure the type pointer in the swig_cast_info struct is correct.
3566  *
3567  * First off, we lookup the cast->type name to see if it is already loaded. 
3568  * There are three cases to handle:
3569  *  1) If the cast->type has already been loaded AND the type we are adding
3570  *     casting info to has not been loaded (it is in this module), THEN we
3571  *     replace the cast->type pointer with the type pointer that has already
3572  *     been loaded.
3573  *  2) If BOTH types (the one we are adding casting info to, and the 
3574  *     cast->type) are loaded, THEN the cast info has already been loaded by
3575  *     the previous module so we just ignore it.
3576  *  3) Finally, if cast->type has not already been loaded, then we add that
3577  *     swig_cast_info to the linked list (because the cast->type) pointer will
3578  *     be correct.
3579  * ----------------------------------------------------------------------------- */
3580
3581 #ifdef __cplusplus
3582 extern "C" {
3583 #if 0
3584 } /* c-mode */
3585 #endif
3586 #endif
3587
3588 #if 0
3589 #define SWIGRUNTIME_DEBUG
3590 #endif
3591
3592
3593 SWIGRUNTIME void
3594 SWIG_InitializeModule(void *clientdata) {
3595   size_t i;
3596   swig_module_info *module_head, *iter;
3597   int found, init;
3598   
3599   clientdata = clientdata;
3600   
3601   /* check to see if the circular list has been setup, if not, set it up */
3602   if (swig_module.next==0) {
3603     /* Initialize the swig_module */
3604     swig_module.type_initial = swig_type_initial;
3605     swig_module.cast_initial = swig_cast_initial;
3606     swig_module.next = &swig_module;
3607     init = 1;
3608   } else {
3609     init = 0;
3610   }
3611   
3612   /* Try and load any already created modules */
3613   module_head = SWIG_GetModule(clientdata);
3614   if (!module_head) {
3615     /* This is the first module loaded for this interpreter */
3616     /* so set the swig module into the interpreter */
3617     SWIG_SetModule(clientdata, &swig_module);
3618     module_head = &swig_module;
3619   } else {
3620     /* the interpreter has loaded a SWIG module, but has it loaded this one? */
3621     found=0;
3622     iter=module_head;
3623     do {
3624       if (iter==&swig_module) {
3625         found=1;
3626         break;
3627       }
3628       iter=iter->next;
3629     } while (iter!= module_head);
3630     
3631     /* if the is found in the list, then all is done and we may leave */
3632     if (found) return;
3633     /* otherwise we must add out module into the list */
3634     swig_module.next = module_head->next;
3635     module_head->next = &swig_module;
3636   }
3637   
3638   /* When multiple interpeters are used, a module could have already been initialized in
3639        a different interpreter, but not yet have a pointer in this interpreter.
3640        In this case, we do not want to continue adding types... everything should be
3641        set up already */
3642   if (init == 0) return;
3643   
3644   /* Now work on filling in swig_module.types */
3645 #ifdef SWIGRUNTIME_DEBUG
3646   printf("SWIG_InitializeModule: size %d\n", swig_module.size);
3647 #endif
3648   for (i = 0; i < swig_module.size; ++i) {
3649     swig_type_info *type = 0;
3650     swig_type_info *ret;
3651     swig_cast_info *cast;
3652     
3653 #ifdef SWIGRUNTIME_DEBUG
3654     printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
3655 #endif
3656     
3657     /* if there is another module already loaded */
3658     if (swig_module.next != &swig_module) {
3659       type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
3660     }
3661     if (type) {
3662       /* Overwrite clientdata field */
3663 #ifdef SWIGRUNTIME_DEBUG
3664       printf("SWIG_InitializeModule: found type %s\n", type->name);
3665 #endif
3666       if (swig_module.type_initial[i]->clientdata) {
3667         type->clientdata = swig_module.type_initial[i]->clientdata;
3668 #ifdef SWIGRUNTIME_DEBUG
3669         printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
3670 #endif
3671       }
3672     } else {
3673       type = swig_module.type_initial[i];
3674     }
3675     
3676     /* Insert casting types */
3677     cast = swig_module.cast_initial[i];
3678     while (cast->type) {
3679       /* Don't need to add information already in the list */
3680       ret = 0;
3681 #ifdef SWIGRUNTIME_DEBUG
3682       printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
3683 #endif
3684       if (swig_module.next != &swig_module) {
3685         ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
3686 #ifdef SWIGRUNTIME_DEBUG
3687         if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
3688 #endif
3689       }
3690       if (ret) {
3691         if (type == swig_module.type_initial[i]) {
3692 #ifdef SWIGRUNTIME_DEBUG
3693           printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
3694 #endif
3695           cast->type = ret;
3696           ret = 0;
3697         } else {
3698           /* Check for casting already in the list */
3699           swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
3700 #ifdef SWIGRUNTIME_DEBUG
3701           if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
3702 #endif
3703           if (!ocast) ret = 0;
3704         }
3705       }
3706       
3707       if (!ret) {
3708 #ifdef SWIGRUNTIME_DEBUG
3709         printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
3710 #endif
3711         if (type->cast) {
3712           type->cast->prev = cast;
3713           cast->next = type->cast;
3714         }
3715         type->cast = cast;
3716       }
3717       cast++;
3718     }
3719     /* Set entry in modules->types array equal to the type */
3720     swig_module.types[i] = type;
3721   }
3722   swig_module.types[i] = 0;
3723   
3724 #ifdef SWIGRUNTIME_DEBUG
3725   printf("**** SWIG_InitializeModule: Cast List ******\n");
3726   for (i = 0; i < swig_module.size; ++i) {
3727     int j = 0;
3728     swig_cast_info *cast = swig_module.cast_initial[i];
3729     printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
3730     while (cast->type) {
3731       printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
3732       cast++;
3733       ++j;
3734     }
3735     printf("---- Total casts: %d\n",j);
3736   }
3737   printf("**** SWIG_InitializeModule: Cast List ******\n");
3738 #endif
3739 }
3740
3741 /* This function will propagate the clientdata field of type to
3742 * any new swig_type_info structures that have been added into the list
3743 * of equivalent types.  It is like calling
3744 * SWIG_TypeClientData(type, clientdata) a second time.
3745 */
3746 SWIGRUNTIME void
3747 SWIG_PropagateClientData(void) {
3748   size_t i;
3749   swig_cast_info *equiv;
3750   static int init_run = 0;
3751   
3752   if (init_run) return;
3753   init_run = 1;
3754   
3755   for (i = 0; i < swig_module.size; i++) {
3756     if (swig_module.types[i]->clientdata) {
3757       equiv = swig_module.types[i]->cast;
3758       while (equiv) {
3759         if (!equiv->converter) {
3760           if (equiv->type && !equiv->type->clientdata)
3761           SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
3762         }
3763         equiv = equiv->next;
3764       }
3765     }
3766   }
3767 }
3768
3769 #ifdef __cplusplus
3770 #if 0
3771 {
3772   /* c-mode */
3773 #endif
3774 }
3775 #endif
3776
3777
3778
3779 #ifdef __cplusplus
3780 extern "C"
3781 #endif
3782
3783 XS(SWIG_init) {
3784   dXSARGS;
3785   int i;
3786   
3787   SWIG_InitializeModule(0);
3788   
3789   /* Install commands */
3790   for (i = 0; swig_commands[i].name; i++) {
3791     newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
3792   }
3793   
3794   /* Install variables */
3795   for (i = 0; swig_variables[i].name; i++) {
3796     SV *sv;
3797     sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI);
3798     if (swig_variables[i].type) {
3799       SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
3800     } else {
3801       sv_setiv(sv,(IV) 0);
3802     }
3803     swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 
3804   }
3805   
3806   /* Install constant */
3807   for (i = 0; swig_constants[i].type; i++) {
3808     SV *sv;
3809     sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI);
3810     switch(swig_constants[i].type) {
3811     case SWIG_INT:
3812       sv_setiv(sv, (IV) swig_constants[i].lvalue);
3813       break;
3814     case SWIG_FLOAT:
3815       sv_setnv(sv, (double) swig_constants[i].dvalue);
3816       break;
3817     case SWIG_STRING:
3818       sv_setpv(sv, (char *) swig_constants[i].pvalue);
3819       break;
3820     case SWIG_POINTER:
3821       SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
3822       break;
3823     case SWIG_BINARY:
3824       SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
3825       break;
3826     default:
3827       break;
3828     }
3829     SvREADONLY_on(sv);
3830   }
3831   
3832   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3833     SV *sv = get_sv((char*) SWIG_prefix "RUNNING_AS_ANY", TRUE | 0x2 | GV_ADDMULTI);
3834     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(RUNNING_AS_ANY)));
3835     SvREADONLY_on(sv);
3836   } while(0) /*@SWIG@*/;
3837   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3838     SV *sv = get_sv((char*) SWIG_prefix "RUNNING_AS_ROOT", TRUE | 0x2 | GV_ADDMULTI);
3839     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(RUNNING_AS_ROOT)));
3840     SvREADONLY_on(sv);
3841   } while(0) /*@SWIG@*/;
3842   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3843     SV *sv = get_sv((char*) SWIG_prefix "RUNNING_AS_DUMPUSER", TRUE | 0x2 | GV_ADDMULTI);
3844     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(RUNNING_AS_DUMPUSER)));
3845     SvREADONLY_on(sv);
3846   } while(0) /*@SWIG@*/;
3847   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3848     SV *sv = get_sv((char*) SWIG_prefix "RUNNING_AS_DUMPUSER_PREFERRED", TRUE | 0x2 | GV_ADDMULTI);
3849     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(RUNNING_AS_DUMPUSER_PREFERRED)));
3850     SvREADONLY_on(sv);
3851   } while(0) /*@SWIG@*/;
3852   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3853     SV *sv = get_sv((char*) SWIG_prefix "RUNNING_AS_CLIENT_LOGIN", TRUE | 0x2 | GV_ADDMULTI);
3854     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(RUNNING_AS_CLIENT_LOGIN)));
3855     SvREADONLY_on(sv);
3856   } while(0) /*@SWIG@*/;
3857   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3858     SV *sv = get_sv((char*) SWIG_prefix "RUNNING_AS_UID_ONLY", TRUE | 0x2 | GV_ADDMULTI);
3859     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(RUNNING_AS_UID_ONLY)));
3860     SvREADONLY_on(sv);
3861   } while(0) /*@SWIG@*/;
3862   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3863     SV *sv = get_sv((char*) SWIG_prefix "CONTEXT_DEFAULT", TRUE | 0x2 | GV_ADDMULTI);
3864     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONTEXT_DEFAULT)));
3865     SvREADONLY_on(sv);
3866   } while(0) /*@SWIG@*/;
3867   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3868     SV *sv = get_sv((char*) SWIG_prefix "CONTEXT_CMDLINE", TRUE | 0x2 | GV_ADDMULTI);
3869     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONTEXT_CMDLINE)));
3870     SvREADONLY_on(sv);
3871   } while(0) /*@SWIG@*/;
3872   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3873     SV *sv = get_sv((char*) SWIG_prefix "CONTEXT_DAEMON", TRUE | 0x2 | GV_ADDMULTI);
3874     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONTEXT_DAEMON)));
3875     SvREADONLY_on(sv);
3876   } while(0) /*@SWIG@*/;
3877   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3878     SV *sv = get_sv((char*) SWIG_prefix "CONTEXT_SCRIPTUTIL", TRUE | 0x2 | GV_ADDMULTI);
3879     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(CONTEXT_SCRIPTUTIL)));
3880     SvREADONLY_on(sv);
3881   } while(0) /*@SWIG@*/;
3882   SWIG_TypeClientData(SWIGTYPE_p_file_lock, (void*) "Amanda::Util::file_lock");
3883   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3884     SV *sv = get_sv((char*) SWIG_prefix "AF_INET", TRUE | 0x2 | GV_ADDMULTI);
3885     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(AF_INET)));
3886     SvREADONLY_on(sv);
3887   } while(0) /*@SWIG@*/;
3888   /*@SWIG:/usr/share/swig/2.0.4/perl5/perltypemaps.swg,65,%set_constant@*/ do {
3889     SV *sv = get_sv((char*) SWIG_prefix "STREAM_BUFSIZE", TRUE | 0x2 | GV_ADDMULTI);
3890     sv_setsv(sv, SWIG_From_int  SWIG_PERL_CALL_ARGS_1((int)(STREAM_BUFSIZE)));
3891     SvREADONLY_on(sv);
3892   } while(0) /*@SWIG@*/;
3893   ST(0) = &PL_sv_yes;
3894   XSRETURN(1);
3895 }
3896