|
rpm
5.4.4
|
00001 00005 #include "system.h" 00006 00007 #include "rpm-rb.h" 00008 #include "rpmte-rb.h" 00009 00010 #ifdef NOTYET 00011 #include <argv.h> 00012 #include <mire.h> 00013 #endif 00014 00015 #define _RPMFI_INTERNAL 00016 #include <rpmtag.h> 00017 #include <rpmtypes.h> 00018 #include <rpmio.h> 00019 #include <rpmfi.h> 00020 #include <rpmte.h> 00021 00022 #include "../debug.h" 00023 00024 VALUE rpmteClass; 00025 00026 /*@unchecked@*/ 00027 static int _debug = 0; 00028 00029 /* --- helpers */ 00030 static void * 00031 rpmte_ptr(VALUE s) 00032 { 00033 void *ptr; 00034 Data_Get_Struct(s, void, ptr); 00035 return ptr; 00036 } 00037 00038 /* --- Object methods */ 00039 00040 static void 00041 initMethods(VALUE klass) 00042 { 00043 } 00044 00045 /* --- Object properties */ 00046 static VALUE 00047 rpmte_debug_get(VALUE s) 00048 { 00049 if (_debug) 00050 fprintf(stderr, "==> %s(0x%lx)\n", __FUNCTION__, s); 00051 return INT2FIX(_debug); 00052 } 00053 00054 static VALUE 00055 rpmte_debug_set(VALUE s, VALUE v) 00056 { 00057 if (_debug) 00058 fprintf(stderr, "==> %s(0x%lx, 0x%lx)\n", __FUNCTION__, s, v); 00059 return INT2FIX(_debug = FIX2INT(v)); 00060 } 00061 00062 #ifdef NOTYET 00063 static VALUE 00064 rpmte_rootdir_get(VALUE s) 00065 { 00066 void *ptr = rpmte_ptr(s); 00067 rpmte te = ptr; 00068 if (_debug) 00069 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr); 00070 return rb_str_new2(rpmteRootDir(te)); 00071 } 00072 00073 static VALUE 00074 rpmte_rootdir_set(VALUE s, VALUE v) 00075 { 00076 void *ptr = rpmte_ptr(s); 00077 rpmte te = ptr; 00078 if (_debug) 00079 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr); 00080 rpmteSetRootDir(te, StringValueCStr(v)); 00081 return rb_str_new2(rpmteRootDir(te)); 00082 } 00083 00084 static VALUE 00085 rpmte_vsflags_get(VALUE s) 00086 { 00087 void *ptr = rpmte_ptr(s); 00088 rpmte te = ptr; 00089 if (_debug) 00090 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr); 00091 return INT2FIX(_debug); 00092 } 00093 00094 static VALUE 00095 rpmte_vsflags_set(VALUE s, VALUE v) 00096 { 00097 void *ptr = rpmte_ptr(s); 00098 rpmte te = ptr; 00099 if (_debug) 00100 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr); 00101 rpmteSetVSFlags(te, FIX2INT(v)); 00102 return INT2FIX(rpmteVSFlags(te)); 00103 } 00104 #endif /* NOTYET */ 00105 00106 static void 00107 initProperties(VALUE klass) 00108 { 00109 rb_define_method(klass, "debug", rpmte_debug_get, 0); 00110 rb_define_method(klass, "debug=", rpmte_debug_set, 1); 00111 #ifdef NOTYET 00112 rb_define_method(klass, "rootdir", rpmte_rootdir_get, 0); 00113 rb_define_method(klass, "rootdir=", rpmte_rootdir_set, 1); 00114 rb_define_method(klass, "vsflags", rpmte_vsflags_get, 0); 00115 rb_define_method(klass, "vsflags=", rpmte_vsflags_set, 1); 00116 #endif /* NOTYET */ 00117 } 00118 00119 /* --- Object ctors/dtors */ 00120 static void 00121 rpmte_free(rpmte te) 00122 { 00123 if (_debug) 00124 fprintf(stderr, "==> %s(%p)\n", __FUNCTION__, te); 00125 #ifdef NOTYET 00126 te = rpmteFree(te); 00127 #else 00128 te = _free(te); 00129 #endif 00130 } 00131 00132 static VALUE 00133 rpmte_alloc(VALUE klass) 00134 { 00135 #ifdef NOTYET 00136 rpmte te = NULL; 00137 #else 00138 rpmte te = xcalloc(1, sizeof(void *)); 00139 #endif 00140 VALUE obj = Data_Wrap_Struct(klass, 0, rpmte_free, te); 00141 if (_debug) 00142 fprintf(stderr, "==> %s(0x%lx) obj 0x%lx te %p\n", __FUNCTION__, klass, obj, te); 00143 return obj; 00144 } 00145 00146 /* --- Class initialization */ 00147 00148 void 00149 Init_rpmte(void) 00150 { 00151 rpmteClass = rb_define_class("Te", rb_cObject); 00152 if (_debug) 00153 fprintf(stderr, "==> %s() rpmteClass 0x%lx\n", __FUNCTION__, rpmteClass); 00154 rb_define_alloc_func(rpmteClass, rpmte_alloc); 00155 initProperties(rpmteClass); 00156 initMethods(rpmteClass); 00157 }
1.7.5.1