summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2021-02-28 13:23:14 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2021-02-28 13:25:37 -0800
commitc30dcfedd3c616f706b4f5db166793de4ac1f64d (patch)
tree760715adbb65d90a59b1764fe9cc03d6c406d480 /lib
parent7c7dc5ea3a8f7fca0c2696e434938c1048f9e66d (diff)
downloadpaxutils-c30dcfedd3c616f706b4f5db166793de4ac1f64d.tar.gz
Use unsigned long int for ioctl ops
* lib/rtapelib.c (rmt_ioctl__): * paxlib/rtape.c (rmt_ioctl): Arg is now of type unsigned long int, not int. This works better on GNU/Linux, where some ioctl values used by this code do not fit in int. FreeBSD ioctl also has unsigned long int here, and old hosts where it’s int should still work when this is unsigned long int. Problem reported by clang.
Diffstat (limited to 'lib')
-rw-r--r--lib/rmt.h2
-rw-r--r--lib/rtapelib.c3
2 files changed, 2 insertions, 3 deletions
diff --git a/lib/rmt.h b/lib/rmt.h
index 721061c..45216fe 100644
--- a/lib/rmt.h
+++ b/lib/rmt.h
@@ -25,7 +25,7 @@ int rmt_close__ (int);
size_t rmt_read__ (int, char *, size_t);
size_t rmt_write__ (int, char *, size_t);
off_t rmt_lseek__ (int, off_t, int);
-int rmt_ioctl__ (int, int, void *);
+int rmt_ioctl__ (int, unsigned long int, void *);
extern bool force_local_option;
diff --git a/lib/rtapelib.c b/lib/rtapelib.c
index 0c516e5..5190cd4 100644
--- a/lib/rtapelib.c
+++ b/lib/rtapelib.c
@@ -656,7 +656,7 @@ rmt_lseek__ (int handle, off_t offset, int whence)
/* Perform a raw tape operation on remote tape connection HANDLE.
Return the results of the ioctl, or -1 on error. */
int
-rmt_ioctl__ (int handle, int operation, void *argument)
+rmt_ioctl__ (int handle, unsigned long int operation, void *argument)
{
switch (operation)
{
@@ -674,7 +674,6 @@ rmt_ioctl__ (int handle, int operation, void *argument)
/* MTIOCTOP is the easy one. Nothing is transferred in binary. */
- verify (EXPR_SIGNED (mtop->mt_count));
intmax_t count = mtop->mt_count;
sprintf (command_buffer, "I%d\n%jd\n", mtop->mt_op, count);
if (do_command (handle, command_buffer) == -1)