]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
Merge branch 'fix-use-https' of https://github.com/mbroz/util-linux
authorKarel Zak <kzak@redhat.com>
Mon, 7 Nov 2022 11:24:43 +0000 (12:24 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 7 Nov 2022 11:24:43 +0000 (12:24 +0100)
* 'fix-use-https' of https://github.com/mbroz/util-linux:
  Use https for project-related documentation.

39 files changed:
libblkid/meson.build
libblkid/src/partitions/partitions.c
libblkid/src/partitions/partitions.h
libblkid/src/superblocks/befs.c
libblkid/src/superblocks/cramfs.c
libblkid/src/superblocks/ext.c
libblkid/src/superblocks/jfs.c
libblkid/src/superblocks/minix.c
libblkid/src/superblocks/romfs.c
libblkid/src/superblocks/squashfs.c
libblkid/src/superblocks/superblocks.c
libblkid/src/superblocks/superblocks.h
libblkid/src/superblocks/ufs.c
libblkid/src/superblocks/zfs.c
libfdisk/meson.build
libmount/meson.build
libsmartcols/meson.build
libsmartcols/src/calculate.c
meson.build
misc-utils/kill.1.adoc
misc-utils/kill.c
misc-utils/logger.c
misc-utils/lsfd-sock-xinfo.c
sys-utils/lscpu.c
term-utils/agetty.c
tests/expected/blkid/low-probe-befs
tests/expected/blkid/low-probe-cramfs
tests/expected/blkid/low-probe-cramfs-big
tests/expected/blkid/low-probe-ext4 [new file with mode: 0644]
tests/expected/blkid/low-probe-minix-BE
tests/expected/blkid/low-probe-minix-LE
tests/expected/blkid/low-probe-romfs
tests/expected/blkid/low-probe-squashfs3 [new file with mode: 0644]
tests/expected/blkid/low-probe-squashfs4 [new file with mode: 0644]
tests/expected/blkid/low-probe-ufs
tests/expected/blkid/low-probe-zfs
tests/ts/blkid/images-fs/ext4.img.xz [new file with mode: 0644]
tests/ts/blkid/images-fs/squashfs3.img.xz [new file with mode: 0755]
tests/ts/blkid/images-fs/squashfs4.img.xz [new file with mode: 0644]

index 6e9d28208d5e416b6dc3899964ea4f462c61df75..01572af75a1220f47f3799dddc88aa786113d1f0 100644 (file)
@@ -4,7 +4,7 @@ defs = configuration_data()
 defs.set('LIBBLKID_DATE', libblkid_date)
 defs.set('LIBBLKID_VERSION', pc_version)
 
-blkid_h = configure_file(
+configure_file(
   input : 'src/blkid.h.in',
   output : 'blkid.h',
   configuration : defs,
index a34a446dc681c5fba4fe9579991709607330dce4..ae63a38ccad18d3861b668006dd52625a6b9e0b3 100644 (file)
@@ -1144,7 +1144,7 @@ int blkid_partitions_set_ptuuid(blkid_probe pr, unsigned char *uuid)
 
 /* set PTUUID variable for non-binary API for tables where
  * the ID is just a string */
-int blkid_partitions_strcpy_ptuuid(blkid_probe pr, char *str)
+int blkid_partitions_strcpy_ptuuid(blkid_probe pr, const char *str)
 {
        struct blkid_chain *chn = blkid_probe_get_chain(pr);
 
index 4a718f4eaa42a5183feac84d559d8c8aedb0121e..784e0c0e3349edd449b32bc2fbb3d619fe52ccd8 100644 (file)
@@ -28,7 +28,7 @@ extern int blkid_partitions_do_subprobe(blkid_probe pr,
 
 extern int blkid_partitions_need_typeonly(blkid_probe pr);
 extern int blkid_partitions_set_ptuuid(blkid_probe pr, unsigned char *uuid);
-extern int blkid_partitions_strcpy_ptuuid(blkid_probe pr, char *str);
+extern int blkid_partitions_strcpy_ptuuid(blkid_probe pr, const char *str);
 
 
 extern int blkid_is_nested_dimension(blkid_partition par,
index 1ba0e10ae26f45906d42f76593ea175c2e0827c8..8de697ddc0031e89d5d93e531120a7c7623097f4 100644 (file)
@@ -523,6 +523,8 @@ static int probe_befs(blkid_probe pr, const struct blkid_idmag *mag)
 
        blkid_probe_set_fsblocksize(pr, block_size);
        blkid_probe_set_block_size(pr, block_size);
+       blkid_probe_set_fsendianness(pr,
+                       fs_le ? BLKID_ENDIANNESS_LITTLE : BLKID_ENDIANNESS_BIG);
 
        return BLKID_PROBE_OK;
 }
index 39e12c1a76cc34c3072878f99188355174a67386..2a87acdaa1a95950e7aa25e706416064c064ce9e 100644 (file)
@@ -91,6 +91,8 @@ static int probe_cramfs(blkid_probe pr, const struct blkid_idmag *mag)
        blkid_probe_set_label(pr, cs->name, sizeof(cs->name));
        blkid_probe_set_fssize(pr, cfs32_to_cpu(le, cs->size));
        blkid_probe_sprintf_version(pr, "%d", v2 ? 2 : 1);
+       blkid_probe_set_fsendianness(pr,
+                       le ? BLKID_ENDIANNESS_LITTLE : BLKID_ENDIANNESS_BIG);
        return 0;
 }
 
index 1c799429e5cf41b32fc39fd271f6f06ab2a3160d..885fec270a7cb02180a9bbca5a5fdaf3cc40bfdc 100644 (file)
@@ -19,6 +19,7 @@
 #include <time.h>
 
 #include "superblocks.h"
+#include "crc32c.h"
 
 struct ext2_super_block {
        uint32_t                s_inodes_count;
@@ -74,7 +75,8 @@ struct ext2_super_block {
        uint16_t                s_mmp_interval;
        uint64_t                s_mmp_block;
        uint32_t                s_raid_stripe_width;
-       uint32_t                s_reserved[163];
+       uint32_t                s_reserved[162];
+       uint32_t                s_checksum;
 } __attribute__((packed));
 
 /* magic string */
@@ -102,6 +104,7 @@ struct ext2_super_block {
 #define EXT4_FEATURE_RO_COMPAT_GDT_CSUM                0x0010
 #define EXT4_FEATURE_RO_COMPAT_DIR_NLINK       0x0020
 #define EXT4_FEATURE_RO_COMPAT_EXTRA_ISIZE     0x0040
+#define EXT4_FEATURE_RO_COMPAT_METADATA_CSUM   0x0400
 
 /* for s_feature_incompat */
 #define EXT2_FEATURE_INCOMPAT_FILETYPE         0x0002
@@ -148,9 +151,14 @@ static struct ext2_super_block *ext_get_super(
        struct ext2_super_block *es;
 
        es = (struct ext2_super_block *)
-                       blkid_probe_get_buffer(pr, EXT_SB_OFF, 0x200);
+                       blkid_probe_get_buffer(pr, EXT_SB_OFF, sizeof(struct ext2_super_block));
        if (!es)
                return NULL;
+       if (le32_to_cpu(es->s_feature_ro_compat) & EXT4_FEATURE_RO_COMPAT_METADATA_CSUM) {
+               uint32_t csum = crc32c(~0, es, offsetof(struct ext2_super_block, s_checksum));
+               if (!blkid_probe_verify_csum(pr, csum, le32_to_cpu(es->s_checksum)))
+                       return NULL;
+       }
        if (fc)
                *fc = le32_to_cpu(es->s_feature_compat);
        if (fi)
index e22467246cdc6a47e7134b84c222031663cfe86b..1b545c7d5077bae892fff1b7df542535df033314 100644 (file)
@@ -41,6 +41,8 @@ static int probe_jfs(blkid_probe pr, const struct blkid_idmag *mag)
        js = blkid_probe_get_sb(pr, mag, struct jfs_super_block);
        if (!js)
                return errno ? -errno : 1;
+       if (le16_to_cpu(js->js_l2bsize) > 32 || le16_to_cpu(js->js_l2pbsize) > 32)
+               return 1;
        if (le32_to_cpu(js->js_bsize) != (1U << le16_to_cpu(js->js_l2bsize)))
                return 1;
        if (le32_to_cpu(js->js_pbsize) != (1U << le16_to_cpu(js->js_l2pbsize)))
index 8447814f45963faba826f1c8dcf60c0b8a27c366..c68ade9c9309d8acdb9a91e2e764066d795337a0 100644 (file)
@@ -150,6 +150,8 @@ static int probe_minix(blkid_probe pr,
        blkid_probe_sprintf_version(pr, "%d", version);
        blkid_probe_set_fsblocksize(pr, block_size);
        blkid_probe_set_block_size(pr, block_size);
+       blkid_probe_set_fsendianness(pr, !swabme ?
+                       BLKID_ENDIANNESS_NATIVE : BLKID_ENDIANNESS_OTHER);
        return 0;
 }
 
index 8db88775be829b267fbf751d29716da4eec27db6..456cbfb7d619c7eda8ff7c90237640743a9748fe 100644 (file)
 
 struct romfs_super_block {
        unsigned char   ros_magic[8];
-       uint32_t        ros_dummy1[2];
+       uint32_t        ros_full_size;
+       uint32_t        ros_checksum;
        unsigned char   ros_volume[16];
 } __attribute__((packed));
 
+static int romfs_verify_csum(blkid_probe pr, const struct blkid_idmag *mag,
+               const struct romfs_super_block *ros)
+{
+       uint32_t csummed_size = min((uint32_t) 512,
+                       be32_to_cpu(ros->ros_full_size));
+       unsigned char *csummed;
+       uint32_t csum;
+
+       if (csummed_size % sizeof(uint32_t) != 0)
+               return 0;
+
+       csummed = blkid_probe_get_sb_buffer(pr, mag, csummed_size);
+       if (!csummed)
+               return 0;
+
+       csum = 0;
+       while (csummed_size) {
+               csum += be32_to_cpu(*(uint32_t *) csummed);
+               csummed_size -= sizeof(uint32_t);
+               csummed += sizeof(uint32_t);
+       }
+       return blkid_probe_verify_csum(pr, csum, 0);
+}
+
 static int probe_romfs(blkid_probe pr, const struct blkid_idmag *mag)
 {
        struct romfs_super_block *ros;
@@ -31,11 +56,15 @@ static int probe_romfs(blkid_probe pr, const struct blkid_idmag *mag)
        if (!ros)
                return errno ? -errno : 1;
 
+       if (!romfs_verify_csum(pr, mag, ros))
+               return 1;
+
        if (*((char *) ros->ros_volume) != '\0')
                blkid_probe_set_label(pr, ros->ros_volume,
                                sizeof(ros->ros_volume));
 
        blkid_probe_set_fsblocksize(pr, 1024);
+       blkid_probe_set_fssize(pr, be32_to_cpu(ros->ros_full_size));
        blkid_probe_set_block_size(pr, 1024);
 
        return 0;
index d85ff8f1ab0b9b548845c334963f571bc7528185..bd63fbd63cd0c7c1c8e9bf70c6e1ceeb6eb26276 100644 (file)
@@ -53,6 +53,7 @@ static int probe_squashfs3(blkid_probe pr, const struct blkid_idmag *mag)
        struct sqsh_super_block *sq;
        uint16_t vermaj;
        uint16_t vermin;
+       enum BLKID_ENDIANNESS endianness;
 
        sq = blkid_probe_get_sb(pr, mag, struct sqsh_super_block);
        if (!sq)
@@ -61,9 +62,11 @@ static int probe_squashfs3(blkid_probe pr, const struct blkid_idmag *mag)
        if (strcmp(mag->magic, "sqsh") == 0) {
                vermaj = be16_to_cpu(sq->s_major);
                vermin = be16_to_cpu(sq->s_minor);
+               endianness = BLKID_ENDIANNESS_BIG;
        } else {
                vermaj = le16_to_cpu(sq->s_major);
                vermin = le16_to_cpu(sq->s_minor);
+               endianness = BLKID_ENDIANNESS_LITTLE;
        }
 
        if (vermaj > 3)
@@ -73,6 +76,7 @@ static int probe_squashfs3(blkid_probe pr, const struct blkid_idmag *mag)
 
        blkid_probe_set_fsblocksize(pr, 1024);
        blkid_probe_set_block_size(pr, 1024);
+       blkid_probe_set_fsendianness(pr, endianness);
 
        return 0;
 }
index 9f192edbc3e81f1bf5a3587a1a77d3cae57b6a2b..a25ebc90896d4cfed4505ef0fb5caafadfb7c3c2 100644 (file)
@@ -564,18 +564,13 @@ int blkid_probe_sprintf_version(blkid_probe pr, const char *fmt, ...)
 
 int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size)
 {
-       struct blkid_chain *chn = blkid_probe_get_chain(pr);
-
-       if (!(chn->flags & BLKID_SUBLKS_FSINFO))
-               return 0;
-
        return blkid_probe_sprintf_value(pr, "BLOCK_SIZE", "%u", block_size);
 }
 
 static int blkid_probe_set_usage(blkid_probe pr, int usage)
 {
        struct blkid_chain *chn = blkid_probe_get_chain(pr);
-       char *u = NULL;
+       const char *u = NULL;
 
        if (!(chn->flags & BLKID_SUBLKS_USAGE))
                return 0;
@@ -591,7 +586,8 @@ static int blkid_probe_set_usage(blkid_probe pr, int usage)
        else
                u = "unknown";
 
-       return blkid_probe_set_value(pr, "USAGE", (unsigned char *) u, strlen(u) + 1);
+       return blkid_probe_set_value(pr, "USAGE",
+                       (const unsigned char *) u, strlen(u) + 1);
 }
 
 int blkid_probe_set_fssize(blkid_probe pr, uint64_t size)
@@ -626,6 +622,30 @@ int blkid_probe_set_fsblocksize(blkid_probe pr, uint32_t block_size)
                        block_size);
 }
 
+int blkid_probe_set_fsendianness(blkid_probe pr, enum BLKID_ENDIANNESS endianness)
+{
+       struct blkid_chain *chn = blkid_probe_get_chain(pr);
+       const char *value;
+
+       if (!(chn->flags & BLKID_SUBLKS_FSINFO))
+               return 0;
+
+       switch (endianness) {
+               case BLKID_ENDIANNESS_LITTLE:
+                       value = "LITTLE";
+                       break;
+               case BLKID_ENDIANNESS_BIG:
+                       value = "BIG";
+                       break;
+               default:
+                       return -EINVAL;
+       }
+
+       return blkid_probe_set_value(pr, "ENDIANNESS",
+                       (const unsigned char *) value, strlen(value) + 1);
+
+}
+
 int blkid_probe_set_id_label(blkid_probe pr, const char *name,
                             const unsigned char *data, size_t len)
 {
index 8a1b85ddac6acac8e181c3d65955219aafc6fcc6..0d1c461a77b32cb98ecbc8a22af535aa4dd495e0 100644 (file)
@@ -9,6 +9,18 @@
 
 #include "blkidP.h"
 
+enum BLKID_ENDIANNESS {
+       BLKID_ENDIANNESS_LITTLE,
+       BLKID_ENDIANNESS_BIG,
+};
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define BLKID_ENDIANNESS_NATIVE BLKID_ENDIANNESS_LITTLE
+#define BLKID_ENDIANNESS_OTHER BLKID_ENDIANNESS_BIG
+#else
+#define BLKID_ENDIANNESS_NATIVE BLKID_ENDIANNESS_BIG
+#define BLKID_ENDIANNESS_OTHER BLKID_ENDIANNESS_LITTLE
+#endif
+
 extern const struct blkid_idinfo cramfs_idinfo;
 extern const struct blkid_idinfo swap_idinfo;
 extern const struct blkid_idinfo swsuspend_idinfo;
@@ -114,6 +126,7 @@ int blkid_probe_set_block_size(blkid_probe pr, unsigned block_size);
 int blkid_probe_set_fssize(blkid_probe pr, uint64_t size);
 int blkid_probe_set_fslastblock(blkid_probe pr, uint64_t lastblock);
 int blkid_probe_set_fsblocksize(blkid_probe pr, uint32_t block_size);
+int blkid_probe_set_fsendianness(blkid_probe pr, enum BLKID_ENDIANNESS endianness);
 
 extern int blkid_probe_is_bitlocker(blkid_probe pr);
 extern int blkid_probe_is_ntfs(blkid_probe pr);
index 5da87b18f6d16308cce4e0cedd34022311da51e6..0c8d4ed37df690a6f1b9e5f846bd7158bc4ffb2d 100644 (file)
@@ -241,6 +241,8 @@ found:
 
        blkid_probe_set_fsblocksize(pr, bsize);
        blkid_probe_set_block_size(pr, bsize);
+       blkid_probe_set_fsendianness(pr, is_be ?
+                       BLKID_ENDIANNESS_BIG : BLKID_ENDIANNESS_LITTLE);
 
        return 0;
 }
index e7ca78c0d5d28215372e02549e1a3dd692cd9f28..3baf6e1e29e5985409ac8d50e4856ef0433f5b45 100644 (file)
@@ -317,6 +317,9 @@ static int probe_zfs(blkid_probe pr,
                                (unsigned char *) &ub->ub_magic))
                return 1;
 
+       blkid_probe_set_fsendianness(pr, !swab_endian ?
+                       BLKID_ENDIANNESS_NATIVE : BLKID_ENDIANNESS_OTHER);
+
        return 0;
 }
 
index 26c6f95fcc87570461df5b255f8732ab6ea7b89f..eaab9e13895fcf8d4f9dbb95ee5841fb72f80163 100644 (file)
@@ -6,7 +6,7 @@ defs.set('LIBFDISK_MAJOR_VERSION', pc_version.split('.')[0])
 defs.set('LIBFDISK_MINOR_VERSION', pc_version.split('.')[1])
 defs.set('LIBFDISK_PATCH_VERSION', pc_version.split('.')[2])
 
-libfdisk_h = configure_file(
+configure_file(
   input : 'src/libfdisk.h.in',
   output : 'libfdisk.h',
   configuration : defs,
index c66ceb8e28cd96b555e63fd31401f6573bcf8ae9..bb8fe13f6fe780662ccc37ab490ef55ae3e136e9 100644 (file)
@@ -6,7 +6,7 @@ defs.set('LIBMOUNT_MAJOR_VERSION', pc_version.split('.')[0])
 defs.set('LIBMOUNT_MINOR_VERSION', pc_version.split('.')[1])
 defs.set('LIBMOUNT_PATCH_VERSION', pc_version.split('.')[2])
 
-libmount_h = configure_file(
+configure_file(
   input : 'src/libmount.h.in',
   output : 'libmount.h',
   configuration : defs,
index 3692c03ecc9c1b0c6bdd201b471b059fb5c6c0a3..122b1e8a851bc9bc9362510192b8756dda04e728 100644 (file)
@@ -3,7 +3,7 @@ dir_libsmartcols = include_directories('.', 'src')
 defs = configuration_data()
 defs.set('LIBSMARTCOLS_VERSION', pc_version)
 
-libsmartcols_h = configure_file(
+configure_file(
   input : 'src/libsmartcols.h.in',
   output : 'libsmartcols.h',
   configuration : defs,
index 995e87191db3d28477e853049761a4cf83749427..ad0b15d92d5266d70a2bffce69186488a15c6b6d 100644 (file)
@@ -119,7 +119,9 @@ static void count_column_deviation(struct libscols_table *tb, struct libscols_co
                n++;
                sum += ce->width + extra;
        }
-       st->width_avg = sum / n;
+
+       if (n)
+               st->width_avg = sum / n;
 
        /* count deviation */
        if (n > 1) {
index ceb6b60a5e266c30e1d131388ac4c2f92d028282..321b136a89db134b97e45d620f306960c84bbd4a 100644 (file)
@@ -25,8 +25,6 @@ runstatedir = '/run'
 execprefixdir = prefixdir
 usrbin_exec_dir = join_paths(execprefixdir, bindir)
 usrsbin_exec_dir = join_paths(execprefixdir, sbindir)
-sysconfdir = '/etc'
-localstatedir = '/var'
 bash_completion = dependency('bash-completion', required : get_option('build-bash-completion'))
 
 vendordir = get_option('vendordir')
@@ -211,11 +209,6 @@ lib_tinfo = dependency(
   'tinfo',
   required : get_option('tinfo'))
 
-lib_tinfo_static = dependency(
-  'tinfo',
-  static : true,
-  required : need_static_libs ? get_option('tinfo') : disabler())
-
 lib_ncursesw = dependency(
   'ncursesw',
   required : get_option('ncursesw'))
@@ -636,7 +629,7 @@ thread_libs = dependency('threads')
 
 have = cc.has_function('timer_create')
 if not have
-  realtime_libs = cc.find_library('rt', required : true)
+  realtime_libs = [cc.find_library('rt', required : true)]
   have = cc.has_function('timer_create',
                          dependencies : realtime_libs)
   if not have
@@ -777,7 +770,7 @@ bison_gen = generator(
 meson_make_symlink = meson.current_source_dir() + '/tools/meson-make-symlink.sh'
 meson_make_manpage_stub = meson.current_source_dir() + '/tools/meson-make-manpage-stub.sh'
 
-config_h = configure_file(
+configure_file(
   output : 'config.h',
   configuration : conf)
 
@@ -2736,6 +2729,19 @@ if not is_disabler(exe)
   exes += exe
 endif
 
+exe = executable(
+  'fadvise',
+  fadvise_sources,
+  include_directories : includes,
+  link_with : [lib_common],
+  install_dir : usrbin_exec_dir,
+  install : true)
+if not is_disabler(exe)
+  exes += exe
+  manadocs += ['misc-utils/fadvise.1.adoc']
+  bashcompletions += ['fadvise']
+endif
+
 ############################################################
 
 opt = not get_option('build-schedutils').disabled()
index 4a6996a38015dc5945b14989f4ad76c8d4df5786..40ab0248d1e14cdce9c157ddc7c95ccb888ee3c2 100644 (file)
@@ -62,6 +62,8 @@ Similar to *-l*, but it will print signal names and their corresponding numbers.
 Do not restrict the command-name-to-PID conversion to processes with the same UID as the present process.
 *-p*, *--pid*::
 Only print the process ID (PID) of the named processes, do not send any signals.
+*-r*, *--require-handler*::
+Do not send the signal if it is not caught in userspace by the signalled process.
 *--verbose*::
 Print PID(s) that will be signaled with *kill* along with the signal.
 *-q*, *--queue* _value_::
index f557aacaabe0f3ef693b6f4e8cee1404f9e93b21..c469074b95f952cc1feaaca0f675f46a4e10b189 100644 (file)
@@ -95,6 +95,7 @@ struct kill_control {
                check_all:1,
                do_kill:1,
                do_pid:1,
+               require_handler:1,
                use_sigval:1,
 #ifdef UL_HAVE_PIDFD
                timeout:1,
@@ -212,6 +213,7 @@ static void __attribute__((__noreturn__)) usage(void)
        fputs(_(" -p, --pid              print pids without signaling them\n"), out);
        fputs(_(" -l, --list[=<signal>]  list signal names, or convert a signal number to a name\n"), out);
        fputs(_(" -L, --table            list signal names and numbers\n"), out);
+       fputs(_(" -r, --require-handler  do not send signal if signal handler is not present\n"), out);
        fputs(_("     --verbose          print pids that will be signaled\n"), out);
 
        fputs(USAGE_SEPARATOR, out);
@@ -302,6 +304,10 @@ static char **parse_arguments(int argc, char **argv, struct kill_control *ctl)
                        print_all_signals(stdout, 1);
                        exit(EXIT_SUCCESS);
                }
+               if (!strcmp(arg, "-r") || !strcmp(arg, "--require-handler")) {
+                       ctl->require_handler = 1;
+                       continue;
+               }
                if (!strcmp(arg, "-p") || !strcmp(arg, "--pid")) {
                        ctl->do_pid = 1;
                        if (ctl->do_kill)
@@ -448,6 +454,32 @@ static int kill_verbose(const struct kill_control *ctl)
        return rc;
 }
 
+static int check_signal_handler(const struct kill_control *ctl)
+{
+       uintmax_t sigcgt = 0;
+       int rc = 0, has_hnd = 0;
+       struct path_cxt *pc;
+
+       if (!ctl->require_handler)
+               return 1;
+
+       pc = ul_new_procfs_path(ctl->pid, NULL);
+       if (!pc)
+               return -ENOMEM;
+
+       rc = procfs_process_get_stat_nth(pc, 34, &sigcgt);
+       if (rc)
+               return -EINVAL;
+
+       ul_unref_path(pc);
+
+       has_hnd = ((1UL << (ctl->numsig - 1)) & sigcgt) != 0;
+       if (ctl->verbose && !has_hnd)
+               printf(_("not signalling pid %d, it has no userspace handler for signal %d\n"), ctl->pid, ctl->numsig);
+
+       return has_hnd;
+}
+
 int main(int argc, char **argv)
 {
        struct kill_control ctl = { .numsig = SIGTERM };
@@ -470,6 +502,8 @@ int main(int argc, char **argv)
                errno = 0;
                ctl.pid = strtol(ctl.arg, &ep, 10);
                if (errno == 0 && ep && *ep == '\0' && ctl.arg < ep) {
+                       if (check_signal_handler(&ctl) <= 0)
+                               continue;
                        if (kill_verbose(&ctl) != 0)
                                nerrs++;
                        ct++;
@@ -491,6 +525,8 @@ int main(int argc, char **argv)
                                        continue;
                                if (procfs_dirent_get_pid(d, &ctl.pid) != 0)
                                        continue;
+                               if (check_signal_handler(&ctl) <= 0)
+                                       continue;
 
                                if (kill_verbose(&ctl) != 0)
                                        nerrs++;
index bec684f15b7862cdc8f0c7629f5d110569bc82bf..e2b0b41abe853a9e46f3b130033b2f9c9cda1207 100644 (file)
@@ -945,8 +945,6 @@ static void logger_open(struct logger_ctl *ctl)
                ctl->tag = ctl->login = xgetlogin();
        if (!ctl->tag)
                ctl->tag = "<someone>";
-
-       generate_syslog_header(ctl);
 }
 
 /* re-open; usually after failed connection */
@@ -996,10 +994,8 @@ static void logger_stdin(struct logger_ctl *ctl)
 {
        /* note: we re-generate the syslog header for each log message to
         * update header timestamps and to reflect possible priority changes.
-        * The initial header is generated by logger_open().
         */
        int default_priority = ctl->pri;
-       int last_pri = default_priority;
        char *buf = xmalloc(ctl->max_message_size + 2 + 2);
        int pri;
        int c;
@@ -1026,10 +1022,6 @@ static void logger_stdin(struct logger_ctl *ctl)
                        } else
                                ctl->pri = default_priority;
 
-                       if (ctl->pri != last_pri) {
-                               generate_syslog_header(ctl);
-                               last_pri = ctl->pri;
-                       }
                        if (c != EOF && c != '\n')
                                c = getchar();
                }
@@ -1040,8 +1032,10 @@ static void logger_stdin(struct logger_ctl *ctl)
                }
                buf[i] = '\0';
 
-               if (i > 0 || !ctl->skip_empty_lines)
+               if (i > 0 || !ctl->skip_empty_lines) {
+                       generate_syslog_header(ctl);
                        write_output(ctl, buf);
+               }
 
                if (c == '\n')  /* discard line terminator */
                        c = getchar();
@@ -1317,12 +1311,14 @@ int main(int argc, char **argv)
                abort();
        }
        logger_open(&ctl);
-       if (0 < argc)
+       if (0 < argc) {
+               generate_syslog_header(&ctl);
                logger_command_line(&ctl, argv);
-       else
+       else
                /* Note. --file <arg> reopens stdin making the below
                 * function to be used for file inputs. */
                logger_stdin(&ctl);
+
        logger_close(&ctl);
        return EXIT_SUCCESS;
 }
index 1ef2f40b7c0668548621c44885c80a4350843cff..5ee8ee933a2f2843042dc042749e946bfd83d666 100644 (file)
@@ -596,9 +596,22 @@ static struct sock_xinfo_class tcp_xinfo_class = {
        .free = NULL,
 };
 
+static bool L3_verify_initial_line(const char *line)
+{
+       /* At least we expect two white spaces. */
+       if (strncmp (line, "  ", 2) != 0)
+               return false;
+       line += 2;
+
+       /* Skip white spaces. */
+       while (*line == ' ')
+               line++;
+
+       return (strncmp(line, "sl", 2) == 0);
+}
+
 #define TCP_LINE_LEN 256
 static void load_xinfo_from_proc_inet_L3(ino_t netns_inode, const char *proc_file,
-                                        bool (*verify_initial_line)(const char *),
                                         struct sock_xinfo_class *class)
 {
        char line[TCP_LINE_LEN];
@@ -610,7 +623,7 @@ static void load_xinfo_from_proc_inet_L3(ino_t netns_inode, const char *proc_fil
 
        if (fgets(line, sizeof(line), tcp_fp) == NULL)
                goto out;
-       if (!verify_initial_line(line))
+       if (!L3_verify_initial_line(line))
                /* Unexpected line */
                goto out;
 
@@ -652,16 +665,10 @@ static void load_xinfo_from_proc_inet_L3(ino_t netns_inode, const char *proc_fil
        fclose(tcp_fp);
 }
 
-static bool tcp_verify_initial_line(const char *line)
-{
-       return (line[0] == ' ' && line[1] == ' '
-               && line[2] == 's' && line[3] == 'l');
-}
-
 static void load_xinfo_from_proc_tcp(ino_t netns_inode)
 {
        load_xinfo_from_proc_inet_L3(netns_inode,
-                                    "/proc/net/tcp", tcp_verify_initial_line,
+                                    "/proc/net/tcp",
                                     &tcp_xinfo_class);
 }
 
@@ -711,17 +718,9 @@ static struct sock_xinfo_class udp_xinfo_class = {
        .free = NULL,
 };
 
-static bool udp_verify_initial_line(const char *line)
-{
-       return (line[0] == ' ' && line[1] == ' ' && line[2] == ' '
-               && line[3] == 's' && line[4] == 'l');
-}
-
-
 static void load_xinfo_from_proc_udp(ino_t netns_inode)
 {
        load_xinfo_from_proc_inet_L3(netns_inode,
                                     "/proc/net/udp",
-                                    udp_verify_initial_line,
                                     &udp_xinfo_class);
 }
index f6135158737dc658455ad8122751c4d1be914f40..85ef5abcbbaaa3e6e8c1407655cc25cacb36f4e9 100644 (file)
@@ -949,7 +949,7 @@ static void print_summary(struct lscpu_cxt *cxt)
        char field[256];
        size_t i = 0;
        struct libscols_table *tb;
-       struct libscols_line *sec = NULL;
+       struct libscols_line *sec;
        int hdr_caches = 0;
 
        scols_init_debug(0);
@@ -981,9 +981,8 @@ static void print_summary(struct lscpu_cxt *cxt)
        ct = lscpu_cputype_get_default(cxt);
 
        /* Section: architecture */
-       if (cxt->arch)
-               sec = add_summary_s(tb, NULL, _("Architecture:"), cxt->arch->name);
-       if (cxt->arch && (cxt->arch->bit32 || cxt->arch->bit64)) {
+       sec = add_summary_s(tb, NULL, _("Architecture:"), cxt->arch->name);
+       if (cxt->arch->bit32 || cxt->arch->bit64) {
                char buf[32], *p = buf;
 
                if (cxt->arch->bit32) {
index 31a0c52e14df8f43e54f26d0f611df231e8b6849..f7a88a3093f4a81122212a4b29524ba244459351 100644 (file)
@@ -558,8 +558,7 @@ int main(int argc, char **argv)
                if (username) {
                        if (options.autolog)
                                login_argv[login_argc++] = "-f";
-                       else
-                               login_argv[login_argc++] = "--";
+                       login_argv[login_argc++] = "--";
                        login_argv[login_argc++] = username;
                }
        }
index 738114769fd0e6ac9c182a4a0f217020064f6b6c..a793b4a886fe7b0ad931e147ce32b83df4f3e630 100644 (file)
@@ -1,4 +1,5 @@
 ID_FS_BLOCK_SIZE=1024
+ID_FS_ENDIANNESS=LITTLE
 ID_FS_FSBLOCKSIZE=1024
 ID_FS_LABEL=befs_test
 ID_FS_LABEL_ENC=befs_test
index ccab3d75ef1e68a0371012c9cc029505325516db..cf9c15237b69472a2166ab2ad2085b90f9100391 100644 (file)
@@ -1,3 +1,4 @@
+ID_FS_ENDIANNESS=LITTLE
 ID_FS_FSSIZE=4096
 ID_FS_LABEL=test-cram
 ID_FS_LABEL_ENC=test-cram
index f5f378fea99634b1fd2d05b87d441e25940f2fec..46d1295692ad9a89d70b02aeb8db91ac39719dae 100644 (file)
@@ -1,3 +1,4 @@
+ID_FS_ENDIANNESS=BIG
 ID_FS_FSSIZE=4096
 ID_FS_LABEL=Compressed
 ID_FS_LABEL_ENC=Compressed
diff --git a/tests/expected/blkid/low-probe-ext4 b/tests/expected/blkid/low-probe-ext4
new file mode 100644 (file)
index 0000000..95e6a6d
--- /dev/null
@@ -0,0 +1,11 @@
+ID_FS_BLOCK_SIZE=1024
+ID_FS_FSBLOCKSIZE=1024
+ID_FS_FSLASTBLOCK=65536
+ID_FS_FSSIZE=67108864
+ID_FS_LABEL=test-ext4
+ID_FS_LABEL_ENC=test-ext4
+ID_FS_TYPE=ext4
+ID_FS_USAGE=filesystem
+ID_FS_UUID=ada110f6-bd6d-49db-955d-342c27627b61
+ID_FS_UUID_ENC=ada110f6-bd6d-49db-955d-342c27627b61
+ID_FS_VERSION=1.0
index c6da3c195f0c4c74e3d5c97e7fca025868be24ea..de0ad8d13c18b370946f68a4dfd28172f1268685 100644 (file)
@@ -1,4 +1,5 @@
 ID_FS_BLOCK_SIZE=1024
+ID_FS_ENDIANNESS=BIG
 ID_FS_FSBLOCKSIZE=1024
 ID_FS_TYPE=minix
 ID_FS_USAGE=filesystem
index c6da3c195f0c4c74e3d5c97e7fca025868be24ea..bcfbf3f844538217bcb65eb2c7731b55ded4e6e3 100644 (file)
@@ -1,4 +1,5 @@
 ID_FS_BLOCK_SIZE=1024
+ID_FS_ENDIANNESS=LITTLE
 ID_FS_FSBLOCKSIZE=1024
 ID_FS_TYPE=minix
 ID_FS_USAGE=filesystem
index 2c606ecc15574a60384e56830464a381a8e8ea82..db9bb1df28bc7e4b4290d9d3fd9f6d3015a89220 100644 (file)
@@ -1,5 +1,6 @@
 ID_FS_BLOCK_SIZE=1024
 ID_FS_FSBLOCKSIZE=1024
+ID_FS_FSSIZE=96
 ID_FS_LABEL=test-romfs
 ID_FS_LABEL_ENC=test-romfs
 ID_FS_TYPE=romfs
diff --git a/tests/expected/blkid/low-probe-squashfs3 b/tests/expected/blkid/low-probe-squashfs3
new file mode 100644 (file)
index 0000000..d4be7c7
--- /dev/null
@@ -0,0 +1,6 @@
+ID_FS_BLOCK_SIZE=1024
+ID_FS_ENDIANNESS=LITTLE
+ID_FS_FSBLOCKSIZE=1024
+ID_FS_TYPE=squashfs3
+ID_FS_USAGE=filesystem
+ID_FS_VERSION=3.1
diff --git a/tests/expected/blkid/low-probe-squashfs4 b/tests/expected/blkid/low-probe-squashfs4
new file mode 100644 (file)
index 0000000..e1b9717
--- /dev/null
@@ -0,0 +1,3 @@
+ID_FS_TYPE=squashfs
+ID_FS_USAGE=filesystem
+ID_FS_VERSION=4.0
index d771bc8d5744774e7660c04d95eacf8f06058ca7..32e2234365bf61cf23f7c78e373d38e26652dc70 100644 (file)
@@ -1,4 +1,5 @@
 ID_FS_BLOCK_SIZE=2048
+ID_FS_ENDIANNESS=LITTLE
 ID_FS_FSBLOCKSIZE=2048
 ID_FS_TYPE=ufs
 ID_FS_USAGE=filesystem
index f7e481b545a210fe2673a72d54830664ce66e942..b20561814ecbd8e72e7add3df2f4a52a120bd5f4 100644 (file)
@@ -1,4 +1,5 @@
 ID_FS_BLOCK_SIZE=512
+ID_FS_ENDIANNESS=LITTLE
 ID_FS_FSBLOCKSIZE=512
 ID_FS_LABEL=tank
 ID_FS_LABEL_ENC=tank
diff --git a/tests/ts/blkid/images-fs/ext4.img.xz b/tests/ts/blkid/images-fs/ext4.img.xz
new file mode 100644 (file)
index 0000000..7dbfd70
Binary files /dev/null and b/tests/ts/blkid/images-fs/ext4.img.xz differ
diff --git a/tests/ts/blkid/images-fs/squashfs3.img.xz b/tests/ts/blkid/images-fs/squashfs3.img.xz
new file mode 100755 (executable)
index 0000000..8b2e15d
Binary files /dev/null and b/tests/ts/blkid/images-fs/squashfs3.img.xz differ
diff --git a/tests/ts/blkid/images-fs/squashfs4.img.xz b/tests/ts/blkid/images-fs/squashfs4.img.xz
new file mode 100644 (file)
index 0000000..81f0785
Binary files /dev/null and b/tests/ts/blkid/images-fs/squashfs4.img.xz differ