Re: Re[4]: [jrpm-devel]

Paul Nasrat <[email protected]> Mon, 11 Apr 2005 16:08:12 +0100
Newsgroups gmane.comp.java.jrpm.devel
Organization Red Hat, Inc.
Message-ID <[email protected]>
On Mon, 2005-04-11 at 17:01 +0300, Zig wrote:
> Hello Paul,
> 
> Monday, April 11, 2005, 11:42:54 AM, you wrote:
> 
> >> PN> I have some simple code using db4-java to read from an rpmdb, I've not
> >> PN> had a chance to do much more due to other work but I can post an example
> >> PN> later today.
> >> 
> >> Still waiting for your code :)
> PN> I think I may have just sent to Michael.
> Michael, could you please send it to me?


>From my eclipse local history - this won't work with recent sleepycat -
4.3.27 here where the new style api exists.

/*
 * Created on 03-Sep-2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package org.rpm;

import java.io.ByteArrayInputStream;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;

import com.sleepycat.db;
import com.jguild.jrpm.io.*;

import org.apache.log4j.*;

/**
 * @author pauln
 * 
 * TODO To change the template for this generated type comment go to
Window -
 * Preferences - Java - Code Style - Code Templates
 */
public class RpmDb {

	private static DbEnv env;

	private static Db rpmdb;

	private static final String RPMDB_HOME = "/var/lib/rpm";

	public static void main(String[] args) throws Exception {
		Dbc mi;
		Dbt data = new Dbt();
		Dbt key = new Dbt();
		Logger logger;
		String nevr;
		
		DbEnv dbenv = new DbEnv(0);
        int envFlags = Db.DB_INIT_TXN | Db.DB_INIT_LOCK |
Db.DB_INIT_MPOOL | Db.DB_CREATE | Db.DB_PRIVATE;
		dbenv.open("/tmp/rpm", envFlags, 0644);
		rpmdb = new Db(dbenv, 0);
		rpmdb.open(null, RPMDB_HOME + "/Packages", null, Db.DB_HASH,
				Db.DB_RDONLY, 0);
		mi = rpmdb.cursor(null, 0);
		
		/* Initalise logging */
		
		logger = Logger.getLogger("com.jguild.jrpm");
		logger.addAppender(
                new ConsoleAppender(new SimpleLayout()));
		logger.setLevel(Level.INFO);
		mi.get(key,data,Db.DB_FIRST);
		while( Db.DB_NOTFOUND != mi.get( key,data,Db.DB_NEXT ) ) {
			byte[] hdr;
			ByteArrayInputStream io;
			RPMHeader myhdr;
			nevr = NEVR(data);
			System.out.println(nevr);
		}
		
		rpmdb.close(0);

	}

	/**
	 * @param data - RPM header data
	 * @throws IOException
	 */
	private static String NEVR(Dbt data) throws IOException {
		byte[] hdr = data.getData();
		ByteArrayInputStream io = new ByteArrayInputStream(hdr);
		RPMHeader myhdr = new RPMHeader(new DataInputStream(io), true);	
		return(myhdr.getTag("name").toString() + "-" +
myhdr.getTag("version").toString() + "-" +
myhdr.getTag("release").toString());
	}

}



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click