Karel Zak [Tue, 12 Dec 2017 12:19:36 +0000 (13:19 +0100)]
libsmartcols: don't add blank padding after left aligned title
Let's use the same semantic for the title as for the last column in
the table. If aligned on left, table is not "maxout" and title padding
symbol is undefined (or blank) then keep title as short as possible.
Addresses: https://github.com/karelzak/util-linux/issues/549 Signed-off-by: Karel Zak <kzak@redhat.com>
Year can wrap when adding the tm struct epoch during iso formatting:
hwclock --utc --noadjfile --predict --date '67768034678844900 seconds'
-2147481749-12-31 23:59:59.000000-05:00
Note: the 'seconds' argument is relative to the current time, so
reaching this max year output is a moving target. The values shown
above were invalid one second later. They then overflow tm_year
upon conversion with localtime(3) and friends, which causes them
to return NULL indicating that an error occurred.
Signed-off-by: J William Piggott <elseifthen@gmx.com>
Use reentrant time functions to avoid sending a NULL pointer to
format_iso_time() (and to be reentrant ;). Followup commits test for
errors and tm_year wrapping (illustrated below).
Sami Kerola [Sun, 3 Dec 2017 12:51:17 +0000 (12:51 +0000)]
setarch: minor code clean up
Remove global variable, skip unnecessary comparison, and remove version
printing function when a simple printf() can do the job. In same go fix
compiler warning.
Karel Zak [Mon, 4 Dec 2017 11:31:29 +0000 (12:31 +0100)]
login: add LOGIN_PLAIN_PROMPT to login.defs
We have command line option -H to disable hostname in login prompt.
Unfortunately, in same cases (e.g. telnetd) it's impossible to specify
login(1) command line options due to hardcoded execl()...
This patch introduces LOGIN_PLAIN_PROMPT boolean for /etc/login.defs
to suppress hostname in the prompt.
Karel Zak [Wed, 29 Nov 2017 13:26:42 +0000 (14:26 +0100)]
fallocate: dig holes only in data extents
Based on patch from Vaclav Dolezal <vdolezal@redhat.com>, this
implementation is less invasive.
The patch adds a new while() for pread() call (so diff is mostly code
indention). The pread() is called for a real data only (addressed by
'off' and 'end') and we use SEEK_{DATA,HOLE} before the pread() to
skip already existing holes. The variables 'file_off' and 'file_end'
addresses area in the file as specified on fallocate command line.
The CDROM_SELECT_SPEED should be available practically everywhere. Where
the define is missing an error message about path /proc/sys/dev/cdrom/info
cannot be opened is better error than a warnx() about kernel support.
Karel Zak [Tue, 28 Nov 2017 09:53:35 +0000 (10:53 +0100)]
nsenter: fix compiler warning [-Wuninitialized]
sys-utils/nsenter.c: In function ‘is_same_namespace’:
sys-utils/nsenter.c:170:2: warning: ‘b_ino’ may be used uninitialized in this function [-Wuninitialized]
sys-utils/nsenter.c:170:2: warning: ‘a_ino’ may be used uninitialized in this function [-Wuninitialized]
Karel Zak [Tue, 28 Nov 2017 09:45:06 +0000 (10:45 +0100)]
dmesg: fix compiler warning [-Wuninitialized]
sys-utils/dmesg.c: In function ‘print_record.constprop.12’:
sys-utils/dmesg.c:1039:14: warning: ‘mesg_size’ may be used uninitialized in this function [-Wuninitialized]
Karel Zak [Mon, 27 Nov 2017 15:58:19 +0000 (16:58 +0100)]
lsns: nsfs stuff cleanup
* don't use booleans
* use is_ prefix for boolean-like functions
* make nsfs_xasputs() more readable
* enable 'nowrap' together with 'raw' and don't test for "nowrap || raw"
* add missing 'W' to getopt_long()
vfs: take /proc/*/mounts and friends to fs/proc_namespace.c
rationale: that stuff is far tighter bound to fs/namespace.c than to
the guts of procfs proper.
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
/proc/self/mountinfo lists the logical names for namespaces:
...
652 81 0:3 net:[4026532579] /tmp/XYZ rw shared:192 - nsfs nsfs rw,seclabel
...
In the lines /tmp/XYZ is a logical name for 4026532579 of net
namespace.
This patch adds nsfs column. It seems that the logical name is
used only in "ip netns" now. So the column is disabled by default.
Use '--type=net' or '-o NSFS' options to enable it.
This feature and the way to implementation using multi lines in a column
is Suggested by Karel Zak.
Masatake YAMATO [Fri, 24 Nov 2017 10:31:03 +0000 (19:31 +0900)]
lsns: add netnsid column
Linux network subsystem assigns an unique integer to a network
namespace.
term0# ip netns add UTIL-LINUX-LSNS-TEST-NS
term0# ip netns list
UTIL-LINUX-LSNS-TEST-NS
term0# ip link add name lsns-vetha type veth peer name lsns-vethb
term0 # ip link set lsns-vethb netns UTIL-LINUX-LSNS-TEST-NS
term0# ip netns list
UTIL-LINUX-LSNS-TEST-NS (id: 0)
term0# ip link show dev lsns-vetha
230: lsns-vetha@if229: <BROADCAST,MULTICAST> mtu 1500 qdisc noop ...
link/ether 3e:27:68:ba:b3:95 brd ff:ff:ff:ff:ff:ff link-netnsid 0
In this example 0 is assigned to UTIL-LINUX-LSNS-TEST-NS net namespace.
The name, UTIL-LINUX-LSNS-TEST-NS, and it semantics is given and defined
by iproute2 in userland; and nothing to do with util-linux.
However, the id, 0, is managed in linux kernel. If lsns can show
the ids, it helps users understand the state of network namespaces.
This commit adds NETNSID column to the output.
Here is an example of session:
term0# ip netns exec UTIL-LINUX-LSNS-TEST-NS cat
(Open another terminal)
term1# ./lsns --type net
NS TYPE NPROCS PID USER NETNSID COMMAND 4026531993 net 383 1 root unassigned /usr/lib/systemd/... 4026532433 net 1 1219 rtkit unassigned /usr/libexec/rtkit-daemon 4026532562 net 1 18201 root 0 cat
0 is shown as NETNSID for the cat process.
For the initial name space, "unassigned" is printed.
For the namespaces other type than net, "n/a" is printed.
If an error occurred during getting the id, "n/a" is printed.
Changes in V2:
* Remove wrongly used & operators.
* Make netnsid field empty if value for the column is not available.
Suggested by Karel Zak.
* Remove redundant condtion for checking the avaiablebility of netlink
socket. Suggested by Karel Zak.
Karel Zak [Mon, 27 Nov 2017 11:37:53 +0000 (12:37 +0100)]
rtcwake: fix sys vs. rtc time delta usage
srett commented:
After some head scratching why relative wakeup using -s always works
while -t didn't seem to work at all I discovered that the adjustment
for time difference between sys and rtc is actually inverted when
writing the alarm (code for -m show reading is fine), so if the RTC
lags 10 minutes behind, the alarm will be shifted into the future by
10 minutes, resulting in a wakeup that is 20 minutes late.
Addresses: https://github.com/karelzak/util-linux/issues/544 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Thu, 23 Nov 2017 13:59:05 +0000 (14:59 +0100)]
build-sys: add --enable-asan and --memcheck-asan for tests
The command ./configure --enable-asan adds -fsanitize=address
to the compiler command line. In the regression tests leaks detection
is disabled by default. You have to use --memcheck-asan on test
command line to enable.
Steven Smith [Fri, 17 Nov 2017 16:44:33 +0000 (08:44 -0800)]
agetty: Fix a use of uninitialised memory in an agetty error path.
get_logname() assumes that when it calls read() it initializes c and
errno, which isn't always true if we hit a whitelisted error or end of
file. This occasionally shows up as agetty going into an infinite
loop. Fix it by just delaying ten seconds and exiting when things go
wrong, similarly to the behavior after a non-whitelisted error.
[kzak@redhat.com: - interpret readres == 0 as c = 0
- ignore speed configurations for VCONSOLE]
Signed-off-by: Steven Smith <sos22@srcf.ucam.org> Signed-off-by: Karel Zak <kzak@redhat.com>
Pali Rohár [Mon, 20 Nov 2017 17:16:59 +0000 (18:16 +0100)]
libblkid: udf: Fix parsing UDF revision
UDF revision is stored as decimal number in hexadecimal format.
E.g. number 0x0150 is revision 1.50, number 0x0201 is revision 2.01.
Apparently all UDF test images have number which has same representation in
decimal and hexadecimal format, so problem was not detected.
This patch adds new test image with UDF revision 1.50. Internally number is
stored as 0x0150. In decimal format it is (incorrectly) 1.80, but in
hexadecimal correct 1.50.
Karel Zak [Mon, 20 Nov 2017 12:30:20 +0000 (13:30 +0100)]
Merge branch 'master' of https://github.com/pali/util-linux
* 'master' of https://github.com/pali/util-linux:
libblkid: udf: Update copyright
tests: Add UDF cd image created by mkudfiso 20100208
libblkid: udf: Use UDF revision field from LVD domain id "*OSTA UDF Compliant" as a fallback value for ID_FS_VERSION when LVIDIU is missing
commit f0a0ce7 makes debug mode implicit for the --test option.
Using the previous command syntax of --test and --debug
together invokes the undocumented Level 2 debugging when
setting the RTC. This can cause many thousands of lines of
output like: 1510967983.499968 < 1510967983.500000 (-0.000032)
Fix: bump Level 2 debugging to Level 9, just before the
other undocumented Level 10. This makes it improbable for
the development debug levels to be accessed unintentionally.
Signed-off-by: J William Piggott <elseifthen@gmx.com>
Karel Zak [Thu, 16 Nov 2017 13:18:16 +0000 (14:18 +0100)]
Merge branch 'master' of https://github.com/pali/util-linux
* 'master' of https://github.com/pali/util-linux:
libblkid: udf: Stop scanning Volume Descriptors after we found Terminating Descriptor
libblkid: udf: Really try to read only first LVID
Potential partition start should be aligned to cylinders. So fdisk
wouldn't consider partition's last cylinder remains as eligible space
for new partition start.
Karel Zak [Thu, 16 Nov 2017 11:16:09 +0000 (12:16 +0100)]
libmount: minimize utimensat() write test usage
utimensat() is pretty expensive when mounting parallel filesystems from
the same source. It's possible to ignore all this if mtab is not
writable.
Note that this change is irrelevant for default util-linux builds
where all around mtab is already disabled since v2.30 (commit 89958178f6d6ebe0944d423feaea66be521fff43).
This change is relevant only for users who still use --enable-libmount-support-mtab.
Reported-by: Douglas Jacobsen <dmjacobsen@lbl.gov> Signed-off-by: Karel Zak <kzak@redhat.com>
Pali Rohár [Wed, 15 Nov 2017 17:12:50 +0000 (18:12 +0100)]
libblkid: udf: Stop scanning Volume Descriptors after we found Terminating Descriptor
Terminating Descriptor is the last descriptor in Volume Descriptor
Sequence. After it there can be unrecorded or empty sectors which we do not
have to scan.
LVIDIU is stored at the end of Logical Volume Integrity Descriptor (LVID),
after two variable length array of partitions. And number of partitions is
stored in LVID, not in Logical Volume Descriptor (LVD).
Length of LVIDIU is also stored in LVID, so add check that LVIDIU has
enough size.
Karel Zak [Mon, 13 Nov 2017 16:34:19 +0000 (17:34 +0100)]
cal: simplify leap year rule
Gregorian rule for leap years has been adopted by reformation in year
1782 (Calendar Act 1750), but all tools (date, SQL servers, etc. etc.)
don't care about it and apply the new rule for all year -- including
years before the reformation.
It's better to be compatible with another tools than try to be perfect :-)
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1507271 Signed-off-by: Karel Zak <kzak@redhat.com>
Karel Zak [Mon, 13 Nov 2017 15:25:21 +0000 (16:25 +0100)]
Merge branch '170925' of github.com:jwpi/util-linux
* '170925' of github.com:jwpi/util-linux:
tests: adjust for ISO timezone colon use
lib/timeutils: add common ISO timestamp masks
lib/timeutils: add get_gmtoff()
lib/timeutils: ISO_8601_BUFSIZ too small
hwclock: add iso-8601 overflow check
Karel Zak [Mon, 13 Nov 2017 11:32:03 +0000 (12:32 +0100)]
Merge branch 'udf' of https://github.com/pali/util-linux
* 'udf' of https://github.com/pali/util-linux:
test: Add UDF hdd image with final block size 4096 created by Linux mkudffs 1.3
libblkid: udf: Optimize and fix probing when block size > 2048 bytes
Image file was first formatted with block size 512 and then reformatted
with block size 4096. Volume Recognition Sequence was overwritten and every
Volume Structure Descriptor is now 4096 bytes long. Trying to read second
VSD as 2048 bytes long will fail because 4069 bytes long VSD is padded with
zeros. To verify that image file was properly detected, it should have
label "Label4096" and not "Label512".