]> git.ipfire.org Git - thirdparty/util-linux.git/log
thirdparty/util-linux.git
20 months agolibsmartcols: Export internally used types to API
Karel Zak [Wed, 27 Sep 2023 10:47:15 +0000 (12:47 +0200)] 
libsmartcols: Export internally used types to API

We anticipate a need for improved interaction between applications and
the library in certain scenarios. For instance, when a table contains
strings that cannot be readily converted from strings to numbers
(e.g., strings like "15.3MiB") but the application possesses data in a
more suitable format.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: rename sortdata to rawdata
Karel Zak [Wed, 27 Sep 2023 09:26:23 +0000 (11:26 +0200)] 
lsblk: rename sortdata to rawdata

We can use the data for another purpose too.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: always set column type
Karel Zak [Tue, 26 Sep 2023 12:51:34 +0000 (14:51 +0200)] 
lsblk: always set column type

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: support normalized column names on command line
Karel Zak [Tue, 26 Sep 2023 12:45:13 +0000 (14:45 +0200)] 
lsblk: support normalized column names on command line

For example column name "LOG-SEC" is possible to use as LOG_SEC in
some output formats and in filter expressions.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: search also by normalized column names (aka 'shellvar' name)
Karel Zak [Tue, 26 Sep 2023 12:44:02 +0000 (14:44 +0200)] 
libsmartcols: search also by normalized column names (aka 'shellvar' name)

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: make sure counter is initialized
Karel Zak [Tue, 26 Sep 2023 11:18:42 +0000 (13:18 +0200)] 
libsmartcols: make sure counter is initialized

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: add scols counters support
Karel Zak [Tue, 26 Sep 2023 10:52:32 +0000 (12:52 +0200)] 
lsblk: add scols counters support

* add --ct-filter <expr> to restrict the next next counters

* add --ct <name>[:<param>:func] to define counter. The counter
  assigned to the previously specified filter, if no filter specified
  then it's applied to all output lines.

Examples:

  $ lsblk --ct "number of block devices"
  ...
  Summary:
              21 number of block devices

The filter uses default count() function and is applied to
all lines.

  $ lsblk --ct-filter 'TRAN=="nvme"' --ct "number of NVMEs"
  ...
  Summary:
               4 number of NVMEs

The filter is restricted by filter.

  $ lsblk --bytes
          --ct-filter 'TRAN=="sata" && TYPE=="disk"'
          --ct "size of all SATAs disks":SIZE:sum
  ...
  Summary:
    320083771392 size of all SATAs disks

The counter uses sum() built-in function for specified column (SIZE)
and is restricted by filter.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: implement filter based counters
Karel Zak [Tue, 26 Sep 2023 10:43:01 +0000 (12:43 +0200)] 
libsmartcols: implement filter based counters

* add support for empty filter; the result of the empty expression is
  always "true"

* Filter can hold arbitrary number of counters

* A counter is based on a built-in function. Now supported are count, max, min and sum functions.

* The default function is "count" (count lines)

* It's possible to assign column (param) to the counter, for example count sum
  of all data in the column

* The param is used in the same way as params in the filter (and
  initialized in the same way)

Based on Masatake YAMATO's work on lsfd.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: split filter allocation and initialization
Karel Zak [Tue, 26 Sep 2023 08:17:22 +0000 (10:17 +0200)] 
lsblk: split filter allocation and initialization

A small refactoring to parse filters during getopt_long() time.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: fix in-tree filtering
Karel Zak [Mon, 25 Sep 2023 11:19:49 +0000 (13:19 +0200)] 
lsblk: fix in-tree filtering

The function device_to_scols() is used recursively (for children).
It's impossible leave the function on filter status=false, it's
necessary to continue in the tree.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: add --highlight
Karel Zak [Wed, 20 Sep 2023 12:34:09 +0000 (14:34 +0200)] 
lsblk: add --highlight

The new option can colorize lines specified by scols query. The
columns (in the expression) does not have to be in the output.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolsblk: add --filter
Karel Zak [Wed, 20 Sep 2023 12:07:39 +0000 (14:07 +0200)] 
lsblk: add --filter

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) Add on-demand data filler
Karel Zak [Wed, 20 Sep 2023 11:47:43 +0000 (13:47 +0200)] 
libsmartcols: (filter) Add on-demand data filler

When dealing with really large data sets, we need to reduce overhead
by filtering out unnecessary lines. The traditional approach, using:

 lstool | grep <expr>

requires the tool to read all data from the system and then filter out
(and throw away) a lot of data.

The filter-filler now allows us to use an empty line. The filter will
request data through a callback, and when a line passes the filter,
the application can fill in the rest of the columns.

For example, in a query like "FOO > 10 && BAR < 10," libsmartcols will
never ask for "BAR" if "FOO" is smaller than 10. This means the
application doesn't have to gather additional columns.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: Add --highlight option to filter sample
Karel Zak [Tue, 19 Sep 2023 09:15:15 +0000 (11:15 +0200)] 
libsmartcols: Add --highlight option to filter sample

This commit demonstrates another example of how to use the filter. It
also enables testing of two filters for the same table to ensure that
Bison and Flex generate a reentrant parser.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) add regular expression operators
Karel Zak [Thu, 14 Sep 2023 09:55:03 +0000 (11:55 +0200)] 
libsmartcols: (filter) add regular expression operators

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) move struct filter_param
Karel Zak [Wed, 13 Sep 2023 11:06:06 +0000 (13:06 +0200)] 
libsmartcols: (filter) move struct filter_param

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) move struct filter_expr
Karel Zak [Wed, 13 Sep 2023 10:54:18 +0000 (12:54 +0200)] 
libsmartcols: (filter) move struct filter_expr

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) support empty values
Karel Zak [Wed, 13 Sep 2023 09:59:13 +0000 (11:59 +0200)] 
libsmartcols: (filter) support empty values

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) improve scols_filter_assign_column()
Karel Zak [Wed, 13 Sep 2023 09:28:36 +0000 (11:28 +0200)] 
libsmartcols: (filter) improve scols_filter_assign_column()

* make it more usable with scols_filter_next_holder() and avoid name

* make it usable with only with name

* fix return codes

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: support SCOLS_JSON_FLOAT in print API
Karel Zak [Tue, 12 Sep 2023 19:16:37 +0000 (21:16 +0200)] 
libsmartcols: support SCOLS_JSON_FLOAT in print API

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) add ability to cast data
Karel Zak [Tue, 12 Sep 2023 12:22:40 +0000 (14:22 +0200)] 
libsmartcols: (filter) add ability to cast data

* add FLOAT type for JSON

  JSON standard does not care and everything is number, but for libsmartcols
  it would be better to differentiate between the types.

* add functions to cast data in the filter param

* cast data from scols rows

* cast data in the filter expression if necessary

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agoinclude/strutils: add ul_strtold()
Karel Zak [Tue, 12 Sep 2023 12:14:50 +0000 (14:14 +0200)] 
include/strutils: add ul_strtold()

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) cleanup function arguments
Karel Zak [Thu, 7 Sep 2023 08:53:21 +0000 (10:53 +0200)] 
libsmartcols: (filter) cleanup function arguments

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) implement data basic operators
Karel Zak [Thu, 7 Sep 2023 08:24:03 +0000 (10:24 +0200)] 
libsmartcols: (filter) implement data basic operators

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols (filter) fetch data from columns
Karel Zak [Tue, 5 Sep 2023 11:43:37 +0000 (13:43 +0200)] 
libsmartcols (filter) fetch data from columns

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) param data refactoring
Karel Zak [Tue, 5 Sep 2023 10:51:16 +0000 (12:51 +0200)] 
libsmartcols: (filter) param data refactoring

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) make holders API more generic
Karel Zak [Tue, 5 Sep 2023 09:52:39 +0000 (11:52 +0200)] 
libsmartcols: (filter) make holders API more generic

The internal implementation is generic (can hold something else than
only column name). Let's make the API also generic. Maybe later we can
support something else than only column names in expressions
(e.g. env.variables ?).

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) cleanup data types
Karel Zak [Tue, 5 Sep 2023 09:43:23 +0000 (11:43 +0200)] 
libsmartcols: (filter) cleanup data types

* split placeholders (e.g. column name) and data types
* make data type enums independent on params

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) implement logical operators
Karel Zak [Tue, 5 Sep 2023 08:57:42 +0000 (10:57 +0200)] 
libsmartcols: (filter) implement logical operators

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) evaluate params
Karel Zak [Tue, 5 Sep 2023 08:54:53 +0000 (10:54 +0200)] 
libsmartcols: (filter) evaluate params

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: update gitignore
Karel Zak [Tue, 5 Sep 2023 08:45:45 +0000 (10:45 +0200)] 
libsmartcols: update gitignore

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: (filter) split code
Karel Zak [Tue, 5 Sep 2023 07:51:25 +0000 (09:51 +0200)] 
libsmartcols: (filter) split code

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: add API to join filter and columns
Karel Zak [Thu, 31 Aug 2023 15:41:04 +0000 (17:41 +0200)] 
libsmartcols: add API to join filter and columns

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agoautotools: check for flex in autogen.sh
Karel Zak [Thu, 31 Aug 2023 11:55:16 +0000 (13:55 +0200)] 
autotools: check for flex in autogen.sh

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: add parser header files
Karel Zak [Thu, 31 Aug 2023 11:47:50 +0000 (13:47 +0200)] 
libsmartcols: add parser header files

The header files are generated by bison and flex, but it seems that it's
expected that developer generate it only rarely and manually. So, it
seems better to keep it in git.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: add filter sample
Karel Zak [Tue, 8 Aug 2023 10:19:26 +0000 (12:19 +0200)] 
libsmartcols: add filter sample

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: improve filter integration, use JSON to dump
Karel Zak [Tue, 8 Aug 2023 10:18:56 +0000 (12:18 +0200)] 
libsmartcols: improve filter integration, use JSON to dump

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolib/jsonwrt: add support for float numbers
Karel Zak [Tue, 8 Aug 2023 10:16:23 +0000 (12:16 +0200)] 
lib/jsonwrt: add support for float numbers

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agoautotools: fix AC_PROG_LEX use
Karel Zak [Tue, 8 Aug 2023 10:15:50 +0000 (12:15 +0200)] 
autotools: fix AC_PROG_LEX use

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: introduce basic files for filter implementation
Karel Zak [Thu, 20 Jul 2023 21:08:07 +0000 (23:08 +0200)] 
libsmartcols: introduce basic files for filter implementation

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agoMerge branch 'authors' of https://github.com/t-8ch/util-linux
Karel Zak [Mon, 20 Nov 2023 10:03:39 +0000 (11:03 +0100)] 
Merge branch 'authors' of https://github.com/t-8ch/util-linux

* 'authors' of https://github.com/t-8ch/util-linux:
  AUTHORS: add tools contributed by myself

20 months agoMerge branch 'cfdisk/resize-out-of-order' of https://github.com/t-8ch/util-linux
Karel Zak [Mon, 20 Nov 2023 10:03:18 +0000 (11:03 +0100)] 
Merge branch 'cfdisk/resize-out-of-order' of https://github.com/t-8ch/util-linux

* 'cfdisk/resize-out-of-order' of https://github.com/t-8ch/util-linux:
  cfdisk: properly handle out-of-order partitions during resize
  libfdisk: add fdisk_partition_get_max_size
  libfdisk: fix typo in debug message

20 months agoAUTHORS: add tools contributed by myself
Thomas Weißschuh [Wed, 15 Nov 2023 21:18:04 +0000 (22:18 +0100)] 
AUTHORS: add tools contributed by myself

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
20 months agocfdisk: properly handle out-of-order partitions during resize
Thomas Weißschuh [Tue, 14 Nov 2023 16:53:29 +0000 (17:53 +0100)] 
cfdisk: properly handle out-of-order partitions during resize

Fixes #2580

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
20 months agolibfdisk: add fdisk_partition_get_max_size
Thomas Weißschuh [Tue, 14 Nov 2023 16:53:21 +0000 (17:53 +0100)] 
libfdisk: add fdisk_partition_get_max_size

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
20 months agolibfdisk: fix typo in debug message
Thomas Weißschuh [Wed, 18 Oct 2023 08:58:46 +0000 (10:58 +0200)] 
libfdisk: fix typo in debug message

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
20 months agolsblk: add separate MAJ and MIN columns
Karel Zak [Tue, 14 Nov 2023 11:50:38 +0000 (12:50 +0100)] 
lsblk: add separate MAJ and MIN columns

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agolibsmartcols: accept no data for custom wrapping cells
Karel Zak [Tue, 14 Nov 2023 11:46:49 +0000 (12:46 +0100)] 
libsmartcols: accept no data for custom wrapping cells

Don't re-use previously used 'rc' variable, otherwise empty cell will
be interpreted as error.

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agoMerge branch 'fincore-err' of https://github.com/t-8ch/util-linux
Karel Zak [Tue, 14 Nov 2023 09:18:43 +0000 (10:18 +0100)] 
Merge branch 'fincore-err' of https://github.com/t-8ch/util-linux

* 'fincore-err' of https://github.com/t-8ch/util-linux:
  fincore: (tests) also use nosize error file

20 months agotests: (lsfd::column-xmode) ignore "rwx" mappings
Masatake YAMATO [Tue, 14 Nov 2023 02:21:22 +0000 (11:21 +0900)] 
tests: (lsfd::column-xmode) ignore "rwx" mappings

This change fixes the issue about lsfd reported in
https://marc.info/?l=util-linux-ng&m=169972678725084&w=2

column-xmode test case assumes an executable file has only
one "x" mapping like:

    % pmap $$ | grep ${SHELL##*/}
    1292343:   zsh
    0000562386c1c000     92K r---- zsh
    0000562386c33000    716K r-x-- zsh <<
    0000562386ce6000     88K r---- zsh
    0000562386cfc000      8K r---- zsh
    0000562386cfe000     24K rw--- zsh

However, this assumption is wrong on Sparc64:

    % pmap $$
    1490470:   zsh
    0000010000000000    792K r-x-- zsh <<
    00000100001fe000      8K r---- zsh
    0000010000200000     32K rwx-- zsh <<

Two "x" mappings are found.
As a result, the original test case failed.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
20 months agofincore: (tests) also use nosize error file
Thomas Weißschuh [Mon, 13 Nov 2023 20:05:59 +0000 (21:05 +0100)] 
fincore: (tests) also use nosize error file

Link: https://lore.kernel.org/util-linux/b8cafd0d89878949705782312dfe800ec2779035.camel@physik.fu-berlin.de/
Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
20 months agolibuuid: avoid truncate clocks.txt to improve performance
Goldwyn Rodrigues [Tue, 10 Oct 2023 23:08:59 +0000 (18:08 -0500)] 
libuuid: avoid truncate clocks.txt to improve performance

Instead of explicitly truncating clocks.txt file, pad with
whitespaces in the end of file.
This is done to improve performance of libuuid on xfs
filesystems. Instead of truncating the file, pad it with whitespaces.
This is anyways used as a failsafe method in case truncate fails.

The reason why this regression was introduced was because of:
869ae85dae64 ("xfs: flush new eof page on truncate to avoid post-eof corruption")

An attempt to move the clocks.txt to /run (tmpfs) has been attempted before
[1] and with commit ab2e7dd17 ("libuuid: move clock state file from
/var/lib to /var/run"). The latter was reverted.

[1] https://www.spinics.net/lists/util-linux-ng/msg17331.html

Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
20 months agoMerge branch 'lslocks--per-process' of https://github.com/masatake/util-linux
Karel Zak [Mon, 13 Nov 2023 09:36:16 +0000 (10:36 +0100)] 
Merge branch 'lslocks--per-process' of https://github.com/masatake/util-linux

* 'lslocks--per-process' of https://github.com/masatake/util-linux:
  lslocks: (man) update the note about OFDLCK
  lslocks: (test) add a case for OFDLCK type locks
  lslocks: use information extracted from "locks: " column of /proc/$pid/fdinfo/*
  lslocks: (refactor) lift up the code destroying the lock list for future extension
  lslocks: rename functions for future extension
  lslocks: refactor the code reading /proc/locks
  lslocks: (refactor) remove 'pid' global variable
  lslocks: (man) document LEASE type
  lslocks: (test) add a case

20 months agoMerge branch 'master' of https://github.com/ffontaine/util-linux
Karel Zak [Mon, 13 Nov 2023 09:34:39 +0000 (10:34 +0100)] 
Merge branch 'master' of https://github.com/ffontaine/util-linux

* 'master' of https://github.com/ffontaine/util-linux:
  libuuid/src/gen_uuid.c: fix cs_min declaration

20 months agolslocks: (man) update the note about OFDLCK
Masatake YAMATO [Sun, 12 Nov 2023 17:26:53 +0000 (02:26 +0900)] 
lslocks: (man) update the note about OFDLCK

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: (test) add a case for OFDLCK type locks
Masatake YAMATO [Sun, 12 Nov 2023 16:43:36 +0000 (01:43 +0900)] 
lslocks: (test) add a case for OFDLCK type locks

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: use information extracted from "locks: " column of /proc/$pid/fdinfo/*
Masatake YAMATO [Thu, 9 Nov 2023 22:08:45 +0000 (07:08 +0900)] 
lslocks: use information extracted from "locks: " column of /proc/$pid/fdinfo/*

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: (refactor) lift up the code destroying the lock list for future extension
Masatake YAMATO [Sun, 12 Nov 2023 15:30:32 +0000 (00:30 +0900)] 
lslocks: (refactor) lift up the code destroying the lock list for future extension

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: rename functions for future extension
Masatake YAMATO [Sun, 12 Nov 2023 15:25:51 +0000 (00:25 +0900)] 
lslocks: rename functions for future extension

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: refactor the code reading /proc/locks
Masatake YAMATO [Thu, 9 Nov 2023 21:14:36 +0000 (06:14 +0900)] 
lslocks: refactor the code reading /proc/locks

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: (refactor) remove 'pid' global variable
Masatake YAMATO [Sun, 12 Nov 2023 18:03:03 +0000 (03:03 +0900)] 
lslocks: (refactor) remove 'pid' global variable

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: (man) document LEASE type
Masatake YAMATO [Sun, 12 Nov 2023 17:21:43 +0000 (02:21 +0900)] 
lslocks: (man) document LEASE type

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolslocks: (test) add a case
Masatake YAMATO [Sat, 11 Nov 2023 17:39:22 +0000 (02:39 +0900)] 
lslocks: (test) add a case

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolibuuid/src/gen_uuid.c: fix cs_min declaration
Fabrice Fontaine [Tue, 7 Nov 2023 17:43:57 +0000 (18:43 +0100)] 
libuuid/src/gen_uuid.c: fix cs_min declaration

Define cs_min through a define and not a const int to avoid the
following build failure with -O0 raised since version 2.39 and
https://github.com/util-linux/util-linux/commit/2fa4168c8bc9d5438bc1dfadda293c7c21b6fa59:

libuuid/src/gen_uuid.c: In function 'uuid_generate_time_generic':
libuuid/src/gen_uuid.c:536:33: error: initializer element is not constant
  THREAD_LOCAL int  cache_size = cs_min;
                                 ^~~~~~

For consistency, also use define for cs_max and cs_factor

Fixes:
 - http://autobuild.buildroot.org/results/2f80a5cdb523cc3c8c0f3693607a1be036b2ae98

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
20 months agoMerge branch 'lsfd--tty' of https://github.com/masatake/util-linux
Karel Zak [Wed, 8 Nov 2023 11:35:30 +0000 (12:35 +0100)] 
Merge branch 'lsfd--tty' of https://github.com/masatake/util-linux

* 'lsfd--tty' of https://github.com/masatake/util-linux:
  tests: (lsfd) add a case testing NAME, SOURCE, ENDPOINTS, and PTMX.TTY-INDEX columns of pts fds
  tests: (test_mkfds::pty) add a new factory
  lsfd: fill ENDPOINTS column for pty devices
  lsfd: add attach_xinfo and get_ipc_class methods to cdev_ops
  lsfd: add PTMX.TTY-INDEX column
  lsfd: utilize /proc/tty/drivers for filling SOURCE column of tty devices
  lsfd: make the order of calling finalize_* and initialize_* consistent

20 months agoMerge branch 'lslocks--man-missing-fields' of https://github.com/masatake/util-linux
Karel Zak [Tue, 7 Nov 2023 10:21:07 +0000 (11:21 +0100)] 
Merge branch 'lslocks--man-missing-fields' of https://github.com/masatake/util-linux

* 'lslocks--man-missing-fields' of https://github.com/masatake/util-linux:
  lslocks: (man) add missing fields

20 months agolslocks: (man) add missing fields
Masatake YAMATO [Mon, 6 Nov 2023 20:30:33 +0000 (05:30 +0900)] 
lslocks: (man) add missing fields

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolibmount: fix possible NULL dereference [coverity scan]
Karel Zak [Mon, 6 Nov 2023 10:40:27 +0000 (11:40 +0100)] 
libmount: fix possible NULL dereference [coverity scan]

Signed-off-by: Karel Zak <kzak@redhat.com>
20 months agotests: (lsfd) add a case testing NAME, SOURCE, ENDPOINTS, and PTMX.TTY-INDEX columns...
Masatake YAMATO [Fri, 3 Nov 2023 20:22:21 +0000 (05:22 +0900)] 
tests: (lsfd) add a case testing NAME, SOURCE, ENDPOINTS, and PTMX.TTY-INDEX columns of pts fds

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agotests: (test_mkfds::pty) add a new factory
Masatake YAMATO [Fri, 3 Nov 2023 19:38:52 +0000 (04:38 +0900)] 
tests: (test_mkfds::pty) add a new factory

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolsfd: fill ENDPOINTS column for pty devices
Masatake YAMATO [Wed, 1 Nov 2023 17:47:35 +0000 (02:47 +0900)] 
lsfd: fill ENDPOINTS column for pty devices

An example output:

  $ ./lsfd -o+ENDPOINTS -Q '(COMMAND =~ "tmux") and ((SOURCE == "ptmx") or (SOURCE =~ "pts:.*"))'
  COMMAND          PID   USER ASSOC  XMODE TYPE SOURCE MNTID INODE NAME         ENDPOINTS
  tmux: client 3717086 yamato     0 rw----  CHR  pts:9    27    12 /dev/pts/9   2143274,xfce4-terminal,34rw
  tmux: client 3717086 yamato     1 rw----  CHR  pts:9    27    12 /dev/pts/9   2143274,xfce4-terminal,34rw
  tmux: client 3717086 yamato     2 rw----  CHR  pts:9    27    12 /dev/pts/9   2143274,xfce4-terminal,34rw
  tmux: server 3717088 yamato     5 rw---m  CHR  pts:9    27    12 /dev/pts/9   2143274,xfce4-terminal,34rw
  tmux: server 3717088 yamato     8 rw---m  CHR   ptmx    24   208 tty-index=16 3717089,zsh,0rw
                                                                                3717089,zsh,1rw
                                                                                3717089,zsh,2rw
                                                                                3717089,zsh,10rw

  $ ./lsfd -o+ENDPOINTS -Q '(PID == 3717089) and (FD == 0)'
  COMMAND     PID   USER ASSOC  XMODE TYPE SOURCE MNTID INODE NAME        ENDPOINTS
  zsh     3717089 yamato     0 rw----  CHR pts:16    27    19 /dev/pts/16 3717088,tmux: server,8rw

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolsfd: add attach_xinfo and get_ipc_class methods to cdev_ops
Masatake YAMATO [Wed, 1 Nov 2023 17:42:27 +0000 (02:42 +0900)] 
lsfd: add attach_xinfo and get_ipc_class methods to cdev_ops

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolsfd: add PTMX.TTY-INDEX column
Masatake YAMATO [Wed, 1 Nov 2023 15:44:20 +0000 (00:44 +0900)] 
lsfd: add PTMX.TTY-INDEX column

tty-index field in /proc/$pid/fdinfo/$fd is the data source of
the column. The value is helpful for looking up the conterpart
of /dev/ptmx.

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
20 months agolsfd: utilize /proc/tty/drivers for filling SOURCE column of tty devices
Masatake YAMATO [Wed, 1 Nov 2023 15:05:12 +0000 (00:05 +0900)] 
lsfd: utilize /proc/tty/drivers for filling SOURCE column of tty devices

The original code referenced /proc/devices using major numbers as keys to obtain
the name of the device driver corresponding to a file descriptor.

However, it turnes out that some drivers share a same major number;
there are cases that a key is not unique.

  Character devices:
    1 mem
    4 /dev/vc/0
    4 tty
    4 ttyS
    ...

About tty-related devices, /proc/tty/drivers is better information
source; both major and minor numbers can be used as keys:

  /dev/tty             /dev/tty        5       0 system:/dev/tty
  /dev/console         /dev/console    5       1 system:console
  /dev/ptmx            /dev/ptmx       5       2 system
  /dev/vc/0            /dev/vc/0       4       0 system:vtmaster
  usbserial            /dev/ttyUSB   188 0-511 serial
  dbc_serial           /dev/ttyDBC   242 0-63 serial
  serial               /dev/ttyS       4 64-95 serial
  pty_slave            /dev/pts      136 0-1048575 pty:slave
  pty_master           /dev/ptm      128 0-1048575 pty:master
  unknown              /dev/tty        4 1-63 console

This commit extracts the second column of the /proc/tty/drivers as
driver names after removing "/dev": tty, console, ptmx, ...

With the orinal code:

  # lsfd -n -p 1789 -Q '(FD == 25)'
  systemd-logind  1789 root    25  rw-  CHR /dev/vc/0:6   432    25 /dev/tty6
--------------------------------------------^^^^^^^^^^^
With this commit:

  # ./lsfd -n -p 1789 -Q '(FD == 25)'
  systemd-logind  1789 root    25  rw---- CHR tty:6 432 25 /dev/tty6
----------------------------------------------^^^^^

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
21 months agomeson: install wall executable with group 'tty'
Christian Hesse [Thu, 2 Nov 2023 10:37:33 +0000 (11:37 +0100)] 
meson: install wall executable with group 'tty'

... for proper permissions.

21 months agomeson: install write executable with group 'tty'
Christian Hesse [Tue, 31 Oct 2023 07:38:15 +0000 (08:38 +0100)] 
meson: install write executable with group 'tty'

... to fix:

write: effective gid does not match group of /dev/pts/3

21 months agoMerge branch 'PR/losetup-lost' of github.com:karelzak/util-linux-work
Karel Zak [Thu, 2 Nov 2023 10:34:39 +0000 (11:34 +0100)] 
Merge branch 'PR/losetup-lost' of github.com:karelzak/util-linux-work

* 'PR/losetup-lost' of github.com:karelzak/util-linux-work:
  loopdev: report lost loop devices

21 months agoMerge branch 'libblkid/enum' of https://github.com/t-8ch/util-linux
Karel Zak [Thu, 2 Nov 2023 10:34:20 +0000 (11:34 +0100)] 
Merge branch 'libblkid/enum' of https://github.com/t-8ch/util-linux

* 'libblkid/enum' of https://github.com/t-8ch/util-linux:
  libblkid: make enum libblkid_endianness lowercase

21 months agolibmount: improve mnt_table_next_child_fs()
Karel Zak [Thu, 2 Nov 2023 09:41:03 +0000 (10:41 +0100)] 
libmount: improve mnt_table_next_child_fs()

The function utilizes the struct libmnt_itr to iterate through the mountinfo file
but neglects the direction specified by the iterator. This a bug. The application
must manage the direction, as, for instance, umount(8) requires the children of
the mountpoint in reverse order.

Fixes: https://github.com/util-linux/util-linux/issues/2552
Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agodocs: add SPDX to boilerplate.c
Karel Zak [Wed, 1 Nov 2023 13:58:57 +0000 (14:58 +0100)] 
docs: add SPDX to boilerplate.c

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agodisk-utils: add SPDX and Copyright notices
Karel Zak [Wed, 1 Nov 2023 13:47:41 +0000 (14:47 +0100)] 
disk-utils: add SPDX and Copyright notices

Explicitly state the license (usually GPL-2.0-or-later; our default)
and include copyright statements in all files to prevent false positive
reports from license analysis tools. Add also add SPDX-License-Identifier
tag to all files.

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agoinclude/audit-arch: add missing SPDX
Karel Zak [Wed, 1 Nov 2023 12:56:01 +0000 (13:56 +0100)] 
include/audit-arch: add missing SPDX

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agosetterm: avoid restoring flags from uninitialized memory
Chris Hofstaedtler [Tue, 31 Oct 2023 13:52:26 +0000 (14:52 +0100)] 
setterm: avoid restoring flags from uninitialized memory

Depending on the used compiler and flags, previously either F_SETFL was called
with 0 or with a random value. Never with the intended previous flags.

[kzak@redhat.com: - tiny coding style change]

Signed-off-by: Chris Hofstaedtler <zeha@debian.org>
Tested-by: Emanuele Rocca <ema@debian.org>
Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agoloopdev: report lost loop devices
Junxiao Bi [Wed, 25 Oct 2023 20:36:03 +0000 (13:36 -0700)] 
loopdev: report lost loop devices

If a /dev/loopX is lost because someone might have removed it by mistake,
future losetup operations on that loop device will fail and losetup
--all and --list will not report the devices (although kernel still
uses it).

Since /sysfs still have the loop device intact, detect that and report it.

Changes:

* --list and --all add "(lost)" after device node path

  # losetup
  NAME              SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE    DIO LOG-SEC
  /dev/loop0 (lost)         0      0         0  0 /root/l0.img   0     512

  # losetup -a
  /dev/loop0 (lost): []: (/root/l0.img)

* use /sys to get devno rather than stat()

* report warning after failed operation

  # losetup -d /dev/loop0
  losetup: /dev/loop0: detach failed: No such file or directory
  losetup: device node /dev/loop0 (7:0) is lost. You may use mknod(1) to recover it.

* fix copy & past bugs in some API comments

Co-Author: Karel Zak <kzak@redhat.com>
Signed-off-by: Junxiao Bi <junxiao.bi@oracle.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolsfd: make the order of calling finalize_* and initialize_* consistent
Masatake YAMATO [Tue, 31 Oct 2023 23:18:11 +0000 (08:18 +0900)] 
lsfd: make the order of calling finalize_* and initialize_* consistent

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
21 months agolibblkid: make enum libblkid_endianness lowercase
Thomas Weißschuh [Tue, 31 Oct 2023 19:55:14 +0000 (20:55 +0100)] 
libblkid: make enum libblkid_endianness lowercase

As discussed in #2548

Signed-off-by: Thomas Weißschuh <thomas@t-8ch.de>
21 months agoMerge branch 'refine-the-choice-of-stream-related-functions-in-usage' of https:/...
Karel Zak [Wed, 25 Oct 2023 09:37:21 +0000 (11:37 +0200)] 
Merge branch 'refine-the-choice-of-stream-related-functions-in-usage' of https://github.com/masatake/util-linux

* 'refine-the-choice-of-stream-related-functions-in-usage' of https://github.com/masatake/util-linux:
  Make the ways of using output stream consistent in usage()
  Use fputs instead of fprintf if possible

21 months agoMerge branch 'umount/recursive-bind' of https://github.com/t-8ch/util-linux
Karel Zak [Wed, 25 Oct 2023 09:34:43 +0000 (11:34 +0200)] 
Merge branch 'umount/recursive-bind' of https://github.com/t-8ch/util-linux

* 'umount/recursive-bind' of https://github.com/t-8ch/util-linux:
  umount: handle bindmounts during --recursive
  mount: (tests) don't create /dev/nul

21 months agotests: fix memory leak in scols fromfile
Karel Zak [Tue, 24 Oct 2023 18:13:29 +0000 (20:13 +0200)] 
tests: fix memory leak in scols fromfile

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agoMake the ways of using output stream consistent in usage()
Masatake YAMATO [Tue, 24 Oct 2023 17:21:45 +0000 (02:21 +0900)] 
Make the ways of using output stream consistent in usage()

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
21 months agoUse fputs instead of fprintf if possible
Masatake YAMATO [Tue, 24 Oct 2023 16:41:58 +0000 (01:41 +0900)] 
Use fputs instead of fprintf if possible

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
21 months agolibsmartcols: fix uninitialized local variable in sample
Karel Zak [Mon, 23 Oct 2023 13:20:47 +0000 (15:20 +0200)] 
libsmartcols: fix uninitialized local variable in sample

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: add wrap-zero test
Karel Zak [Mon, 23 Oct 2023 12:47:35 +0000 (14:47 +0200)] 
libsmartcols: add wrap-zero test

* modify samples/fromfile.c to use scols_wrapzero_nextchunk() callback
  if "wrapzero" specified for the test colum
* add col-wrapzero and data-string-zero to define the column and zero
  separated data

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: support \x?? for data by samples/fromfile.c
Karel Zak [Mon, 23 Oct 2023 12:35:21 +0000 (14:35 +0200)] 
libsmartcols: support \x?? for data by samples/fromfile.c

The test (sample) binary already supports \n in strings to covert it
to the real line-break. It seem more generic to use \x?? (hex) to
support arbitrary byte in the column data.

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: add new functions to API docs
Karel Zak [Mon, 23 Oct 2023 11:37:51 +0000 (13:37 +0200)] 
libsmartcols: add new functions to API docs

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agofindmnt: use zero to separate lines in multi-line cells
Karel Zak [Thu, 19 Oct 2023 11:42:08 +0000 (13:42 +0200)] 
findmnt: use zero to separate lines in multi-line cells

Fixes: https://github.com/util-linux/util-linux/issues/2533
Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: improve cell data preparation for non-wrapping cases
Karel Zak [Mon, 23 Oct 2023 19:33:38 +0000 (21:33 +0200)] 
libsmartcols: improve cell data preparation for non-wrapping cases

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: add --{export,raw,json} to wrap sample
Karel Zak [Thu, 19 Oct 2023 10:42:35 +0000 (12:42 +0200)] 
libsmartcols: add --{export,raw,json} to wrap sample

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: make calculation more robust
Karel Zak [Thu, 19 Oct 2023 09:23:20 +0000 (11:23 +0200)] 
libsmartcols: make calculation more robust

* add debug messages
* make columns stat debug more compact
* default to zero if data undefined
* fix "extreme" column enlarging

Signed-off-by: Karel Zak <kzak@redhat.com>
21 months agolibsmartcols: reset cell wrapping if all done
Karel Zak [Thu, 19 Oct 2023 08:48:59 +0000 (10:48 +0200)] 
libsmartcols: reset cell wrapping if all done

Signed-off-by: Karel Zak <kzak@redhat.com>