diff --git a/archival/cpio.c b/archival/cpio.c
index d0d3288..751e879 100644
--- a/archival/cpio.c
+++ b/archival/cpio.c
@@ -35,7 +35,7 @@
 	/* Initialise */
 	archive_handle = init_handle();
 	archive_handle->src_fd = STDIN_FILENO;
-	archive_handle->seek = seek_by_char;
+	archive_handle->seek = seek_by_read;
 	archive_handle->flags = ARCHIVE_EXTRACT_NEWER | ARCHIVE_PRESERVE_DATE;
 
 	opt = getopt32(argc, argv, "ituvF:dm", &cpio_filename);
diff --git a/archival/libunarchive/Kbuild b/archival/libunarchive/Kbuild
index c5f1bfb..4e14541 100644
--- a/archival/libunarchive/Kbuild
+++ b/archival/libunarchive/Kbuild
@@ -21,7 +21,7 @@
 \
 	archive_xread_all_eof.o \
 \
-	seek_by_char.o \
+	seek_by_read.o \
 	seek_by_jump.o \
 \
 	data_align.o \
diff --git a/archival/libunarchive/get_header_ar.c b/archival/libunarchive/get_header_ar.c
index cabb410..7372ada 100644
--- a/archival/libunarchive/get_header_ar.c
+++ b/archival/libunarchive/get_header_ar.c
@@ -46,14 +46,14 @@
 
 	/* align the headers based on the header magic */
 	if ((ar.formatted.magic[0] != '`') || (ar.formatted.magic[1] != '\n')) {
-		bb_error_msg_and_die("Invalid ar header");
+		bb_error_msg_and_die("invalid ar header");
 	}
 
-	typed->mode = strtol(ar.formatted.mode, NULL, 8);
-	typed->mtime = atoi(ar.formatted.date);
-	typed->uid = atoi(ar.formatted.uid);
-	typed->gid = atoi(ar.formatted.gid);
-	typed->size = atoi(ar.formatted.size);
+	typed->mode = xstrtoul(ar.formatted.mode, 8);
+	typed->mtime = xatou(ar.formatted.date);
+	typed->uid = xatou(ar.formatted.uid);
+	typed->gid = xatou(ar.formatted.gid);
+	typed->size = xatoul(ar.formatted.size);
 
 	/* long filenames have '/' as the first character */
 	if (ar.formatted.name[0] == '/') {
diff --git a/archival/libunarchive/get_header_tar.c b/archival/libunarchive/get_header_tar.c
index 0c622f4..d3cd96d 100644
--- a/archival/libunarchive/get_header_tar.c
+++ b/archival/libunarchive/get_header_tar.c
@@ -62,10 +62,10 @@
 			 * Read until the end to empty the pipe from gz or bz2
 			 */
 			while (full_read(archive_handle->src_fd, tar.raw, 512) == 512);
-			return(EXIT_FAILURE);
+			return EXIT_FAILURE;
 		}
 		end = 1;
-		return(EXIT_SUCCESS);
+		return EXIT_SUCCESS;
 	}
 	end = 0;
 
@@ -76,19 +76,18 @@
 #ifdef CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
 		if (strncmp(tar.formatted.magic, "\0\0\0\0\0", 5) != 0)
 #endif
-			bb_error_msg_and_die("Invalid tar magic");
+			bb_error_msg_and_die("invalid tar magic");
 	}
 	/* Do checksum on headers */
 	for (i =  0; i < 148 ; i++) {
 		sum += tar.raw[i];
 	}
 	sum += ' ' * 8;
-	for (i =  156; i < 512 ; i++) {
+	for (i = 156; i < 512 ; i++) {
 		sum += tar.raw[i];
 	}
-	if (sum != strtol(tar.formatted.chksum, NULL, 8)) {
-		bb_error_msg("Invalid tar header checksum");
-		return(EXIT_FAILURE);
+	if (sum != xstrtoul(tar.formatted.chksum, 8)) {
+		bb_error_msg_and_die("invalid tar header checksum");
 	}
 
 #ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
@@ -102,8 +101,7 @@
 	} else
 #endif
 	{
-		file_header->name = xstrndup(tar.formatted.name,100);
-
+		file_header->name = xstrndup(tar.formatted.name, 100);
 		if (tar.formatted.prefix[0]) {
 			char *temp = file_header->name;
 			file_header->name = concat_path_file(tar.formatted.prefix, temp);
@@ -111,17 +109,18 @@
 		}
 	}
 
-	file_header->uid = strtol(tar.formatted.uid, NULL, 8);
-	file_header->gid = strtol(tar.formatted.gid, NULL, 8);
-	file_header->size = strtol(tar.formatted.size, NULL, 8);
-	file_header->mtime = strtol(tar.formatted.mtime, NULL, 8);
-	file_header->link_name = (tar.formatted.linkname[0] != '\0') ?
-	    xstrdup(tar.formatted.linkname) : NULL;
-	file_header->device = makedev(strtol(tar.formatted.devmajor, NULL, 8),
-		strtol(tar.formatted.devminor, NULL, 8));
+	file_header->uid = xstrtoul(tar.formatted.uid, 8);
+	file_header->gid = xstrtoul(tar.formatted.gid, 8);
+	// TODO: LFS support
+	file_header->size = xstrtoul(tar.formatted.size, 8);
+	file_header->mtime = xstrtoul(tar.formatted.mtime, 8);
+	file_header->link_name = tar.formatted.linkname[0] ?
+	                         xstrdup(tar.formatted.linkname) : NULL;
+	file_header->device = makedev(xstrtoul(tar.formatted.devmajor, 8),
+	                              xstrtoul(tar.formatted.devminor, 8));
 
 	/* Set bits 0-11 of the files mode */
-	file_header->mode = 07777 & strtol(tar.formatted.mode, NULL, 8);
+	file_header->mode = 07777 & xstrtoul(tar.formatted.mode, 8);
 
 	/* Set bits 12-15 of the files mode */
 	switch (tar.formatted.typeflag) {
@@ -161,7 +160,7 @@
 			xread(archive_handle->src_fd, longname, file_header->size);
 			archive_handle->offset += file_header->size;
 
-			return(get_header_tar(archive_handle));
+			return get_header_tar(archive_handle);
 		}
 	case 'K': {
 			linkname = xzalloc(file_header->size + 1);
@@ -169,7 +168,7 @@
 			archive_handle->offset += file_header->size;
 
 			file_header->name = linkname;
-			return(get_header_tar(archive_handle));
+			return get_header_tar(archive_handle);
 		}
 	case 'D':	/* GNU dump dir */
 	case 'M':	/* Continuation of multi volume archive*/
@@ -179,10 +178,10 @@
 #endif
 	case 'g':	/* pax global header */
 	case 'x':	/* pax extended header */
-		bb_error_msg("Ignoring extension type %c", tar.formatted.typeflag);
+		bb_error_msg("ignoring extension type %c", tar.formatted.typeflag);
 		break;
 	default:
-		bb_error_msg("Unknown typeflag: 0x%x", tar.formatted.typeflag);
+		bb_error_msg("unknown typeflag: 0x%x", tar.formatted.typeflag);
 	}
 	{	/* Strip trailing '/' in directories */
 		/* Must be done after mode is set as '/' is used to check if its a directory */
@@ -204,5 +203,5 @@
 
 	free(file_header->link_name);
 
-	return(EXIT_SUCCESS);
+	return EXIT_SUCCESS;
 }
diff --git a/archival/libunarchive/get_header_tar_bz2.c b/archival/libunarchive/get_header_tar_bz2.c
index a8b6308..e3cb328 100644
--- a/archival/libunarchive/get_header_tar_bz2.c
+++ b/archival/libunarchive/get_header_tar_bz2.c
@@ -16,12 +16,12 @@
 char get_header_tar_bz2(archive_handle_t *archive_handle)
 {
 	/* Cant lseek over pipe's */
-	archive_handle->seek = seek_by_char;
+	archive_handle->seek = seek_by_read;
 
 	archive_handle->src_fd = open_transformer(archive_handle->src_fd, uncompressStream);
 	archive_handle->offset = 0;
-	while (get_header_tar(archive_handle) == EXIT_SUCCESS);
+	while (get_header_tar(archive_handle) == EXIT_SUCCESS) /**/;
 
 	/* Can only do one file at a time */
-	return(EXIT_FAILURE);
+	return EXIT_FAILURE;
 }
diff --git a/archival/libunarchive/get_header_tar_gz.c b/archival/libunarchive/get_header_tar_gz.c
index 24e4f9c..af059a1 100644
--- a/archival/libunarchive/get_header_tar_gz.c
+++ b/archival/libunarchive/get_header_tar_gz.c
@@ -13,7 +13,7 @@
 	unsigned char magic[2];
 
 	/* Cant lseek over pipe's */
-	archive_handle->seek = seek_by_char;
+	archive_handle->seek = seek_by_read;
 
 	xread(archive_handle->src_fd, &magic, 2);
 	if ((magic[0] != 0x1f) || (magic[1] != 0x8b)) {
@@ -24,8 +24,8 @@
 
 	archive_handle->src_fd = open_transformer(archive_handle->src_fd, inflate_gunzip);
 	archive_handle->offset = 0;
-	while (get_header_tar(archive_handle) == EXIT_SUCCESS);
+	while (get_header_tar(archive_handle) == EXIT_SUCCESS) /**/;
 
 	/* Can only do one file at a time */
-	return(EXIT_FAILURE);
+	return EXIT_FAILURE;
 }
diff --git a/archival/libunarchive/get_header_tar_lzma.c b/archival/libunarchive/get_header_tar_lzma.c
index e38583f..06b8daa 100644
--- a/archival/libunarchive/get_header_tar_lzma.c
+++ b/archival/libunarchive/get_header_tar_lzma.c
@@ -11,13 +11,12 @@
 char get_header_tar_lzma(archive_handle_t * archive_handle)
 {
 	/* Can't lseek over pipes */
-	archive_handle->seek = seek_by_char;
+	archive_handle->seek = seek_by_read;
 
 	archive_handle->src_fd = open_transformer(archive_handle->src_fd, unlzma);
 	archive_handle->offset = 0;
-	while (get_header_tar(archive_handle) == EXIT_SUCCESS);
+	while (get_header_tar(archive_handle) == EXIT_SUCCESS) /**/;
 
 	/* Can only do one file at a time */
 	return EXIT_FAILURE;
 }
-
diff --git a/archival/libunarchive/seek_by_jump.c b/archival/libunarchive/seek_by_jump.c
index 231360f..e1917dd 100644
--- a/archival/libunarchive/seek_by_jump.c
+++ b/archival/libunarchive/seek_by_jump.c
@@ -16,7 +16,7 @@
 	if (lseek(archive_handle->src_fd, (off_t) amount, SEEK_CUR) == (off_t) -1) {
 #ifdef CONFIG_FEATURE_UNARCHIVE_TAPE
 		if (errno == ESPIPE) {
-			seek_by_char(archive_handle, amount);
+			seek_by_read(archive_handle, amount);
 		} else
 #endif
 			bb_perror_msg_and_die("Seek failure");
diff --git a/archival/libunarchive/seek_by_char.c b/archival/libunarchive/seek_by_read.c
similarity index 66%
rename from archival/libunarchive/seek_by_char.c
rename to archival/libunarchive/seek_by_read.c
index f4d8c2f..03cbb9e 100644
--- a/archival/libunarchive/seek_by_char.c
+++ b/archival/libunarchive/seek_by_read.c
@@ -8,14 +8,10 @@
 #include "unarchive.h"
 #include "libbb.h"
 
-
-
-/*	If we are reading through a pipe(), or from stdin then we cant lseek,
+/*  If we are reading through a pipe(), or from stdin then we cant lseek,
  *  we must read and discard the data to skip over it.
- *
- *  TODO: rename to seek_by_read
  */
-void seek_by_char(const archive_handle_t *archive_handle, const unsigned int jump_size)
+void seek_by_read(const archive_handle_t *archive_handle, const unsigned int jump_size)
 {
 	if (jump_size) {
 		bb_copyfd_size(archive_handle->src_fd, -1, jump_size);
diff --git a/archival/rpm.c b/archival/rpm.c
index dc37e0e..448a479 100644
--- a/archival/rpm.c
+++ b/archival/rpm.c
@@ -173,7 +173,7 @@
 
 	/* Initialise */
 	archive_handle = init_handle();
-	archive_handle->seek = seek_by_char;
+	archive_handle->seek = seek_by_read;
 	//archive_handle->action_header = header_list;
 	archive_handle->action_data = data_extract_all;
 	archive_handle->flags |= ARCHIVE_PRESERVE_DATE;
diff --git a/archival/tar.c b/archival/tar.c
index 3775598..b2ae3b2 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -541,7 +541,7 @@
 static char get_header_tar_Z(archive_handle_t *archive_handle)
 {
 	/* Cant lseek over pipe's */
-	archive_handle->seek = seek_by_char;
+	archive_handle->seek = seek_by_read;
 
 	/* do the decompression, and cleanup */
 	if (xread_char(archive_handle->src_fd) != 0x1f ||
@@ -805,7 +805,7 @@
 
 		if ((tar_filename[0] == '-') && (tar_filename[1] == '\0')) {
 			tar_handle->src_fd = fileno(tar_stream);
-			tar_handle->seek = seek_by_char;
+			tar_handle->seek = seek_by_read;
 		} else {
 			tar_handle->src_fd = xopen3(tar_filename, flags, 0666);
 		}
diff --git a/archival/unzip.c b/archival/unzip.c
index f639257..f70baeb 100644
--- a/archival/unzip.c
+++ b/archival/unzip.c
@@ -51,11 +51,12 @@
 	} formatted ATTRIBUTE_PACKED;
 } zip_header_t;
 
+/* This one never works with LARGEFILE-sized skips */
 static void unzip_skip(int fd, off_t skip)
 {
 	if (lseek(fd, skip, SEEK_CUR) == (off_t)-1) {
 		if ((errno != ESPIPE) || (bb_copyfd_size(fd, -1, skip) != skip)) {
-			bb_error_msg_and_die("Seek failure");
+			bb_error_msg_and_die("seek failure");
 		}
 	}
 }
@@ -65,7 +66,7 @@
 	/* Create all leading directories */
 	char *name = xstrdup(fn);
 	if (bb_make_directory(dirname(name), 0777, FILEUTILS_RECUR)) {
-		bb_error_msg_and_die("Exiting"); /* bb_make_directory is noisy */
+		bb_error_msg_and_die("exiting"); /* bb_make_directory is noisy */
 	}
 	free(name);
 }
@@ -76,7 +77,7 @@
 		/* Method 0 - stored (not compressed) */
 		int size = zip_header->formatted.ucmpsize;
 		if (size && (bb_copyfd_size(src_fd, dst_fd, size) != size)) {
-			bb_error_msg_and_die("Cannot complete extraction");
+			bb_error_msg_and_die("cannot complete extraction");
 		}
 
 	} else {
@@ -86,12 +87,12 @@
 		inflate_cleanup();
 		/* Validate decompression - crc */
 		if (zip_header->formatted.crc32 != (gunzip_crc ^ 0xffffffffL)) {
-			bb_error_msg("Invalid compressed data--crc error");
+			bb_error_msg("invalid compressed data--%s error", "crc");
 			return 1;
 		}
 		/* Validate decompression - size */
 		if (zip_header->formatted.ucmpsize != gunzip_bytes_out) {
-			bb_error_msg("Invalid compressed data--length error");
+			bb_error_msg("invalid compressed data--%s error", "length");
 			return 1;
 		}
 	}
