Merge branch 'compiler-warnings' of https://github.com/rudimeier/util-linux
* 'compiler-warnings' of https://github.com/rudimeier/util-linux: exec_shell: prevent basename from modifying env lib/path: ifdef path_set_prefix() like in path.h lib: fix unused parameters and variables misc: fix some printf format strings include: add missing includes ipcs: ulong -> unsigned long libcommon: don't include sysinfo.h
This commit is contained in:
commit
173607a254
|
@ -591,26 +591,26 @@ static void print_stats(struct fsck_instance *inst)
|
||||||
|
|
||||||
if (report_stats_file)
|
if (report_stats_file)
|
||||||
fprintf(report_stats_file, "%s %d %ld "
|
fprintf(report_stats_file, "%s %d %ld "
|
||||||
"%ld.%06ld %d.%06d %d.%06d\n",
|
"%ld.%06ld %ld.%06ld %ld.%06ld\n",
|
||||||
fs_get_device(inst->fs),
|
fs_get_device(inst->fs),
|
||||||
inst->exit_status,
|
inst->exit_status,
|
||||||
inst->rusage.ru_maxrss,
|
inst->rusage.ru_maxrss,
|
||||||
delta.tv_sec, delta.tv_usec,
|
(long)delta.tv_sec, (long)delta.tv_usec,
|
||||||
(int)inst->rusage.ru_utime.tv_sec,
|
(long)inst->rusage.ru_utime.tv_sec,
|
||||||
(int)inst->rusage.ru_utime.tv_usec,
|
(long)inst->rusage.ru_utime.tv_usec,
|
||||||
(int)inst->rusage.ru_stime.tv_sec,
|
(long)inst->rusage.ru_stime.tv_sec,
|
||||||
(int)inst->rusage.ru_stime.tv_usec);
|
(long)inst->rusage.ru_stime.tv_usec);
|
||||||
else
|
else
|
||||||
fprintf(stdout, "%s: status %d, rss %ld, "
|
fprintf(stdout, "%s: status %d, rss %ld, "
|
||||||
"real %ld.%06ld, user %d.%06d, sys %d.%06d\n",
|
"real %ld.%06ld, user %ld.%06ld, sys %ld.%06ld\n",
|
||||||
fs_get_device(inst->fs),
|
fs_get_device(inst->fs),
|
||||||
inst->exit_status,
|
inst->exit_status,
|
||||||
inst->rusage.ru_maxrss,
|
inst->rusage.ru_maxrss,
|
||||||
delta.tv_sec, delta.tv_usec,
|
(long)delta.tv_sec, (long)delta.tv_usec,
|
||||||
(int)inst->rusage.ru_utime.tv_sec,
|
(long)inst->rusage.ru_utime.tv_sec,
|
||||||
(int)inst->rusage.ru_utime.tv_usec,
|
(long)inst->rusage.ru_utime.tv_usec,
|
||||||
(int)inst->rusage.ru_stime.tv_sec,
|
(long)inst->rusage.ru_stime.tv_sec,
|
||||||
(int)inst->rusage.ru_stime.tv_usec);
|
(long)inst->rusage.ru_stime.tv_usec);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
13
lib/at.c
13
lib/at.c
|
@ -22,8 +22,8 @@ int fstat_at(int dir, const char *dirname __attribute__ ((__unused__)),
|
||||||
nofollow ? AT_SYMLINK_NOFOLLOW : 0);
|
nofollow ? AT_SYMLINK_NOFOLLOW : 0);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int fstat_at(int dir, const char *dirname, const char *filename,
|
int fstat_at(int dir __attribute__ ((__unused__)), const char *dirname,
|
||||||
struct stat *st, int nofollow)
|
const char *filename, struct stat *st, int nofollow)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (*filename != '/') {
|
if (*filename != '/') {
|
||||||
|
@ -48,7 +48,8 @@ int open_at(int dir, const char *dirname __attribute__ ((__unused__)),
|
||||||
return openat(dir, filename, flags);
|
return openat(dir, filename, flags);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
int open_at(int dir, const char *dirname, const char *filename, int flags)
|
int open_at(int dir __attribute__((__unused__)), const char *dirname,
|
||||||
|
const char *filename, int flags)
|
||||||
{
|
{
|
||||||
if (*filename != '/') {
|
if (*filename != '/') {
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
|
@ -82,8 +83,8 @@ ssize_t readlink_at(int dir, const char *dirname __attribute__ ((__unused__)),
|
||||||
return readlinkat(dir, pathname, buf, bufsiz);
|
return readlinkat(dir, pathname, buf, bufsiz);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
ssize_t readlink_at(int dir, const char *dirname, const char *pathname,
|
ssize_t readlink_at(int dir __attribute__((__unused__)), const char *dirname,
|
||||||
char *buf, size_t bufsiz)
|
const char *pathname, char *buf, size_t bufsiz)
|
||||||
{
|
{
|
||||||
if (*pathname != '/') {
|
if (*pathname != '/') {
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
|
@ -128,7 +129,7 @@ int main(int argc, char *argv[])
|
||||||
printf("%32s ", d->d_name);
|
printf("%32s ", d->d_name);
|
||||||
|
|
||||||
if (fstat_at(dirfd(dir), dirname, d->d_name, &st, 0) == 0)
|
if (fstat_at(dirfd(dir), dirname, d->d_name, &st, 0) == 0)
|
||||||
printf("%16jd bytes ", st.st_size);
|
printf("%16zd bytes ", st.st_size);
|
||||||
else
|
else
|
||||||
printf("%16s bytes ", "???");
|
printf("%16s bytes ", "???");
|
||||||
|
|
||||||
|
|
41
lib/blkdev.c
41
lib/blkdev.c
|
@ -202,17 +202,20 @@ blkdev_get_sectors(int fd, unsigned long long *sectors)
|
||||||
* This is the smallest unit the storage device can
|
* This is the smallest unit the storage device can
|
||||||
* address. It is typically 512 bytes.
|
* address. It is typically 512 bytes.
|
||||||
*/
|
*/
|
||||||
|
#ifdef BLKSSZGET
|
||||||
int blkdev_get_sector_size(int fd, int *sector_size)
|
int blkdev_get_sector_size(int fd, int *sector_size)
|
||||||
{
|
{
|
||||||
#ifdef BLKSSZGET
|
|
||||||
if (ioctl(fd, BLKSSZGET, sector_size) >= 0)
|
if (ioctl(fd, BLKSSZGET, sector_size) >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
|
int blkdev_get_sector_size(int fd __attribute__((__unused__)), int *sector_size)
|
||||||
|
{
|
||||||
*sector_size = DEFAULT_SECTOR_SIZE;
|
*sector_size = DEFAULT_SECTOR_SIZE;
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get physical block device size. The BLKPBSZGET is supported since Linux
|
* Get physical block device size. The BLKPBSZGET is supported since Linux
|
||||||
|
@ -228,24 +231,27 @@ int blkdev_get_sector_size(int fd, int *sector_size)
|
||||||
* physec = DEFAULT_SECTOR_SIZE;
|
* physec = DEFAULT_SECTOR_SIZE;
|
||||||
* }
|
* }
|
||||||
*/
|
*/
|
||||||
|
#ifdef BLKPBSZGET
|
||||||
int blkdev_get_physector_size(int fd, int *sector_size)
|
int blkdev_get_physector_size(int fd, int *sector_size)
|
||||||
{
|
{
|
||||||
#ifdef BLKPBSZGET
|
|
||||||
if (ioctl(fd, BLKPBSZGET, §or_size) >= 0)
|
if (ioctl(fd, BLKPBSZGET, §or_size) >= 0)
|
||||||
return 0;
|
return 0;
|
||||||
return -1;
|
return -1;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
|
int blkdev_get_physector_size(int fd __attribute__((__unused__)), int *sector_size)
|
||||||
|
{
|
||||||
*sector_size = DEFAULT_SECTOR_SIZE;
|
*sector_size = DEFAULT_SECTOR_SIZE;
|
||||||
return 0;
|
return 0;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return the alignment status of a device
|
* Return the alignment status of a device
|
||||||
*/
|
*/
|
||||||
|
#ifdef BLKALIGNOFF
|
||||||
int blkdev_is_misaligned(int fd)
|
int blkdev_is_misaligned(int fd)
|
||||||
{
|
{
|
||||||
#ifdef BLKALIGNOFF
|
|
||||||
int aligned;
|
int aligned;
|
||||||
|
|
||||||
if (ioctl(fd, BLKALIGNOFF, &aligned) < 0)
|
if (ioctl(fd, BLKALIGNOFF, &aligned) < 0)
|
||||||
|
@ -255,10 +261,13 @@ int blkdev_is_misaligned(int fd)
|
||||||
* sizes and alignments exist for stacked devices
|
* sizes and alignments exist for stacked devices
|
||||||
*/
|
*/
|
||||||
return aligned != 0 ? 1 : 0;
|
return aligned != 0 ? 1 : 0;
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int blkdev_is_misaligned(int fd __attribute__((__unused__)))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int open_blkdev_or_file(const struct stat *st, const char *name, const int oflag)
|
int open_blkdev_or_file(const struct stat *st, const char *name, const int oflag)
|
||||||
{
|
{
|
||||||
|
@ -278,19 +287,22 @@ int open_blkdev_or_file(const struct stat *st, const char *name, const int oflag
|
||||||
return fd;
|
return fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CDROM_GET_CAPABILITY
|
||||||
int blkdev_is_cdrom(int fd)
|
int blkdev_is_cdrom(int fd)
|
||||||
{
|
{
|
||||||
#ifdef CDROM_GET_CAPABILITY
|
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if ((ret = ioctl(fd, CDROM_GET_CAPABILITY, NULL)) < 0)
|
if ((ret = ioctl(fd, CDROM_GET_CAPABILITY, NULL)) < 0)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
|
||||||
return 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
int blkdev_is_cdrom(int fd __attribute__((__unused__)))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Get kernel's interpretation of the device's geometry.
|
* Get kernel's interpretation of the device's geometry.
|
||||||
|
@ -300,9 +312,9 @@ int blkdev_is_cdrom(int fd)
|
||||||
*
|
*
|
||||||
* Note that this is deprecated in favor of LBA addressing.
|
* Note that this is deprecated in favor of LBA addressing.
|
||||||
*/
|
*/
|
||||||
|
#ifdef HDIO_GETGEO
|
||||||
int blkdev_get_geometry(int fd, unsigned int *h, unsigned int *s)
|
int blkdev_get_geometry(int fd, unsigned int *h, unsigned int *s)
|
||||||
{
|
{
|
||||||
#ifdef HDIO_GETGEO
|
|
||||||
struct hd_geometry geometry;
|
struct hd_geometry geometry;
|
||||||
|
|
||||||
if (ioctl(fd, HDIO_GETGEO, &geometry) == 0) {
|
if (ioctl(fd, HDIO_GETGEO, &geometry) == 0) {
|
||||||
|
@ -311,6 +323,9 @@ int blkdev_get_geometry(int fd, unsigned int *h, unsigned int *s)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
int blkdev_get_geometry(int fd __attribute__((__unused__)),
|
||||||
|
unsigned int *h, unsigned int *s)
|
||||||
|
{
|
||||||
*h = 0;
|
*h = 0;
|
||||||
*s = 0;
|
*s = 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
|
||||||
#include "nls.h"
|
#include "nls.h"
|
||||||
#include "c.h"
|
#include "c.h"
|
||||||
|
@ -31,12 +32,15 @@
|
||||||
|
|
||||||
void exec_shell(void)
|
void exec_shell(void)
|
||||||
{
|
{
|
||||||
const char *shell = getenv("SHELL"), *shell_basename;
|
const char *shell = getenv("SHELL");
|
||||||
|
char *shellc = xstrdup(shell);
|
||||||
|
const char *shell_basename;
|
||||||
char *arg0;
|
char *arg0;
|
||||||
|
|
||||||
if (!shell)
|
if (!shell)
|
||||||
shell = DEFAULT_SHELL;
|
shell = DEFAULT_SHELL;
|
||||||
|
|
||||||
shell_basename = basename(shell);
|
shell_basename = basename(shellc);
|
||||||
arg0 = xmalloc(strlen(shell_basename) + 2);
|
arg0 = xmalloc(strlen(shell_basename) + 2);
|
||||||
arg0[0] = '-';
|
arg0[0] = '-';
|
||||||
strcpy(arg0 + 1, shell_basename);
|
strcpy(arg0 + 1, shell_basename);
|
||||||
|
|
|
@ -311,9 +311,7 @@ leave:
|
||||||
int check_mount_point(const char *device, int *mount_flags,
|
int check_mount_point(const char *device, int *mount_flags,
|
||||||
char *mtpt, int mtlen)
|
char *mtpt, int mtlen)
|
||||||
{
|
{
|
||||||
struct stat st_buf;
|
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
int fd;
|
|
||||||
|
|
||||||
if (is_swap_device(device)) {
|
if (is_swap_device(device)) {
|
||||||
*mount_flags = MF_MOUNTED | MF_SWAP;
|
*mount_flags = MF_MOUNTED | MF_SWAP;
|
||||||
|
@ -337,15 +335,19 @@ int check_mount_point(const char *device, int *mount_flags,
|
||||||
return retval;
|
return retval;
|
||||||
|
|
||||||
#ifdef __linux__ /* This only works on Linux 2.6+ systems */
|
#ifdef __linux__ /* This only works on Linux 2.6+ systems */
|
||||||
if ((stat(device, &st_buf) != 0) ||
|
{
|
||||||
!S_ISBLK(st_buf.st_mode))
|
struct stat st_buf;
|
||||||
return 0;
|
int fd;
|
||||||
fd = open(device, O_RDONLY|O_EXCL|O_CLOEXEC);
|
if ((stat(device, &st_buf) != 0) ||
|
||||||
if (fd < 0) {
|
!S_ISBLK(st_buf.st_mode))
|
||||||
if (errno == EBUSY)
|
return 0;
|
||||||
*mount_flags |= MF_BUSY;
|
fd = open(device, O_RDONLY|O_EXCL|O_CLOEXEC);
|
||||||
} else
|
if (fd < 0) {
|
||||||
close(fd);
|
if (errno == EBUSY)
|
||||||
|
*mount_flags |= MF_BUSY;
|
||||||
|
} else
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/wait.h>
|
#include <sys/wait.h>
|
||||||
|
#include <signal.h>
|
||||||
|
|
||||||
#include "c.h"
|
#include "c.h"
|
||||||
#include "xalloc.h"
|
#include "xalloc.h"
|
||||||
|
|
|
@ -244,8 +244,6 @@ path_read_cpulist(int maxcpus, const char *path, ...)
|
||||||
return set;
|
return set;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* HAVE_CPU_SET_T */
|
|
||||||
|
|
||||||
void
|
void
|
||||||
path_set_prefix(const char *prefix)
|
path_set_prefix(const char *prefix)
|
||||||
{
|
{
|
||||||
|
@ -253,3 +251,5 @@ path_set_prefix(const char *prefix)
|
||||||
strncpy(pathbuf, prefix, sizeof(pathbuf));
|
strncpy(pathbuf, prefix, sizeof(pathbuf));
|
||||||
pathbuf[sizeof(pathbuf) - 1] = '\0';
|
pathbuf[sizeof(pathbuf) - 1] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* HAVE_CPU_SET_T */
|
||||||
|
|
|
@ -519,7 +519,7 @@ char *size_to_human_string(int options, uint64_t bytes)
|
||||||
|
|
||||||
if (!dp || !*dp)
|
if (!dp || !*dp)
|
||||||
dp = ".";
|
dp = ".";
|
||||||
snprintf(buf, sizeof(buf), "%d%s%jd%s", dec, dp, frac, suffix);
|
snprintf(buf, sizeof(buf), "%d%s%" PRIu64 "%s", dec, dp, frac, suffix);
|
||||||
} else
|
} else
|
||||||
snprintf(buf, sizeof(buf), "%d%s", dec, suffix);
|
snprintf(buf, sizeof(buf), "%d%s", dec, suffix);
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
* Written by Karel Zak <kzak@redhat.com>
|
* Written by Karel Zak <kzak@redhat.com>
|
||||||
*/
|
*/
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <libgen.h>
|
||||||
|
|
||||||
#include "c.h"
|
#include "c.h"
|
||||||
#include "at.h"
|
#include "at.h"
|
||||||
|
@ -461,7 +462,7 @@ int sysfs_write_u64(struct sysfs_cxt *cxt, const char *attr, uint64_t num)
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -errno;
|
return -errno;
|
||||||
|
|
||||||
len = snprintf(buf, sizeof(buf), "%ju", num);
|
len = snprintf(buf, sizeof(buf), "%" PRIu64, num);
|
||||||
if (len < 0 || (size_t) len + 1 > sizeof(buf))
|
if (len < 0 || (size_t) len + 1 > sizeof(buf))
|
||||||
rc = -errno;
|
rc = -errno;
|
||||||
else
|
else
|
||||||
|
|
|
@ -21,8 +21,6 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/sysinfo.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
#include "c.h"
|
#include "c.h"
|
||||||
|
|
|
@ -312,8 +312,8 @@ try_again:
|
||||||
if (state_fd >= 0) {
|
if (state_fd >= 0) {
|
||||||
rewind(state_f);
|
rewind(state_f);
|
||||||
len = fprintf(state_f,
|
len = fprintf(state_f,
|
||||||
"clock: %04x tv: %016lu %08lu adj: %08d\n",
|
"clock: %04x tv: %016ld %08ld adj: %08d\n",
|
||||||
clock_seq, last.tv_sec, last.tv_usec, adjustment);
|
clock_seq, (long)last.tv_sec, (long)last.tv_usec, adjustment);
|
||||||
fflush(state_f);
|
fflush(state_f);
|
||||||
if (ftruncate(state_fd, len) < 0) {
|
if (ftruncate(state_fd, len) < 0) {
|
||||||
fprintf(state_f, " \n");
|
fprintf(state_f, " \n");
|
||||||
|
|
|
@ -163,7 +163,7 @@ main(int argc, char **argv)
|
||||||
printf("Warning: not a time-based UUID, so UUID time "
|
printf("Warning: not a time-based UUID, so UUID time "
|
||||||
"decoding will likely not work!\n");
|
"decoding will likely not work!\n");
|
||||||
}
|
}
|
||||||
printf("UUID time is: (%ld, %ld): %s\n", tv.tv_sec, tv.tv_usec,
|
printf("UUID time is: (%ld, %ld): %s\n", (long)tv.tv_sec, (long)tv.tv_usec,
|
||||||
ctime(&time_reg));
|
ctime(&time_reg));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -35,11 +35,11 @@
|
||||||
# define SHM_INFO 14
|
# define SHM_INFO 14
|
||||||
struct shm_info {
|
struct shm_info {
|
||||||
int used_ids;
|
int used_ids;
|
||||||
ulong shm_tot; /* total allocated shm */
|
unsigned long shm_tot; /* total allocated shm */
|
||||||
ulong shm_rss; /* total resident shm */
|
unsigned long shm_rss; /* total resident shm */
|
||||||
ulong shm_swp; /* total swapped shm */
|
unsigned long shm_swp; /* total swapped shm */
|
||||||
ulong swap_attempts;
|
unsigned long swap_attempts;
|
||||||
ulong swap_successes;
|
unsigned long swap_successes;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -249,7 +249,8 @@ static void write_output(struct script_control *ctl, char *obuf,
|
||||||
|
|
||||||
gettime_monotonic(&now);
|
gettime_monotonic(&now);
|
||||||
timersub(&now, &ctl->oldtime, &delta);
|
timersub(&now, &ctl->oldtime, &delta);
|
||||||
fprintf(ctl->timingfp, "%ld.%06ld %zd\n", delta.tv_sec, delta.tv_usec, bytes);
|
fprintf(ctl->timingfp, "%ld.%06ld %zd\n",
|
||||||
|
(long)delta.tv_sec, (long)delta.tv_usec, bytes);
|
||||||
if (ctl->flush)
|
if (ctl->flush)
|
||||||
fflush(ctl->timingfp);
|
fflush(ctl->timingfp);
|
||||||
ctl->oldtime = now;
|
ctl->oldtime = now;
|
||||||
|
|
Loading…
Reference in New Issue