Util-Linux package development
 help / color / mirror / Atom feed
* Re: [patches] small fixes to some messages and man pages, and some questions
From: Karel Zak @ 2011-08-15 13:34 UTC (permalink / raw)
  To: Benno Schulenberg; +Cc: Util-Linux
In-Reply-To: <1313094127.6807.140258128661629@webmail.messagingengine.com>

> About the fourth patch I'm unsure.  The current description of the option
> '--no-reread' is "skip partition re-read at boot".  With "boot" is meant
> "program startup", so that needs to be corrected.  But the real effect of
> --no-reread seems to be to just check that the relevant partition is not
> in use.  Is that correct?

 Yes.

> By the way, I don't understand why the options -g (--show-geometry) and
> -G (show-pt-geometry) are listed under "Dangerous options".  How can
> they be dangerous when they just show things?

 Hmm.. not sure.

> Also I do not understand the descriptions of the new options --nested,
> --chained, and --onesector.  How is "disjoint" different from "mutually
> disjoint"?  Would the following attempts at description be correct?
>
> --nested     each logical and extended partition falls within an extended one
> --chained     each logical partition falls within an extended one
> --onesector   not any partition falls within another

The original comment from code:

/* There are two common ways to structure extended partitions:
   as nested boxes, and as a chain. Sometimes the partitions
   must be given in order. Sometimes all logical partitions
   must lie inside the outermost extended partition.
NESTED: every partition is contained in the surrounding partitions
   and is disjoint from all others.
CHAINED: every data partition is contained in the surrounding partitions
   and disjoint from all others, but extended partitions may lie outside
   (insofar as allowed by all_logicals_inside_outermost_extended).
ONESECTOR: all data partitions are mutually disjoint; extended partitions
   each use one sector only (except perhaps for the outermost one).
*/

The default is NESTED and "inside the outermost extended partition".

> The fourteenth patch adds the missing "[options]" to the usage synopsis
> of scriptreplay, and also indicates the timingfile argument as optional.
> However, I find this a bit misleading: the timingfile is only optional when
> it is specified via the -t option.  Wouldn't it be better to describe the
> command with two alternative synopses, as follows?
> 
>   Usage: scriptreplay timingfile [typescript [divisor]]
>      or: scriptreplay [options] [timingfile] [typescript] [divisor]

   scriptreplay [options] [-t] timingfile [typescript [divisor]]

 ?

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] partx: do not print null
From: Karel Zak @ 2011-08-15 12:36 UTC (permalink / raw)
  To: Davidlohr Bueso; +Cc: util-linux
In-Reply-To: <1313177911.3305.10.camel@offbook>

On Fri, Aug 12, 2011 at 03:38:31PM -0400, Davidlohr Bueso wrote:
>  partx/partx.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)

 Applied, thanks. 

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] grammar fixes
From: Karel Zak @ 2011-08-15 12:36 UTC (permalink / raw)
  To: Davidlohr Bueso; +Cc: util-linux
In-Reply-To: <1313172465.3305.4.camel@offbook>

On Fri, Aug 12, 2011 at 02:07:45PM -0400, Davidlohr Bueso wrote:
>  libmount/src/context_umount.c  |    4 ++--
>  tests/ts/hwclock/systohc       |    2 +-
>  tests/ts/libmount/context      |   10 +++++-----
>  tests/ts/libmount/context-utab |    8 ++++----
>  tests/ts/mount/devname         |    6 +++---
>  5 files changed, 15 insertions(+), 15 deletions(-)

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] hexdump: fix segfault due to uninitialized memory
From: Karel Zak @ 2011-08-15 12:36 UTC (permalink / raw)
  To: util-linux
In-Reply-To: <20110810133227.GA14002@foxbat.suse.cz>

On Wed, Aug 10, 2011 at 03:32:28PM +0200, Petr Uzel wrote:
>  text-utils/display.c |    4 ++--
>  text-utils/parse.c   |    6 +++---
>  2 files changed, 5 insertions(+), 5 deletions(-)

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] dmesg: avoid mess at the end of dmesg output
From: Karel Zak @ 2011-08-15 12:35 UTC (permalink / raw)
  To: util-linux
In-Reply-To: <20110810121639.GA19672@foxbat.suse.cz>

On Wed, Aug 10, 2011 at 02:16:40PM +0200, Petr Uzel wrote:
>  sys-utils/dmesg.c |    2 ++
>  1 files changed, 2 insertions(+), 0 deletions(-)

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] logger.1: use simple apostrophe instead of multibyte char
From: Karel Zak @ 2011-08-15 12:35 UTC (permalink / raw)
  To: util-linux
In-Reply-To: <20110810114604.GA31717@foxbat.suse.cz>

On Wed, Aug 10, 2011 at 01:46:06PM +0200, Petr Uzel wrote:
>  misc-utils/logger.1 |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] befs.c: validate di_br_size !=0 and br_per_di_br != 0
From: Karel Zak @ 2011-08-15 12:34 UTC (permalink / raw)
  To: Timo Warns; +Cc: util-linux
In-Reply-To: <20110809074046.GA4237@vermeer.pre-sense.de>

On Tue, Aug 09, 2011 at 09:40:47AM +0200, Timo Warns wrote:
> diff -u util-linux-2.20-rc1-a/libblkid/src/superblocks/befs.c util-linux-2.20-rc1-b/libblkid/src/superblocks/befs.c
> --- util-linux-2.20-rc1-a/libblkid/src/superblocks/befs.c	2011-07-20 21:55:23.000000000 +0200
> +++ util-linux-2.20-rc1-b/libblkid/src/superblocks/befs.c	2011-08-09 09:32:56.000000000 +0200

 Applied, thanks.

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [PATCH] partx: support loop devices
From: Karel Zak @ 2011-08-15 11:58 UTC (permalink / raw)
  To: Davidlohr Bueso; +Cc: util-linux
In-Reply-To: <1313381477.2509.1.camel@offbook>

On Mon, Aug 15, 2011 at 12:11:17AM -0400, Davidlohr Bueso wrote:
> @@ -800,14 +857,23 @@ int main(int argc, char **argv)
>  	if (what == ACT_ADD || what == ACT_DELETE) {
>  		struct stat x;
>  
> -		if (stat(wholedisk, &x) || !S_ISBLK(x.st_mode))
> -			errx(EXIT_FAILURE, _("%s: not a block device"), wholedisk);
> +		if (stat(wholedisk, &x) || !S_ISBLK(x.st_mode)) {

  && S_ISREG() :-)

> +			/* not a blkdev, try to associate it to a loop device */

            if (what == ACT_DELETE)
                errx(EXIT_FAILURE, _("%s: cannot delete partitions"), wholedisk);

> +			if (!loopmod_supports_parts())
> +				errx(EXIT_FAILURE, _("%s: does not support loop device partitions"), 
> +				     wholedisk);
> +			assoc_loopdev(wholedisk);
> +			wholedisk = xstrdup(lc.device);
> +		}
>  	}
>  	if ((fd = open(wholedisk, O_RDONLY)) == -1)
>  		err(EXIT_FAILURE, _("%s: open failed"), wholedisk);
>  
> -	if (what == ACT_DELETE)
> +	if (what == ACT_DELETE) {
> +		if (loopdev)
> +			errx(EXIT_FAILURE, _("%s: cannot delete partitions"), wholedisk);
>  		rc = del_parts(fd, wholedisk, disk_devno, lower, upper);
> +	}

 Does it make sense to initialize loop device if ACT_DELETE is requested?

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [patch 0/8] various lscpu patches
From: Karel Zak @ 2011-08-15  9:24 UTC (permalink / raw)
  To: Heiko Carstens; +Cc: util-linux
In-Reply-To: <20110815084530.GA2400@osiris.boeblingen.de.ibm.com>

On Mon, Aug 15, 2011 at 10:45:30AM +0200, Heiko Carstens wrote:
> On Wed, Aug 10, 2011 at 10:36:45AM +0200, Heiko Carstens wrote:
> > Hi Karel,
> > 
> > here are a couple of fixes and improvemts for lscpu on s390.
> > Hopefully I didn't screw up anything ;)
> > At least on my Thinkpad everything still works as before and the output
> > on s390 machines is much improved.
> 
> FWIW, I set up a git branch with the lscpu changes:
> 
>  git://git.kernel.org/pub/scm/linux/kernel/git/heiko/util-linux.git lscpu

 Looks good. Thanks. 
 
 I'm going to merge the changes after 2.20 release (~25th Aug).


-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: [patch 0/8] various lscpu patches
From: Heiko Carstens @ 2011-08-15  8:45 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux
In-Reply-To: <20110810083645.135814950@de.ibm.com>

On Wed, Aug 10, 2011 at 10:36:45AM +0200, Heiko Carstens wrote:
> Hi Karel,
> 
> here are a couple of fixes and improvemts for lscpu on s390.
> Hopefully I didn't screw up anything ;)
> At least on my Thinkpad everything still works as before and the output
> on s390 machines is much improved.

FWIW, I set up a git branch with the lscpu changes:

 git://git.kernel.org/pub/scm/linux/kernel/git/heiko/util-linux.git lscpu

Thanks,
Heiko

^ permalink raw reply

* [PATCH] partx: support loop devices
From: Davidlohr Bueso @ 2011-08-15  4:11 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

From: Davidlohr Bueso <dave@gnu.org>

Add support for loop devices to add partitions. For now we make use of the max_part parameter from the loop kernel module,
otherwise the feature is disabled.

Below an example output:
root@offbook:~/projects/util-linux/partx# ./partx images-pt/dos+bsd.img 
# 1:        32-     7679 (     7648 sectors,      3 MB)
# 2:      7680-    16383 (     8704 sectors,      4 MB)
# 5:      7936-    12799 (     4864 sectors,      2 MB)
# 6:     12544-    16127 (     3584 sectors,      1 MB)
root@offbook:~/projects/util-linux/partx# ./partx -a -n 1:5 images-pt/dos+bsd.img
root@offbook:~/projects/util-linux/partx# ls /dev/loop0* -ltr
brw-rw---- 1 root disk 7, 0 2011-08-15 00:07 /dev/loop0
brw-rw---- 1 root disk 7, 5 2011-08-15 00:07 /dev/loop0p5
brw-rw---- 1 root disk 7, 2 2011-08-15 00:07 /dev/loop0p2
brw-rw---- 1 root disk 7, 1 2011-08-15 00:07 /dev/loop0p1

Signed-off-by: Davidlohr Bueso <dave@gnu.org>
---
 partx/Makefile.am |    2 +
 partx/partx.c     |   77 ++++++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 75 insertions(+), 4 deletions(-)

diff --git a/partx/Makefile.am b/partx/Makefile.am
index 6a72942..080bc47 100644
--- a/partx/Makefile.am
+++ b/partx/Makefile.am
@@ -11,6 +11,8 @@ partx_SOURCES = partx.c partx.h \
 		$(top_srcdir)/lib/at.c \
 		$(top_srcdir)/lib/mbsalign.c \
 		$(top_srcdir)/lib/strutils.c \
+		$(top_srcdir)/lib/canonicalize.c \
+		$(top_srcdir)/lib/loopdev.c \
 		$(top_srcdir)/lib/linux_version.c
 
 partx_CFLAGS = -I$(ul_libblkid_incdir)
diff --git a/partx/partx.c b/partx/partx.c
index 0b35f9f..d0e40c7 100644
--- a/partx/partx.c
+++ b/partx/partx.c
@@ -31,6 +31,7 @@
 #include "xalloc.h"
 #include "partx.h"
 #include "sysfs.h"
+#include "loopdev.h"
 #include "at.h"
 
 /* this is the default upper limit, could be modified by --nr */
@@ -88,7 +89,49 @@ static int columns[__NCOLUMNS], ncolumns;
 
 static int verbose;
 static int partx_flags;
+static struct loopdev_cxt lc;
+static int loopdev = 0;
 
+/*
+ * Check if the kernel supports partitioned loop devices.
+ * In a near future (around linux 3.2, hopefully) this will come
+ * always out of the box, until then we need to check.
+ */
+static int loopmod_supports_parts(void)
+{
+	int rc, ret = 0;
+	FILE *f = fopen("/sys/module/loop/parameters/max_part", "r");
+	
+	if (!f)
+		return 0;
+	rc = fscanf(f, "%d", &ret);
+	fclose(f);
+	return ret;
+}
+
+static void assoc_loopdev(const char *fname)
+{
+	int rc;
+
+	loopcxt_init(&lc, 0);
+	
+	rc = loopcxt_find_unused(&lc);
+	if (rc)
+		err(EXIT_FAILURE, "failed to find unused device");
+
+	if (verbose)
+		printf("Trying to use '%s' for the loop device\n", loopcxt_get_device(&lc));
+	
+	if (loopcxt_set_backing_file(&lc, fname))
+		err(EXIT_FAILURE, "failed to set backing file");
+
+	rc = loopcxt_setup_device(&lc);
+
+	if (rc == -EBUSY)
+		err(EXIT_FAILURE, "failed to setup device for %s", fname);
+
+	loopdev = 1;
+}
 
 static inline int get_column_id(int num)
 {
@@ -278,6 +321,7 @@ static int del_parts(int fd, const char *device, dev_t devno,
 	return rc;
 }
 
+
 static void add_parts_warnx(const char *device, int first, int last)
 {
 	if (first == last)
@@ -288,7 +332,7 @@ static void add_parts_warnx(const char *device, int first, int last)
 }
 
 static int add_parts(int fd, const char *device,
-			blkid_partlist ls, int lower, int upper)
+		     blkid_partlist ls, int lower, int upper)
 {
 	int i, nparts, rc = 0, errfirst = 0, errlast = 0;
 
@@ -338,6 +382,19 @@ static int add_parts(int fd, const char *device,
 
 	if (errfirst)
 		add_parts_warnx(device, errfirst, errlast);
+
+	/* the kernel adds *all* loopdev partitions, so we should delete
+	   any extra, unwanted ones, when the -n option is passed */
+	if (loopdev && (lower || upper)) {
+		for (i = 0; i < nparts; i++) {
+			blkid_partition par = blkid_partlist_get_partition(ls, i);
+			int n = blkid_partition_get_partno(par);
+			
+			if (n < lower || n > upper)
+				partx_del_partition(fd, n);
+		}
+	}
+
 	return rc;
 }
 
@@ -800,14 +857,23 @@ int main(int argc, char **argv)
 	if (what == ACT_ADD || what == ACT_DELETE) {
 		struct stat x;
 
-		if (stat(wholedisk, &x) || !S_ISBLK(x.st_mode))
-			errx(EXIT_FAILURE, _("%s: not a block device"), wholedisk);
+		if (stat(wholedisk, &x) || !S_ISBLK(x.st_mode)) {
+			/* not a blkdev, try to associate it to a loop device */
+			if (!loopmod_supports_parts())
+				errx(EXIT_FAILURE, _("%s: does not support loop device partitions"), 
+				     wholedisk);
+			assoc_loopdev(wholedisk);
+			wholedisk = xstrdup(lc.device);
+		}
 	}
 	if ((fd = open(wholedisk, O_RDONLY)) == -1)
 		err(EXIT_FAILURE, _("%s: open failed"), wholedisk);
 
-	if (what == ACT_DELETE)
+	if (what == ACT_DELETE) {
+		if (loopdev)
+			errx(EXIT_FAILURE, _("%s: cannot delete partitions"), wholedisk);
 		rc = del_parts(fd, wholedisk, disk_devno, lower, upper);
+	}
 	else {
 		blkid_probe pr = blkid_new_probe();
 		blkid_partlist ls = NULL;
@@ -846,6 +912,9 @@ int main(int argc, char **argv)
 		blkid_free_probe(pr);
 	}
 
+	if (loopdev)
+		loopcxt_deinit(&lc);
+
 	close(fd);
 	return rc ? EXIT_FAILURE : EXIT_SUCCESS;
 }
-- 
1.7.4.1

^ permalink raw reply related

* Re: [git pull] documentation directory
From: Sami Kerola @ 2011-08-12 20:58 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux
In-Reply-To: <20110808114617.GL2204@nb.net.home>

On Mon, Aug 8, 2011 at 13:46, Karel Zak <kzak@redhat.com> wrote:
> On Sat, Aug 06, 2011 at 07:57:53PM +0200, Sami Kerola wrote:
>> are available in the git repository at:
>> =A0 https://github.com/kerolasa/lelux-utiliteetit docs-dir
>>
>> discussion, and few rejects, before the Documentation/ is done to
>> upstream. For instance you might disagree with contents of
>> 00-about-docs.txt, and perhaps example.files/ should be deleted.
>
> =A0The 'Warning about content' in 00-about-docs.txt is too crazy :-)
> =A0Let's:

I thought you might say something like that.

> =A0- cleanup the files
>  - remove obsolete information

Done in new patch `docs: clean up old readme files'. The clean up
could be more aggressive. For instance the fdisk.txt sounds very 90's
and has only a limited amount of usable information. Perhaps the file
be simply removed, or should someone be asked to volunteer to clean up
all {c,s,}fdisk documentation & manual pages? By glance that looks
quite large task.

> =A0- move valid information to the man pages

Perhaps I lacked imagination what could be moved coz I found so
little. See hwclock change for details.

> =A0- add info about authors to the AUTHORS file

I went through everything in Documentation/* and notice there's more
in NEWS file. Should that be migrated as well?

> =A0I have updated the example.files/ in the master branch.

Noted.

>> =A0README.devel =3D> Documentation/README.devel =A0 =A0 =A0 =A0 | =A0 =
=A00
>
> =A0see below
>
>> =A0.../ReleaseNotes}/v2.13-ReleaseNotes =A0 =A0 =A0 =A0 =A0 =A0 =A0 | =
=A0 =A00
>
> =A0What about to rename the directory to releases/ ? The NEWS file should
> =A0be updated too.

Done.

>> =A0README.licensing =3D> Documentation/licensing.txt =A0 =A0| =A0 =A00
>
> =A0It would be nice to keep this file in the top-level directory.

Put back to root.

>> =A0tests/README =3D> Documentation/tests.txt =A0 =A0 =A0 =A0 =A0 =A0| =
=A0 =A00
>
> =A0howto-tests.txt

Renamed.

>> =A0Documentation/usage-howto.txt =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0=
 =A0| =A0 73 ++++++++++++++++++++
>
> =A0howto-usage-function.txt
>
> =A0 and s/output/display/ in the file

Renamed & the wording is checked.

> =A0we also need howto-man-page.txt :-)

Something done, comments are welcome.

> =A0I think we can split the README file:
>
> =A0 =A0README =A0(basic info about project)
>
> =A0 =A0Documentation/howto-compilation.txt
>
> =A0In the howto-compilation.txt file should be also a note about
> =A0autogen.sh, static linking, klib and uClib and maybe some preferred
> =A0compiler options, I use:
>
> =A0 -Wmissing-parameter-type -Wsign-compare -Wtype-limits -Wuninitialized=
 \
> =A0 -Wunused-parameter -Wunused-but-set-parameter -fno-common
>
> =A0We can also split README.devel to:
>
> =A0 =A0Documentation/howto-compilation.txt (add extra section for
> =A0 =A0developers (or SCM users) about about autotools).
>
> =A0 =A0Documentation/howto-contribute.txt with info about "ideal
> =A0 =A0patches", coding style.
>
> =A0 =A0Documentation/source-code-management.txt

This README.devel split was done as well.


The following changes since commit 344f73442d3a45db5927c049eef1ed8cf5d13934=
:

  ipcs: use unsigned type for uid/gid (2011-08-09 15:30:19 +0200)

are available in the git repository at:
  https://github.com/kerolasa/lelux-utiliteetit docs-dir

Sami Kerola (11):
      docs: remove README.clear
      docs: Documentation directory added
      docs: add usage() howto for contributors
      docs: tell what the Documentation/ is about
      docs: new file Documentation/howto-compilation.txt
      docs: new file Documentation/howto-contribute.txt
      docs: new file Documentation/source-code-management.txt
      docs: new file Documentation/howto-man-page.txt
      docs: copy contributors from legacy files to AUTHORS
      docs: clean up old readme files
      docs: move setuid information from reame to hwclock.8

--=20
=A0=A0 Sami Kerola
=A0=A0 http://www.iki.fi/kerolasa/

^ permalink raw reply

* [PATCH] partx: do not print null
From: Davidlohr Bueso @ 2011-08-12 19:38 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

From: Davidlohr Bueso <dave@gnu.org>
Date: Fri, 12 Aug 2011 15:36:50 -0400

Replace the annoying null output when displaying no partitions in verbose mode.

Signed-off-by: Davidlohr Bueso <dave@gnu.org>
---
 partx/partx.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/partx/partx.c b/partx/partx.c
index b2a72ed..0b35f9f 100644
--- a/partx/partx.c
+++ b/partx/partx.c
@@ -795,7 +795,7 @@ int main(int argc, char **argv)
 
 	if (verbose)
 		printf(_("partition: %s, disk: %s, lower: %d, upper: %d\n"),
-				device, wholedisk, lower, upper);
+		       device ? device : "none", wholedisk, lower, upper);
 
 	if (what == ACT_ADD || what == ACT_DELETE) {
 		struct stat x;
-- 
1.7.4.1

^ permalink raw reply related

* [PATCH] grammar fixes
From: Davidlohr Bueso @ 2011-08-12 18:07 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux

From: Davidlohr Bueso <dave@gnu.org>
Date: Fri, 12 Aug 2011 14:06:13 -0400

Correct grammar from "cannot found" to "cannot find".

Signed-off-by: Davidlohr Bueso <dave@gnu.org>
---
 libmount/src/context_umount.c  |    4 ++--
 tests/ts/hwclock/systohc       |    2 +-
 tests/ts/libmount/context      |   10 +++++-----
 tests/ts/libmount/context-utab |    8 ++++----
 tests/ts/mount/devname         |    6 +++---
 5 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/libmount/src/context_umount.c b/libmount/src/context_umount.c
index 7c048d9..bc08aff 100644
--- a/libmount/src/context_umount.c
+++ b/libmount/src/context_umount.c
@@ -86,7 +86,7 @@ static int lookup_umount_fs(struct libmnt_context *cxt)
 	}
 
 	if (!fs) {
-		DBG(CXT, mnt_debug_h(cxt, "umount: cannot found %s in mtab", tgt));
+		DBG(CXT, mnt_debug_h(cxt, "umount: cannot find %s in mtab", tgt));
 		return 0;
 	}
 
@@ -197,7 +197,7 @@ static int evaluate_permissions(struct libmnt_context *cxt)
 
 	if (!(cxt->flags & MNT_FL_TAB_APPLIED)) {
 		DBG(CXT, mnt_debug_h(cxt,
-				"cannot found %s in mtab and you are not root",
+				"cannot find %s in mtab and you are not root",
 				mnt_fs_get_target(cxt->fs)));
 		goto eperm;
 	}
diff --git a/tests/ts/hwclock/systohc b/tests/ts/hwclock/systohc
index 9dedc62..f58d07e 100755
--- a/tests/ts/hwclock/systohc
+++ b/tests/ts/hwclock/systohc
@@ -24,7 +24,7 @@ NTP_SERVER="0.fedora.pool.ntp.org"
 ts_init "$*"
 ts_skip_nonroot
 
-[ -x "/usr/sbin/ntpdate" ] || ts_skip "cannot found ntpdate command"
+[ -x "/usr/sbin/ntpdate" ] || ts_skip "cannot find ntpdate command"
 
 set -o pipefail
 
diff --git a/tests/ts/libmount/context b/tests/ts/libmount/context
index 8119cee..0b10098 100755
--- a/tests/ts/libmount/context
+++ b/tests/ts/libmount/context
@@ -30,7 +30,7 @@ modprobe scsi_debug dev_size_mb=100
 sleep 3
 
 DEVNAME=$(grep scsi_debug /sys/block/*/device/model | awk -F '/' '{print $4}')
-[ "x${DEVNAME}" == "x" ] && ts_die "Cannot found device"
+[ "x${DEVNAME}" == "x" ] && ts_die "Cannot find device"
 
 DEVICE="/dev/${DEVNAME}"
 
@@ -63,7 +63,7 @@ mkdir -p $MOUNTPOINT &>  /dev/null
 $TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
 
 grep -q $DEVICE $LIBMOUNT_MTAB || \
-	echo "(by device) cannot found $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
+	echo "(by device) cannot find $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
 ts_finalize_subtest
 
 ts_init_subtest "umount-by-devname"
@@ -78,7 +78,7 @@ ts_init_subtest "mount-by-label"
 mkdir -p $MOUNTPOINT &>  /dev/null
 $TESTPROG --mount LABEL="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>&1
 grep -q $DEVICE $LIBMOUNT_MTAB || \
-	echo "(by label) cannot found $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
+	echo "(by label) cannot find $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
 ts_finalize_subtest
 
 
@@ -93,7 +93,7 @@ ts_init_subtest "mount-by-uuid"
 mkdir -p $MOUNTPOINT &> /dev/null
 $TESTPROG --mount UUID="$UUID" $MOUNTPOINT >> $TS_OUTPUT 2>&1
 grep -q $DEVICE $LIBMOUNT_MTAB || \
-	echo "(by uuid) cannot found $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
+	echo "(by uuid) cannot find $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
 $TESTPROG --umount $MOUNTPOINT >> $TS_OUTPUT 2>&1
 grep -q $DEVICE $LIBMOUNT_MTAB &&
 	echo "umount failed: found $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
@@ -105,7 +105,7 @@ mkdir -p $MOUNTPOINT &> /dev/null
 $TESTPROG --mount -o ro,noexec,nosuid,strictatime $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
 $TS_CMD_FINDMNT --kernel $MOUNTPOINT -o VFS-OPTIONS -n >> $TS_OUTPUT 2>&1
 grep -q $DEVICE $LIBMOUNT_MTAB || \
-	echo "cannot found $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
+	echo "cannot find $DEVICE in $LIBMOUNT_MTAB" >> $TS_OUTPUT 2>&1
 
 $TESTPROG --mount -o remount,rw $MOUNTPOINT >> $TS_OUTPUT 2>&1
 $TS_CMD_FINDMNT --kernel $MOUNTPOINT -o VFS-OPTIONS -n >> $TS_OUTPUT 2>&1
diff --git a/tests/ts/libmount/context-utab b/tests/ts/libmount/context-utab
index 5f36d28..94d4460 100755
--- a/tests/ts/libmount/context-utab
+++ b/tests/ts/libmount/context-utab
@@ -27,7 +27,7 @@ modprobe scsi_debug dev_size_mb=260
 sleep 3
 
 DEVNAME=$(grep scsi_debug /sys/block/*/device/model | awk -F '/' '{print $4}')
-[ "x${DEVNAME}" == "x" ] && ts_die "Cannot found device"
+[ "x${DEVNAME}" == "x" ] && ts_die "Cannot find device"
 
 DEVICE="/dev/${DEVNAME}"
 
@@ -64,7 +64,7 @@ ts_init_subtest "mount-by-devname"
 mkdir -p $MOUNTPOINT &>  /dev/null
 $TESTPROG --mount $DEVICE $MOUNTPOINT >> $TS_OUTPUT 2>&1
 grep -q $DEVICE /proc/mounts || \
-	echo "(by device) cannot found $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>&1
+	echo "(by device) cannot find $DEVICE in /proc/mounts" >> $TS_OUTPUT 2>&1
 ts_finalize_subtest
 
 ts_init_subtest "umount-by-devname"
@@ -78,7 +78,7 @@ ts_init_subtest "mount-uhelper"
 mkdir -p $MOUNTPOINT &>  /dev/null
 $TESTPROG --mount -o uhelper=foo,rw LABEL="$LABEL" $MOUNTPOINT >> $TS_OUTPUT 2>&1
 grep -q $DEVICE $LIBMOUNT_UTAB || \
-	echo "(by label) cannot found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
+	echo "(by label) cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
 ts_finalize_subtest
 
 ts_init_subtest "umount"
@@ -98,7 +98,7 @@ if [ -x "/sbin/mkfs.btrfs" ]; then
 	mkdir -p $MOUNTPOINT &>  /dev/null
 	$TESTPROG --mount -o uhelper=foo,rw,subvol=sub $DEVICE  $MOUNTPOINT >> $TS_OUTPUT 2>&1
 	grep -q $DEVICE $LIBMOUNT_UTAB || \
-		echo "cannot found $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
+		echo "cannot find $DEVICE in $LIBMOUNT_UTAB" >> $TS_OUTPUT 2>&1
 	ts_finalize_subtest
 
 	ts_log "All mount options (btrfs subvolume + utab) ---"
diff --git a/tests/ts/mount/devname b/tests/ts/mount/devname
index 4cbd087..8f32ef1 100755
--- a/tests/ts/mount/devname
+++ b/tests/ts/mount/devname
@@ -30,16 +30,16 @@ DEVICE=$(ts_device_init)
 
 mkfs.ext3 $DEVICE &> /dev/null || ts_die "Cannot make ext3 on $DEVICE" $DEVICE
 
-ts_device_has "TYPE" "ext3" $DEVICE || ts_die "Cannot found ext3 on $DEVICE" $DEVICE
+ts_device_has "TYPE" "ext3" $DEVICE || ts_die "Cannot find ext3 on $DEVICE" $DEVICE
 
 [ -d "$TS_MOUNTPOINT" ] || mkdir -p $TS_MOUNTPOINT
 
 $TS_CMD_MOUNT $DEVICE $TS_MOUNTPOINT 2>&1 >> $TS_OUTPUT
 
-ts_is_mounted $DEVICE || ts_die "Cannot found $DEVICE in /proc/mounts" $DEVICE
+ts_is_mounted $DEVICE || ts_die "Cannot find $DEVICE in /proc/mounts" $DEVICE
 
 grep -q $DEVICE /etc/mtab ||
-	echo "mount failed: cannot found $DEVICE in mtab" >> $TS_OUTPUT 2>&1
+	echo "mount failed: cannot find $DEVICE in mtab" >> $TS_OUTPUT 2>&1
 
 $TS_CMD_UMOUNT $DEVICE || ts_die "Cannot umount $DEVICE" $DEVICE
 
-- 
1.7.4.1

^ permalink raw reply related

* [PATCH v2] whereis: search in path
From: Davidlohr Bueso @ 2011-08-12 17:55 UTC (permalink / raw)
  To: Karel Zak, util-linux

Sorry for the delay, lots of things on my plate these days. Below is the patch with the mentioned fixes.

From: Davidlohr Bueso <dave@gnu.org>
Date: Fri, 12 Aug 2011 13:49:59 -0400

Currently this tool only uses the hardcoded paths for looking up strings for binaries, man pages and source code.
Adding directories found in $PATH makes a nice little enhancement to support a wider range of lookups.

This feature was also discussed previously here (http://www.spinics.net/lists/util-linux-ng/msg03429.html)

Signed-off-by: Davidlohr Bueso <dave@gnu.org>
---
 misc-utils/whereis.c |   69 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 68 insertions(+), 1 deletions(-)

diff --git a/misc-utils/whereis.c b/misc-utils/whereis.c
index 08b62e6..6393a70 100644
--- a/misc-utils/whereis.c
+++ b/misc-utils/whereis.c
@@ -37,6 +37,10 @@
  * - added Native Language Support
  */
 
+/* 2011-08-12 Davidlohr Bueso <dave@gnu.org>
+ * - added $PATH lookup
+ */
+
 #include <sys/param.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -45,6 +49,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include <ctype.h>
+
+#include "xalloc.h"
 #include "nls.h"
 #include "c.h"
 
@@ -124,7 +130,7 @@ static char *srcdirs[] = {
 };
 
 static char sflag = 1, bflag = 1, mflag = 1, uflag;
-static char **Sflag, **Bflag, **Mflag;
+static char **Sflag, **Bflag, **Mflag, **dirp, **pathdir;
 static int Scnt, Bcnt, Mcnt, count, print;
 
 static void __attribute__ ((__noreturn__)) usage(FILE * out)
@@ -231,11 +237,68 @@ findin(char *dir, char *cp)
 
 }
 
+static int inpath(const char *str)
+{
+	int i;
+
+	for (i = 0; i < ARRAY_SIZE(bindirs) - 1 ; i++)
+		if (!strcmp(bindirs[i], str))
+			return 1;
+	
+	for (i = 0; i < ARRAY_SIZE(mandirs) - 1; i++)
+		if (!strcmp(mandirs[i], str))
+			return 1;
+		
+	for (i = 0; i < ARRAY_SIZE(srcdirs) - 1; i++)
+		if (!strcmp(srcdirs[i], str))
+			return 1;
+	
+	return 0;
+}
+
+static void fillpath(void)
+{
+	char *key=NULL, *tmp=NULL, *tok=NULL, *pathcp, *path = getenv("PATH");
+	int i = 0;
+
+
+	if (!path)
+		return;
+	pathcp = xstrdup(path);
+
+	for (tmp = pathcp; ;tmp = NULL, tok) {
+		tok = strtok_r(tmp, ":", &key);
+		if (!tok)
+			break;
+		
+		/* make sure we don't repeat the search path */
+		if (inpath(tok))
+			continue;
+
+		pathdir = xrealloc(pathdir, (i + 1) * sizeof(char *));
+		pathdir[i++] = xstrdup(tok);
+	}
+
+	pathdir = xrealloc(pathdir, (i + 1) * sizeof(char *));
+	pathdir[i] = NULL;
+
+	dirp = pathdir;
+	free(pathcp);
+}
+
+static void freepath(void)
+{
+	free(pathdir);
+}
+
 static void
 findv(char **dirv, int dirc, char *cp)
 {
+
 	while (dirc > 0)
 		findin(*dirv++, cp), dirc--;
+	while (*dirp)
+		findin(*dirp++, cp);
 }
 
 static void
@@ -359,6 +422,8 @@ main(int argc, char **argv)
 	if (argc == 0)
 		usage(stderr);
 
+	fillpath();
+
 	do
 		if (argv[0][0] == '-') {
 			register char *cp = argv[0] + 1;
@@ -411,5 +476,7 @@ main(int argc, char **argv)
 		} else
 			lookup(*argv++);
 	while (--argc > 0);
+
+	freepath();
 	return EXIT_SUCCESS;
 }
-- 
1.7.4.1

^ permalink raw reply related

* PAM-only login(1)
From: Karel Zak @ 2011-08-12 11:57 UTC (permalink / raw)
  To: util-linux


  I'd like to clean up login(1) code for v2.21. The current code is
  mess with many #ifdef and support for some unused (and badly tested) 
  features (e.g. non-PAM support for /etc/securetty and /etc/usertty).

  What about to finally create nice and readable PAM-only login(1) for
  Linux?

  The alternatives for systems without PAM are busybox and shadow-utils.

  Comments?

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* Re: mkswap fails to use more than 2GiB and doesn't recognize LVM
From: Karel Zak @ 2011-08-11 21:46 UTC (permalink / raw)
  To: Florian Pritz; +Cc: util-linux
In-Reply-To: <20110811181454.GD32051@nb.net.home>

On Thu, Aug 11, 2011 at 08:14:54PM +0200, Karel Zak wrote:
> On Thu, Aug 11, 2011 at 05:32:57PM +0200, Florian Pritz wrote:
> > mkswap displays the following output when trying to create swap on a
> > 8GiB logical volume.
> > > # mkswap /dev/mapper/vg_brynhild-swap
> > > mkswap: warning: truncating swap area to 2097144 KiB
> 
>  It seems correct.

 Ah... sorry, I didn't read your e-mail too carefully.

>  The swap header does not allow to address more than
>  UINT_MAX pages. You have to create more swap areas or use system with
>  bigger pages.

 Right, so if you have 4096 page size, then 4096 * 4294967295 is the
 max size...

 I think the problem is kernel version string -- "3.0". The mkswap
 code uses the version string to set the limit.

 The problem should be fixed in 2.20-rc1, commit
 fa7e0d6d442de9f5940f99fd93f4522602439131.

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* [patches] small fixes to some messages and man pages, and some questions
From: Benno Schulenberg @ 2011-08-11 20:22 UTC (permalink / raw)
  To: Util-Linux

[-- Attachment #1: Type: text/plain, Size: 1780 bytes --]


Hi,

Attached bunch of patches improve or correct several error messages
or usage synopses.

About the fourth patch I'm unsure.  The current description of the option
'--no-reread' is "skip partition re-read at boot".  With "boot" is meant
"program startup", so that needs to be corrected.  But the real effect of
--no-reread seems to be to just check that the relevant partition is not
in use.  Is that correct?

By the way, I don't understand why the options -g (--show-geometry) and
-G (show-pt-geometry) are listed under "Dangerous options".  How can
they be dangerous when they just show things?

Also I do not understand the descriptions of the new options --nested,
--chained, and --onesector.  How is "disjoint" different from "mutually
disjoint"?  Would the following attempts at description be correct?

--nested     each logical and extended partition falls within an extended one
--chained     each logical partition falls within an extended one
--onesector   not any partition falls within another

The two new options --inside-outer and --not-inside-outer have been
misdocumented as --inside-order and --not-inside-order.  The last and
seventeenth patch fixes that.


The fourteenth patch adds the missing "[options]" to the usage synopsis
of scriptreplay, and also indicates the timingfile argument as optional.
However, I find this a bit misleading: the timingfile is only optional when
it is specified via the -t option.  Wouldn't it be better to describe the
command with two alternative synopses, as follows?

  Usage: scriptreplay timingfile [typescript [divisor]]
     or: scriptreplay [options] [timingfile] [typescript] [divisor]

Regards,

Benno

-- 
http://www.fastmail.fm - Accessible with your email software
                          or over the web


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-mkfs.cramfs-clearer-error-message-cannot-close-inste.patch --]
[-- Type: text/x-patch; name="0001-mkfs.cramfs-clearer-error-message-cannot-close-inste.patch", Size: 990 bytes --]

From 8675f4f28e656a3d754a569afd0a732f786fa572 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 20:55:48 +0200
Subject: [PATCH 01/17] mkfs.cramfs: clearer error message, "cannot close" instead of "closing"

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 disk-utils/mkfs.cramfs.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/disk-utils/mkfs.cramfs.c b/disk-utils/mkfs.cramfs.c
index 9bb9153..5193634 100644
--- a/disk-utils/mkfs.cramfs.c
+++ b/disk-utils/mkfs.cramfs.c
@@ -665,7 +665,7 @@ static unsigned int write_file(char *file, char *base, unsigned int offset)
 	memcpy(base + offset, buf, image_length);
 	munmap(buf, image_length);
 	if (close (fd) < 0)
-		err(MKFS_ERROR, _("closing file %s"), file);
+		err(MKFS_ERROR, _("cannot close file %s"), file);
 	/* Pad up the image_length to a 4-byte boundary */
 	while (image_length & 3) {
 		*(base + offset + image_length) = '\0';
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: 0002-fdisksgilabel-correct-the-grammar-of-an-error-messag.patch --]
[-- Type: text/x-patch; name="0002-fdisksgilabel-correct-the-grammar-of-an-error-messag.patch", Size: 894 bytes --]

From fb2664acf48c1c4c278caabade80f75ddd3ea467 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 20:57:07 +0200
Subject: [PATCH 02/17] fdisksgilabel: correct the grammar of an error message

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 fdisk/fdisksgilabel.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/fdisk/fdisksgilabel.c b/fdisk/fdisksgilabel.c
index cc95598..8179bc1 100644
--- a/fdisk/fdisksgilabel.c
+++ b/fdisk/fdisksgilabel.c
@@ -533,7 +533,7 @@ int
 sgi_change_sysid(int i, int sys)
 {
 	if (sgi_get_num_sectors(i) == 0) /* caught already before, ... */ {
-		printf(_("Sorry You may change the Tag of non-empty partitions.\n"));
+		printf(_("Sorry, only for non-empty partitions you can change the tag.\n"));
 		return 0;
 	}
 	if (((sys != ENTIRE_DISK) && (sys != SGI_VOLHDR))
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: 0003-sfdisk-gettextize-each-warning-as-a-whole.patch --]
[-- Type: text/x-patch; name="0003-sfdisk-gettextize-each-warning-as-a-whole.patch", Size: 1332 bytes --]

From aec94f1a8a9c2ae333f2659d283ad8f355869d01 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 20:58:49 +0200
Subject: [PATCH 03/17] sfdisk: gettextize each warning as a whole

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 fdisk/sfdisk.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index 6cd85a2..6ae0be4 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -1243,8 +1243,8 @@ partitions_ok(struct disk_desc *z) {
 		q = p->ep;
 		if (p->start < q->start
 		    || p->start + p->size > q->start + q->size) {
-		    my_warn(_("Warning: partition %s "), PNO(p));
-		    my_warn(_("is not contained in partition %s\n"), PNO(q));
+		    my_warn(_("Warning: partition %s is not contained in "
+			      "partition %s\n"), PNO(p), PNO(q));
 		    return 0;
 		}
 	    }
@@ -1255,8 +1255,8 @@ partitions_ok(struct disk_desc *z) {
 	    for (q = p + 1; q < partitions + partno; q++)
 		if (q->size && !is_extended(q->p.sys_type))
 		    if (!((p->start > q->start) ? disj(q, p) : disj(p, q))) {
-			my_warn(_("Warning: partitions %s "), PNO(p));
-			my_warn(_("and %s overlap\n"), PNO(q));
+			my_warn(_("Warning: partitions %s and %s overlap\n"),
+				PNO(p), PNO(q));
 			return 0;
 		    }
 
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: 0004-sfdisk-improve-descriptions-of-options-no-reread-and.patch --]
[-- Type: text/x-patch; name="0004-sfdisk-improve-descriptions-of-options-no-reread-and.patch", Size: 1747 bytes --]

From 2f124ce033ced627e121522b07795e610b0c5b9d Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 20:59:49 +0200
Subject: [PATCH 04/17] sfdisk: improve descriptions of options --no-reread and --show-extended

Also keep the two geometry options (-g and -G) together by moving -A.

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 fdisk/sfdisk.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index 6ae0be4..b01723d 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -2378,13 +2378,13 @@ usage(FILE * out) {
 
     fprintf(out, _("\nDangerous options:\n"
 		   "  -f, --force             disable all consistency checking\n"
+		   "      --no-reread         do not check whether the partition is in use\n"
 		   "  -g, --show-geometry     print the kernel's idea of the geometry\n"
-		   "  -A, --activate[=device] activate bootable flag\n"
 		   "  -G, --show-pt-geometry  print geometry guessed from the partition table\n"
+		   "  -A, --activate[=device] activate bootable flag\n"
 		   "  -U, --unhide[=device]   set partition unhidden\n"
-		   "      --no-reread         skip partition re-read at boot\n"
-		   "  -x, --show-extended     also list extended partitions on output\n"
-		   "                          or expect descriptors for them on input\n"
+		   "  -x, --show-extended     also list extended partitions in the output,\n"
+		   "                            or expect descriptors for them in the input\n"
 		   "      --leave-last        do not allocate the last cylinder\n"
 		   "      --IBM               same as --leave-last\n"
 		   "      --in-order          partitions are in order\n"
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: 0005-sfdisk-remove-inconsistent-and-wasteful-newlines-in-.patch --]
[-- Type: text/x-patch; name="0005-sfdisk-remove-inconsistent-and-wasteful-newlines-in-.patch", Size: 11969 bytes --]

From e2bac4d95b0d6da74215337a6211e1312ad771e7 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:02:10 +0200
Subject: [PATCH 05/17] sfdisk: remove inconsistent and wasteful newlines in the _() calls

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 fdisk/sfdisk.c |  113 +++++++++++++++++++++----------------------------------
 1 files changed, 43 insertions(+), 70 deletions(-)

diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index b01723d..cd494d0 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -489,10 +489,9 @@ get_cylindersize(char *dev, int fd, int silent) {
 	B.cylinders = B.total_size / B.cylindersize;
 
     if (R.start && !force) {
-	my_warn(_
-		("Warning: start=%lu - this looks like a partition rather than\n"
-		 "the entire disk. Using fdisk on it is probably meaningless.\n"
-		 "[Use the --force option if you really want this]\n"),
+	my_warn(_("Warning: start=%lu - this looks like a partition rather than\n"
+		  "the entire disk. Using fdisk on it is probably meaningless.\n"
+		  "[Use the --force option if you really want this]\n"),
 		R.start);
 	exit(1);
     }
@@ -505,15 +504,13 @@ get_cylindersize(char *dev, int fd, int silent) {
 		R.sectors);
     if (R.cylinders && B.cylinders != R.cylinders
 	&& B.cylinders < 65536 && R.cylinders < 65536)
-	my_warn(_
-		("Warning: BLKGETSIZE/HDIO_GETGEO says that there are %lu cylinders\n"),
+	my_warn(_("Warning: BLKGETSIZE/HDIO_GETGEO says that there are %lu cylinders\n"),
 		R.cylinders);
 #endif
 
     if (B.sectors > 63)
-	my_warn(_
-		("Warning: unlikely number of sectors (%lu) - usually at most 63\n"
-		 "This will give problems with all software that uses C/H/S addressing.\n"),
+	my_warn(_("Warning: unlikely number of sectors (%lu) - usually at most 63\n"
+		  "This will give problems with all software that uses C/H/S addressing.\n"),
 		B.sectors);
     if (!silent)
 	printf(_("\nDisk %s: %lu cylinders, %lu heads, %lu sectors/track\n"),
@@ -960,8 +957,7 @@ out_partition_header(char *dev, int format, struct geometry G) {
 	if (G.cylindersize) {
 	    printf(_("Units = cylinders of %lu bytes, blocks of 1024 bytes"
 		     ", counting from %d\n\n"), G.cylindersize << 9, increment);
-	    printf(_
-		   ("   Device Boot Start     End   #cyls    #blocks   Id  System\n"));
+	    printf(_("   Device Boot Start     End   #cyls    #blocks   Id  System\n"));
 	    break;
 	}
 	/* fall through */
@@ -978,8 +974,7 @@ out_partition_header(char *dev, int format, struct geometry G) {
     case F_MEGABYTE:
 	printf(_("Units = mebibytes of 1048576 bytes, blocks of 1024 bytes"
 		 ", counting from %d\n\n"), increment);
-	printf(_
-	       ("   Device Boot Start   End    MiB    #blocks   Id  System\n"));
+	printf(_("   Device Boot Start   End    MiB    #blocks   Id  System\n"));
 	break;
     }
 }
@@ -1138,20 +1133,17 @@ out_partition(char *dev, int format, struct part_desc *p,
 	aa = chs_to_longchs(a);
 	bb = chs_to_longchs(b);
 	if (a.s && !is_equal_chs(a, b))
-	    do_warn(_
-		    ("\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
+	    do_warn(_("\t\tstart: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
 		    aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
 	a = (size ? ulong_to_chs(end, G) : zero_chs);
 	b = p->p.end_chs;
 	aa = chs_to_longchs(a);
 	bb = chs_to_longchs(b);
 	if (a.s && !is_equal_chs(a, b))
-	    do_warn(_
-		    ("\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
+	    do_warn(_("\t\tend: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
 		    aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
 	if (G.cylinders && G.cylinders < 1024 && bb.c > G.cylinders)
-	    do_warn(_
-		    ("partition ends on cylinder %ld, beyond the end of the disk\n"),
+	    do_warn(_("partition ends on cylinder %ld, beyond the end of the disk\n"),
 		    bb.c);
     }
 }
@@ -1223,15 +1215,13 @@ partitions_ok(struct disk_desc *z) {
     for (p = partitions; p - partitions < partno; p++)
 	if (p->size == 0) {
 	    if (p->p.sys_type != EMPTY_PARTITION)
-		my_warn(_
-			("Warning: partition %s has size 0 but is not marked Empty\n"),
+		my_warn(_("Warning: partition %s has size 0 but is not marked Empty\n"),
 			PNO(p));
 	    else if (p->p.bootable != 0)
 		my_warn(_("Warning: partition %s has size 0 and is bootable\n"),
 			PNO(p));
 	    else if (p->p.start_sect != 0)
-		my_warn(_
-			("Warning: partition %s has size 0 and nonzero start\n"),
+		my_warn(_("Warning: partition %s has size 0 and nonzero start\n"),
 			PNO(p));
 	    /* all this is probably harmless, no error return */
 	}
@@ -1285,8 +1275,7 @@ partitions_ok(struct disk_desc *z) {
 		    return 0;
 		}
 		if (p->size && p->start + p->size > ds) {
-		    my_warn(_
-			    ("Warning: partition %s extends past end of disk\n"),
+		    my_warn(_("Warning: partition %s extends past end of disk\n"),
 			    PNO(p));
 		    return 0;
 		}
@@ -1302,9 +1291,8 @@ partitions_ok(struct disk_desc *z) {
 	    if (p->p.sys_type == EXTENDED_PARTITION)
 		ect++;
 	if (ect > 1 && !Linux) {
-	    my_warn(_
-		    ("Among the primary partitions, at most one can be extended\n"
-		     " (although this is not a problem under Linux)\n"));
+	    my_warn(_("Among the primary partitions, at most one can be extended\n"
+		      " (although this is not a problem under Linux)\n"));
 	    return 0;
 	}
     }
@@ -1348,25 +1336,22 @@ partitions_ok(struct disk_desc *z) {
 		if (pno == -1)
 		    pno = p - partitions;
 		else if (p - partitions < 4) {
-		    my_warn(_
-			    ("Warning: more than one primary partition is marked "
-			     "bootable (active)\n"
-			     "This does not matter for LILO, but the DOS MBR will "
-			     "not boot this disk.\n"));
+		    my_warn(_("Warning: more than one primary partition is marked "
+			      "bootable (active)\n"
+			      "This does not matter for LILO, but the DOS MBR will "
+			      "not boot this disk.\n"));
 		    break;
 		}
 		if (p - partitions >= 4) {
-		    my_warn(_
-			    ("Warning: usually one can boot from primary partitions "
-			     "only\nLILO disregards the `bootable' flag.\n"));
+		    my_warn(_("Warning: usually one can boot from primary partitions "
+			      "only\nLILO disregards the `bootable' flag.\n"));
 		    break;
 		}
 	    }
 	if (pno == -1 || pno >= 4)
-	    my_warn(_
-		    ("Warning: no primary partition is marked bootable (active)\n"
-		     "This does not matter for LILO, but the DOS MBR will "
-		     "not boot this disk.\n"));
+	    my_warn(_("Warning: no primary partition is marked bootable (active)\n"
+		      "This does not matter for LILO, but the DOS MBR will "
+		      "not boot this disk.\n"));
     }
 
     /* Is chs as we expect? */
@@ -1381,8 +1366,7 @@ partitions_ok(struct disk_desc *z) {
 	    if (!chs_ok(b, PNO(p), _("start")))
 		return 0;
 	    if (a.s && !is_equal_chs(a, b))
-		my_warn(_
-			("partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
+		my_warn(_("partition %s: start: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
 			PNO(p), aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
 	    a = p->size ? ulong_to_chs(p->start + p->size - 1, B) : zero_chs;
 	    b = p->p.end_chs;
@@ -1391,12 +1375,10 @@ partitions_ok(struct disk_desc *z) {
 	    if (!chs_ok(b, PNO(p), _("end")))
 		return 0;
 	    if (a.s && !is_equal_chs(a, b))
-		my_warn(_
-			("partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
+		my_warn(_("partition %s: end: (c,h,s) expected (%ld,%ld,%ld) found (%ld,%ld,%ld)\n"),
 			PNO(p), aa.c, aa.h, aa.s, bb.c, bb.h, bb.s);
 	    if (B.cylinders && B.cylinders < 1024 && bb.c > B.cylinders)
-		my_warn(_
-			("partition %s ends on cylinder %ld, beyond the end of the disk\n"),
+		my_warn(_("partition %s ends on cylinder %ld, beyond the end of the disk\n"),
 			PNO(p), bb.c);
 	}
 
@@ -1816,8 +1798,7 @@ read_stdin(char **fields, char *line, int fieldssize, int linesize) {
 		if (*ip == 0)
 		    return fno;
 		if (*ip != ',' && *ip != ';')
-		    fatal(_
-			  ("input error: unexpected character %c after %s field\n"),
+		    fatal(_("input error: unexpected character %c after %s field\n"),
 			  *ip, d->fldname);
 		*ip = 0;
 		goto nxtfld;
@@ -2163,8 +2144,7 @@ read_line(int pno, struct part_desc *ep, char *dev, int interactive,
 	p.size -= (p.size % unitsize(format));
     }
     if (p.size > ml1) {
-	my_warn(_
-		("Warning: given size (%lu) exceeds max allowable size (%lu)\n"),
+	my_warn(_("Warning: given size (%lu) exceeds max allowable size (%lu)\n"),
 		(p.size + unitsize(0) - 1) / unitsize(0), ml1 / unitsize(0));
 	if (!force)
 	    return 0;
@@ -2327,10 +2307,9 @@ read_input(char *dev, int interactive, struct disk_desc *z) {
     z->partno = 0;
 
     if (interactive)
-	my_warn(_
-		("Input in the following format; absent fields get a default value.\n"
-		 "<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
-		 "Usually you only need to specify <start> and <size> (and perhaps <type>).\n"));
+	my_warn(_("Input in the following format; absent fields get a default value.\n"
+		  "<start> <size> <type [E,S,L,X,hex]> <bootable [-,*]> <c,h,s> <c,h,s>\n"
+		  "Usually you only need to specify <start> and <size> (and perhaps <type>).\n"));
     eof = 0;
 
     for (i = 0; i < 4; i++)
@@ -2408,11 +2387,9 @@ static void
 activate_usage(char *progn) {
     puts(_("Usage:"));
     printf(_("%s device		 list active partitions on device\n"), progn);
-    printf(_
-	   ("%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"),
+    printf(_("%s device n1 n2 ... activate partitions n1 ..., inactivate the rest\n"),
 	   progn);
-    printf(_
-	   ("%s -An device	 activate partition n, inactivate the other ones\n"),
+    printf(_("%s -An device	 activate partition n, inactivate the other ones\n"),
 	   PROGNAME);
     exit(1);
 }
@@ -3040,8 +3017,7 @@ do_activate(char **av, int ac, char *arg) {
 	if (z->partitions[pno].p.bootable)
 	    i++;
     if (i != 1)
-	my_warn(_
-		("You have %d active primary partitions. This does not matter for LILO,\n"
+	my_warn(_("You have %d active primary partitions. This does not matter for LILO,\n"
 		 "but the DOS MBR will only boot a disk with 1 active partition.\n"),
 		i);
 
@@ -3167,10 +3143,9 @@ do_fdisk(char *dev) {
     if (!no_write && !no_reread) {
 	my_warn(_("Checking that no-one is using this disk right now ...\n"));
 	if (reread_ioctl(fd)) {
-	    do_warn(_
-		    ("\nThis disk is currently in use - repartitioning is probably a bad idea.\n"
-		     "Umount all file systems, and swapoff all swap partitions on this disk.\n"
-		     "Use the --no-reread flag to suppress this check.\n"));
+	    do_warn(_("\nThis disk is currently in use - repartitioning is probably a bad idea.\n"
+		      "Umount all file systems, and swapoff all swap partitions on this disk.\n"
+		      "Use the --no-reread flag to suppress this check.\n"));
 	    if (!force) {
 		do_warn(_("Use the --force flag to overrule all checks.\n"));
 		exit(1);
@@ -3205,8 +3180,7 @@ do_fdisk(char *dev) {
 		fatal(_("I don't like these partitions - nothing changed.\n"
 			"(If you really want this, use the --force option.)\n"));
 	    else
-		do_warn(_
-			("I don't like this - probably you should answer No\n"));
+		do_warn(_("I don't like this - probably you should answer No\n"));
 	}
  ask:
 	if (interactive) {
@@ -3241,10 +3215,9 @@ do_fdisk(char *dev) {
     if (!reread_disk_partition(dev, fd))
 	exit_status = 1;
 
-    my_warn(_
-	    ("If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
-	     "to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
-	     "(See fdisk(8).)\n"));
+    my_warn(_("If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)\n"
+	      "to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1\n"
+	      "(See fdisk(8).)\n"));
 
     sync();			/* superstition */
     exit(exit_status);
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: 0006-ul-in-usage-not-overwriting-but-overriding-is-meant.patch --]
[-- Type: text/x-patch; name="0006-ul-in-usage-not-overwriting-but-overriding-is-meant.patch", Size: 1060 bytes --]

From 5776dd6bcb05f4e2a666608ac2608cf123c3c15f Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:04:42 +0200
Subject: [PATCH 06/17] ul: in usage() not overwriting but overriding is meant

Also always use lowercase.

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 text-utils/ul.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/text-utils/ul.c b/text-utils/ul.c
index 1cbacfc..9e08bc1 100644
--- a/text-utils/ul.c
+++ b/text-utils/ul.c
@@ -137,8 +137,8 @@ usage(FILE *out)
 
 	fprintf(out, _(
 		"\nOptions:\n"
-		" -t, --terminal TERMINAL    overwrite TERM environment variable\n"
-		" -i, --indicated            Underlining is indicated by a separate line\n"
+		" -t, --terminal TERMINAL    override the TERM environment variable\n"
+		" -i, --indicated            underlining is indicated via a separate line\n"
 		" -V, --version              output version information and exit\n"
 		" -h, --help                 display this help and exit\n\n"));
 
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: 0007-ul-make-usage-say-that-more-than-one-input-file-is-a.patch --]
[-- Type: text/x-patch; name="0007-ul-make-usage-say-that-more-than-one-input-file-is-a.patch", Size: 757 bytes --]

From 88f0d378e8ed1474bce2a16f0b7269576dc6a66e Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:06:07 +0200
Subject: [PATCH 07/17] ul: make usage() say that more than one input file is allowed

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 text-utils/ul.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/text-utils/ul.c b/text-utils/ul.c
index 9e08bc1..a52000b 100644
--- a/text-utils/ul.c
+++ b/text-utils/ul.c
@@ -133,7 +133,7 @@ usage(FILE *out)
 {
 	fprintf(out, _(
 		"\nUsage:\n"
-		" %s [options] [file]\n"), program_invocation_short_name);
+		" %s [options] [file...]\n"), program_invocation_short_name);
 
 	fprintf(out, _(
 		"\nOptions:\n"
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #9: 0008-ul-add-h-and-V-to-the-man-page-use-file-and-lowercas.patch --]
[-- Type: text/x-patch; name="0008-ul-add-h-and-V-to-the-man-page-use-file-and-lowercas.patch", Size: 1486 bytes --]

From fd4c3ccf8b3b9ca9b6f134fb297e5fe90e3a78c0 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:07:13 +0200
Subject: [PATCH 08/17] ul: add -h and -V to the man page; use "file" and lowercase

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 text-utils/ul.1 |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/text-utils/ul.1 b/text-utils/ul.1
index 7d4e57a..7992d72 100644
--- a/text-utils/ul.1
+++ b/text-utils/ul.1
@@ -39,11 +39,11 @@
 .Nd do underlining
 .Sh SYNOPSIS
 .Nm ul
-.Op Fl i
+.Op Fl hiV
 .Op Fl t Ar terminal
-.Op Ar name Ar ...
+.Op Ar file Ar ...
 .Sh DESCRIPTION
-.Nm Ul
+.Nm ul
 reads the named files (or standard input if none are given)
 and translates occurrences of underscores to the sequence
 which indicates underlining for the terminal in use, as specified
@@ -63,6 +63,8 @@ If the terminal cannot underline, underlining is ignored.
 .Pp
 The following options are available:
 .Bl -tag -width Ds
+.It Fl h
+Display a help text and exit.
 .It Fl i
 Underlining is indicated by a separate line containing appropriate
 dashes `\-'; this is useful when you want to look at the underlining
@@ -72,6 +74,8 @@ output stream on a crt-terminal.
 .It Fl t Ar terminal
 Overrides the terminal type specified in the environment with
 .Ar terminal .
+.It Fl V
+Display version information and exit.
 .El
 .Sh ENVIRONMENT
 The following environment variable is used:
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #10: 0009-ul-remove-superfluous-return-as-usage-does-not-retur.patch --]
[-- Type: text/x-patch; name="0009-ul-remove-superfluous-return-as-usage-does-not-retur.patch", Size: 873 bytes --]

From db67b9c1332a703b7071c2ff02db41b0e91819ef Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:10:29 +0200
Subject: [PATCH 09/17] ul: remove superfluous return as usage() does not return

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 text-utils/ul.c |    3 +--
 1 files changed, 1 insertions(+), 2 deletions(-)

diff --git a/text-utils/ul.c b/text-utils/ul.c
index a52000b..6132166 100644
--- a/text-utils/ul.c
+++ b/text-utils/ul.c
@@ -192,12 +192,11 @@ int main(int argc, char **argv)
 		case 'V':
 			printf(_("%s from %s\n"), program_invocation_short_name,
 						  PACKAGE_STRING);
-			return(EXIT_SUCCESS);
+			return EXIT_SUCCESS;
 		case 'h':
 			usage(stdout);
 		default:
 			usage(stderr);
-			return EXIT_FAILURE;
 		}
 	setupterm(termtype, STDOUT_FILENO, &ret);
 	switch (ret) {
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #11: 0010-tailf-harmonize-option-argument-and-explanation-in-u.patch --]
[-- Type: text/x-patch; name="0010-tailf-harmonize-option-argument-and-explanation-in-u.patch", Size: 986 bytes --]

From 372194ba12cb789f5e03e59b70dcc60461d9d386 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:11:45 +0200
Subject: [PATCH 10/17] tailf: harmonize option argument and explanation in usage message

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 text-utils/tailf.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/text-utils/tailf.c b/text-utils/tailf.c
index fbe81c8..c8f3e91 100644
--- a/text-utils/tailf.c
+++ b/text-utils/tailf.c
@@ -200,8 +200,8 @@ static void __attribute__ ((__noreturn__)) usage(FILE *out)
 
 	fprintf(out, _(
 		"\nOptions:\n"
-		" -n, --lines NUMBER  output the last N lines\n"
-		" -NUMBER             same as -n NUMBER\n"
+		" -n, --lines NUMBER  output the last NUMBER lines\n"
+		" -NUMBER             same as `-n NUMBER'\n"
 		" -V, --version       output version information and exit\n"
 		" -h, --help          display this help and exit\n\n"));
 
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #12: 0011-hexdump-fix-beginnin-typo-in-usage-message.patch --]
[-- Type: text/x-patch; name="0011-hexdump-fix-beginnin-typo-in-usage-message.patch", Size: 1098 bytes --]

From 68cbfe5ad7c2aadbabee083d156ebd5ed893b691 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:12:56 +0200
Subject: [PATCH 11/17] hexdump: fix "beginnin" typo in usage message

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 text-utils/hexsyntax.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/text-utils/hexsyntax.c b/text-utils/hexsyntax.c
index 211e5d5..5cdd1de 100644
--- a/text-utils/hexsyntax.c
+++ b/text-utils/hexsyntax.c
@@ -145,7 +145,7 @@ void __attribute__((__noreturn__)) usage(FILE *out)
 		       " -e format       format string to be used for displaying data\n"
 		       " -f format_file  file that contains format strings\n"
 		       " -n length       interpret only length bytes of input\n"
-		       " -s offset       skip offset bytes from the beginnin\n"
+		       " -s offset       skip offset bytes from the beginning\n"
 		       " -v              display without squeezing similar lines\n"
 		       " -V              output version information and exit\n\n"));
 
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #13: 0012-write-remove-inconsistent-periods-from-two-error-mes.patch --]
[-- Type: text/x-patch; name="0012-write-remove-inconsistent-periods-from-two-error-mes.patch", Size: 1097 bytes --]

From a592a8c71f020e3b44ca0f952de459cc94c39fdb Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:13:44 +0200
Subject: [PATCH 12/17] write: remove inconsistent periods from two error messages

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 term-utils/write.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/term-utils/write.c b/term-utils/write.c
index 8843362..b44f0e0 100644
--- a/term-utils/write.c
+++ b/term-utils/write.c
@@ -143,7 +143,7 @@ int main(int argc, char **argv)
 			exit(EXIT_FAILURE);
 		if (!msgsok)
 			errx(EXIT_FAILURE,
-			     _("you have write permission turned off."));
+			     _("you have write permission turned off"));
 
 	} else
 		mytty = "<no tty>";
@@ -161,7 +161,7 @@ int main(int argc, char **argv)
 			argv[2] += 5;
 		if (utmp_chk(argv[1], argv[2]))
 			errx(EXIT_FAILURE,
-			     _("%s is not logged in on %s."),
+			     _("%s is not logged in on %s"),
 			     argv[1], argv[2]);
 		if (term_chk(argv[2], &msgsok, &atime, 1))
 			exit(EXIT_FAILURE);
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #14: 0013-script-indicate-that-the-file-argument-to-timing-is-.patch --]
[-- Type: text/x-patch; name="0013-script-indicate-that-the-file-argument-to-timing-is-.patch", Size: 1521 bytes --]

From 215d39ef6686e02db8a5842e5051242763ba2bd6 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:21:17 +0200
Subject: [PATCH 13/17] script: indicate that the file argument to --timing is optional

Also improve some other descriptions in the usage message.

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 term-utils/script.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/term-utils/script.c b/term-utils/script.c
index 1f88253..deba155 100644
--- a/term-utils/script.c
+++ b/term-utils/script.c
@@ -133,13 +133,13 @@ usage(FILE *out)
 
 	fprintf(out, _(
 		"\nOptions:\n"
-		" -a, --append            append output\n"
-		" -c, --command COMMAND   run command rather than interactive shell\n"
+		" -a, --append            append the output\n"
+		" -c, --command COMMAND   run COMMAND rather than interactive shell\n"
 		" -r, --return            return exit code of the child process\n"
 		" -f, --flush             run flush after each write\n"
-		"     --force             use output file even it would be a link\n"
+		"     --force             use output file even when it is a link\n"
 		" -q, --quiet             be quiet\n"
-		" -t, --timing=FILE       output timing data to stderr, or to file\n"
+		" -t, --timing[=FILE]     output timing data to stderr (or to FILE)\n"
 		" -V, --version           output version information and exit\n"
 		" -h, --help              display this help and exit\n\n"));
 
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #15: 0014-scriptreplay-add-options-to-usage-and-timingfile-is-.patch --]
[-- Type: text/x-patch; name="0014-scriptreplay-add-options-to-usage-and-timingfile-is-.patch", Size: 870 bytes --]

From 498625334309e88b21acc859a24b986721b3d184 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:31:55 +0200
Subject: [PATCH 14/17] scriptreplay: add [options] to usage(), and timingfile is optional too

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 term-utils/scriptreplay.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/term-utils/scriptreplay.c b/term-utils/scriptreplay.c
index 86c82fd..d7fb031 100644
--- a/term-utils/scriptreplay.c
+++ b/term-utils/scriptreplay.c
@@ -36,7 +36,7 @@
 void __attribute__((__noreturn__))
 usage(FILE *out)
 {
-	fprintf(out, _("Usage: %s timingfile [typescript] [divisor]\n"),
+	fprintf(out, _("Usage: %s [options] [timingfile] [typescript] [divisor]\n"),
 			program_invocation_short_name);
 	fprintf(out, _(
 		"\nOptions:\n"
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #16: 0015-scriptreplay-improve-synopsis-and-formatting-in-man-.patch --]
[-- Type: text/x-patch; name="0015-scriptreplay-improve-synopsis-and-formatting-in-man-.patch", Size: 2215 bytes --]

From 8cf2b7aa035653cfc26226c275c412569447e492 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 21:46:13 +0200
Subject: [PATCH 15/17] scriptreplay: improve synopsis and formatting in man page

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 term-utils/scriptreplay.1 |   23 ++++++++++++-----------
 1 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/term-utils/scriptreplay.1 b/term-utils/scriptreplay.1
index 5610eb1..785d60e 100644
--- a/term-utils/scriptreplay.1
+++ b/term-utils/scriptreplay.1
@@ -145,9 +145,10 @@ scriptreplay \- play back typescripts, using timing information
 .SH "SYNOPSIS"
 .IX Header "SYNOPSIS"
 .B scriptreplay
-.I timingfile
-.RI [ typescript
-.RI [ divisor ]]
+.RI [ option ...]
+.RI [ timingfile ]
+.RI [ typescript ]
+.RI [ divisor ]
 .SH "DESCRIPTION"
 .IX Header "DESCRIPTION"
 This program replays a typescript, using timing information to ensure that
@@ -175,29 +176,29 @@ parameter.
 By default, the typescript to display is assumed to be named \*(L"typescript\*(R",
 but other filenames may be specified, as the second parameter.
 .PP
-If the third parameter is specified, it is used as a speed-up multiplier. For
-example, a speed-up of 2 makes
+If the third parameter is specified, it is used as a speed-up multiplier.
+For example, a speed-up of 2 makes
 .B scriptreplay
 go twice as fast and a speed-up of 0.1 makes it go ten times slower
 than the original session.
 .SH OPTIONS
 The options will overide old style arguments.
 .TP
-.BR \-t , " \-\-timing FILE"
+.BR \-t , " \-\-timing " \fIfile\fR
 File containing script timing output.
 .TP
-.BR \-s , " \-\-typescript FILE"
-Script terminal output file.
+.BR \-s , " \-\-typescript " \fIfile\fR
+File containing the script terminal output.
 .TP
-.BR \-d , " \-\-divisor NUM"
+.BR \-d , " \-\-divisor " \fInumber\fR
 Speed up or slow down replay displaying by divisor. The argument
 is floating point number.
 .TP
 .BR \-V , " \-\-version"
-Print version information.
+Display version information and exit.
 .TP
 .BR \-h , " \-\-help"
-Print a help message.
+Display a help message exit.
 .SH "EXAMPLE"
 .IX Header "EXAMPLE"
 .Vb 7
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #17: 0016-script-normalize-formatting-of-the-man-page.patch --]
[-- Type: text/x-patch; name="0016-script-normalize-formatting-of-the-man-page.patch", Size: 3344 bytes --]

From 97795839cc61476c6d0cba4351bb9a1c29491ec6 Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Wed, 10 Aug 2011 22:37:31 +0200
Subject: [PATCH 16/17] script: normalize formatting of the man page

Also improve the description of the --timing option,
and discard a then superfluous paragraph.

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 term-utils/script.1 |   37 ++++++++++++++++++-------------------
 1 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/term-utils/script.1 b/term-utils/script.1
index f618ec3..5f96b9c 100644
--- a/term-utils/script.1
+++ b/term-utils/script.1
@@ -40,16 +40,16 @@
 .Sh SYNOPSIS
 .Nm script
 .Op Fl a
-.Op Fl c Ar COMMAND
+.Op Fl c Ar command
 .Op Fl e
 .Op Fl f
 .Op Fl q
-.Op Fl t[=FILE]
+.Op Fl t Ns Op Ns = Ns Ar file
 .Op Fl V
 .Op Fl h
 .Op Ar file
 .Sh DESCRIPTION
-.Nm Script
+.Nm script
 makes a typescript of everything printed on your terminal.
 It is useful for students who need a hardcopy record of an interactive
 session as proof of an assignment, as the typescript file 
@@ -73,32 +73,31 @@ Append the output to
 or
 .Pa typescript ,
 retaining the prior contents.
-.It Fl c, Fl Fl command Ar COMMAND
-Run the COMMAND rather than an interactive shell.
+.It Fl c, Fl Fl command Ar command
+Run the
+.Ar command
+rather than an interactive shell.
 This makes it easy for a script to capture the output of a program that
 behaves differently when its stdout is not a tty.
 .It Fl e, Fl Fl return
-Return the exit code of the child process. Uses the same format as bash
+Return the exit code of the child process.  Uses the same format as bash
 termination on signal termination exit code is 128+n.
 .It Fl f, Fl Fl flush
-Flush output after each write. This is nice for telecooperation:
-One person does `mkfifo foo; script -f foo' and another can
+Flush output after each write.  This is nice for telecooperation:
+one person does `mkfifo foo; script -f foo', and another can
 supervise real-time what is being done using `cat foo'.
 .It Fl Fl force
-Allow default output destination, e.g. typescript file, to be
-hard or symbolic link. The command will follow symbolic link.
+Allow the default output destination, i.e. the typescript file, to be a
+hard or symbolic link.  The command will follow a symbolic link.
 .It Fl q, Fl Fl quiet
 Be quiet.
-.It Fl t, Fl Fl timing[=FILE]
-Output timing data to standard error. This data contains two fields,
-separated by a space. The first field indicates how much time elapsed since
-the previous output. The second field indicates how many characters were
-output this time. This information can be used to replay typescripts with
+.It Fl t, Fl Fl timing Ns Op Ns = Ns Ar file
+Output timing data to standard error, or to \fIfile\fR when given.
+This data contains two fields, separated by a space.
+The first field indicates how much time elapsed since the previous output.
+The second field indicates how many characters were output this time.
+This information can be used to replay typescripts with
 realistic typing and output delays.
-
-The timing option is able to take file path as an argument. The
-file is used as output detination instead of standard error when
-it is supplied.
 .It Fl V, Fl Fl version
 Output version information and exit.
 .It Fl h, Fl Fl help
-- 
1.7.0.4


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #18: 0017-sfdisk-correct-inside-order-to-inside-outer-in-docum.patch --]
[-- Type: text/x-patch; name="0017-sfdisk-correct-inside-order-to-inside-outer-in-docum.patch", Size: 1801 bytes --]

From 43dd49413578c384a059ba7c0ffcad60dab718ed Mon Sep 17 00:00:00 2001
From: Benno Schulenberg <bensberg@justemail.net>
Date: Thu, 11 Aug 2011 21:47:15 +0200
Subject: [PATCH 17/17] sfdisk: correct '--inside-order' to '--inside-outer' in documentation

Signed-off-by: Benno Schulenberg <bensberg@justemail.net>
---
 fdisk/sfdisk.8 |    4 ++--
 fdisk/sfdisk.c |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/fdisk/sfdisk.8 b/fdisk/sfdisk.8
index c3f06b3..02e8d11 100644
--- a/fdisk/sfdisk.8
+++ b/fdisk/sfdisk.8
@@ -322,10 +322,10 @@ Caution, see warning section. To be documented.
 .B \-\-not\-in\-order
 Caution, see warning section. To be documented.
 .TP
-.B \-\-inside\-order
+.B \-\-inside\-outer
 Caution, see warning section. Chaining order.
 .TP
-.B \-\-not\-inside\-order
+.B \-\-not\-inside\-outer
 Caution, see warning section. Chaining order.
 .TP
 .B \-\-nested
diff --git a/fdisk/sfdisk.c b/fdisk/sfdisk.c
index cd494d0..08e1b0c 100644
--- a/fdisk/sfdisk.c
+++ b/fdisk/sfdisk.c
@@ -2368,8 +2368,8 @@ usage(FILE * out) {
 		   "      --IBM               same as --leave-last\n"
 		   "      --in-order          partitions are in order\n"
 		   "      --not-in-order      partitions are not in order\n"
-		   "      --inside-order      all logicals inside outermost extended\n"
-		   "      --not-inside-order  not all logicals inside outermost extended\n"
+		   "      --inside-outer      all logicals inside outermost extended\n"
+		   "      --not-inside-outer  not all logicals inside outermost extended\n"
 		   "      --nested            every partition is disjoint from all others\n"
 		   "      --chained           like nested, but extended partitions may lie outside\n"
 		   "      --onesector         partitions are mutually disjoint\n"
-- 
1.7.0.4


^ permalink raw reply related

* Re: mkswap fails to use more than 2GiB and doesn't recognize LVM
From: Florian Pritz @ 2011-08-11 18:52 UTC (permalink / raw)
  To: util-linux
In-Reply-To: <20110811181454.GD32051@nb.net.home>

[-- Attachment #1: Type: text/plain, Size: 407 bytes --]

On 11.08.2011 20:14, Karel Zak wrote:
>> busybox mkswap crates the expected 8GiB swap, so I think this is a bug.
> 
>  Do you see see 8GiB swap area in /proc/swaps after swapon? I don't
>  think so...

> cat /proc/swaps
Filename                                Type            Size    Used
Priority
/dev/dm-4                               partition       8388604 0       -1

-- 
Florian Pritz


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* Re: mkswap fails to use more than 2GiB and doesn't recognize LVM
From: Karel Zak @ 2011-08-11 18:14 UTC (permalink / raw)
  To: Florian Pritz; +Cc: util-linux
In-Reply-To: <4E43F629.6040408@xinu.at>

On Thu, Aug 11, 2011 at 05:32:57PM +0200, Florian Pritz wrote:
> mkswap displays the following output when trying to create swap on a
> 8GiB logical volume.
> > # mkswap /dev/mapper/vg_brynhild-swap
> > mkswap: warning: truncating swap area to 2097144 KiB

 It seems correct. The swap header does not allow to address more than
 UINT_MAX pages. You have to create more swap areas or use system with
 bigger pages.

> > mkswap: /dev/mapper/vg_brynhild-swap: warning: don't erase bootbits sectors
> >         on whole disk. Use -f to force.
> > Setting up swapspace version 1, size = 2097140 KiB
> > no label, UUID=5eae2d8b-f664-46f5-983c-bdcd4301fa66
> 
> I tried adding -p 8589934592 to force 8GiB, but that doesn't change
> anything.

 :-)

> busybox mkswap crates the expected 8GiB swap, so I think this is a bug.

 Do you see see 8GiB swap area in /proc/swaps after swapon? I don't
 think so...

    Karel

-- 
 Karel Zak  <kzak@redhat.com>
 http://karelzak.blogspot.com

^ permalink raw reply

* mkswap fails to use more than 2GiB and doesn't recognize LVM
From: Florian Pritz @ 2011-08-11 15:32 UTC (permalink / raw)
  To: util-linux

[-- Attachment #1: Type: text/plain, Size: 799 bytes --]

Hi,

I'm running util-linux 2.19.1 with a x86_64 linux 3.0.1 on Arch Linux.

mkswap displays the following output when trying to create swap on a
8GiB logical volume.
> # mkswap /dev/mapper/vg_brynhild-swap
> mkswap: warning: truncating swap area to 2097144 KiB
> mkswap: /dev/mapper/vg_brynhild-swap: warning: don't erase bootbits sectors
>         on whole disk. Use -f to force.
> Setting up swapspace version 1, size = 2097140 KiB
> no label, UUID=5eae2d8b-f664-46f5-983c-bdcd4301fa66

I tried adding -p 8589934592 to force 8GiB, but that doesn't change
anything.

It also fails to see that we are using LVM so this is not a real device
and we won't overwrite any boot sectors.

busybox mkswap crates the expected 8GiB swap, so I think this is a bug.

-- 
Florian Pritz


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply

* [PATCH] hexdump: fix segfault due to uninitialized memory
From: Petr Uzel @ 2011-08-10 13:32 UTC (permalink / raw)
  To: util-linux

[-- Attachment #1: Type: text/plain, Size: 1875 bytes --]

util-linux commit 85bf44b714ab184907eb448eba389218956d6a51
replaced all calls to emalloc() with xmalloc(), whose semantics
is however different - it does not zero allocated memory. This
made hexdump segfault if MALLOC_PERTURB_ was set.

Reported-by: Kyrill Detinov <lazy.kent@opensuse.org>
Addresses: https://bugzilla.novell.com/show_bug.cgi?id=710877

Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
---
 text-utils/display.c |    4 ++--
 text-utils/parse.c   |    6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/text-utils/display.c b/text-utils/display.c
index c700b02..ad638e7 100644
--- a/text-utils/display.c
+++ b/text-utils/display.c
@@ -233,8 +233,8 @@ get(void)
 	u_char *tmpp;
 
 	if (!curp) {
-		curp = xmalloc(blocksize);
-		savp = xmalloc(blocksize);
+		curp = xcalloc(1, blocksize);
+		savp = xcalloc(1, blocksize);
 	} else {
 		tmpp = curp;
 		curp = savp;
diff --git a/text-utils/parse.c b/text-utils/parse.c
index 7168aad..e41b4a0 100644
--- a/text-utils/parse.c
+++ b/text-utils/parse.c
@@ -86,7 +86,7 @@ void add(const char *fmt)
 	const char *savep;
 
 	/* Start new linked list of format units. */
-	tfs = xmalloc(sizeof(FS));
+	tfs = xcalloc(1, sizeof(FS));
 	if (!fshead)
 		fshead = tfs;
 	else
@@ -102,7 +102,7 @@ void add(const char *fmt)
 			break;
 
 		/* Allocate a new format unit and link it in. */
-		tfu = xmalloc(sizeof(FU));
+		tfu = xcalloc(1, sizeof(FU));
 		*nextfu = tfu;
 		nextfu = &tfu->nextfu;
 		tfu->reps = 1;
@@ -219,7 +219,7 @@ void rewrite(FS *fs)
 		 * conversion character gets its own.
 		 */
 		for (nconv = 0, fmtp = fu->fmt; *fmtp; nextpr = &pr->nextpr) {
-			pr = xmalloc(sizeof(PR));
+			pr = xcalloc(1, sizeof(PR));
 			if (!fu->nextpr)
 				fu->nextpr = pr;
 			else
-- 
1.7.3.4


Petr

--
Petr Uzel
IRC: ptr_uzl @ freenode

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply related

* [PATCH] dmesg: avoid mess at the end of dmesg output
From: Petr Uzel @ 2011-08-10 12:16 UTC (permalink / raw)
  To: util-linux

[-- Attachment #1: Type: text/plain, Size: 1212 bytes --]

Since util-linux commit a7ee94f2204011f26232ed3133514bf6e0d4a62c,
dmesg incorrectly calculates number of bytes that are remaining in the
buffer in get_next_record(). This could, under specific circumstances,
cause printing mess at the end of dmesg output:

> dmesg | tail
[ 1191.478725] Adding 285488k swap on /root/swapfile.  Priority:-2 extents:15 across:1186612k
[ 1205.588331] Adding 285488k swap on /root/swapfile.  Priority:-2 extents:15 across:1186612k
\xffffffba\xffffffba

Reported-by: Glenn Doig <doiggl@velocitynet.com.au>
Addresses: https://bugzilla.novell.com/show_bug.cgi?id=710417

Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
---
 sys-utils/dmesg.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
index 94f8c11..705269d 100644
--- a/sys-utils/dmesg.c
+++ b/sys-utils/dmesg.c
@@ -494,6 +494,8 @@ static int get_next_record(struct dmesg_control *ctl, struct dmesg_record *rec)
 
 		rec->next_size -= end - rec->next;
 		rec->next = rec->next_size > 0 ? end + 1 : NULL;
+		if (rec->next_size > 0)
+			rec->next_size--;
 
 		return 0;
 	}
-- 
1.7.3.4


Petr

--
Petr Uzel
IRC: ptr_uzl @ freenode

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply related

* [PATCH] logger.1: use simple apostrophe instead of multibyte char
From: Petr Uzel @ 2011-08-10 11:46 UTC (permalink / raw)
  To: util-linux

[-- Attachment #1: Type: text/plain, Size: 789 bytes --]


Signed-off-by: Petr Uzel <petr.uzel@suse.cz>
---
 misc-utils/logger.1 |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/misc-utils/logger.1 b/misc-utils/logger.1
index 4312551..c5f8424 100644
--- a/misc-utils/logger.1
+++ b/misc-utils/logger.1
@@ -110,7 +110,7 @@ The
 utility exits 0 on success, and >0 if an error occurs.
 .Pp
 Valid facility names are: auth, authpriv (for security information of a
-sensitive nature), cron, daemon, ftp, kern (can’t be generated from user
+sensitive nature), cron, daemon, ftp, kern (can't be generated from user
 process), lpr, mail, news, security (deprecated synonym for auth), syslog,
 user, uucp, and local0 to local7, inclusive.
 .Pp
-- 
1.7.3.4


Petr

--
Petr Uzel
IRC: ptr_uzl @ freenode

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply related

* [patch 8/8] [PATCH] lscpu: add physical cpu address to parseable output
From: Heiko Carstens @ 2011-08-10  8:36 UTC (permalink / raw)
  To: Karel Zak; +Cc: util-linux, Heiko Carstens
In-Reply-To: <20110810083645.135814950@de.ibm.com>

From: Heiko Carstens <heiko.carstens@de.ibm.com>

Print also the physical cpu address for each logical cpu in parsable
output if selected and present via sysfs.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
---
 sys-utils/lscpu.1 |    5 +++--
 sys-utils/lscpu.c |   22 ++++++++++++++++++++--
 2 files changed, 23 insertions(+), 4 deletions(-)

--- a/sys-utils/lscpu.1
+++ b/sys-utils/lscpu.1
@@ -32,8 +32,9 @@ separate CPU cache columns. If no CPU ca
 columns are not printed at all.
 
 The \fIlist\fP argument is comma delimited list of the columns. Currently
-supported are CPU, Core, Node, Socket, Book, Cache and Polarization columns. If the
-\fIlist\fP argument is given then always all requested columns are printed in
+supported are CPU, Core, Node, Socket, Book, Cache, Polarization and Address
+columns.
+If the \fIlist\fP argument is given then always all requested columns are printed in
 the defined order. The Cache columns are separated by ':'.
 
 Note that the optional \fIlist\fP argument cannot be separated from the
--- a/sys-utils/lscpu.c
+++ b/sys-utils/lscpu.c
@@ -168,6 +168,7 @@ struct lscpu_desc {
 	struct cpu_cache *caches;
 
 	int		*polarization;	/* cpu polarization */
+	int		*addresses;	/* physical cpu addresses */
 };
 
 static size_t sysrootlen;
@@ -199,7 +200,8 @@ enum {
 	COL_NODE,
 	COL_BOOK,
 	COL_CACHE,
-	COL_POLARIZATION
+	COL_POLARIZATION,
+	COL_ADDRESS
 };
 
 static const char *colnames[] =
@@ -210,7 +212,8 @@ static const char *colnames[] =
 	[COL_NODE] = "Node",
 	[COL_BOOK] = "Book",
 	[COL_CACHE] = "Cache",
-	[COL_POLARIZATION] = "Polarization"
+	[COL_POLARIZATION] = "Polarization",
+	[COL_ADDRESS] = "Address"
 };
 
 
@@ -762,6 +765,16 @@ read_polarization(struct lscpu_desc *des
 		desc->polarization[num] = POLAR_UNKNOWN;
 }
 
+static void
+read_address(struct lscpu_desc *desc, int num)
+{
+	if (!path_exist(_PATH_SYS_CPU "/cpu%d/address", num))
+		return;
+	if (!desc->addresses)
+		desc->addresses = xcalloc(desc->ncpus, sizeof(int));
+	desc->addresses[num] = path_getnum(_PATH_SYS_CPU "/cpu%d/address", num);
+}
+
 static int
 cachecmp(const void *a, const void *b)
 {
@@ -916,6 +929,10 @@ print_parsable_cell(struct lscpu_desc *d
 		if (desc->polarization)
 			printf("%s", polar_modes[desc->polarization[i]]);
 		break;
+	case COL_ADDRESS:
+		if (desc->addresses)
+			printf("%d", desc->addresses[i]);
+		break;
 	}
 }
 
@@ -1230,6 +1247,7 @@ int main(int argc, char *argv[])
 		read_topology(desc, i);
 		read_cache(desc, i);
 		read_polarization(desc, i);
+		read_address(desc, i);
 	}
 
 	qsort(desc->caches, desc->ncaches, sizeof(struct cpu_cache), cachecmp);

^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox