From c30dcfedd3c616f706b4f5db166793de4ac1f64d Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 28 Feb 2021 13:23:14 -0800 Subject: Use unsigned long int for ioctl ops MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 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. --- paxlib/pax.h | 11 +++++------ paxlib/rtape.c | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'paxlib') diff --git a/paxlib/pax.h b/paxlib/pax.h index a9e565e..e82c119 100644 --- a/paxlib/pax.h +++ b/paxlib/pax.h @@ -37,17 +37,17 @@ struct tar_stat_info unsigned long atime_nsec; unsigned long mtime_nsec; unsigned long ctime_nsec; - + off_t archive_file_size; /* Size of file as stored in the archive. Equals stat.st_size for non-sparse files */ - bool is_sparse; /* Is the file sparse */ - + bool is_sparse; /* Is the file sparse */ + size_t sparse_map_avail; /* Index to the first unused element in sparse_map array. Zero if the file is not sparse */ size_t sparse_map_size; /* Size of the sparse map */ - struct sp_array *sparse_map; + struct sp_array *sparse_map; }; @@ -58,7 +58,7 @@ int rmt_close (int handle); size_t rmt_read (int handle, char *buffer, size_t length); size_t rmt_write (int handle, char *buffer, size_t length); off_t rmt_lseek (int handle, off_t offset, int whence); -int rmt_ioctl (int handle, int operation, char *argument); +int rmt_ioctl (int handle, unsigned long int operation, char *argument); /* Tar-specific functions */ @@ -66,4 +66,3 @@ void tar_archive_create (paxbuf_t *pbuf, const char *filename, int remote, int mode, size_t bfactor); void tar_set_rmt (paxbuf_t pbuf, const char *rmt); void tar_set_rsh (paxbuf_t pbuf, const char *rsh); - diff --git a/paxlib/rtape.c b/paxlib/rtape.c index 0a31c44..2364594 100644 --- a/paxlib/rtape.c +++ b/paxlib/rtape.c @@ -676,7 +676,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, char *argument) +rmt_ioctl (int handle, unsigned long int operation, char *argument) { switch (operation) { -- cgit v1.2.1