diff options
author | Denis Vlasenko | 2008-04-21 03:23:59 +0000 |
---|---|---|
committer | Denis Vlasenko | 2008-04-21 03:23:59 +0000 |
commit | 5bb2fc2dc1c2239e2f593a69a47ef315cf21c0d9 (patch) | |
tree | 9ba2cf7e506ecd764d624b655ba8478ea61b998a | |
parent | 01eaee9309c09ca5d7dc6ef3b2e96084affdab30 (diff) | |
download | busybox-5bb2fc2dc1c2239e2f593a69a47ef315cf21c0d9.zip busybox-5bb2fc2dc1c2239e2f593a69a47ef315cf21c0d9.tar.gz |
tentative fix for ppc64 problems with ioctl.
Zero code size impact.
-rw-r--r-- | include/libbb.h | 13 | ||||
-rw-r--r-- | libbb/xfuncs_printf.c | 12 |
2 files changed, 13 insertions, 12 deletions
diff --git a/include/libbb.h b/include/libbb.h index f9f28f9..7a8bfdf 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1019,16 +1019,17 @@ extern int update_passwd(const char *filename, const char *username, /* NB: typically you want to pass fd 0, not 1. Think 'applet | grep something' */ int get_terminal_width_height(int fd, int *width, int *height); -int ioctl_or_perror(int fd, int request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); -int ioctl_or_perror_and_die(int fd, int request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); +/* NB: "unsigned request" is crucial! "int request" will break some arches! */ +int ioctl_or_perror(int fd, unsigned request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); +int ioctl_or_perror_and_die(int fd, unsigned request, void *argp, const char *fmt,...) __attribute__ ((format (printf, 4, 5))); #if ENABLE_IOCTL_HEX2STR_ERROR -int bb_ioctl_or_warn(int fd, int request, void *argp, const char *ioctl_name); -int bb_xioctl(int fd, int request, void *argp, const char *ioctl_name); +int bb_ioctl_or_warn(int fd, unsigned request, void *argp, const char *ioctl_name); +int bb_xioctl(int fd, unsigned request, void *argp, const char *ioctl_name); #define ioctl_or_warn(fd,request,argp) bb_ioctl_or_warn(fd,request,argp,#request) #define xioctl(fd,request,argp) bb_xioctl(fd,request,argp,#request) #else -int bb_ioctl_or_warn(int fd, int request, void *argp); -int bb_xioctl(int fd, int request, void *argp); +int bb_ioctl_or_warn(int fd, unsigned request, void *argp); +int bb_xioctl(int fd, unsigned request, void *argp); #define ioctl_or_warn(fd,request,argp) bb_ioctl_or_warn(fd,request,argp) #define xioctl(fd,request,argp) bb_xioctl(fd,request,argp) #endif diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index dd8687d..d3fb39f 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c @@ -451,7 +451,7 @@ void selinux_or_die(void) #endif } -int ioctl_or_perror_and_die(int fd, int request, void *argp, const char *fmt,...) +int ioctl_or_perror_and_die(int fd, unsigned request, void *argp, const char *fmt,...) { int ret; va_list p; @@ -467,7 +467,7 @@ int ioctl_or_perror_and_die(int fd, int request, void *argp, const char *fmt,... return ret; } -int ioctl_or_perror(int fd, int request, void *argp, const char *fmt,...) +int ioctl_or_perror(int fd, unsigned request, void *argp, const char *fmt,...) { va_list p; int ret = ioctl(fd, request, argp); @@ -481,7 +481,7 @@ int ioctl_or_perror(int fd, int request, void *argp, const char *fmt,...) } #if ENABLE_IOCTL_HEX2STR_ERROR -int bb_ioctl_or_warn(int fd, int request, void *argp, const char *ioctl_name) +int bb_ioctl_or_warn(int fd, unsigned request, void *argp, const char *ioctl_name) { int ret; @@ -490,7 +490,7 @@ int bb_ioctl_or_warn(int fd, int request, void *argp, const char *ioctl_name) bb_simple_perror_msg(ioctl_name); return ret; } -int bb_xioctl(int fd, int request, void *argp, const char *ioctl_name) +int bb_xioctl(int fd, unsigned request, void *argp, const char *ioctl_name) { int ret; @@ -500,7 +500,7 @@ int bb_xioctl(int fd, int request, void *argp, const char *ioctl_name) return ret; } #else -int bb_ioctl_or_warn(int fd, int request, void *argp) +int bb_ioctl_or_warn(int fd, unsigned request, void *argp) { int ret; @@ -509,7 +509,7 @@ int bb_ioctl_or_warn(int fd, int request, void *argp) bb_perror_msg("ioctl %#x failed", request); return ret; } -int bb_xioctl(int fd, int request, void *argp) +int bb_xioctl(int fd, unsigned request, void *argp) { int ret; |