15 #define _RPMFI_INTERNAL
38 Data_Get_Struct(s,
void, ptr);
54 fprintf(stderr,
"==> %s(0x%lx)\n", __FUNCTION__, s);
62 fprintf(stderr,
"==> %s(0x%lx, 0x%lx)\n", __FUNCTION__, s, v);
63 return INT2FIX(
_debug = FIX2INT(v));
71 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
80 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
90 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
104 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
113 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
123 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
138 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
139 return rb_str_new2(
rpmfiBN(fi));
147 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
148 return rb_str_new2(
rpmfiDN(fi));
156 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
157 return rb_str_new2(
rpmfiFN(fi));
165 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
174 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
183 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
192 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
202 const unsigned char * digest =
rpmfiDigest(fi, &dalgo, &dlen);
203 const unsigned char * s = digest;
204 size_t nb = 2 * dlen;
205 char * fdigest = memset(
alloca(nb+1), 0, nb+1);
210 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__,
self, fi);
211 for (i = 0, s = digest, t = fdigest; i < (int)dlen; i++, s++, t+= 2) {
212 static const char hex[] =
"0123456789abcdef";
213 t[0] = hex[(s[0] >> 4) & 0xf];
214 t[1] = hex[(s[0] ) & 0xf];
218 return rb_str_new2(fdigest);
226 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
235 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
244 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
253 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
262 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
271 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
280 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
292 fprintf(stderr,
"==> %s(0x%lx) ptr %p\n", __FUNCTION__, s, fi);
293 if (FClass == NULL) FClass =
"";
296 if (!strncmp(t,
"symbolic link to `",
sizeof(
"symbolic link to `")-1))
297 t[
sizeof(
"symbolic link")-1] =
'\0';
298 v = rb_str_new2(FClass);
338 fprintf(stderr,
"==> %s(%p)\n", __FUNCTION__, fi);
345 VALUE v_ts, v_hdr, v_tag;
352 rb_scan_args(argc, argv,
"21", &v_ts, &v_hdr, &v_tag);
358 tag = FIX2INT(v_tag);
363 fprintf(stderr,
"==> %s(%p[%d], 0x%lx) mi %p\n", __FUNCTION__, argv, argc, s, fi);
364 return Data_Wrap_Struct(s, 0,
rpmfi_free, fi);
372 rpmfiClass = rb_define_class(
"Fi", rb_cObject);
374 fprintf(stderr,
"==> %s() rpmfiClass 0x%lx\n", __FUNCTION__,
rpmfiClass);
376 rb_include_module(
rpmfiClass, rb_mEnumerable);