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