diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-05-31 14:33:46 -0400 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-05-31 14:33:46 -0400 |
commit | 441e82c9832e2d65fc2db324872928471307dbc4 (patch) | |
tree | 7eb0e2d5c922e3c3c00b63fed2e20150e53c9848 /rpmoffset.c | |
download | rpm2targz-441e82c9832e2d65fc2db324872928471307dbc4.tar.gz rpm2targz-441e82c9832e2d65fc2db324872928471307dbc4.tar.bz2 rpm2targz-441e82c9832e2d65fc2db324872928471307dbc4.zip |
import rpm2targz-9.0 unmodifiedv9.0
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'rpmoffset.c')
-rw-r--r-- | rpmoffset.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/rpmoffset.c b/rpmoffset.c new file mode 100644 index 0000000..ac5984c --- /dev/null +++ b/rpmoffset.c @@ -0,0 +1,23 @@ + +/* Find how deeply inside an .RPM the real data is */ +/* kept, and report the offset in bytes */ + +/* Wouldn't it be a lot more sane if we could just untar these things? */ + +#include <stdlib.h> + +/* These offsets keep getting bigger, so we're going to just bite a 2MB */ +/* chunk of RAM right away so that we have enough. Yeah, horrible */ +/* quick and dirty implementation, but hey -- it gets the job done. */ + +#define RPMBUFSIZ 2097152 + +main() +{ + char *buff = malloc(RPMBUFSIZ),*eb,*p; + for (p = buff, eb = buff + read(0,buff,RPMBUFSIZ); p < eb; p++) + if (*p == '\037' && p[1] == '\213' && p[2] == '\010') + printf("%d\n",p - buff), + exit(0); + exit(1); +} |