]> git.ipfire.org Git - thirdparty/util-linux.git/log
thirdparty/util-linux.git
3 months agotests: correct UUID timestamp test expectations
Kiran Rangoon [Mon, 29 Dec 2025 03:51:00 +0000 (22:51 -0500)] 
tests: correct UUID timestamp test expectations

Update expected timestamps for additional test UUIDs to match actual
output. These test cases provide coverage for various timestamp ranges
including pre-epoch, historical, and far-future dates.

Signed-off-by: Kiran Rangoon <kiranrangoon0@gmail.com>
Reviewed-by: Thomas Weißschuh <thomas@t-8ch.de>
3 months agolibuuid: fix timestamp overflow for pre-1970 dates
Kiran Rangoon [Mon, 29 Dec 2025 03:50:59 +0000 (22:50 -0500)] 
libuuid: fix timestamp overflow for pre-1970 dates

Use int64_t arithmetic to correctly handle timestamps before Unix epoch.
This fixes the overflow that was causing UUID timestamps from 1582 to
appear as far-future dates. Update test expectations accordingly.

Signed-off-by: Kiran Rangoon <kiranrangoon0@gmail.com>
Reviewed-by: Thomas Weißschuh <thomas@t-8ch.de>
3 months agolibuuid: refactor gregorian_to_unix to populate timeval directly
Kiran Rangoon [Mon, 29 Dec 2025 03:50:58 +0000 (22:50 -0500)] 
libuuid: refactor gregorian_to_unix to populate timeval directly

Change function signature to take struct timeval pointer and populate
it directly, eliminating duplicate conversion code in callers.

Signed-off-by: Kiran Rangoon <kiranrangoon0@gmail.com>
Reviewed-by: Thomas Weißschuh <thomas@t-8ch.de>
3 months agolibuuid: simplify gregorian-to-unix offset calculation
Kiran Rangoon [Mon, 29 Dec 2025 03:50:57 +0000 (22:50 -0500)] 
libuuid: simplify gregorian-to-unix offset calculation

Replace complex bit-shift offset calculation with a simple constant
definition for better readability and maintainability.

Signed-off-by: Kiran Rangoon <kiranrangoon0@gmail.com>
Reviewed-by: Thomas Weißschuh <thomas@t-8ch.de>
3 months agotests: (lslocks) test -Q,--filter option
Masatake YAMATO [Sun, 14 Dec 2025 09:53:57 +0000 (18:53 +0900)] 
tests: (lslocks) test -Q,--filter option

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agotests: (test_mkfds::nop) new factory just printing pid
Masatake YAMATO [Sun, 14 Dec 2025 09:51:32 +0000 (18:51 +0900)] 
tests: (test_mkfds::nop) new factory just printing pid

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: special-case PID for filtering (skip −1)
Masatake YAMATO [Mon, 29 Dec 2025 07:22:24 +0000 (16:22 +0900)] 
lslocks: special-case PID for filtering (skip −1)

The PID column may be printed as −1 for locks that are not tied to a
process or are inaccessible to lslocks (e.g., permission constraints).
The libsmartcols filter engine does not support negative integers, so
PID = −1 cannot be compared reliably.

Attach the PID as cell userdata only when PID >= 0, and use that value
for filter evaluation. Rows with PID = −1 are thus excluded from PID
comparisons.

No change to printed output.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: make SIZE filterable by normalizing to bytes
Masatake YAMATO [Mon, 15 Dec 2025 21:41:59 +0000 (06:41 +0900)] 
lslocks: make SIZE filterable by normalizing to bytes

The SIZE column may be printed in raw bytes or human-readable
units (KB/MB, etc.), which makes number-based comparison impossible.

Normalize SIZE to a byte value and store it in the cell via
libsmartcols `scols_cell_set_userdata`. When evaluating filter
expressions, use the stored byte value instead of the printed SIZE.

This enables consistent numeric comparisons (e.g., -Q 'SIZE > 1M')
regardless of the output format.

No change to printed output.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: implement Q, --filter option
Masatake YAMATO [Wed, 10 Dec 2025 14:35:10 +0000 (23:35 +0900)] 
lslocks: implement Q, --filter option

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: factor out code getting and setting the data from add_scols_line
Masatake YAMATO [Wed, 10 Dec 2025 13:36:05 +0000 (22:36 +0900)] 
lslocks: factor out code getting and setting the data from add_scols_line

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) move proc_locks to struct lslocks
Masatake YAMATO [Fri, 19 Dec 2025 19:18:14 +0000 (04:18 +0900)] 
lslocks: (refactor) move proc_locks to struct lslocks

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) move pid_locks in main to struct lslocks
Masatake YAMATO [Fri, 19 Dec 2025 18:45:28 +0000 (03:45 +0900)] 
lslocks: (refactor) move pid_locks in main to struct lslocks

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) move "tab" file static variable to struct lslocks
Masatake YAMATO [Fri, 19 Dec 2025 16:46:43 +0000 (01:46 +0900)] 
lslocks: (refactor) move "tab" file static variable to struct lslocks

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) add struct lslocks representing the global context
Masatake YAMATO [Fri, 19 Dec 2025 16:29:43 +0000 (01:29 +0900)] 
lslocks: (refactor) add struct lslocks representing the global context

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) use global bytes in get_json_type_for_column()
Masatake YAMATO [Mon, 15 Dec 2025 20:15:30 +0000 (05:15 +0900)] 
lslocks: (refactor) use global bytes in get_json_type_for_column()

`get_json_type_for_column()` used to take `representing_in_bytes`, but
every caller passed the global `bytes`. The parameter added no value
and split the ownership of the setting. Drop the parameter and read
the global `bytes` instead.

This aligns lslocks with lsblk and prepares for adding `-Q/--filter`.
lsblk also reads global `bytes` defined in lsblk.c

No functional change intended.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolsfd,test_mkfds: make linux/vm_sockets_diag.h optional
Masatake YAMATO [Wed, 24 Dec 2025 21:54:13 +0000 (06:54 +0900)] 
lsfd,test_mkfds: make linux/vm_sockets_diag.h optional

Older kernels (at least 3.10 used by CentOS/RH/OEL 7.9) do not have
linux/vm_sockets_diag.h yet.

Closes: https://github.com/util-linux/util-linux/issues/3916
Co-Author: Fabian Groffen <grobian@bitzolder.nl>
Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolscpu: add --annotate info to man page
Christian Goeschel Ndjomouo [Fri, 26 Dec 2025 21:32:16 +0000 (16:32 -0500)] 
lscpu: add --annotate info to man page

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agobash-completion: (lscpu) add --annotate option
Christian Goeschel Ndjomouo [Fri, 26 Dec 2025 21:29:44 +0000 (16:29 -0500)] 
bash-completion: (lscpu) add --annotate option

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agorfkill: Output in JSON format if -J is provided.
Xing Guo [Fri, 26 Dec 2025 12:25:54 +0000 (20:25 +0800)] 
rfkill: Output in JSON format if -J is provided.

This patch teaches rfkill output in JSON format if -J is provided.

E.g.,

```
$ ./rfkill -J list
{
   "rfkilldevices": [
      {
         "id": 0,
         "type": "bluetooth",
         "device": "tpacpi_bluetooth_sw",
         "soft": "unblocked",
         "hard": "unblocked"
      },{
         "id": 1,
         "type": "wwan",
         "device": "tpacpi_wwan_sw",
         "soft": "unblocked",
         "hard": "unblocked"
      },{
         "id": 3,
         "type": "wlan",
         "device": "phy0",
         "soft": "unblocked",
         "hard": "unblocked"
      },{
         "id": 4,
         "type": "bluetooth",
         "device": "hci0",
         "soft": "unblocked",
         "hard": "unblocked"
      }
   ]
}

$ ./rfkill -J list bluetooth
{
   "rfkilldevices": [
      {
         "id": 0,
         "type": "bluetooth",
         "device": "tpacpi_bluetooth_sw",
         "soft": "unblocked",
         "hard": "unblocked"
      },{
         "id": 4,
         "type": "bluetooth",
         "device": "hci0",
         "soft": "unblocked",
         "hard": "unblocked"
      }
   ]
}
```

3 months agolscpu: add column header annotations for -C and -e
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 22:44:21 +0000 (17:44 -0500)] 
lscpu: add column header annotations for -C and -e

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agoflock: resolve consistency issue in the usage message
Christian Goeschel Ndjomouo [Sun, 21 Dec 2025 21:38:26 +0000 (16:38 -0500)] 
flock: resolve consistency issue in the usage message

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agonsenter: ignore SELinux-specific long option in CI CHECK
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 04:46:05 +0000 (23:46 -0500)] 
nsenter: ignore SELinux-specific long option in CI CHECK

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agonamei: ignore SELinux-specific long option in CI CHECK
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 04:45:20 +0000 (23:45 -0500)] 
namei: ignore SELinux-specific long option in CI CHECK

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agolsclocks: fix inconsistency in usage message
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 04:43:18 +0000 (23:43 -0500)] 
lsclocks: fix inconsistency in usage message

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agohwclock: mark non-standard long options to ignore in CI CHECK
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 04:32:43 +0000 (23:32 -0500)] 
hwclock: mark non-standard long options to ignore in CI CHECK

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agotools: (get-options.sh) skip programs that do not use <struct option>
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 04:31:02 +0000 (23:31 -0500)] 
tools: (get-options.sh) skip programs that do not use <struct option>

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agotools: (get-options.sh) ignore long opt definitions marked with IGNORECHECK=yes
Christian Goeschel Ndjomouo [Thu, 25 Dec 2025 03:54:29 +0000 (22:54 -0500)] 
tools: (get-options.sh) ignore long opt definitions marked with IGNORECHECK=yes

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agotools: (checkusage.sh) verify the completeness of listed long options
Christian Goeschel Ndjomouo [Sun, 21 Dec 2025 20:07:10 +0000 (15:07 -0500)] 
tools: (checkusage.sh) verify the completeness of listed long options

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
3 months agolslocks: (refactor) add a helper function refining value returned from get_lock
Masatake YAMATO [Fri, 19 Dec 2025 18:19:42 +0000 (03:19 +0900)] 
lslocks: (refactor) add a helper function refining value returned from get_lock

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) don't use redundant callback functions
Masatake YAMATO [Fri, 19 Dec 2025 17:39:38 +0000 (02:39 +0900)] 
lslocks: (refactor) don't use redundant callback functions

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) specify list_head as type instead of abusing void*
Masatake YAMATO [Tue, 9 Dec 2025 22:11:39 +0000 (07:11 +0900)] 
lslocks: (refactor) specify list_head as type instead of abusing void*

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) use separate function to initialize libscols_table
Masatake YAMATO [Tue, 9 Dec 2025 22:31:59 +0000 (07:31 +0900)] 
lslocks: (refactor) use separate function to initialize libscols_table

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) remove an unused local variable
Masatake YAMATO [Tue, 9 Dec 2025 22:21:38 +0000 (07:21 +0900)] 
lslocks: (refactor) remove an unused local variable

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (refactor) use narrow variable scoping for loop counters
Masatake YAMATO [Tue, 9 Dec 2025 22:20:08 +0000 (07:20 +0900)] 
lslocks: (refactor) use narrow variable scoping for loop counters

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agolslocks: (comment) fix grammar
Masatake YAMATO [Fri, 19 Dec 2025 19:04:59 +0000 (04:04 +0900)] 
lslocks: (comment) fix grammar

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
3 months agozramctl: Add note about column descriptions
Karel Zak [Wed, 17 Dec 2025 12:10:13 +0000 (13:10 +0100)] 
zramctl: Add note about column descriptions

Addresses: https://github.com/util-linux/util-linux/issues/3903
Signed-off-by: Karel Zak <kzak@redhat.com>
3 months agoMerge branch 'unshare/userowner' of https://github.com/arachsys-prs/util-linux
Karel Zak [Wed, 17 Dec 2025 11:47:16 +0000 (12:47 +0100)] 
Merge branch 'unshare/userowner' of https://github.com/arachsys-prs/util-linux

* 'unshare/userowner' of https://github.com/arachsys-prs/util-linux:
  unshare: add --owner to set user namespace owner uid and gid

Signed-off-by: Karel Zak <kzak@redhat.com>
3 months agoMerge branch 'unshare/userbind' of https://github.com/arachsys-prs/util-linux
Karel Zak [Wed, 17 Dec 2025 11:08:19 +0000 (12:08 +0100)] 
Merge branch 'unshare/userbind' of https://github.com/arachsys-prs/util-linux

* 'unshare/userbind' of https://github.com/arachsys-prs/util-linux:
  unshare: fix user namespace bind mounts
  unshare: remove get_mnt_ino() check in bind_ns_files_from_child()

3 months agoMerge branch 'lsns-8--fix-missing-comma' of https://github.com/masatake/util-linux
Karel Zak [Wed, 17 Dec 2025 11:07:00 +0000 (12:07 +0100)] 
Merge branch 'lsns-8--fix-missing-comma' of https://github.com/masatake/util-linux

* 'lsns-8--fix-missing-comma' of https://github.com/masatake/util-linux:
  docs: lsns(8): add missing a comma in SEE ALSO section

3 months agoMerge branch 'feat/su_accept_gid_args' of https://github.com/cgoesche/util-linux...
Karel Zak [Wed, 17 Dec 2025 11:06:35 +0000 (12:06 +0100)] 
Merge branch 'feat/su_accept_gid_args' of https://github.com/cgoesche/util-linux-fork

* 'feat/su_accept_gid_args' of https://github.com/cgoesche/util-linux-fork:
  unshare: use MAX_OF_UINT_TYPE instead of (type)-1
  chfn: enable the use of the username or UID
  unshare: use the new ul_get{grp,userpw}_str() routines
  login: use new xgetuserpw() instead of xgetpwnam()
  chsh: use new xgetuserpw() instead of xgetpwnam()
  su: accept group name and GID in -g and -G options
  tests: (su) test GID argument in --group option
  lib: (pwdutils.c) new library routines to get a group/passwd struct by name or GID/UID
  include/c.h: add MAX_OF_UINT_TYPE macro to get max num of an uint type

3 months agotreewide: consistently use tabs for indentation where it is the rule
Benno Schulenberg [Tue, 9 Dec 2025 15:02:22 +0000 (16:02 +0100)] 
treewide: consistently use tabs for indentation where it is the rule

Also unwrap a line, delete two blank lines, and improve three comments.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
3 months agochmem: do not word a configuration failure as an instruction to the user
Benno Schulenberg [Tue, 9 Dec 2025 15:02:21 +0000 (16:02 +0100)] 
chmem: do not word a configuration failure as an instruction to the user

When the current machine does not support configuring/deconfiguring
memory, simply report that it cannot be done, instead of seemingly
telling the user to skip the configuring/deconfiguring.

Also, there is no need to mention `chmem` in the message: mentioning
just the recommended option (-e or -d) is enough.  Also, consistently
terminate all four messages with a period.

This improves upon commit ab2e709600 ("chmem: improve messages").

CC: Sumanth Korikkar <sumanthk@linux.ibm.com>
Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
3 months agolosetup: snip --verbose from bash-completion, and 'v' from options string
Benno Schulenberg [Tue, 9 Dec 2025 15:02:20 +0000 (16:02 +0100)] 
losetup: snip --verbose from bash-completion, and 'v' from options string

This should have been part of commit 7e27c81597 from two months ago.

Signed-off-by: Benno Schulenberg <bensberg@telfort.nl>
3 months agounshare: fix user namespace bind mounts
Chris Webb [Mon, 15 Dec 2025 18:48:29 +0000 (18:48 +0000)] 
unshare: fix user namespace bind mounts

unshare --user=<file> always fails because we no longer have CAP_SYS_ADMIN
in the parent user namespace after unsharing to create the new one. As with
unshare --mount=<file>, fork a child to make the bind mount instead.

Signed-off-by: Chris Webb <chris@arachsys.com>
3 months agounshare: remove get_mnt_ino() check in bind_ns_files_from_child()
Chris Webb [Mon, 15 Dec 2025 18:41:08 +0000 (18:41 +0000)] 
unshare: remove get_mnt_ino() check in bind_ns_files_from_child()

get_mnt_ino() was originally introduced in c84f2590 where it was used
in a loop to wait for the parent process to unshare the mount namespace
before binding the namespace in its child.

The parent and child processes are now synchronised with eventfd, so
remove this vestigial check and the now-unused get_mnt_ino() function.
This allows bind_ns_files_from_child() to be used even when the mount
namespace isn't amongst the namespaces being unshared.

Signed-off-by: Chris Webb <chris@arachsys.com>
3 months agounshare: add --owner to set user namespace owner uid and gid
Chris Webb [Sun, 14 Dec 2025 23:18:33 +0000 (23:18 +0000)] 
unshare: add --owner to set user namespace owner uid and gid

As well as the mappings between lower and upper ids, a user namespace is
associated with an owner user and group in its parent. These are set from
the uid and gid when the unshare() call is made, and determine which user
in the parent namespace has CAP_SYS_ADMIN in the child and can setns()
into it.

Add an --owner=<uid>:<gid> option which allows a privileged user to
create a user namespace on behalf of another user, mapping parent ids
and/or bind-mounting the namespace with privileges that the new owner
would not have.

Simplify the control flow around map_ids_from_child() vs mapping them
inline to avoid too many special cases. We reset mapuser and mapgroup to
-1 to signal that the mapping has been delegated to the child helper.

For completeness, we maintain the semantics of --map-root-user and
--map-current-user, binding the invoking user to root or itself in the
new namespace. However, when --owner is used, these must be handled by
a forked child as with --map-users and --map-groups.

Signed-off-by: Chris Webb <chris@arachsys.com>
4 months agotests: convert fallocate to use subtests
Karel Zak [Thu, 11 Dec 2025 12:42:02 +0000 (13:42 +0100)] 
tests: convert fallocate to use subtests

Convert the fallocate test to use subtests pattern following the
waitpid test example. This allows testing multiple scenarios in a
single test run.

Subtests:
- alloc: Basic allocation test (original test)
- report-data-holes: Report holes before digging (data holes)
- dig-holes: Convert data holes to sparse holes with verbose output
- report-file-holes: Report holes after digging (file holes)

The test reuses the same image file across dig/report subtests to
efficiently test the complete workflow: report → dig → report.

Uses <testfile> placeholder instead of absolute paths in expected
output to ensure tests work from any directory.

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agofallocate: refactor --report-holes and --dig-holes output
Karel Zak [Thu, 11 Dec 2025 12:39:40 +0000 (13:39 +0100)] 
fallocate: refactor --report-holes and --dig-holes output

This commit consolidates duplicate printf() calls and calculations by
introducing two new helper functions:

- update_holestat(): Tracks hole statistics and prints verbose output
  for both HOLETYPE_FILE and HOLETYPE_DATA. Statistics are always
  collected regardless of report mode.

- summary_holestat(): Prints summary output for file holes, data holes,
  and "converted to sparse holes" message. Uses consistent formatting
  with hole counts and percentages.

Changes:
- Made 'report' a global variable (like 'verbose')
- Renamed struct holes_report to struct holestat for consistency
- Changed struct fields to uintmax_t to eliminate casts in printf
- Removed 'report' parameter from dig_holes() function
- Unified dig and report modes to use single dig_holes() call
- All output strings wrapped in _() for translation
- Consistent printf() usage instead of mixed fprintf()
- Percentage format: "(%ju bytes, %.2f%% of the file)"

The refactoring eliminates ~40 lines of duplicate code while maintaining
all functionality and improving code maintainability.

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agoFix memory leak in setpwnam()
yao zhang [Thu, 11 Dec 2025 11:20:58 +0000 (19:20 +0800)] 
Fix memory leak in setpwnam()

Add memeory release for tmpname upon successful return.

4 months agodocs: lsns(8): add missing a comma in SEE ALSO section
Masatake YAMATO [Wed, 10 Dec 2025 22:51:25 +0000 (07:51 +0900)] 
docs: lsns(8): add missing a comma in SEE ALSO section

4 months agofallocate: add --report-holes
syokensyo [Wed, 10 Dec 2025 11:53:23 +0000 (12:53 +0100)] 
fallocate: add --report-holes

[kzak@redhat.com: - cleanup commit message, rebase]

Fixes: #3822
Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolib: (pidfd-utils.c) set __unused__ in right way
Karel Zak [Wed, 10 Dec 2025 11:09:44 +0000 (12:09 +0100)] 
lib: (pidfd-utils.c) set __unused__ in right way

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agoMerge branch 'fix/consolidate_validate_pfd_ino' of https://github.com/cgoesche/util...
Karel Zak [Wed, 10 Dec 2025 11:01:06 +0000 (12:01 +0100)] 
Merge branch 'fix/consolidate_validate_pfd_ino' of https://github.com/cgoesche/util-linux-fork

* 'fix/consolidate_validate_pfd_ino' of https://github.com/cgoesche/util-linux-fork:
  lib: (pidutils.c) use uint64_t instead of ino_t for seamless cross-compatibility
  kill: use uint64_t as type for kill_control->pidfd_ino
  lib: (pidfd-utils.c) remove extraneous _GNU_SOURCE feature test macro
  lib: (pidfd-utils) new helper function to retrieve pidfd inode number
  lib: (pidfd-utils.c) add a helper routine to check the pidfd fs type
  kill: replace USE_KILL_WITH_PIDFD_INO ifdef with USE_PIDFD_INO_SUPPORT
  include: (pidfd-utils.h) conditionally define pidfd inode support
  libmount: add pidfs magic number for fstype check
  include: (statfs_magic.h) add pidfs magic number
  kill: use ul_get_valid_pidfd_or_err() to validate user provided pidfd inodes
  include: add helper routines for opening and validating pidfds

4 months agolibblkid: Keep NTFS name unmodified and mount driver independent
Karel Zak [Tue, 9 Dec 2025 12:12:41 +0000 (13:12 +0100)] 
libblkid: Keep NTFS name unmodified and mount driver independent

We need stable filesystem names (types) even though there are multiple
filesystem drivers. libmount now provides a way to map the stable
fs-types to various mount-types.

References: 4cd429fdcd3e7db1d031494987d5cf7411689d79
Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolibmount: add option to override fs-type with mount-type
Karel Zak [Tue, 9 Dec 2025 12:02:11 +0000 (13:02 +0100)] 
libmount: add option to override fs-type with mount-type

This patch introduces an internal libmount method to convert fs-type
(as provided by libblkid or udevd) to mount-type to specify a different
mount driver.

Currently, the mapping from fs-type to mount-type is hardcoded in
libmount as a temporary solution. The final implementation should
provide configuration files (e.g., /etc/mount/fs.d/<name>) for these
mappings.

The current default mapping is implemented only for NTFS. It can be
modified during compilation with:

 ./configure --with-ntfs-mounttype=TYPE
or
 meson setup build -D ntfs-mounttype=TYPE

The default is "ntfs3".

Addresses: https://github.com/util-linux/util-linux/pull/3618
Addresses: https://github.com/systemd/systemd/pull/39982
Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolibmount: read from udev, add --disable-libmount-udev-support
Karel Zak [Tue, 25 Nov 2025 11:56:07 +0000 (12:56 +0100)] 
libmount: read from udev, add --disable-libmount-udev-support

The library traditionally uses libblkid to obtain device properties
(such as FS-type if not specified). This can be a relatively costly
operation to scan the device and requires read access to the device.

All relevant libblkid information is usually cached by the udev DB.
This commit adds the possibility to reuse the information from udev,
with a fallback to libblkid if udev is not available.

The commit also adds

 $ ./configure --disable-libmount-udev-support
 $ meson setup build -Dbuild-libmount-udev-support=disabled

to completely disable this feature and avoid libmount's dependence
on libsystemd.

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolibmount: enhance readability of read_from_blkid()
Karel Zak [Mon, 24 Nov 2025 15:57:50 +0000 (16:57 +0100)] 
libmount: enhance readability of read_from_blkid()

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolibmount: refactor mnt_cache_read_tags()
Karel Zak [Mon, 24 Nov 2025 08:54:20 +0000 (09:54 +0100)] 
libmount: refactor mnt_cache_read_tags()

Split the function into smaller functions to make it easier to read
and extend in the future.

Introduce a struct to hold all variants of tag names, including udev
names in the future.

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolibmount: refactor mnt_get_fstype()
Karel Zak [Mon, 24 Nov 2025 08:42:09 +0000 (09:42 +0100)] 
libmount: refactor mnt_get_fstype()

Move the current code into two small functions to improve readability
and facilitate future extensions.

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agoMerge branch 'fix/procfs_extraneous_return' of https://github.com/cgoesche/util-linux...
Karel Zak [Mon, 8 Dec 2025 11:17:27 +0000 (12:17 +0100)] 
Merge branch 'fix/procfs_extraneous_return' of https://github.com/cgoesche/util-linux-fork

* 'fix/procfs_extraneous_return' of https://github.com/cgoesche/util-linux-fork:
  lib: (procfs.c) remove extraneous return statement

4 months agoMerge branch 'fix/login_shell_arg_null_str' of https://github.com/cgoesche/util-linux...
Karel Zak [Mon, 8 Dec 2025 08:59:41 +0000 (09:59 +0100)] 
Merge branch 'fix/login_shell_arg_null_str' of https://github.com/cgoesche/util-linux-fork

* 'fix/login_shell_arg_null_str' of https://github.com/cgoesche/util-linux-fork:
  login: duplicate --shell argument to avoid nulling through explicit_bzero()

4 months agolib: (procfs.c) remove extraneous return statement
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 19:00:32 +0000 (14:00 -0500)] 
lib: (procfs.c) remove extraneous return statement

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agolib: (pidutils.c) use uint64_t instead of ino_t for seamless cross-compatibility
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 18:37:57 +0000 (13:37 -0500)] 
lib: (pidutils.c) use uint64_t instead of ino_t for seamless cross-compatibility

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agokill: use uint64_t as type for kill_control->pidfd_ino
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 18:35:21 +0000 (13:35 -0500)] 
kill: use uint64_t as type for kill_control->pidfd_ino

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agolib: (pidfd-utils.c) remove extraneous _GNU_SOURCE feature test macro
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 15:16:25 +0000 (10:16 -0500)] 
lib: (pidfd-utils.c) remove extraneous _GNU_SOURCE feature test macro

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agolib: (pidfd-utils) new helper function to retrieve pidfd inode number
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 04:47:16 +0000 (23:47 -0500)] 
lib: (pidfd-utils) new helper function to retrieve pidfd inode number

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agolib: (pidfd-utils.c) add a helper routine to check the pidfd fs type
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 03:59:54 +0000 (22:59 -0500)] 
lib: (pidfd-utils.c) add a helper routine to check the pidfd fs type

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agokill: replace USE_KILL_WITH_PIDFD_INO ifdef with USE_PIDFD_INO_SUPPORT
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 01:45:05 +0000 (20:45 -0500)] 
kill: replace USE_KILL_WITH_PIDFD_INO ifdef with USE_PIDFD_INO_SUPPORT

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agoinclude: (pidfd-utils.h) conditionally define pidfd inode support
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 01:38:11 +0000 (20:38 -0500)] 
include: (pidfd-utils.h) conditionally define pidfd inode support

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agolibmount: add pidfs magic number for fstype check
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 01:31:37 +0000 (20:31 -0500)] 
libmount: add pidfs magic number for fstype check

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agoinclude: (statfs_magic.h) add pidfs magic number
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 01:27:22 +0000 (20:27 -0500)] 
include: (statfs_magic.h) add pidfs magic number

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agokill: use ul_get_valid_pidfd_or_err() to validate user provided pidfd inodes
Christian Goeschel Ndjomouo [Tue, 25 Nov 2025 04:54:39 +0000 (23:54 -0500)] 
kill: use ul_get_valid_pidfd_or_err() to validate user provided pidfd inodes

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agoinclude: add helper routines for opening and validating pidfds
Christian Goeschel Ndjomouo [Tue, 25 Nov 2025 04:26:48 +0000 (23:26 -0500)] 
include: add helper routines for opening and validating pidfds

With the new ul_get_valid_pidfd_or_err() routine util-linux
tools can now simply validate pidfd inode numbers before
opening a file descriptor for a given PID.

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agoMerge branch 'PR/column-input-separator-alias' of https://github.com/karelzak/util...
Karel Zak [Thu, 4 Dec 2025 17:41:44 +0000 (18:41 +0100)] 
Merge branch 'PR/column-input-separator-alias' of https://github.com/karelzak/util-linux-work

* 'PR/column-input-separator-alias' of https://github.com/karelzak/util-linux-work:
  column: add --input-separator as an alias for --separator

4 months agologin: duplicate --shell argument to avoid nulling through explicit_bzero()
Christian Goeschel Ndjomouo [Thu, 4 Dec 2025 17:02:30 +0000 (12:02 -0500)] 
login: duplicate --shell argument to avoid nulling through explicit_bzero()

Addresses: #3855
Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agogithub: revert actions/checkout for ubuntu 18.04
Karel Zak [Thu, 4 Dec 2025 15:58:28 +0000 (16:58 +0100)] 
github: revert actions/checkout for ubuntu 18.04

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agoMerge branch 'feat/login_shell_option' of https://github.com/cgoesche/util-linux...
Karel Zak [Thu, 4 Dec 2025 13:26:40 +0000 (14:26 +0100)] 
Merge branch 'feat/login_shell_option' of https://github.com/cgoesche/util-linux-fork

* 'feat/login_shell_option' of https://github.com/cgoesche/util-linux-fork:
  login: document -s and --shell on the man page
  login: define shell to log in to with -s or --shell

4 months agoMerge branch 'update_guid_zfs' of https://github.com/mminkus/util-linux
Karel Zak [Thu, 4 Dec 2025 13:25:52 +0000 (14:25 +0100)] 
Merge branch 'update_guid_zfs' of https://github.com/mminkus/util-linux

* 'update_guid_zfs' of https://github.com/mminkus/util-linux:
  libfdisk: modernize ZFS GPT type description

4 months agologin: document -s and --shell on the man page
Christian Goeschel Ndjomouo [Thu, 27 Nov 2025 04:07:14 +0000 (23:07 -0500)] 
login: document -s and --shell on the man page

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agologin: define shell to log in to with -s or --shell
Christian Goeschel Ndjomouo [Thu, 27 Nov 2025 03:52:21 +0000 (22:52 -0500)] 
login: define shell to log in to with -s or --shell

The -s and --shell options allow a user to define a shell
to log in to other than the one defined it the passwd entry
or _PATH_BSHELL.

Addresses: #3855
Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agoMerge branch 'fix/issue_3865' of https://github.com/lord2y/util-linux
Karel Zak [Wed, 3 Dec 2025 10:40:57 +0000 (11:40 +0100)] 
Merge branch 'fix/issue_3865' of https://github.com/lord2y/util-linux

* 'fix/issue_3865' of https://github.com/lord2y/util-linux:
  login-utils, sys-utils: use _PATH_BSHELL consistently
  *: use ul_default_shell() for interactive shell spawning
  lib: introduce ul_default_shell() for consistent shell resolution

4 months agoMerge remote-tracking branch 'github/dependabot/github_actions/actions/checkout-6'
Karel Zak [Wed, 3 Dec 2025 10:37:12 +0000 (11:37 +0100)] 
Merge remote-tracking branch 'github/dependabot/github_actions/actions/checkout-6'

4 months agoMerge remote-tracking branch 'github/dependabot/github_actions/actions/upload-artifact-5'
Karel Zak [Wed, 3 Dec 2025 10:36:42 +0000 (11:36 +0100)] 
Merge remote-tracking branch 'github/dependabot/github_actions/actions/upload-artifact-5'

4 months agoMerge remote-tracking branch 'github/dependabot/github_actions/github/codeql-action-4'
Karel Zak [Wed, 3 Dec 2025 10:33:17 +0000 (11:33 +0100)] 
Merge remote-tracking branch 'github/dependabot/github_actions/github/codeql-action-4'

4 months agoMerge branch 'feat/check_bash_comp_integrity' of https://github.com/cgoesche/util...
Karel Zak [Wed, 3 Dec 2025 10:14:13 +0000 (11:14 +0100)] 
Merge branch 'feat/check_bash_comp_integrity' of https://github.com/cgoesche/util-linux-fork

* 'feat/check_bash_comp_integrity' of https://github.com/cgoesche/util-linux-fork:
  bash-completion: (lslogins) fix typo in long option
  tools: (checkcompletion.sh) test the integrity of long options completion
  tools: new helper for extraction of program long options from source files

4 months agocolumn: add --input-separator as an alias for --separator
Karel Zak [Wed, 3 Dec 2025 10:11:59 +0000 (11:11 +0100)] 
column: add --input-separator as an alias for --separator

This change adds --input-separator as an alias for the existing
--separator option, providing symmetry with --output-separator.

The new alias is documented in:
- command-line help text
- man page
- bash completion

Fixes: https://github.com/util-linux/util-linux/issues/3889
Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agolibfdisk: modernize ZFS GPT type description
Martin Minkus [Wed, 3 Dec 2025 03:51:05 +0000 (19:51 -0800)] 
libfdisk: modernize ZFS GPT type description

The GPT type GUID 6A898CC3-1DD2-11B2-99A6-080020736631 is currently
described as "Solaris /usr & Apple ZFS". This reflects early Solaris
and Apple experiments with ZFS, but today the same GUID is widely used
by OpenZFS implementations on Linux, illumos, FreeBSD, and other
platforms to mark ZFS pool member partitions.

Apple's ZFS work was discontinued long ago, while OpenZFS has become
the actively maintained and de facto standard implementation. Update
the human-readable description to the simpler and more accurate:

    "ZFS pool member"

A short comment is added to note the GUID’s historical Solaris /usr
origin and its brief use by Apple. Only the description string is
changed; the GUID itself and its semantics remain unchanged.

4 months agocal: add note about today highlight on -w
Karel Zak [Tue, 2 Dec 2025 15:08:38 +0000 (16:08 +0100)] 
cal: add note about today highlight on -w

Signed-off-by: Karel Zak <kzak@redhat.com>
4 months agounshare: use MAX_OF_UINT_TYPE instead of (type)-1
Christian Goeschel Ndjomouo [Tue, 2 Dec 2025 05:50:28 +0000 (00:50 -0500)] 
unshare: use MAX_OF_UINT_TYPE instead of (type)-1

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agochfn: enable the use of the username or UID
Christian Goeschel Ndjomouo [Fri, 28 Nov 2025 02:56:05 +0000 (21:56 -0500)] 
chfn: enable the use of the username or UID

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agounshare: use the new ul_get{grp,userpw}_str() routines
Christian Goeschel Ndjomouo [Fri, 28 Nov 2025 02:32:41 +0000 (21:32 -0500)] 
unshare: use the new ul_get{grp,userpw}_str() routines

This change refactors get_group() and get_user(), so that it
uses the new routines ul_getgrp_str() and ul_getuserpw_str(),
to simplify the code and remove the overkill mem allocations.

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agobuild(deps): bump actions/checkout from 1 to 6
dependabot[bot] [Mon, 1 Dec 2025 21:01:27 +0000 (21:01 +0000)] 
build(deps): bump actions/checkout from 1 to 6

Bumps [actions/checkout](https://github.com/actions/checkout) from 1 to 6.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v1...v6)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
4 months agologin-utils, sys-utils: use _PATH_BSHELL consistently
Alessandro Ratti [Sun, 23 Nov 2025 15:26:37 +0000 (16:26 +0100)] 
login-utils, sys-utils: use _PATH_BSHELL consistently

Remove local DEFAULT_SHELL definitions and hardcoded "/bin/sh" strings
in favor of the standard _PATH_BSHELL macro from <paths.h>. This
provides consistency across the codebase while following libc
conventions.

These tools already perform their own passwd lookups and only need a
fallback value, so they don't require the full ul_default_shell()
resolution logic.

Affected tools:
- su(1): already checks pw_shell validity
- sulogin(8): emergency login with explicit shell handling
- setpriv(1): already has passwd entry for environment setup

Signed-off-by: Alessandro Ratti <alessandro@0x65c.net>
4 months ago*: use ul_default_shell() for interactive shell spawning
Alessandro Ratti [Sun, 23 Nov 2025 15:24:52 +0000 (16:24 +0100)] 
*: use ul_default_shell() for interactive shell spawning

Update tools that spawn interactive shells to use ul_default_shell()
for consistent shell resolution. This ensures these tools respect both
$SHELL and the user's configured shell from the passwd database before
falling back to _PATH_BSHELL.

Affected tools:
- script(1): fixes history truncation when invoked without $SHELL
- scriptlive(1): consistent with script(1) behavior
- flock(1): for -c command execution
- more(1): for shell escape feature
- exec_shell (used by unshare(1) and nsenter(1))

This change addresses user reports of data loss due to tools defaulting
to /bin/sh instead of the user's configured shell, particularly affecting
command history with different HISTSIZE configurations.

Addresses: https://github.com/util-linux/util-linux/issues/3865
Signed-off-by: Alessandro Ratti <alessandro@0x65c.net>
4 months agolib: introduce ul_default_shell() for consistent shell resolution
Alessandro Ratti [Sun, 23 Nov 2025 15:20:57 +0000 (16:20 +0100)] 
lib: introduce ul_default_shell() for consistent shell resolution

Add a new ul_default_shell() function to provide consistent shell
resolution across util-linux tools. The function follows a priority
order: $SHELL environment variable, user's shell from passwd database,
and finally _PATH_BSHELL as fallback.

The function supports flags to control its behavior:
- UL_SHELL_NOENV: skip $SHELL environment variable check
- UL_SHELL_NOPWD: skip passwd database lookup

This addresses the issue where tools like script(1) would default to
/bin/sh without respecting the user's configured shell, potentially
causing data loss.

Addresses: https://github.com/util-linux/util-linux/issues/3865
Suggested-by: Karel Zak <kzak@redhat.com>
Suggested-by: Thomas Weißschuh <thomas@t-8ch.de>
Signed-off-by: Alessandro Ratti <alessandro@0x65c.net>
4 months agoMerge branch 'lsfd--fix-error-file-memleak' of https://github.com/masatake/util-linux
Karel Zak [Mon, 1 Dec 2025 10:21:22 +0000 (11:21 +0100)] 
Merge branch 'lsfd--fix-error-file-memleak' of https://github.com/masatake/util-linux

* 'lsfd--fix-error-file-memleak' of https://github.com/masatake/util-linux:
  lsfd: fix memory leak related to stat_error_class

4 months agoMerge branch 'master' of https://github.com/jthackray/util-linux
Karel Zak [Mon, 1 Dec 2025 10:10:11 +0000 (11:10 +0100)] 
Merge branch 'master' of https://github.com/jthackray/util-linux

* 'master' of https://github.com/jthackray/util-linux:
  lscpu: Add a few missing Arm CPU identifiers

4 months agologin: use new xgetuserpw() instead of xgetpwnam()
Christian Goeschel Ndjomouo [Fri, 28 Nov 2025 01:05:38 +0000 (20:05 -0500)] 
login: use new xgetuserpw() instead of xgetpwnam()

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agochsh: use new xgetuserpw() instead of xgetpwnam()
Christian Goeschel Ndjomouo [Fri, 28 Nov 2025 01:04:58 +0000 (20:04 -0500)] 
chsh: use new xgetuserpw() instead of xgetpwnam()

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>
4 months agosu: accept group name and GID in -g and -G options
Christian Goeschel Ndjomouo [Wed, 26 Nov 2025 03:19:12 +0000 (22:19 -0500)] 
su: accept group name and GID in -g and -G options

Signed-off-by: Christian Goeschel Ndjomouo <cgoesc2@wgu.edu>