⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 开源备份软件源码 AMANDA, the Advanced Maryland Automatic Network Disk Archiver, is a backup system that a
💻 C
📖 第 1 页 / 共 4 页
字号:
    *(ptr) = (void *) 0;    return SWIG_OK;  } else if (SvTYPE(sv) == SVt_RV) {  /* Check for NULL pointer */    if (!SvROK(sv)) {      *(ptr) = (void *) 0;      return SWIG_OK;    } else {      return SWIG_ERROR;    }  } else {                            /* Don't know what it is */    return SWIG_ERROR;  }  if (_t) {    /* Now see if the types match */    char *_c = HvNAME(SvSTASH(SvRV(sv)));    tc = SWIG_TypeProxyCheck(_c,_t);    if (!tc) {      return SWIG_ERROR;    }    *ptr = SWIG_TypeCast(tc,voidptr);  } else {    *ptr = voidptr;  }  /*    *  DISOWN implementation: we need a perl guru to check this one.   */  if (tsv && (flags & SWIG_POINTER_DISOWN)) {    /*      *  almost copy paste code from below SWIG_POINTER_OWN setting     */    SV *obj = sv;    HV *stash = SvSTASH(SvRV(obj));    GV *gv = *(GV**) hv_fetch(stash, "OWNER", 5, TRUE);    if (isGV(gv)) {      HV *hv = GvHVn(gv);      /*       * To set ownership (see below), a newSViv(1) entry is added.        * Hence, to remove ownership, we delete the entry.       */      if (hv_exists_ent(hv, obj, 0)) {	hv_delete_ent(hv, obj, 0, 0);      }    }  }  return SWIG_OK;}SWIGRUNTIME voidSWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {  if (ptr && (flags & SWIG_SHADOW)) {    SV *self;    SV *obj=newSV(0);    HV *hash=newHV();    HV *stash;    sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr);    stash=SvSTASH(SvRV(obj));    if (flags & SWIG_POINTER_OWN) {      HV *hv;      GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);      if (!isGV(gv))        gv_init(gv, stash, "OWNER", 5, FALSE);      hv=GvHVn(gv);      hv_store_ent(hv, obj, newSViv(1), 0);    }    sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);    SvREFCNT_dec(obj);    self=newRV_noinc((SV *)hash);    sv_setsv(sv, self);    SvREFCNT_dec((SV *)self);    sv_bless(sv, stash);  }  else {    sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr);  }}SWIGRUNTIMEINLINE SV *SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {  SV *result = sv_newmortal();  SWIG_MakePtr(result, ptr, t, flags);  return result;}SWIGRUNTIME voidSWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {  char result[1024];  char *r = result;  if ((2*sz + 1 + strlen(SWIG_Perl_TypeProxyName(type))) > 1000) return;  *(r++) = '_';  r = SWIG_PackData(r,ptr,sz);  strcpy(r,SWIG_Perl_TypeProxyName(type));  sv_setpv(sv, result);}SWIGRUNTIME SV *SWIG_Perl_NewPackedObj(SWIG_MAYBE_PERL_OBJECT void *ptr, int sz, swig_type_info *type) {  SV *result = sv_newmortal();  SWIG_Perl_MakePackedObj(result, ptr, sz, type);  return result;}/* Convert a packed value value */SWIGRUNTIME intSWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty) {  swig_cast_info *tc;  const char  *c = 0;  if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;  c = SvPV(obj, PL_na);  /* Pointer values must start with leading underscore */  if (*c != '_') return SWIG_ERROR;  c++;  c = SWIG_UnpackData(c,ptr,sz);  if (ty) {    tc = SWIG_TypeCheck(c,ty);    if (!tc) return SWIG_ERROR;  }  return SWIG_OK;}/* Macros for low-level exception handling */#define SWIG_croak(x)    { SWIG_Error(SWIG_RuntimeError, x); SWIG_fail; }typedef XS(SwigPerlWrapper);typedef SwigPerlWrapper *SwigPerlWrapperPtr;/* Structure for command table */typedef struct {  const char         *name;  SwigPerlWrapperPtr  wrapper;} swig_command_info;/* Information for constant table */#define SWIG_INT     1#define SWIG_FLOAT   2#define SWIG_STRING  3#define SWIG_POINTER 4#define SWIG_BINARY  5/* Constant information structure */typedef struct swig_constant_info {    int              type;    const char      *name;    long             lvalue;    double           dvalue;    void            *pvalue;    swig_type_info **ptype;} swig_constant_info;/* Structure for variable table */typedef struct {  const char   *name;  SwigMagicFunc   set;  SwigMagicFunc   get;  swig_type_info  **type;} swig_variable_info;/* Magic variable code */#ifndef PERL_OBJECT#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)  #ifndef MULTIPLICITY     SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *))   #else     SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *))   #endif#else#  define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) #endif{  MAGIC *mg;  sv_magic(sv,sv,'U',(char *) name,strlen(name));  mg = mg_find(sv,'U');  mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));  mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;  mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;  mg->mg_virtual->svt_len = 0;  mg->mg_virtual->svt_clear = 0;  mg->mg_virtual->svt_free = 0;}SWIGRUNTIME swig_module_info *SWIG_Perl_GetModule(void) {  static void *type_pointer = (void *)0;  SV *pointer;  /* first check if pointer already created */  if (!type_pointer) {    pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);    if (pointer && SvOK(pointer)) {      type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));    }  }  return (swig_module_info *) type_pointer;}SWIGRUNTIME voidSWIG_Perl_SetModule(swig_module_info *module) {  SV *pointer;  /* create a new pointer */  pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);  sv_setiv(pointer, PTR2IV(module));}#ifdef __cplusplus}#endif/* Workaround perl5 global namespace pollution. Note that undefining library * functions like fopen will not solve the problem on all platforms as fopen * might be a macro on Windows but not necessarily on other operating systems. */#ifdef do_open  #undef do_open#endif#ifdef do_close  #undef do_close#endif#ifdef scalar  #undef scalar#endif#ifdef list  #undef list#endif#ifdef apply  #undef apply#endif#ifdef convert  #undef convert#endif#ifdef Error  #undef Error#endif#ifdef form  #undef form#endif#ifdef vform  #undef vform#endif#ifdef LABEL  #undef LABEL#endif#ifdef METHOD  #undef METHOD#endif#ifdef Move  #undef Move#endif#ifdef yylex  #undef yylex#endif#ifdef yyparse  #undef yyparse#endif#ifdef yyerror  #undef yyerror#endif#ifdef invert  #undef invert#endif#ifdef ref  #undef ref#endif#ifdef read  #undef read#endif#ifdef write  #undef write#endif#ifdef eof  #undef eof#endif#ifdef bool  #undef bool#endif#ifdef close  #undef close#endif#ifdef rewind  #undef rewind#endif#ifdef free  #undef free#endif#ifdef malloc  #undef malloc#endif#ifdef calloc  #undef calloc#endif#ifdef Stat  #undef Stat#endif#ifdef check  #undef check#endif#ifdef seekdir  #undef seekdir#endif#ifdef open  #undef open#endif#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0) #define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else   #define SWIG_exception(code, msg) do { SWIG_Error(code, msg);; } while(0) /* -------- TYPES TABLE (BEGIN) -------- */#define SWIGTYPE_p_char swig_types[0]#define SWIGTYPE_p_double swig_types[1]#define SWIGTYPE_p_float swig_types[2]#define SWIGTYPE_p_int swig_types[3]#define SWIGTYPE_p_unsigned_char swig_types[4]static swig_type_info *swig_types[6];static swig_module_info swig_module = {swig_types, 5, 0, 0, 0, 0};#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)/* -------- TYPES TABLE (END) -------- */#define SWIG_init    boot_Amanda__Util#define SWIG_name   "Amanda::Utilc::boot_Amanda__Util"#define SWIG_prefix "Amanda::Utilc::"#define SWIGVERSION 0x010331 #define SWIG_VERSION SWIGVERSION#define SWIG_as_voidptr(a) (void *)((const void *)(a)) #define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a)) #ifdef __cplusplusextern "C"#endif#ifndef PERL_OBJECT#ifndef MULTIPLICITYSWIGEXPORT void SWIG_init (CV* cv);#elseSWIGEXPORT void SWIG_init (pTHXo_ CV* cv);#endif#elseSWIGEXPORT void SWIG_init (CV *cv, CPerlObj *);#endif#include "amglue.h"#include "amglue.h"#include "amglue.h"#include "debug.h"/* use a relative path here to avoid conflicting with Perl's util.h. */#include "../common-src/util.h"#include "file.h"SWIGINTERNINLINE SV *SWIG_From_long  SWIG_PERL_DECL_ARGS_1(long value){      SV *obj = sv_newmortal();  sv_setiv(obj, (IV) value);  return obj;}SWIGINTERNINLINE SV *SWIG_From_int  SWIG_PERL_DECL_ARGS_1(int value){      return SWIG_From_long  SWIG_PERL_CALL_ARGS_1(value);}SWIGINTERN swig_type_info*SWIG_pchar_descriptor(void){  static int init = 0;  static swig_type_info* info = 0;  if (!init) {    info = SWIG_TypeQuery("_p_char");    init = 1;  }  return info;}SWIGINTERN intSWIG_AsCharPtrAndSize(SV *obj, char** cptr, size_t* psize, int *alloc){  if (SvPOK(obj)) {    STRLEN len = 0;    char *cstr = SvPV(obj, len);     size_t size = len + 1;    if (cptr)  {      if (alloc) {	if (*alloc == SWIG_NEWOBJ) {	  *cptr = (char *)memcpy((char *)malloc((size)*sizeof(char)), cstr, sizeof(char)*(size));	} else {	  *cptr = cstr;	  *alloc = SWIG_OLDOBJ;	}      }    }    if (psize) *psize = size;    return SWIG_OK;  } else {    swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();    if (pchar_descriptor) {      char* vptr = 0;       if (SWIG_ConvertPtr(obj, (void**)&vptr, pchar_descriptor, 0) == SWIG_OK) {	if (cptr) *cptr = vptr;	if (psize) *psize = vptr ? (strlen(vptr) + 1) : 0;	if (alloc) *alloc = SWIG_OLDOBJ;	return SWIG_OK;      }    }  }  return SWIG_TypeError;}#include <limits.h>#ifndef LLONG_MIN# define LLONG_MIN	LONG_LONG_MIN#endif#ifndef LLONG_MAX# define LLONG_MAX	LONG_LONG_MAX#endif#ifndef ULLONG_MAX# define ULLONG_MAX	ULONG_LONG_MAX#endifSWIGINTERN intSWIG_AsVal_double SWIG_PERL_DECL_ARGS_2(SV *obj, double *val){  if (SvNIOK(obj)) {    if (val) *val = SvNV(obj);    return SWIG_OK;  } else if (SvIOK(obj)) {    if (val) *val = (double) SvIV(obj);    return SWIG_AddCast(SWIG_OK);  } else {    const char *nptr = SvPV(obj, PL_na);    if (nptr) {      char *endptr;      double v = strtod(nptr, &endptr);      if (errno == ERANGE) {	errno = 0;	return SWIG_OverflowError;      } else {	if (*endptr == '\0') {	  if (val) *val = v;	  return SWIG_Str2NumCast(SWIG_OK);	}      }    }  }  return SWIG_TypeError;}#include <float.h>#include <math.h>SWIGINTERNINLINE intSWIG_CanCastAsInteger(double *d, double min, double max) {  double x = *d;  if ((min <= x && x <= max)) {   double fx = floor(x);   double cx = ceil(x);   double rd =  ((x - fx) < 0.5) ? fx : cx; /* simple rint */   if ((errno == EDOM) || (errno == ERANGE)) {     errno = 0;   } else {     double summ, reps, diff;     if (rd < x) {       diff = x - rd;     } else if (rd > x) {       diff = rd - x;     } else {       return 1;     }     summ = rd + x;     reps = diff/summ;     if (reps < 8*DBL_EPSILON) {       *d = rd;       return 1;     }   }  }  return 0;}SWIGINTERN intSWIG_AsVal_long SWIG_PERL_DECL_ARGS_2(SV *obj, long* val){  if (SvIOK(obj)) {    if (val) *val = SvIV(obj);    return SWIG_OK;  } else {    int dispatch = 0;    const char *nptr = SvPV(obj, PL_na);    if (nptr) {      char *endptr;      long v = strtol(nptr, &endptr,0);      if (errno == ERANGE) {	errno = 0;	return SWIG_OverflowError;      } else {	if (*endptr == '\0') {	  if (val) *val = v;	  return SWIG_Str2NumCast(SWIG_OK);	}      }    }    if (!dispatch) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -