Skip to content

Commit d1edc81

Browse files
author
Sam Price
committed
Use a header structure for reading / writing the header.
1 parent 7d70d8f commit d1edc81

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

bscommon.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#ifndef BS_COMMON_H
2+
#define BS_COMMON_H
3+
4+
# include <stdint.h>
5+
6+
#define HEADER_TXT ("ENDSLEY/BSDIFF43")
7+
typedef struct BSHeader{
8+
char header_txt[sizeof(HEADER_TXT)];
9+
uint8_t new_size[8];
10+
}BSHeader;
11+
12+
#endif

bsdiff.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
*/
2727

2828
#include "bsdiff.h"
29-
29+
#include "bscommon.h"
3030
#include <limits.h>
3131
#include <string.h>
3232

@@ -379,7 +379,7 @@ int main(int argc,char *argv[])
379379
int bz2err;
380380
uint8_t *old,*new;
381381
off_t oldsize,newsize;
382-
uint8_t buf[8];
382+
BSHeader header;
383383
FILE * pf;
384384
struct bsdiff_stream stream;
385385
BZFILE* bz2;
@@ -415,12 +415,11 @@ int main(int argc,char *argv[])
415415
err(1, "%s", argv[3]);
416416

417417
/* Write header (signature+newsize)*/
418-
offtout(newsize, buf);
419-
if (fwrite("ENDSLEY/BSDIFF43", 16, 1, pf) != 1 ||
420-
fwrite(buf, sizeof(buf), 1, pf) != 1)
418+
strncpy(header.header_txt,HEADER_TXT, sizeof(header.header_txt));
419+
offtout(newsize, header.new_size);
420+
if( fwrite(&header,sizeof(header),1,pf) != 1)
421421
err(1, "Failed to write header");
422422

423-
424423
if (NULL == (bz2 = BZ2_bzWriteOpen(&bz2err, pf, 9, 0, 0)))
425424
errx(1, "BZ2_bzWriteOpen, bz2err=%d", bz2err);
426425

bspatch.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ int bspatch(const uint8_t* old, int64_t oldsize, uint8_t* new, int64_t newsize,
106106
#include <sys/stat.h>
107107
#include <unistd.h>
108108
#include <fcntl.h>
109-
109+
#include "bscommon.h"
110110
static int bz2_read(const struct bspatch_stream* stream, void* buffer, int length)
111111
{
112112
int n;
@@ -126,7 +126,7 @@ int main(int argc,char * argv[])
126126
FILE * f;
127127
int fd;
128128
int bz2err;
129-
uint8_t header[24];
129+
BSHeader header;
130130
uint8_t *old, *new;
131131
int64_t oldsize, newsize;
132132
BZFILE* bz2;
@@ -140,18 +140,18 @@ int main(int argc,char * argv[])
140140
err(1, "fopen(%s)", argv[3]);
141141

142142
/* Read header */
143-
if (fread(header, 1, 24, f) != 24) {
143+
if (fread(&header, sizeof(header), 1 , f) != 1) {
144144
if (feof(f))
145145
errx(1, "Corrupt patch\n");
146146
err(1, "fread(%s)", argv[3]);
147147
}
148148

149149
/* Check for appropriate magic */
150-
if (memcmp(header, "ENDSLEY/BSDIFF43", 16) != 0)
150+
if (memcmp(header.header_txt, HEADER_TXT, sizeof(HEADER_TXT)) != 0)
151151
errx(1, "Corrupt patch\n");
152152

153153
/* Read lengths from header */
154-
newsize=offtin(header+16);
154+
newsize=offtin(header.new_size);
155155
if(newsize<0)
156156
errx(1,"Corrupt patch\n");
157157

0 commit comments

Comments
 (0)