Karel Zak [Mon, 31 Jul 2017 09:45:23 +0000 (11:45 +0200)]
libsmartcols: add scols_table_enable_noencoding()
Now the library encode all output. It seems too strict and difficult
to use the library for some use-cases -- for example if you want to
use the library for already colorized output (by esc.sequences).
Karel Zak [Wed, 19 Jul 2017 09:30:57 +0000 (11:30 +0200)]
libfdisk: add fdisk_disable_dialogs()
The default (for historical reasons) is to use dialog driven partitioning.
It's possible to avoid dialogs by fdisk_partition template for
fdisk_add_partition().
Unfortunately in some case (mostly DOS driver) it's not enough, because
we need to distinguish between logical and primary partitions. If we know
that dialogs are unwanted then we can default to primary partition, etc.
This function simplify semantic of the library for non-interactive
programs.
When setting capabilities, we accept human readable names like for
example `sys_rawio` or `net_admin`. To do so the translation between the
capability name and its in-kernel index, we rely on the function
`capng_name_to_capability`. When the function does not know the named
capability, it will return an error value and we abort setting the
capability.
This relies upon the ability of libcap to know all capabilities inside
of the kernel. But actually, it is possible that new capabilities are
introduced inside of the Linux kernel which are not recognized yet by
the library. When dumping these unknown capabilities, libcap will simply
return a string like "cap_38", that is it will append the capability's
in-kernel index to the prefix "cap_". This may lead a user to also think
that "cap_38" may be passed to the switches "--inh-caps" or
"--ambient-caps", which is unfortunately not the case.
We can do better here by instead accepting strings in the form of
"cap_N". To do so, we can simply rely on the fact that capability
indices are steadily increasing and that the highest index known to the
kernel is stored inside of the kernel's procfs, made readily available
by our function `real_cap_last_cap()`. So in case libcap does not know a
capability name, we can simply parse the string and, if it is in the
correct format, check whether the detected index is between 0 and the
highest capability index. If so, we can treat it as a valid capability
string and apply it.
warning on 32bit systems:
../lib/parse-date.y: In function 'parse_date':
../lib/parse-date.y:1509:7: warning: format '%ld' expects argument of type 'long int', but argument 4 has type 'intmax_t' [-Wformat=]
abs_time_zone_min);
^
Ivan Delalande [Fri, 7 Jul 2017 01:27:11 +0000 (18:27 -0700)]
libmount: make mnt_context_is_fs_mounted work for /proc
Assume that /proc is not mounted instead of returning an error when we
are unable to open the mounts and mountinfo files in /proc. Also set
cxt->mtab back to NULL so that it gets properly parsed when we check if
the next filesystem is mounted.
The goal is to have mount -a work when /proc is not mounted, typically
with /proc on the first line of fstab.
Karel Zak [Mon, 17 Jul 2017 09:59:35 +0000 (11:59 +0200)]
Merge branch '2017wk28' of git://github.com/kerolasa/lelux-utiliteetit
* '2017wk28' of git://github.com/kerolasa/lelux-utiliteetit:
bash-completion: make completions to work when bash set -u is in use
uuidparse: add bash-completion file
docs: add optional option back to struct option
ldattach: simplify debugging function when vwarnx(3) is available
reset: remove script from the package
hwclock --setepoch --epoch 0
Will warn that the epoch option is required.
The --epoch presence test is made on its argument after it is
converted to an integer. This means any value it can be tested
for, can also be given as an input.
So make the conversion after the presence test, like the
--date option does.
Signed-off-by: J William Piggott <elseifthen@gmx.com>
Karel Zak [Fri, 14 Jul 2017 08:51:14 +0000 (10:51 +0200)]
libfdisk: use BLKPG ioctls to inform kernel about changes
This patch introduces fdisk_reread_changes(). The function is
less invasive alternative to fdisk_reread_partition_table().
The new function uses BLKPG ioctls for modified partitions. The
another partitions are not affected. This solution allows to
successfully use fdisks on disk where some partitions are still use
(mounted). For example if you want to resize the last partition on the
device.
Karel Zak [Wed, 12 Jul 2017 12:35:53 +0000 (14:35 +0200)]
libblkid: don't use CDROM_GET_CAPABILITY ioctl for DM devices
For some reason kernel commit e980f62353c697cbf0c4325e43df6e44399aeb64
add extra warning when the ioctl is used for DM devices. It seems we
can avoid this ioctl when the device has dm/uuid.
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1469532 Signed-off-by: Karel Zak <kzak@redhat.com>
Make whatisdb/manpage and usage() one-line descriptions match.
Also update the description; hwclock has evolved into much more
than reading and setting the Hardware Clock. It also sets the
System Clock, warps the System Clock, sets the kernel time
configurations, and more.
Signed-off-by: J William Piggott <elseifthen@gmx.com>
Karel Zak [Mon, 10 Jul 2017 10:51:53 +0000 (12:51 +0200)]
mount: remove extN from mount.8 man page
The e2fsprogs package contains ext4(5) man page with all necessary
information. We do not have to duplicate effort and maintain copy of
the extN mount options in our mount.8.
Karel Zak [Mon, 10 Jul 2017 08:42:49 +0000 (10:42 +0200)]
agetty: print /etc/issue on --skip-login
The current --skip-login implementation disables also issue file
printing. This is unexpected behavior as /etc/issue may contains
important information and we have --noissue for admins who don't want
it.
This patch forces /etc/issue printing if --noissue no specified.
Addresses: https://github.com/karelzak/util-linux/issues/480 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Mon, 10 Jul 2017 08:15:22 +0000 (10:15 +0200)]
Merge branch 'help' of https://github.com/rudimeier/util-linux
* 'help' of https://github.com/rudimeier/util-linux:
setpriv: silence compiler warning
misc: consolidate macro style USAGE_HELP_OPTIONS
blockdev: correct man page name in --help
coastal-hiker [Mon, 26 Jun 2017 16:40:28 +0000 (18:40 +0200)]
last: don't show negative time
Under strange circumstances, the output of command 'last reboot'
showed the last time as a negative time, with both the hours and the
mins value having a minus sign. Example, taken from my workstation:
$last reboot
[...]
reboot system boot 4.4.0-79-generic Wed Jun 14 09:20 - 07:33 (-1:-47)
[...]
I am aware this should happen only infrequently. Nevertheless, I
propose a more robust behaviour: show a minus sign only for the most
significant value (days or hours) and show the rest always as
positive. In the special case of ((secs < 0) && (secs >= -59)), print
mins as "-00".
Karel Zak [Tue, 4 Jul 2017 10:50:39 +0000 (12:50 +0200)]
login: use IPv4 on IPv4-mapping-to-IPv6
It seems that on some systems (e.g. RHEL7) the libc function
getaddrinfo() is not able to translate ::ffff: address to IPv4. The
result is 0.0.0.0 host address in the last(1) and utmpdump(1) output.
Not sure if this is about order of the getaddrinfo() results, system
configuration or libc version. It's irrelevant for login(1). We have
to be robust enough to write usable address to log files everywhere.
The solution is to detect IPv4-mapping-to-IPv6 and use IPv4 for utmp.
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1296233 Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/setpriv.c:182:32: warning: implicit conversion from enumeration type
'enum cap_type' to different enumeration type 'capng_type_t'
[-Wenum-conversion]
return capng_have_capability(which, i);
~~~~~~~~~~~~~~~~~~~~~ ^~~~~
Ruediger Meier [Wed, 28 Jun 2017 16:37:44 +0000 (18:37 +0200)]
hwclock: don't ifdef printf arguments
This may fails if printf() is macro, introduced in cc7cb070.
clang compiler warnings:
CC sys-utils/hwclock.o
../sys-utils/hwclock.c:1228:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
#ifdef __linux__
^
../sys-utils/hwclock.c:1230:2: warning: embedding a directive within macro arguments has undefined behavior [-Wembedded-directive]
#endif
^
2 warnings generated.
CC: J William Piggott <elseifthen@gmx.com> Signed-off-by: Ruediger Meier <ruediger.meier@ga-group.nl>
Ruediger Meier [Sat, 17 Jun 2017 20:40:41 +0000 (22:40 +0200)]
misc: avoid some dead initialization warnings
Clang analyzer warnings:
Dead store, Dead initialization:
lib/mbsedit.c:154:8: warning: Value stored to 'in' during its initialization is never read
char *in = (char *) &c;
^~ ~~~~~~~~~~~
misc-utils/findmnt-verify.c:129:14: warning: Value stored to 'cn' during its initialization is never read
const char *cn = tgt;
^~ ~~~
Dead store, Dead increment:
sys-utils/hwclock.c:1461:2: warning: Value stored to 'argv' is never read
argv += optind;
^ ~~~~~~
Ruediger Meier [Tue, 27 Jun 2017 18:33:28 +0000 (20:33 +0200)]
lscpu: make clang analyzer happy
Let read_nodes() work on uninitialized structs to silence these two
warnings:
CC sys-utils/lscpu-lscpu.o
warning: Path diagnostic report is not generated. Current output format does not support diagnostics that cross file boundaries. Refer to --analyzer-output for valid output formats
In file included from sys-utils/lscpu.c:63:
./include/xalloc.h:32:21: warning: Call to 'malloc' has an allocation size of 0 bytes
void *ret = malloc(size);
^~~~~~~~~~~~
sys-utils/lscpu.c:1468:23: warning: Function call argument is an uninitialized value
desc->nodemaps[i] = path_read_cpuset(maxcpus,
^~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
Memory Error, Use-after-free
sys-utils/lsmem.c:259:3: warning: Use of memory after it is freed
err(EXIT_FAILURE, _("Failed to open %s"), path);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Carlos Santos [Thu, 29 Jun 2017 10:55:42 +0000 (07:55 -0300)]
column: fix compilation when libc lacks wide-character support
Commit 4762ae9d removed mtsafe_strtok() but left behind calls to wcstok
and wcspbrk. This leads to build failures when libc does not have the
wide-character functions, like some uClibc builds.
Solve the problem by using strtok_r and strpbrk when HAVE_WIDECHAR is
not defined.
Karel Zak [Thu, 29 Jun 2017 09:57:22 +0000 (11:57 +0200)]
wipefs: use libsmartcols
The old output is horrible and useless when more devices specified.
The old format is also too tricky if more signatures detected. The new
output uses one line for each signature, prefixed by device name.
Karel Zak [Wed, 28 Jun 2017 10:08:25 +0000 (12:08 +0200)]
wipefs: try another magic strings on -o and -t
The commit 92296e9ba2bf95259520fa7537ff8edc2aa9edbc introduces "try
all permutations for the same superblock". This feature has to be also
available if -o and -t is specified.
Karel Zak [Fri, 26 May 2017 11:11:37 +0000 (13:11 +0200)]
wipefs: print all signature permutations
The same FS/RAID/PT signature may be detected by more ways and on more
places on the device. The libblkid returns only the first detected
signature by default. This patch use blkid_probe_hide_range() to
re-scan device for all possible permutations of the same signature.
For example the default wipefs(8) output as well as --no-act output will
contains primary as well as backup GPT signature now.
Reported-by: Ruediger Meier <sweet_f_a@gmx.de> Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Fri, 26 May 2017 10:58:09 +0000 (12:58 +0200)]
libblkid: allow to hide already detected signatures
The libblkid probing functions returns the first successful result of
the filesystem/RAID/PT. Unfortunately, some signatures is possible to
detect by more ways or device may contains more copies (e.g. GPT).
This is no problem when we wipe signatures from the device. In this
case we zeroize on-device signature and re-scan for the signature (by
blkid_probe_step_back()).
The problem is if we want to read all permutations without the device
modification (for example wipefs(8) dry run).
This patch add blkid_probe_hide_range(). The function remove (zeroize)
specified signature from in-memory cached buffers. If the buffer is
later re-used by probing functions then the signature is invisible and
we can try detect another variant of the magic string.