with 2.4 kernel headers, lo_file_name is char, but with 2.6
headers we get a u8 for lo_file_name, so always cast to (char *)
when treating it as such.
diff --git a/libbb/loop.c b/libbb/loop.c
index 09b2bea..81dfca4 100644
--- a/libbb/loop.c
+++ b/libbb/loop.c
@@ -60,7 +60,7 @@
if ((fd = open(device, O_RDONLY)) < 0) return 0;
if (!ioctl(fd, BB_LOOP_GET_STATUS, &loopinfo))
dev=bb_xasprintf("%ld %s", (long) loopinfo.lo_offset,
- loopinfo.lo_file_name);
+ (char *)loopinfo.lo_file_name);
close(fd);
return dev;
@@ -114,7 +114,7 @@
/* If device free, claim it. */
if(rc && errno==ENXIO) {
memset(&loopinfo, 0, sizeof(loopinfo));
- safe_strncpy(loopinfo.lo_file_name, file, LO_NAME_SIZE);
+ safe_strncpy((char *)loopinfo.lo_file_name, file, LO_NAME_SIZE);
loopinfo.lo_offset = offset;
/* Associate free loop device with file. */
if(!ioctl(dfd, LOOP_SET_FD, ffd) &&
@@ -125,7 +125,7 @@
file isn't pretty either. In general, mounting the same file twice
without using losetup manually is problematic.)
*/
- } else if(strcmp(file,loopinfo.lo_file_name)
+ } else if(strcmp(file,(char *)loopinfo.lo_file_name)
|| offset!=loopinfo.lo_offset) rc=-1;
close(dfd);
try_again: