diff options
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); +} |