📄 logfile.c
字号:
#include <glib.h>#include "logfile.h"#include "find.h"#include "diskfile.h" /* for the gross hack, below */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);}/* open_ and close_logfile are both simple wrappers around fopen/fclose. */typedef FILE loghandle;loghandle *open_logfile(char *filename) { return fopen(filename, "r");}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;}void close_logfile(loghandle *logfile) { if (logfile) fclose(logfile);}typedef int LOGLINE_RETURN;SWIGINTERN void delete_find_result_t(find_result_t *self){ find_result_t *selfp = self; free_find_result(&selfp); }SWIGINTERNINLINE SV *SWIG_FromCharPtrAndSize(const char* carray, size_t size){ SV *obj = sv_newmortal(); if (carray) { if (size && (carray[size - 1] == 0)) { sv_setpv(obj, carray); } else { char *tmp = (char *)malloc((size + 1)*sizeof(char)); memcpy(tmp, carray, size); tmp[size] = 0; sv_setpv(obj, tmp); free((char*)tmp); } } else { sv_setsv(obj, &PL_sv_undef); } return obj;}SWIGINTERNINLINE SV * SWIG_FromCharPtr(const char *cptr){ return SWIG_FromCharPtrAndSize(cptr, (cptr ? strlen(cptr) : 0));}find_result_t *search_logfile_wrap(char *label, char *datestamp, char *logfile, int add_missing_disks) { find_result_t *rv = NULL; /* We use a static variable to collect any unrecognized disks */ static disklist_t unrecognized_disks = { NULL, NULL }; search_logfile(&rv, label, datestamp, logfile, add_missing_disks? &unrecognized_disks : NULL); return rv;}#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) { double d; int res = SWIG_AddCast(SWIG_AsVal_double SWIG_PERL_CALL_ARGS_2(obj,&d)); if (SWIG_IsOK(res) && SWIG_CanCastAsInteger(&d, LONG_MIN, LONG_MAX)) { if (val) *val = (long)(d); return res; } } } return SWIG_TypeError;}SWIGINTERN intSWIG_AsVal_int SWIG_PERL_DECL_ARGS_2(SV * obj, int *val){ long v; int res = SWIG_AsVal_long SWIG_PERL_CALL_ARGS_2(obj, &v); if (SWIG_IsOK(res)) { if ((v < INT_MIN || v > INT_MAX)) { return SWIG_OverflowError; } else { if (val) *val = (int)(v); } } return res;}#ifdef PERL_OBJECT#define MAGIC_CLASS _wrap_Amanda::Logfile_var::class _wrap_Amanda::Logfile_var : public CPerlObj {public:#else#define MAGIC_CLASS#endifSWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *SWIGUNUSEDPARM(sv), MAGIC *SWIGUNUSEDPARM(mg)) { MAGIC_PPERL croak("Value is read-only."); return 0;}#ifdef PERL_OBJECT};#endif#ifdef __cplusplusextern "C" {#endifXS(_wrap_open_logfile) { { char *arg1 = (char *) 0 ; loghandle *result = 0 ; int res1 ; char *buf1 = 0 ; int alloc1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: open_logfile(filename);"); } res1 = SWIG_AsCharPtrAndSize(ST(0), &buf1, NULL, &alloc1); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "open_logfile" "', argument " "1"" of type '" "char *""'"); } arg1 = (char *)(buf1); result = (loghandle *)open_logfile(arg1); ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_FILE, 0 | 0); argvi++ ; if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); XSRETURN(argvi); fail: if (alloc1 == SWIG_NEWOBJ) free((char*)buf1); SWIG_croak_null(); }}XS(_wrap_close_logfile) { { loghandle *arg1 = (loghandle *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: close_logfile(logfile);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FILE, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "close_logfile" "', argument " "1"" of type '" "loghandle *""'"); } arg1 = (loghandle *)(argp1); close_logfile(arg1); XSRETURN(argvi); fail: SWIG_croak_null(); }}XS(_wrap_get_logline) { { FILE *arg1 = (FILE *) 0 ; LOGLINE_RETURN result; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: get_logline(logfile);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_FILE, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "get_logline" "', argument " "1"" of type '" "FILE *""'"); } arg1 = (FILE *)(argp1); result = get_logline(arg1); { if (result != 0) { EXTEND(SP, 3); ST(argvi) = sv_2mortal(newSViv(curlog)); argvi++; ST(argvi) = sv_2mortal(newSViv(curprog)); argvi++; ST(argvi) = sv_2mortal(newSVpv(curstr, 0)); argvi++; } /* otherwise (end of logfile) return an empty list */ } XSRETURN(argvi); fail: SWIG_croak_null(); }}XS(_wrap_delete_find_result_t) { { find_result_t *arg1 = (find_result_t *) 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: delete_find_result_t(self);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_find_result_t, SWIG_POINTER_DISOWN | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "delete_find_result_t" "', argument " "1"" of type '" "find_result_t *""'"); } arg1 = (find_result_t *)(argp1); delete_find_result_t(arg1); XSRETURN(argvi); fail: SWIG_croak_null(); }}XS(_wrap_find_result_t_timestamp_get) { { find_result_t *arg1 = (find_result_t *) 0 ; char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: find_result_t_timestamp_get(self);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_find_result_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "find_result_t_timestamp_get" "', argument " "1"" of type '" "find_result_t *""'"); } arg1 = (find_result_t *)(argp1); result = (char *) ((arg1)->timestamp); ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; XSRETURN(argvi); fail: SWIG_croak_null(); }}XS(_wrap_find_result_t_hostname_get) { { find_result_t *arg1 = (find_result_t *) 0 ; char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: find_result_t_hostname_get(self);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_find_result_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "find_result_t_hostname_get" "', argument " "1"" of type '" "find_result_t *""'"); } arg1 = (find_result_t *)(argp1); result = (char *) ((arg1)->hostname); ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; XSRETURN(argvi); fail: SWIG_croak_null(); }}XS(_wrap_find_result_t_diskname_get) { { find_result_t *arg1 = (find_result_t *) 0 ; char *result = 0 ; void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; dXSARGS; if ((items < 1) || (items > 1)) { SWIG_croak("Usage: find_result_t_diskname_get(self);"); } res1 = SWIG_ConvertPtr(ST(0), &argp1,SWIGTYPE_p_find_result_t, 0 | 0 ); if (!SWIG_IsOK(res1)) { SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "find_result_t_diskname_get" "', argument " "1"" of type '" "find_result_t *""'"); } arg1 = (find_result_t *)(argp1); result = (char *) ((arg1)->diskname); ST(argvi) = SWIG_FromCharPtr((const char *)result); argvi++ ; XSRETURN(argvi); fail: SWIG_croak_null(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -