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