* gzwrite_progress_finish called at end of loop to
* indicate success (retcode=0) or failure
*/
-void gzwrite_progress_init(ulong expected_size);
+void gzwrite_progress_init(size_t expected_size);
-void gzwrite_progress(int iteration, ulong bytes_written, ulong total_bytes);
+void gzwrite_progress(int iteration, ulong bytes_written, size_t total_bytes);
-void gzwrite_progress_finish(int retcode, ulong totalwritten, ulong totalsize,
+void gzwrite_progress_finish(int retcode, ulong totalwritten, size_t totalsize,
u32 expected_crc, u32 calculated_crc);
/**
* for files under 4GiB
* Return: 0 if OK, -1 on error
*/
-int gzwrite(unsigned char *src, int len, struct blk_desc *dev, ulong szwritebuf,
- ulong startoffs, ulong szexpected);
+int gzwrite(unsigned char *src, size_t len, struct blk_desc *dev,
+ size_t szwritebuf, off_t startoffs, size_t szexpected);
/**
* gzip()- Compress data into a buffer using the gzip algorithm
#ifdef CONFIG_CMD_UNZIP
__weak
-void gzwrite_progress_init(ulong expectedsize)
+void gzwrite_progress_init(size_t expectedsize)
{
putc('\n');
}
__weak
void gzwrite_progress(int iteration,
ulong bytes_written,
- ulong total_bytes)
+ size_t total_bytes)
{
if (0 == (iteration & 3))
- printf("%lu/%lu\r", bytes_written, total_bytes);
+ printf("%lu/%zu\r", bytes_written, total_bytes);
}
__weak
void gzwrite_progress_finish(int returnval,
ulong bytes_written,
- ulong total_bytes,
+ size_t total_bytes,
u32 expected_crc,
u32 calculated_crc)
{
if (0 == returnval) {
- printf("\n\t%lu bytes, crc 0x%08x\n",
+ printf("\n\t%zu bytes, crc 0x%08x\n",
total_bytes, calculated_crc);
} else {
- printf("\n\tuncompressed %lu of %lu\n"
+ printf("\n\tuncompressed %lu of %zu\n"
"\tcrcs == 0x%08x/0x%08x\n",
bytes_written, total_bytes,
expected_crc, calculated_crc);
}
}
-int gzwrite(unsigned char *src, int len,
- struct blk_desc *dev,
- unsigned long szwritebuf,
- ulong startoffs,
- ulong szexpected)
+int gzwrite(unsigned char *src, size_t len, struct blk_desc *dev,
+ size_t szwritebuf, off_t startoffs, size_t szexpected)
{
int i, flags;
z_stream s;
ulong totalfilled = 0;
lbaint_t blksperbuf, outblock;
u32 expected_crc;
- u32 payload_size;
+ size_t payload_size;
int iteration = 0;
+ if (len > 0xffffffff) {
+ log_err("Input size over 4 GiB in size not supported\n");
+ return -1;
+ }
+
if (!szwritebuf ||
(szwritebuf % dev->blksz) ||
(szwritebuf < dev->blksz)) {
- printf("%s: size %lu not a multiple of %lu\n",
+ printf("%s: size %zu not a multiple of %lu\n",
__func__, szwritebuf, dev->blksz);
return -1;
}
if (szexpected == 0) {
szexpected = le32_to_cpu(szuncompressed);
} else if (szuncompressed != (u32)szexpected) {
- printf("size of %lx doesn't match trailer low bits %x\n",
+ printf("size of %zx doesn't match trailer low bits %x\n",
szexpected, szuncompressed);
return -1;
}
if (lldiv(szexpected, dev->blksz) > (dev->lba - outblock)) {
- printf("%s: uncompressed size %lu exceeds device size\n",
+ printf("%s: uncompressed size %zu exceeds device size\n",
__func__, szexpected);
return -1;
}