1 /* 2 * Copyright (c) 2005 Michael Schroeder (mls@suse.de) 3 * 4 * This program is licensed under the BSD license, read LICENSE.BSD 5 * for further information 6 */ 7 8 #ifdef DELTARPM_64BIT 9 typedef uint64_t drpmuint; 10 typedef int64_t drpmint; 11 #else 12 typedef unsigned int drpmuint; 13 typedef int drpmint; 14 #endif 15 16 struct fileblock 17 { 18 struct rpmhead *h; 19 int cnt; 20 char **filenames; 21 unsigned int *filemodes; 22 unsigned int *filesizes; 23 unsigned int *filerdevs; 24 char **filelinktos; 25 char **filemd5s; 26 int digestalgo; 27 }; 28 29 30 #define SEQCHECK_MD5 (1<<0) 31 #define SEQCHECK_SIZE (1<<1) 32 33 struct openfile; 34 35 struct seqdescr { 36 int i; 37 int cpiolen; 38 int datalen; 39 drpmuint off; 40 struct openfile *f; 41 }; 42 43 44 struct deltarpm { 45 char *name; 46 int deltacomp; 47 unsigned char rpmlead[96]; 48 struct rpmhead *h; 49 int version; 50 char *nevr; 51 unsigned char *seq; 52 unsigned int seql; 53 char *targetnevr; 54 unsigned char targetmd5[16]; 55 unsigned int targetsize; 56 unsigned int targetcomp; 57 unsigned char *targetcomppara; 58 unsigned int targetcompparalen; 59 unsigned char *lead; 60 unsigned int leadl; 61 unsigned int payformatoff; 62 drpmuint paylen; 63 unsigned int inn; 64 unsigned int outn; 65 unsigned int *in; 66 unsigned int *out; 67 drpmuint outlen; 68 unsigned int addblklen; 69 unsigned char *addblk; 70 drpmuint inlen; 71 unsigned char *indata; 72 73 unsigned int compheadlen; 74 unsigned int *offadjs; 75 unsigned int offadjn; 76 77 struct fileblock fb; 78 struct seqdescr *sdesc; 79 int nsdesc; 80 unsigned char *cpiodata; 81 82 struct deltarpm *next; 83 struct deltarpm *prev; 84 unsigned char *outptr; 85 int combaddblk; 86 }; 87 88 /* from readdeltarpm.c */ 89 int headtofb(struct rpmhead *h, struct fileblock *fb); 90 struct seqdescr *expandseq(unsigned char *seq, int seql, int *nump, struct fileblock *fb, int (*checkfunc)(char *, int, unsigned char *, unsigned int)); 91 void readdeltarpm(char *n, struct deltarpm *d, struct cfile **cfp); 92 93 /* from writedeltarpm.c */ 94 void writedeltarpm(struct deltarpm *d, unsigned char **indatalist); 95 96