int main(int argc, char *argv[]) { Header h; FD_t fdi; setprogname(argv[0]); /* Retrofit glibc __progname */ if (argc == 1) { fdi = Fopen("-", "r.ufdio"); } else { fdi = Fopen(argv[1], "r.ufdio"); } if (Ferror(fdi)) { fprintf(stderr, "cannot open %s: %s\n", (argc == 1 ? "<stdin>" : argv[1]), Fstrerror(fdi)); exit(EXIT_FAILURE); } h = headerRead(fdi, HEADER_MAGIC_YES); if (!h) { fprintf(stderr, "headerRead error: %s\n", Fstrerror(fdi)); exit(EXIT_FAILURE); } Fclose(fdi); headerDump(h, stdout, HEADER_DUMP_INLINE, rpmTagTable); h = headerFree(h); return 0; }
int main( int argc, char **argv ) { rpmmi mi; Header h; int_32 type, count; char *name; rpmdb db; rpmReadConfigFiles( NULL, NULL ); if( rpmdbOpen( "", &db, O_RDONLY, 0644 ) != 0 ) { fprintf( stderr, "cannot open database!\n" ); exit(EXIT_FAILURE); } mi = rpmmiInit(db, RPMDBI_PACKAGES, NULL, 0); while ((h = rpmmiNext(mi)) != NULL) { headerGetEntry( h, RPMTAG_NAME, &type, (void**)&name, &count ); if( strcmp(name,argv[1]) == 0 ) headerDump( h, stdout, HEADER_DUMP_INLINE, rpmTagTable ); /* * Note that the header reference is "owned" by the iterator, * so no headerFree() is necessary. */ } mi = rpmmiFree(mi); rpmdbClose( db ); return 0; }
int pkguinf_store_rpmhdr(struct pkguinf *pkgu, tn_buf *nbuf) { Header hdr = NULL; void *rawhdr; int rawhdr_size; int rc; hdr = make_pkguinf_hdr(pkgu, NULL); #ifdef HAVE_RPM_VERSION_GE_5 rawhdr = headerUnload(hdr, &rawhdr_size); #else rawhdr_size = hacked_headerSizeof(hdr); rawhdr = headerUnload(hdr); #endif #if 0 printf("> %ld\t%d\n", ftell(stream), hacked_headerSizeof(pkgu->_hdr)); headerDump(pkgu->_hdr, stdout, HEADER_DUMP_INLINE, rpmTagTable); #endif n_buf_write_int16(nbuf, n_hash_size(pkgu->_ht)); n_buf_write_int16(nbuf, rawhdr_size); rc = (n_buf_write(nbuf, rawhdr, rawhdr_size) == rawhdr_size); free(rawhdr); headerFree(hdr); return rc; }