rpm  5.4.14
rpmps-rb.c
Go to the documentation of this file.
1 
7 #include "system.h"
8 
9 #include "rpm-rb.h"
10 #include "rpmps-rb.h"
11 
12 #ifdef NOTYET
13 #include <argv.h>
14 #include <mire.h>
15 #endif
16 
17 #define _RPMFI_INTERNAL
18 #include <rpmtag.h>
19 #include <rpmtypes.h>
20 #include <rpmio.h>
21 #include <rpmfi.h>
22 #include <rpmps.h>
23 
24 #include "../debug.h"
25 
26 
27 VALUE rpmpsClass;
28 
29 /*@unchecked@*/
30 static int _debug = 0;
31 
32 
33 /* --- helpers */
34 static void *
35 rpmps_ptr(VALUE s)
36 {
37  void *ptr;
38  Data_Get_Struct(s, void, ptr);
39  return ptr;
40 }
41 
42 /* --- Object methods */
43 static VALUE
44 rpmps_push(VALUE s)
45 {
46  void *ptr = rpmps_ptr(s);
47  rpmps ps = ptr;
48  char *pkgNEVR = "PKG";
49  char *altNEVR = "ALT";
50  char *key = "KEY";
52  char *dn = "/root/";
53  char *bn = "file";
54  unsigned ui = 1234;
55 
56 if (_debug)
57 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
58  rpmpsAppend(ps, type, pkgNEVR, key, dn, bn, altNEVR, ui);
59  return INT2FIX(rpmpsNumProblems(ps));
60 }
61 
62 static VALUE
63 rpmps_print(VALUE s)
64 {
65  void *ptr = rpmps_ptr(s);
66  rpmps ps = ptr;
67 
68 if (_debug)
69 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
70  rpmpsPrint(NULL, ps);
71  return INT2FIX(rpmpsNumProblems(ps));
72 }
73 
74 static void
75 initMethods(VALUE klass)
76 {
77  rb_define_method(klass, "push", rpmps_push, 7);
78  rb_define_method(klass, "print", rpmps_print, 0);
79 }
80 
81 /* --- Object properties */
82 static VALUE
84 {
85 if (_debug)
86 fprintf(stderr, "==> %s(0x%lx)\n", __FUNCTION__, s);
87  return INT2FIX(_debug);
88 }
89 
90 static VALUE
91 rpmps_debug_set(VALUE s, VALUE v)
92 {
93 if (_debug)
94 fprintf(stderr, "==> %s(0x%lx, 0x%lx)\n", __FUNCTION__, s, v);
95  return INT2FIX(_debug = FIX2INT(v));
96 }
97 
98 static VALUE
100 {
101  void *ptr = rpmps_ptr(s);
102  rpmps ps = ptr;
103 if (_debug)
104 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
105  return INT2FIX(rpmpsNumProblems(ps));
106 }
107 
108 #ifdef NOTYET
109 static VALUE
110 rpmps_rootdir_set(VALUE s, VALUE v)
111 {
112  void *ptr = rpmps_ptr(s);
113  rpmps ps = ptr;
114 if (_debug)
115 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr);
116  rpmpsSetRootDir(ps, StringValueCStr(v));
117  return rb_str_new2(rpmpsRootDir(ps));
118 }
119 
120 static VALUE
121 rpmps_vsflags_get(VALUE s)
122 {
123  void *ptr = rpmps_ptr(s);
124  rpmps ps = ptr;
125 if (_debug)
126 fprintf(stderr, "==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, ptr);
127  return INT2FIX(_debug);
128 }
129 
130 static VALUE
131 rpmps_vsflags_set(VALUE s, VALUE v)
132 {
133  void *ptr = rpmps_ptr(s);
134  rpmps ps = ptr;
135 if (_debug)
136 fprintf(stderr, "==> %s(0x%lx, 0x%lx) ptr %p\n", __FUNCTION__, s, v, ptr);
137  rpmpsSetVSFlags(ps, FIX2INT(v));
138  return INT2FIX(rpmpsVSFlags(ps));
139 }
140 #endif /* NOTYET */
141 
142 static void
143 initProperties(VALUE klass)
144 {
145  rb_define_method(klass, "debug", rpmps_debug_get, 0);
146  rb_define_method(klass, "debug=", rpmps_debug_set, 1);
147  rb_define_method(klass, "length", rpmps_length_get, 0);
148 #ifdef NOTYET
149  rb_define_method(klass, "rootdir", rpmps_rootdir_get, 0);
150  rb_define_method(klass, "rootdir=", rpmps_rootdir_set, 1);
151  rb_define_method(klass, "vsflags", rpmps_vsflags_get, 0);
152  rb_define_method(klass, "vsflags=", rpmps_vsflags_set, 1);
153 #endif /* NOTYET */
154 }
155 
156 /* --- Object ctors/dtors */
157 static void
159 {
160 if (_debug)
161 fprintf(stderr, "==> %s(%p)\n", __FUNCTION__, ps);
162  ps = rpmpsFree(ps);
163 }
164 
165 static VALUE
166 rpmps_alloc(VALUE klass)
167 {
168  rpmps ps = rpmpsCreate();
169  VALUE obj = Data_Wrap_Struct(klass, 0, rpmps_free, ps);
170 if (_debug)
171 fprintf(stderr, "==> %s(0x%lx) obj 0x%lx ps %p\n", __FUNCTION__, klass, obj, ps);
172  return obj;
173 }
174 
175 /* --- Class initialization */
176 
177 void
179 {
180  rpmpsClass = rb_define_class("Ps", rb_cObject);
181 if (_debug)
182 fprintf(stderr, "==> %s() rpmpsClass 0x%lx\n", __FUNCTION__, rpmpsClass);
183  rb_define_alloc_func(rpmpsClass, rpmps_alloc);
186 }
op pkgNEVR
Definition: rpmps-py.c:258
static PyObject *int type
Definition: rpmmi-py.c:151
void rpmpsAppend(rpmps ps, rpmProblemType type, const char *pkgNEVR, fnpyKey key, const char *dn, const char *bn, const char *altNEVR, rpmuint64_t ulong1)
Append a problem to current set of problems.
Definition: rpmps.c:123
static VALUE rpmps_print(VALUE s)
Definition: rpmps-rb.c:63
Structure(s) used for file info tag sets.
void rpmpsPrint(FILE *fp, rpmps ps)
Print problems to file handle.
Definition: rpmps.c:346
op altNEVR
Definition: rpmps-py.c:259
enum rpmProblemType_e rpmProblemType
Enumerate transaction set problem types.
static VALUE rpmps_debug_set(VALUE s, VALUE v)
Definition: rpmps-rb.c:91
struct rpmps_s * rpmps
Transaction problems found while processing a transaction set/.
Definition: rpmps.h:25
static void * rpmps_ptr(VALUE s)
Definition: rpmps-rb.c:35
static VALUE rpmps_length_get(VALUE s)
Definition: rpmps-rb.c:99
int rpmpsNumProblems(rpmps ps)
Return number of problems in set.
Definition: rpmps.c:70
exit Fhe p ptr
Definition: db3.c:2119
rpmps rpmpsCreate(void)
Create a problem set.
Definition: rpmps.c:61
Structures and prototypes used for an &quot;rpmps&quot; problem set.
fprintf(stderr,"--> %s(%p,%p,%p) sig %p sigp %p\n", __FUNCTION__, dig, t, rsactx, sig, sigp)
static VALUE rpmps_debug_get(VALUE s)
Definition: rpmps-rb.c:83
RPM pattern matching.
static VALUE rpmps_alloc(VALUE klass)
Definition: rpmps-rb.c:166
key
Definition: macro.c:383
static void initProperties(VALUE klass)
Definition: rpmps-rb.c:143
rpmps rpmpsFree(rpmps ps)
Destroy a problem set.
RPM Ruby bindings &quot;RPM&quot; module.
const char * s
Definition: poptALL.c:734
ps
Definition: rpmts-py.c:548
return NULL
Definition: poptALL.c:613
static VALUE rpmps_push(VALUE s)
Definition: rpmps-rb.c:44
void Init_rpmps(void)
Definition: rpmps-rb.c:178
static void rpmps_free(rpmps ps)
Definition: rpmps-rb.c:158
static void initMethods(VALUE klass)
Definition: rpmps-rb.c:75
static int _debug
Definition: rpmps-rb.c:30
VALUE rpmpsClass
Definition: rpmps-rb.c:27