rpm  5.4.10
rpmte-rb.c
Go to the documentation of this file.
1 
5 #include "system.h"
6 
7 #include "rpm-rb.h"
8 #include "rpmte-rb.h"
9 
10 #ifdef NOTYET
11 #include <argv.h>
12 #include <mire.h>
13 #endif
14 
15 #define _RPMFI_INTERNAL
16 #include <rpmtag.h>
17 #include <rpmtypes.h>
18 #include <rpmio.h>
19 #include <rpmfi.h>
20 #include <rpmte.h>
21 
22 #include "../debug.h"
23 
24 VALUE rpmteClass;
25 
26 /*@unchecked@*/
27 static int _debug = 0;
28 
29 /* --- helpers */
30 static void *
31 rpmte_ptr(VALUE s)
32 {
33  void *ptr;
34  Data_Get_Struct(s, void, ptr);
35  return ptr;
36 }
37 
38 /* --- Object methods */
39 
40 static void
41 initMethods(VALUE klass)
42 {
43 }
44 
45 /* --- Object properties */
46 static VALUE
48 {
49 if (_debug)
50 fprintf(stderr, "==> %s(0x%lx)\n", __FUNCTION__, s);
51  return INT2FIX(_debug);
52 }
53 
54 static VALUE
55 rpmte_debug_set(VALUE s, VALUE v)
56 {
57 if (_debug)
58 fprintf(stderr, "==> %s(0x%lx, 0x%lx)\n", __FUNCTION__, s, v);
59  return INT2FIX(_debug = FIX2INT(v));
60 }
61 
62 #ifdef NOTYET
63 static VALUE
64 rpmte_rootdir_get(VALUE s)
65 {
66  void *ptr = rpmte_ptr(s);
67  rpmte te = ptr;
68 if (_debug)
69 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
70  return rb_str_new2(rpmteRootDir(te));
71 }
72 
73 static VALUE
74 rpmte_rootdir_set(VALUE s, VALUE v)
75 {
76  void *ptr = rpmte_ptr(s);
77  rpmte te = ptr;
78 if (_debug)
79 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr);
80  rpmteSetRootDir(te, StringValueCStr(v));
81  return rb_str_new2(rpmteRootDir(te));
82 }
83 
84 static VALUE
85 rpmte_vsflags_get(VALUE s)
86 {
87  void *ptr = rpmte_ptr(s);
88  rpmte te = ptr;
89 if (_debug)
90 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
91  return INT2FIX(_debug);
92 }
93 
94 static VALUE
95 rpmte_vsflags_set(VALUE s, VALUE v)
96 {
97  void *ptr = rpmte_ptr(s);
98  rpmte te = ptr;
99 if (_debug)
100 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr);
101  rpmteSetVSFlags(te, FIX2INT(v));
102  return INT2FIX(rpmteVSFlags(te));
103 }
104 #endif /* NOTYET */
105 
106 static void
107 initProperties(VALUE klass)
108 {
109  rb_define_method(klass, "debug", rpmte_debug_get, 0);
110  rb_define_method(klass, "debug=", rpmte_debug_set, 1);
111 #ifdef NOTYET
112  rb_define_method(klass, "rootdir", rpmte_rootdir_get, 0);
113  rb_define_method(klass, "rootdir=", rpmte_rootdir_set, 1);
114  rb_define_method(klass, "vsflags", rpmte_vsflags_get, 0);
115  rb_define_method(klass, "vsflags=", rpmte_vsflags_set, 1);
116 #endif /* NOTYET */
117 }
118 
119 /* --- Object ctors/dtors */
120 static void
122 {
123 if (_debug)
124 fprintf(stderr, "==> %s(%p)\n", __FUNCTION__, te);
125 #ifdef NOTYET
126  te = rpmteFree(te);
127 #else
128  te = _free(te);
129 #endif
130 }
131 
132 static VALUE
133 rpmte_alloc(VALUE klass)
134 {
135 #ifdef NOTYET
136  rpmte te = NULL;
137 #else
138  rpmte te = xcalloc(1, sizeof(void *));
139 #endif
140  VALUE obj = Data_Wrap_Struct(klass, 0, rpmte_free, te);
141 if (_debug)
142 fprintf(stderr, "==> %s(0x%lx) obj 0x%lx te %p\n", __FUNCTION__, klass, obj, te);
143  return obj;
144 }
145 
146 /* --- Class initialization */
147 
148 void
150 {
151  rpmteClass = rb_define_class("Te", rb_cObject);
152 if (_debug)
153 fprintf(stderr, "==> %s() rpmteClass 0x%lx\n", __FUNCTION__, rpmteClass);
154  rb_define_alloc_func(rpmteClass, rpmte_alloc);
157 }