Limit by input size
parent
5af1368bb6
commit
fd1685098a
4
Makefile
4
Makefile
|
@ -2,8 +2,8 @@ all: era_copy era_apply
|
||||||
install: all
|
install: all
|
||||||
cp era_copy era_apply /usr/local/bin
|
cp era_copy era_apply /usr/local/bin
|
||||||
era_copy: era_copy.c
|
era_copy: era_copy.c
|
||||||
gcc -o era_copy -Wall era_copy.c
|
gcc -g -o era_copy -Wall era_copy.c
|
||||||
era_apply: era_apply.c
|
era_apply: era_apply.c
|
||||||
gcc -o era_apply -Wall era_apply.c
|
gcc -g -o era_apply -Wall era_apply.c
|
||||||
blocksum: blocksum.c
|
blocksum: blocksum.c
|
||||||
gcc -O3 -lssl -lcrypto -o blocksum blocksum.c
|
gcc -O3 -lssl -lcrypto -o blocksum blocksum.c
|
||||||
|
|
16
era_copy.c
16
era_copy.c
|
@ -45,9 +45,11 @@ void read_era_invalidate_and_copy(FILE *fp, int src, int era_block_size, int pri
|
||||||
// read input XML
|
// read input XML
|
||||||
char buf[XML_BUFSIZE] = { 0 };
|
char buf[XML_BUFSIZE] = { 0 };
|
||||||
char c = 0;
|
char c = 0;
|
||||||
|
long long srcsize = 0;
|
||||||
long long start = 0, length = 0, total = 0;
|
long long start = 0, length = 0, total = 0;
|
||||||
long long *offsets = NULL;
|
long long *offsets = NULL;
|
||||||
int i, offsets_alloc = 0, offsets_len = 0;
|
int i, offsets_alloc = 0, offsets_len = 0;
|
||||||
|
lseek64(src, 0, SEEK_SET);
|
||||||
if (fgets(buf, XML_BUFSIZE, fp) == NULL)
|
if (fgets(buf, XML_BUFSIZE, fp) == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Input block list is empty\n");
|
fprintf(stderr, "Input block list is empty\n");
|
||||||
|
@ -91,6 +93,20 @@ void read_era_invalidate_and_copy(FILE *fp, int src, int era_block_size, int pri
|
||||||
}
|
}
|
||||||
if (src >= 0)
|
if (src >= 0)
|
||||||
{
|
{
|
||||||
|
srcsize = lseek64(src, 0, SEEK_END);
|
||||||
|
if (srcsize < 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Can't determine input size\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
for (i = 0; i < offsets_len; i += 2)
|
||||||
|
{
|
||||||
|
if (offsets[i] >= srcsize)
|
||||||
|
break;
|
||||||
|
if (offsets[i]+offsets[i+1] > srcsize)
|
||||||
|
offsets[i+1] = srcsize-offsets[i];
|
||||||
|
}
|
||||||
|
offsets_len = i;
|
||||||
long long copied = 0, prev_copied = 0;
|
long long copied = 0, prev_copied = 0;
|
||||||
if (print_progress)
|
if (print_progress)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue