Date: Monday, December 12, 2016 @ 13:17:53
  Author: dreisner
Revision: 283057

archrelease: copy trunk to testing-i686, testing-x86_64

Added:
  util-linux/repos/testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch
    (from rev 283056, 
util-linux/trunk/0001-chrt-default-to-SCHED_RR-policy.patch)
  
util-linux/repos/testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
    (from rev 283056, 
util-linux/trunk/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch)
  util-linux/repos/testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch
    (from rev 283056, 
util-linux/trunk/0001-sfdisk-cleanup-dump-error-messages.patch)
  
util-linux/repos/testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
    (from rev 283056, 
util-linux/trunk/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch)
  util-linux/repos/testing-i686/0001-sfdisk-support-empty-label-use-case.patch
    (from rev 283056, 
util-linux/trunk/0001-sfdisk-support-empty-label-use-case.patch)
  util-linux/repos/testing-i686/PKGBUILD
    (from rev 283056, util-linux/trunk/PKGBUILD)
  util-linux/repos/testing-i686/pam-common
    (from rev 283056, util-linux/trunk/pam-common)
  util-linux/repos/testing-i686/pam-login
    (from rev 283056, util-linux/trunk/pam-login)
  util-linux/repos/testing-i686/pam-su
    (from rev 283056, util-linux/trunk/pam-su)
  util-linux/repos/testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch
    (from rev 283056, 
util-linux/trunk/0001-chrt-default-to-SCHED_RR-policy.patch)
  
util-linux/repos/testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
    (from rev 283056, 
util-linux/trunk/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch)
  util-linux/repos/testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch
    (from rev 283056, 
util-linux/trunk/0001-sfdisk-cleanup-dump-error-messages.patch)
  
util-linux/repos/testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
    (from rev 283056, 
util-linux/trunk/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch)
  util-linux/repos/testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch
    (from rev 283056, 
util-linux/trunk/0001-sfdisk-support-empty-label-use-case.patch)
  util-linux/repos/testing-x86_64/PKGBUILD
    (from rev 283056, util-linux/trunk/PKGBUILD)
  util-linux/repos/testing-x86_64/pam-common
    (from rev 283056, util-linux/trunk/pam-common)
  util-linux/repos/testing-x86_64/pam-login
    (from rev 283056, util-linux/trunk/pam-login)
  util-linux/repos/testing-x86_64/pam-su
    (from rev 283056, util-linux/trunk/pam-su)
Deleted:
  util-linux/repos/testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch
  
util-linux/repos/testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
  util-linux/repos/testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch
  
util-linux/repos/testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
  util-linux/repos/testing-i686/0001-sfdisk-support-empty-label-use-case.patch
  util-linux/repos/testing-i686/PKGBUILD
  util-linux/repos/testing-i686/pam-common
  util-linux/repos/testing-i686/pam-login
  util-linux/repos/testing-i686/pam-su
  util-linux/repos/testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch
  
util-linux/repos/testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
  util-linux/repos/testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch
  
util-linux/repos/testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
  util-linux/repos/testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch
  util-linux/repos/testing-x86_64/PKGBUILD
  util-linux/repos/testing-x86_64/pam-common
  util-linux/repos/testing-x86_64/pam-login
  util-linux/repos/testing-x86_64/pam-su

--------------------------------------------------------------------------------+
 /0001-chrt-default-to-SCHED_RR-policy.patch                                    
|   78 +
 /0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch               
|  158 +++
 /0001-sfdisk-cleanup-dump-error-messages.patch                                 
|   88 +
 /0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch               
|  140 +++
 /0001-sfdisk-support-empty-label-use-case.patch                                
|  446 ++++++++++
 /PKGBUILD                                                                      
|  234 +++++
 /pam-common                                                                    
|   12 
 /pam-login                                                                     
|   14 
 /pam-su                                                                        
|   18 
 testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch                        
|   39 
 testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch   
|   79 -
 testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch                     
|   44 
 testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch   
|   70 -
 testing-i686/0001-sfdisk-support-empty-label-use-case.patch                    
|  223 -----
 testing-i686/PKGBUILD                                                          
|  112 --
 testing-i686/pam-common                                                        
|    6 
 testing-i686/pam-login                                                         
|    7 
 testing-i686/pam-su                                                            
|    9 
 testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch                      
|   39 
 testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch 
|   79 -
 testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch                   
|   44 
 testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch 
|   70 -
 testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch                  
|  223 -----
 testing-x86_64/PKGBUILD                                                        
|  112 --
 testing-x86_64/pam-common                                                      
|    6 
 testing-x86_64/pam-login                                                       
|    7 
 testing-x86_64/pam-su                                                          
|    9 
 27 files changed, 1188 insertions(+), 1178 deletions(-)

Deleted: testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch
===================================================================
--- testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch     2016-12-12 
13:16:52 UTC (rev 283056)
+++ testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch     2016-12-12 
13:17:53 UTC (rev 283057)
@@ -1,39 +0,0 @@
-From c7adc2f204f19167f781fa2ee739e0ca386fc4f5 Mon Sep 17 00:00:00 2001
-From: Andreas Henriksson <andr...@fatal.se>
-Date: Fri, 2 Dec 2016 15:10:18 +0100
-Subject: [PATCH] chrt: default to SCHED_RR policy
-
-This fixes a regression introduced in:
-
-commit 7a4ea5664edba98bff28adec3a9c3cfb5763a495
-"chrt: add control struct"
-
-Previously (and as documented in the manpage) the default policy
-was SCHED_RR. Now it's implicitly SCHED_OTHER (0) as the value
-is not initialized explicitly anymore.
-
-Test-command: chrt 90 echo hello
-
-Reported-by: Patrick Pelissier <patrick.peliss...@gmail.com>
-Addresses: http://bugs.debian.org/846572
-Signed-off-by: Andreas Henriksson <andr...@fatal.se>
----
- schedutils/chrt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/schedutils/chrt.c b/schedutils/chrt.c
-index a861d9f..73d1ffa 100644
---- a/schedutils/chrt.c
-+++ b/schedutils/chrt.c
-@@ -409,7 +409,7 @@ static void set_sched(struct chrt_ctl *ctl)
- 
- int main(int argc, char **argv)
- {
--      struct chrt_ctl _ctl = { .pid = -1 }, *ctl = &_ctl;
-+      struct chrt_ctl _ctl = { .pid = -1, .policy = SCHED_RR }, *ctl = &_ctl;
-       int c;
- 
-       static const struct option longopts[] = {
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch (from 
rev 283056, util-linux/trunk/0001-chrt-default-to-SCHED_RR-policy.patch)
===================================================================
--- testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch                     
        (rev 0)
+++ testing-i686/0001-chrt-default-to-SCHED_RR-policy.patch     2016-12-12 
13:17:53 UTC (rev 283057)
@@ -0,0 +1,39 @@
+From c7adc2f204f19167f781fa2ee739e0ca386fc4f5 Mon Sep 17 00:00:00 2001
+From: Andreas Henriksson <andr...@fatal.se>
+Date: Fri, 2 Dec 2016 15:10:18 +0100
+Subject: [PATCH] chrt: default to SCHED_RR policy
+
+This fixes a regression introduced in:
+
+commit 7a4ea5664edba98bff28adec3a9c3cfb5763a495
+"chrt: add control struct"
+
+Previously (and as documented in the manpage) the default policy
+was SCHED_RR. Now it's implicitly SCHED_OTHER (0) as the value
+is not initialized explicitly anymore.
+
+Test-command: chrt 90 echo hello
+
+Reported-by: Patrick Pelissier <patrick.peliss...@gmail.com>
+Addresses: http://bugs.debian.org/846572
+Signed-off-by: Andreas Henriksson <andr...@fatal.se>
+---
+ schedutils/chrt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/schedutils/chrt.c b/schedutils/chrt.c
+index a861d9f..73d1ffa 100644
+--- a/schedutils/chrt.c
++++ b/schedutils/chrt.c
+@@ -409,7 +409,7 @@ static void set_sched(struct chrt_ctl *ctl)
+ 
+ int main(int argc, char **argv)
+ {
+-      struct chrt_ctl _ctl = { .pid = -1 }, *ctl = &_ctl;
++      struct chrt_ctl _ctl = { .pid = -1, .policy = SCHED_RR }, *ctl = &_ctl;
+       int c;
+ 
+       static const struct option longopts[] = {
+-- 
+2.10.2
+

Deleted: 
testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
===================================================================
--- 
testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch    
    2016-12-12 13:16:52 UTC (rev 283056)
+++ 
testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch    
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,79 +0,0 @@
-From 3fcbd7978980dc1a29c626b701333e27599e506d Mon Sep 17 00:00:00 2001
-From: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
-Date: Wed, 23 Nov 2016 14:13:34 +0900
-Subject: [PATCH] lsns: Fix parser for /proc/<pid>/stat which is including
- space in comm
-
-For example, child process of spamd has
-
-    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
-
-fscanf("%d %*s %c %d*[^\n]") in read_process() can't parse above as we
-expected, because %s only skips non-whitespace. I.e. it parses like
-following,
-
-    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
-    +---+ +----+ +
-      %d    %*s  %c
-
-and returns 2 (pid=32031, state=c).
-
-This fixes it by skipping task->comm part manually.
-
-Signed-off-by: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
----
- sys-utils/lsns.c | 30 ++++++++++++++++++++++++++----
- 1 file changed, 26 insertions(+), 4 deletions(-)
-
-diff --git a/sys-utils/lsns.c b/sys-utils/lsns.c
-index e4fd208..809737c 100644
---- a/sys-utils/lsns.c
-+++ b/sys-utils/lsns.c
-@@ -217,6 +217,30 @@ static int get_ns_ino(int dir, const char *nsname, ino_t 
*ino)
-       return 0;
- }
- 
-+static int parse_proc_stat(FILE *fp, pid_t *pid, char *state, pid_t *ppid)
-+{
-+      char *line = NULL, *p;
-+      size_t len = 0;
-+      int rc;
-+
-+      if (getline(&line, &len, fp) < 0) {
-+              rc = -errno;
-+              goto error;
-+      }
-+
-+      p = strrchr(line, ')');
-+      if (p == NULL ||
-+          sscanf(line, "%d (", pid) != 1 ||
-+          sscanf(p, ") %c %d*[^\n]", state, ppid) != 2) {
-+              rc = -EINVAL;
-+              goto error;
-+      }
-+      rc = 0;
-+
-+error:
-+      free(line);
-+      return rc;
-+}
- 
- static int read_process(struct lsns *ls, pid_t pid)
- {
-@@ -255,11 +279,9 @@ static int read_process(struct lsns *ls, pid_t pid)
-               rc = -errno;
-               goto done;
-       }
--      rc = fscanf(f, "%d %*s %c %d*[^\n]", &p->pid, &p->state, &p->ppid);
--      if (rc != 3) {
--              rc = rc < 0 ? -errno : -EINVAL;
-+      rc = parse_proc_stat(f, &p->pid, &p->state, &p->ppid);
-+      if (rc < 0)
-               goto done;
--      }
-       rc = 0;
- 
-       for (i = 0; i < ARRAY_SIZE(p->ns_ids); i++) {
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
 (from rev 283056, 
util-linux/trunk/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch)
===================================================================
--- 
testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch    
                            (rev 0)
+++ 
testing-i686/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch    
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,79 @@
+From 3fcbd7978980dc1a29c626b701333e27599e506d Mon Sep 17 00:00:00 2001
+From: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
+Date: Wed, 23 Nov 2016 14:13:34 +0900
+Subject: [PATCH] lsns: Fix parser for /proc/<pid>/stat which is including
+ space in comm
+
+For example, child process of spamd has
+
+    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
+
+fscanf("%d %*s %c %d*[^\n]") in read_process() can't parse above as we
+expected, because %s only skips non-whitespace. I.e. it parses like
+following,
+
+    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
+    +---+ +----+ +
+      %d    %*s  %c
+
+and returns 2 (pid=32031, state=c).
+
+This fixes it by skipping task->comm part manually.
+
+Signed-off-by: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
+---
+ sys-utils/lsns.c | 30 ++++++++++++++++++++++++++----
+ 1 file changed, 26 insertions(+), 4 deletions(-)
+
+diff --git a/sys-utils/lsns.c b/sys-utils/lsns.c
+index e4fd208..809737c 100644
+--- a/sys-utils/lsns.c
++++ b/sys-utils/lsns.c
+@@ -217,6 +217,30 @@ static int get_ns_ino(int dir, const char *nsname, ino_t 
*ino)
+       return 0;
+ }
+ 
++static int parse_proc_stat(FILE *fp, pid_t *pid, char *state, pid_t *ppid)
++{
++      char *line = NULL, *p;
++      size_t len = 0;
++      int rc;
++
++      if (getline(&line, &len, fp) < 0) {
++              rc = -errno;
++              goto error;
++      }
++
++      p = strrchr(line, ')');
++      if (p == NULL ||
++          sscanf(line, "%d (", pid) != 1 ||
++          sscanf(p, ") %c %d*[^\n]", state, ppid) != 2) {
++              rc = -EINVAL;
++              goto error;
++      }
++      rc = 0;
++
++error:
++      free(line);
++      return rc;
++}
+ 
+ static int read_process(struct lsns *ls, pid_t pid)
+ {
+@@ -255,11 +279,9 @@ static int read_process(struct lsns *ls, pid_t pid)
+               rc = -errno;
+               goto done;
+       }
+-      rc = fscanf(f, "%d %*s %c %d*[^\n]", &p->pid, &p->state, &p->ppid);
+-      if (rc != 3) {
+-              rc = rc < 0 ? -errno : -EINVAL;
++      rc = parse_proc_stat(f, &p->pid, &p->state, &p->ppid);
++      if (rc < 0)
+               goto done;
+-      }
+       rc = 0;
+ 
+       for (i = 0; i < ARRAY_SIZE(p->ns_ids); i++) {
+-- 
+2.10.2
+

Deleted: testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch
===================================================================
--- testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch  2016-12-12 
13:16:52 UTC (rev 283056)
+++ testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch  2016-12-12 
13:17:53 UTC (rev 283057)
@@ -1,44 +0,0 @@
-From c49b765a6e9031642e2bb846e93dddc6827e4b28 Mon Sep 17 00:00:00 2001
-From: Karel Zak <k...@redhat.com>
-Date: Wed, 30 Nov 2016 10:53:56 +0100
-Subject: [PATCH] sfdisk: cleanup --dump error messages
-
-old:
-  # truncate -s 1G empty && ./sfdisk --dump empty
-  sfdisk: failed to dump partition table: Success
-
-new:
-  # truncate -s 1G empty && ./sfdisk --dump empty
-  sfdisk: empty: does not contain a recognized partition table.
-
-Addresses: https://github.com/karelzak/util-linux/issues/375
-Signed-off-by: Karel Zak <k...@redhat.com>
----
- disk-utils/sfdisk.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
-index 0f69d65..10307ad 100644
---- a/disk-utils/sfdisk.c
-+++ b/disk-utils/sfdisk.c
-@@ -950,13 +950,16 @@ static int command_dump(struct sfdisk *sf, int argc, 
char **argv)
-       if (rc)
-               err(EXIT_FAILURE, _("cannot open %s"), devname);
- 
-+      if (!fdisk_has_label(sf->cxt))
-+              errx(EXIT_FAILURE, _("%s: does not contain a recognized 
partition table"), devname);
-+
-       dp = fdisk_new_script(sf->cxt);
-       if (!dp)
-               err(EXIT_FAILURE, _("failed to allocate dump struct"));
- 
-       rc = fdisk_script_read_context(dp, NULL);
-       if (rc)
--              err(EXIT_FAILURE, _("failed to dump partition table"));
-+              errx(EXIT_FAILURE, _("%s: failed to dump partition table"), 
devname);
- 
-       if (sf->json)
-               fdisk_script_enable_json(dp, 1);
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch 
(from rev 283056, 
util-linux/trunk/0001-sfdisk-cleanup-dump-error-messages.patch)
===================================================================
--- testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch                  
        (rev 0)
+++ testing-i686/0001-sfdisk-cleanup-dump-error-messages.patch  2016-12-12 
13:17:53 UTC (rev 283057)
@@ -0,0 +1,44 @@
+From c49b765a6e9031642e2bb846e93dddc6827e4b28 Mon Sep 17 00:00:00 2001
+From: Karel Zak <k...@redhat.com>
+Date: Wed, 30 Nov 2016 10:53:56 +0100
+Subject: [PATCH] sfdisk: cleanup --dump error messages
+
+old:
+  # truncate -s 1G empty && ./sfdisk --dump empty
+  sfdisk: failed to dump partition table: Success
+
+new:
+  # truncate -s 1G empty && ./sfdisk --dump empty
+  sfdisk: empty: does not contain a recognized partition table.
+
+Addresses: https://github.com/karelzak/util-linux/issues/375
+Signed-off-by: Karel Zak <k...@redhat.com>
+---
+ disk-utils/sfdisk.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 0f69d65..10307ad 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -950,13 +950,16 @@ static int command_dump(struct sfdisk *sf, int argc, 
char **argv)
+       if (rc)
+               err(EXIT_FAILURE, _("cannot open %s"), devname);
+ 
++      if (!fdisk_has_label(sf->cxt))
++              errx(EXIT_FAILURE, _("%s: does not contain a recognized 
partition table"), devname);
++
+       dp = fdisk_new_script(sf->cxt);
+       if (!dp)
+               err(EXIT_FAILURE, _("failed to allocate dump struct"));
+ 
+       rc = fdisk_script_read_context(dp, NULL);
+       if (rc)
+-              err(EXIT_FAILURE, _("failed to dump partition table"));
++              errx(EXIT_FAILURE, _("%s: failed to dump partition table"), 
devname);
+ 
+       if (sf->json)
+               fdisk_script_enable_json(dp, 1);
+-- 
+2.10.2
+

Deleted: 
testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
===================================================================
--- 
testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch    
    2016-12-12 13:16:52 UTC (rev 283056)
+++ 
testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch    
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,70 +0,0 @@
-From fed304837f60b626f6198663990e76e506f89063 Mon Sep 17 00:00:00 2001
-From: Karel Zak <k...@redhat.com>
-Date: Tue, 29 Nov 2016 15:58:18 +0100
-Subject: [PATCH] sfdisk: don't be silent when list non-existing device
-
-Addresses: https://github.com/karelzak/util-linux/issues/376
-Signed-off-by: Karel Zak <k...@redhat.com>
----
- disk-utils/sfdisk.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
-index 52f2a6d..0f69d65 100644
---- a/disk-utils/sfdisk.c
-+++ b/disk-utils/sfdisk.c
-@@ -560,6 +560,7 @@ static int write_changes(struct sfdisk *sf)
-  */
- static int command_list_partitions(struct sfdisk *sf, int argc, char **argv)
- {
-+      int fail = 0;
-       fdisk_enable_listonly(sf->cxt, 1);
- 
-       if (argc) {
-@@ -568,13 +569,14 @@ static int command_list_partitions(struct sfdisk *sf, 
int argc, char **argv)
-               for (i = 0; i < argc; i++) {
-                       if (ct)
-                               fputs("\n\n", stdout);
--                      if (print_device_pt(sf->cxt, argv[i], 0, sf->verify) == 
0)
--                              ct++;
-+                      if (print_device_pt(sf->cxt, argv[i], 1, sf->verify) != 
0)
-+                              fail++;
-+                      ct++;
-               }
-       } else
-               print_all_devices_pt(sf->cxt, sf->verify);
- 
--      return 0;
-+      return fail;
- }
- 
- /*
-@@ -582,6 +584,7 @@ static int command_list_partitions(struct sfdisk *sf, int 
argc, char **argv)
-  */
- static int command_list_freespace(struct sfdisk *sf, int argc, char **argv)
- {
-+      int fail = 0;
-       fdisk_enable_listonly(sf->cxt, 1);
- 
-       if (argc) {
-@@ -590,13 +593,14 @@ static int command_list_freespace(struct sfdisk *sf, int 
argc, char **argv)
-               for (i = 0; i < argc; i++) {
-                       if (ct)
-                               fputs("\n\n", stdout);
--                      if (print_device_freespace(sf->cxt, argv[i], 0) == 0)
--                              ct++;
-+                      if (print_device_freespace(sf->cxt, argv[i], 1) != 0)
-+                              fail++;
-+                      ct++;
-               }
-       } else
-               print_all_devices_freespace(sf->cxt);
- 
--      return 0;
-+      return fail;
- }
- 
- /*
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
 (from rev 283056, 
util-linux/trunk/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch)
===================================================================
--- 
testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch    
                            (rev 0)
+++ 
testing-i686/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch    
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,70 @@
+From fed304837f60b626f6198663990e76e506f89063 Mon Sep 17 00:00:00 2001
+From: Karel Zak <k...@redhat.com>
+Date: Tue, 29 Nov 2016 15:58:18 +0100
+Subject: [PATCH] sfdisk: don't be silent when list non-existing device
+
+Addresses: https://github.com/karelzak/util-linux/issues/376
+Signed-off-by: Karel Zak <k...@redhat.com>
+---
+ disk-utils/sfdisk.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 52f2a6d..0f69d65 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -560,6 +560,7 @@ static int write_changes(struct sfdisk *sf)
+  */
+ static int command_list_partitions(struct sfdisk *sf, int argc, char **argv)
+ {
++      int fail = 0;
+       fdisk_enable_listonly(sf->cxt, 1);
+ 
+       if (argc) {
+@@ -568,13 +569,14 @@ static int command_list_partitions(struct sfdisk *sf, 
int argc, char **argv)
+               for (i = 0; i < argc; i++) {
+                       if (ct)
+                               fputs("\n\n", stdout);
+-                      if (print_device_pt(sf->cxt, argv[i], 0, sf->verify) == 
0)
+-                              ct++;
++                      if (print_device_pt(sf->cxt, argv[i], 1, sf->verify) != 
0)
++                              fail++;
++                      ct++;
+               }
+       } else
+               print_all_devices_pt(sf->cxt, sf->verify);
+ 
+-      return 0;
++      return fail;
+ }
+ 
+ /*
+@@ -582,6 +584,7 @@ static int command_list_partitions(struct sfdisk *sf, int 
argc, char **argv)
+  */
+ static int command_list_freespace(struct sfdisk *sf, int argc, char **argv)
+ {
++      int fail = 0;
+       fdisk_enable_listonly(sf->cxt, 1);
+ 
+       if (argc) {
+@@ -590,13 +593,14 @@ static int command_list_freespace(struct sfdisk *sf, int 
argc, char **argv)
+               for (i = 0; i < argc; i++) {
+                       if (ct)
+                               fputs("\n\n", stdout);
+-                      if (print_device_freespace(sf->cxt, argv[i], 0) == 0)
+-                              ct++;
++                      if (print_device_freespace(sf->cxt, argv[i], 1) != 0)
++                              fail++;
++                      ct++;
+               }
+       } else
+               print_all_devices_freespace(sf->cxt);
+ 
+-      return 0;
++      return fail;
+ }
+ 
+ /*
+-- 
+2.10.2
+

Deleted: testing-i686/0001-sfdisk-support-empty-label-use-case.patch
===================================================================
--- testing-i686/0001-sfdisk-support-empty-label-use-case.patch 2016-12-12 
13:16:52 UTC (rev 283056)
+++ testing-i686/0001-sfdisk-support-empty-label-use-case.patch 2016-12-12 
13:17:53 UTC (rev 283057)
@@ -1,223 +0,0 @@
-From 35ca51182782193f555fbdcb06bb10766550d017 Mon Sep 17 00:00:00 2001
-From: Karel Zak <k...@redhat.com>
-Date: Wed, 30 Nov 2016 12:43:10 +0100
-Subject: [PATCH] sfdisk: support empty label use-case
-
-By default sfdisk creates partition table when a first partition is
-specified, otherwise the device is not modified. This force users to
-create at least one partition.
-
-This commit allows to create empty label without partitions if "label:
-<name>" header line is specified by script.
-
-The commit also modifies "New situation:" output to list label name
-and label identifier.
-
-Addresses: https://github.com/karelzak/util-linux/issues/374
-Signed-off-by: Karel Zak <k...@redhat.com>
----
- disk-utils/fdisk-list.c    | 23 +++++++++++++++--------
- disk-utils/fdisk-list.h    |  1 +
- disk-utils/sfdisk.8        | 18 +++++++++++++++++-
- disk-utils/sfdisk.c        | 17 +++++++++++++++++
- libfdisk/src/libfdisk.h.in |  1 +
- libfdisk/src/libfdisk.sym  |  5 +++++
- libfdisk/src/script.c      | 20 +++++++++++++++++++-
- 7 files changed, 75 insertions(+), 10 deletions(-)
-
-diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c
-index e6b2033..c9560f4 100644
---- a/disk-utils/fdisk-list.c
-+++ b/disk-utils/fdisk-list.c
-@@ -34,10 +34,23 @@ static int is_ide_cdrom_or_tape(char *device)
-       return ret;
- }
- 
-+void list_disk_identifier(struct fdisk_context *cxt)
-+{
-+      struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
-+      char *id = NULL;
-+
-+      if (fdisk_has_label(cxt))
-+              fdisk_info(cxt, _("Disklabel type: %s"),
-+                              fdisk_label_get_name(lb));
-+
-+      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
-+              fdisk_info(cxt, _("Disk identifier: %s"), id);
-+              free(id);
-+      }
-+}
- 
- void list_disk_geometry(struct fdisk_context *cxt)
- {
--      char *id = NULL;
-       struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
-       uint64_t bytes = fdisk_get_nsectors(cxt) * fdisk_get_sector_size(cxt);
-       char *strsz = size_to_human_string(SIZE_SUFFIX_SPACE
-@@ -71,14 +84,8 @@ void list_disk_geometry(struct fdisk_context *cxt)
-       if (fdisk_get_alignment_offset(cxt))
-               fdisk_info(cxt, _("Alignment offset: %lu bytes"),
-                               fdisk_get_alignment_offset(cxt));
--      if (fdisk_has_label(cxt))
--              fdisk_info(cxt, _("Disklabel type: %s"),
--                              fdisk_label_get_name(lb));
- 
--      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
--              fdisk_info(cxt, _("Disk identifier: %s"), id);
--              free(id);
--      }
-+      list_disk_identifier(cxt);
- }
- 
- void list_disklabel(struct fdisk_context *cxt)
-diff --git a/disk-utils/fdisk-list.h b/disk-utils/fdisk-list.h
-index eddab92..4ed5c25 100644
---- a/disk-utils/fdisk-list.h
-+++ b/disk-utils/fdisk-list.h
-@@ -2,6 +2,7 @@
- #define UTIL_LINUX_FDISK_LIST_H
- 
- extern void list_disklabel(struct fdisk_context *cxt);
-+extern void list_disk_identifier(struct fdisk_context *cxt);
- extern void list_disk_geometry(struct fdisk_context *cxt);
- extern void list_freespace(struct fdisk_context *cxt);
- 
-diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8
-index fcde872..efe4a86 100644
---- a/disk-utils/sfdisk.8
-+++ b/disk-utils/sfdisk.8
-@@ -212,7 +212,10 @@ Deprecated option.  Only the sector unit is supported.
- .BR \-X , " \-\-label " \fItype
- Specify the disk label type (e.g. \fBdos\fR, \fBgpt\fR, ...).  If this option
- is not given, then \fBsfdisk\fR defaults to the existing label, but if there
--is no label on the device yet, then the type defaults to \fBdos\fR.
-+is no label on the device yet, then the type defaults to \fBdos\fR. The 
default
-+or the current label may be overwritten by the "label: <name>" script header
-+line. The option \fB\-\-label\fR does not force \fBsfdisk\fR to create empty
-+disk label (see the \fBEMPTY DISK LABEL\fR section below).
- .TP
- .BR \-Y , " \-\-label\-nested " \fItype
- Force editing of a nested disk label.  The primary disk label has to exist 
already.
-@@ -404,6 +407,19 @@ For backward compatibility the \fBId=\fR field has the 
same meaning.
- .RE
- .RE
- 
-+.SH "EMPTY DISK LABEL"
-+.B sfdisk
-+does not create partition table without partitions by default. The lines with
-+partitions are expected in the script by default. The empty partition table 
has
-+to be explicitly requested by "label: <name>" script header line without any
-+partitions lines. For example:
-+.RS
-+.sp
-+.B "echo 'label: gpt' | sfdisk /dev/sdb"
-+.sp
-+.RE
-+creates empty GPT partition table. Note that the \fB\-\-append\fR disables 
this feature.
-+
- .SH "BACKING UP THE PARTITION TABLE"
- It is recommended to save the layout of your devices.
- .B sfdisk
-diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
-index 10307ad..2d65974 100644
---- a/disk-utils/sfdisk.c
-+++ b/disk-utils/sfdisk.c
-@@ -1766,8 +1766,25 @@ static int command_fdisk(struct sfdisk *sf, int argc, 
char **argv)
-               }
-       } while (1);
- 
-+      /* create empty disk label if label, but no partition specified */
-+      if (rc == SFDISK_DONE_EOF && created == 0
-+          && fdisk_script_has_force_label(dp) == 1
-+          && fdisk_table_get_nents(tb) == 0
-+          && fdisk_script_get_header(dp, "label")) {
-+
-+              int xrc = fdisk_apply_script_headers(sf->cxt, dp);
-+              created = !xrc;
-+              if (xrc) {
-+                      fdisk_warnx(sf->cxt, _(
-+                                "Failed to apply script headers, "
-+                                "disk label not created."));
-+                      rc = SFDISK_DONE_ABORT;
-+              }
-+      }
-+
-       if (!sf->quiet && rc != SFDISK_DONE_ABORT) {
-               fdisk_info(sf->cxt, _("\nNew situation:"));
-+              list_disk_identifier(sf->cxt);
-               list_disklabel(sf->cxt);
-       }
- 
-diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in
-index 9154f5b..59cce19 100644
---- a/libfdisk/src/libfdisk.h.in
-+++ b/libfdisk/src/libfdisk.h.in
-@@ -642,6 +642,7 @@ const char *fdisk_script_get_header(struct fdisk_script 
*dp, const char *name);
- int fdisk_script_set_header(struct fdisk_script *dp, const char *name, const 
char *data);
- struct fdisk_table *fdisk_script_get_table(struct fdisk_script *dp);
- int fdisk_script_get_nlines(struct fdisk_script *dp);
-+int fdisk_script_has_force_label(struct fdisk_script *dp);
- 
- int fdisk_script_set_userdata(struct fdisk_script *dp, void *data);
- void *fdisk_script_get_userdata(struct fdisk_script *dp);
-diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym
-index 02cd7a8..d6d4ac5 100644
---- a/libfdisk/src/libfdisk.sym
-+++ b/libfdisk/src/libfdisk.sym
-@@ -274,3 +274,8 @@ FDISK_2.29 {
-       fdisk_labelitem_is_number;
-       fdisk_gpt_set_npartitions;
- } FDISK_2.28;
-+
-+
-+FDISK_2.30 {
-+      fdisk_script_has_force_label;
-+} FDISK_2.29;
-diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
-index ae7e99a..0d1f260 100644
---- a/libfdisk/src/script.c
-+++ b/libfdisk/src/script.c
-@@ -36,7 +36,8 @@ struct fdisk_script {
-       size_t                  nlines;
-       struct fdisk_label      *label;
- 
--      unsigned int            json : 1;               /* JSON output */
-+      unsigned int            json : 1,               /* JSON output */
-+                              force_label : 1;        /* label: <name> 
specified */
- };
- 
- 
-@@ -354,6 +355,22 @@ int fdisk_script_get_nlines(struct fdisk_script *dp)
- }
- 
- /**
-+ * fdisk_script_has_force_label:
-+ * @dp: script
-+ *
-+ * Note that fdisk_script_set_header(dp, "label", name) does not modify
-+ * force_label status. The label has to be specified by script.
-+ *
-+ * Returns: true if "label: <name>" has been parsed.
-+ */
-+int fdisk_script_has_force_label(struct fdisk_script *dp)
-+{
-+      assert(dp);
-+      return dp->force_label;
-+}
-+
-+
-+/**
-  * fdisk_script_read_context:
-  * @dp: script
-  * @cxt: context
-@@ -706,6 +723,7 @@ static int parse_line_header(struct fdisk_script *dp, char 
*s)
-       if (strcmp(name, "label") == 0) {
-               if (dp->cxt && !fdisk_get_label(dp->cxt, value))
-                       goto done;                      /* unknown label name */
-+              dp->force_label = 1;
-       } else if (strcmp(name, "unit") == 0) {
-               if (strcmp(value, "sectors") != 0)
-                       goto done;                      /* only "sectors" 
supported */
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-i686/0001-sfdisk-support-empty-label-use-case.patch 
(from rev 283056, 
util-linux/trunk/0001-sfdisk-support-empty-label-use-case.patch)
===================================================================
--- testing-i686/0001-sfdisk-support-empty-label-use-case.patch                 
        (rev 0)
+++ testing-i686/0001-sfdisk-support-empty-label-use-case.patch 2016-12-12 
13:17:53 UTC (rev 283057)
@@ -0,0 +1,223 @@
+From 35ca51182782193f555fbdcb06bb10766550d017 Mon Sep 17 00:00:00 2001
+From: Karel Zak <k...@redhat.com>
+Date: Wed, 30 Nov 2016 12:43:10 +0100
+Subject: [PATCH] sfdisk: support empty label use-case
+
+By default sfdisk creates partition table when a first partition is
+specified, otherwise the device is not modified. This force users to
+create at least one partition.
+
+This commit allows to create empty label without partitions if "label:
+<name>" header line is specified by script.
+
+The commit also modifies "New situation:" output to list label name
+and label identifier.
+
+Addresses: https://github.com/karelzak/util-linux/issues/374
+Signed-off-by: Karel Zak <k...@redhat.com>
+---
+ disk-utils/fdisk-list.c    | 23 +++++++++++++++--------
+ disk-utils/fdisk-list.h    |  1 +
+ disk-utils/sfdisk.8        | 18 +++++++++++++++++-
+ disk-utils/sfdisk.c        | 17 +++++++++++++++++
+ libfdisk/src/libfdisk.h.in |  1 +
+ libfdisk/src/libfdisk.sym  |  5 +++++
+ libfdisk/src/script.c      | 20 +++++++++++++++++++-
+ 7 files changed, 75 insertions(+), 10 deletions(-)
+
+diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c
+index e6b2033..c9560f4 100644
+--- a/disk-utils/fdisk-list.c
++++ b/disk-utils/fdisk-list.c
+@@ -34,10 +34,23 @@ static int is_ide_cdrom_or_tape(char *device)
+       return ret;
+ }
+ 
++void list_disk_identifier(struct fdisk_context *cxt)
++{
++      struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
++      char *id = NULL;
++
++      if (fdisk_has_label(cxt))
++              fdisk_info(cxt, _("Disklabel type: %s"),
++                              fdisk_label_get_name(lb));
++
++      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
++              fdisk_info(cxt, _("Disk identifier: %s"), id);
++              free(id);
++      }
++}
+ 
+ void list_disk_geometry(struct fdisk_context *cxt)
+ {
+-      char *id = NULL;
+       struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
+       uint64_t bytes = fdisk_get_nsectors(cxt) * fdisk_get_sector_size(cxt);
+       char *strsz = size_to_human_string(SIZE_SUFFIX_SPACE
+@@ -71,14 +84,8 @@ void list_disk_geometry(struct fdisk_context *cxt)
+       if (fdisk_get_alignment_offset(cxt))
+               fdisk_info(cxt, _("Alignment offset: %lu bytes"),
+                               fdisk_get_alignment_offset(cxt));
+-      if (fdisk_has_label(cxt))
+-              fdisk_info(cxt, _("Disklabel type: %s"),
+-                              fdisk_label_get_name(lb));
+ 
+-      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
+-              fdisk_info(cxt, _("Disk identifier: %s"), id);
+-              free(id);
+-      }
++      list_disk_identifier(cxt);
+ }
+ 
+ void list_disklabel(struct fdisk_context *cxt)
+diff --git a/disk-utils/fdisk-list.h b/disk-utils/fdisk-list.h
+index eddab92..4ed5c25 100644
+--- a/disk-utils/fdisk-list.h
++++ b/disk-utils/fdisk-list.h
+@@ -2,6 +2,7 @@
+ #define UTIL_LINUX_FDISK_LIST_H
+ 
+ extern void list_disklabel(struct fdisk_context *cxt);
++extern void list_disk_identifier(struct fdisk_context *cxt);
+ extern void list_disk_geometry(struct fdisk_context *cxt);
+ extern void list_freespace(struct fdisk_context *cxt);
+ 
+diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8
+index fcde872..efe4a86 100644
+--- a/disk-utils/sfdisk.8
++++ b/disk-utils/sfdisk.8
+@@ -212,7 +212,10 @@ Deprecated option.  Only the sector unit is supported.
+ .BR \-X , " \-\-label " \fItype
+ Specify the disk label type (e.g. \fBdos\fR, \fBgpt\fR, ...).  If this option
+ is not given, then \fBsfdisk\fR defaults to the existing label, but if there
+-is no label on the device yet, then the type defaults to \fBdos\fR.
++is no label on the device yet, then the type defaults to \fBdos\fR. The 
default
++or the current label may be overwritten by the "label: <name>" script header
++line. The option \fB\-\-label\fR does not force \fBsfdisk\fR to create empty
++disk label (see the \fBEMPTY DISK LABEL\fR section below).
+ .TP
+ .BR \-Y , " \-\-label\-nested " \fItype
+ Force editing of a nested disk label.  The primary disk label has to exist 
already.
+@@ -404,6 +407,19 @@ For backward compatibility the \fBId=\fR field has the 
same meaning.
+ .RE
+ .RE
+ 
++.SH "EMPTY DISK LABEL"
++.B sfdisk
++does not create partition table without partitions by default. The lines with
++partitions are expected in the script by default. The empty partition table 
has
++to be explicitly requested by "label: <name>" script header line without any
++partitions lines. For example:
++.RS
++.sp
++.B "echo 'label: gpt' | sfdisk /dev/sdb"
++.sp
++.RE
++creates empty GPT partition table. Note that the \fB\-\-append\fR disables 
this feature.
++
+ .SH "BACKING UP THE PARTITION TABLE"
+ It is recommended to save the layout of your devices.
+ .B sfdisk
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 10307ad..2d65974 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -1766,8 +1766,25 @@ static int command_fdisk(struct sfdisk *sf, int argc, 
char **argv)
+               }
+       } while (1);
+ 
++      /* create empty disk label if label, but no partition specified */
++      if (rc == SFDISK_DONE_EOF && created == 0
++          && fdisk_script_has_force_label(dp) == 1
++          && fdisk_table_get_nents(tb) == 0
++          && fdisk_script_get_header(dp, "label")) {
++
++              int xrc = fdisk_apply_script_headers(sf->cxt, dp);
++              created = !xrc;
++              if (xrc) {
++                      fdisk_warnx(sf->cxt, _(
++                                "Failed to apply script headers, "
++                                "disk label not created."));
++                      rc = SFDISK_DONE_ABORT;
++              }
++      }
++
+       if (!sf->quiet && rc != SFDISK_DONE_ABORT) {
+               fdisk_info(sf->cxt, _("\nNew situation:"));
++              list_disk_identifier(sf->cxt);
+               list_disklabel(sf->cxt);
+       }
+ 
+diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in
+index 9154f5b..59cce19 100644
+--- a/libfdisk/src/libfdisk.h.in
++++ b/libfdisk/src/libfdisk.h.in
+@@ -642,6 +642,7 @@ const char *fdisk_script_get_header(struct fdisk_script 
*dp, const char *name);
+ int fdisk_script_set_header(struct fdisk_script *dp, const char *name, const 
char *data);
+ struct fdisk_table *fdisk_script_get_table(struct fdisk_script *dp);
+ int fdisk_script_get_nlines(struct fdisk_script *dp);
++int fdisk_script_has_force_label(struct fdisk_script *dp);
+ 
+ int fdisk_script_set_userdata(struct fdisk_script *dp, void *data);
+ void *fdisk_script_get_userdata(struct fdisk_script *dp);
+diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym
+index 02cd7a8..d6d4ac5 100644
+--- a/libfdisk/src/libfdisk.sym
++++ b/libfdisk/src/libfdisk.sym
+@@ -274,3 +274,8 @@ FDISK_2.29 {
+       fdisk_labelitem_is_number;
+       fdisk_gpt_set_npartitions;
+ } FDISK_2.28;
++
++
++FDISK_2.30 {
++      fdisk_script_has_force_label;
++} FDISK_2.29;
+diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
+index ae7e99a..0d1f260 100644
+--- a/libfdisk/src/script.c
++++ b/libfdisk/src/script.c
+@@ -36,7 +36,8 @@ struct fdisk_script {
+       size_t                  nlines;
+       struct fdisk_label      *label;
+ 
+-      unsigned int            json : 1;               /* JSON output */
++      unsigned int            json : 1,               /* JSON output */
++                              force_label : 1;        /* label: <name> 
specified */
+ };
+ 
+ 
+@@ -354,6 +355,22 @@ int fdisk_script_get_nlines(struct fdisk_script *dp)
+ }
+ 
+ /**
++ * fdisk_script_has_force_label:
++ * @dp: script
++ *
++ * Note that fdisk_script_set_header(dp, "label", name) does not modify
++ * force_label status. The label has to be specified by script.
++ *
++ * Returns: true if "label: <name>" has been parsed.
++ */
++int fdisk_script_has_force_label(struct fdisk_script *dp)
++{
++      assert(dp);
++      return dp->force_label;
++}
++
++
++/**
+  * fdisk_script_read_context:
+  * @dp: script
+  * @cxt: context
+@@ -706,6 +723,7 @@ static int parse_line_header(struct fdisk_script *dp, char 
*s)
+       if (strcmp(name, "label") == 0) {
+               if (dp->cxt && !fdisk_get_label(dp->cxt, value))
+                       goto done;                      /* unknown label name */
++              dp->force_label = 1;
+       } else if (strcmp(name, "unit") == 0) {
+               if (strcmp(value, "sectors") != 0)
+                       goto done;                      /* only "sectors" 
supported */
+-- 
+2.10.2
+

Deleted: testing-i686/PKGBUILD
===================================================================
--- testing-i686/PKGBUILD       2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-i686/PKGBUILD       2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,112 +0,0 @@
-# $Id$
-# Maintainer: Tom Gundersen <t...@jklm.no>
-# Maintainer: Dave Reisner <dreis...@archlinux.org>
-# Contributor: judd <jvi...@zeroflux.org>
-
-pkgbase=util-linux
-pkgname=(util-linux libutil-linux)
-_pkgmajor=2.29
-pkgver=${_pkgmajor}
-pkgrel=2
-pkgdesc="Miscellaneous system utilities for Linux"
-url="https://www.kernel.org/pub/linux/utils/util-linux/";
-arch=('i686' 'x86_64')
-makedepends=('systemd' 'python')
-license=('GPL2')
-options=('strip' 'debug')
-validpgpkeys=('B0C64D14301CC6EFAEDF60E4E4B71D5EEC39C284')  # Karel Zak
-source=("https://www.kernel.org/pub/linux/utils/util-linux/v$_pkgmajor/$pkgbase-$pkgver.tar."{xz,sign}
-        pam-{login,common,su}
-        '0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch'
-        '0001-sfdisk-cleanup-dump-error-messages.patch'
-        '0001-sfdisk-support-empty-label-use-case.patch'
-        '0001-chrt-default-to-SCHED_RR-policy.patch'
-        '0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch')
-md5sums=('07b6845f48a421ad5844aa9d58edb837'
-         'SKIP'
-         '4368b3f98abd8a32662e094c54e7f9b1'
-         'a31374fef2cba0ca34dfc7078e2969e4'
-         'fa85e5cce5d723275b14365ba71a8aad'
-         '3fce7192ce1b3d97fdffd0226ed63a90'
-         '2f3c061865360170cacda948035fd02d'
-         '6d2e3915124938577f0ff18ef701c87f'
-         '168c1cb2cfe7d4eddfc6e3f3b19d3ced'
-         '68c2076a9a09564ba0c9776540a175fa')
-
-prepare() {
-  cd "$pkgbase-$pkgver"
-
-  patch -Np1 
<../0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
-  patch -Np1 <../0001-sfdisk-cleanup-dump-error-messages.patch
-  patch -Np1 <../0001-sfdisk-support-empty-label-use-case.patch
-  patch -Np1 <../0001-chrt-default-to-SCHED_RR-policy.patch
-  patch -Np1 
<../0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
-}
-
-build() {
-  cd "$pkgbase-$pkgver"
-
-  ./configure --prefix=/usr \
-              --libdir=/usr/lib \
-              --bindir=/usr/bin \
-              --localstatedir=/run \
-              --enable-fs-paths-extra=/usr/bin \
-              --enable-raw \
-              --enable-vipw \
-              --enable-newgrp \
-              --enable-chfn-chsh \
-              --enable-write \
-              --enable-mesg \
-              --enable-libmount-force-mountinfo \
-              --disable-tailf \
-              --with-python=3
-
-  make
-}
-
-package_util-linux() {
-  conflicts=('util-linux-ng' 'eject' 'zramctl')
-  provides=("util-linux-ng=$pkgver" 'eject' 'zramctl')
-  replaces=('zramctl')
-  depends=('pam' 'shadow' 'coreutils' 'libsystemd' 'libutil-linux')
-  optdepends=('python: python bindings to libmount')
-  groups=('base' 'base-devel')
-  backup=(etc/pam.d/chfn
-          etc/pam.d/chsh
-          etc/pam.d/login
-          etc/pam.d/su
-          etc/pam.d/su-l)
-
-  cd "$pkgbase-$pkgver"
-
-  make DESTDIR="$pkgdir" install
-
-  # setuid chfn and chsh
-  chmod 4755 "$pkgdir"/usr/bin/{newgrp,ch{sh,fn}}
-
-  # install PAM files for login-utils
-  install -Dm644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chfn"
-  install -m644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chsh"
-  install -m644 "$srcdir/pam-login" "$pkgdir/etc/pam.d/login"
-  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su"
-  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su-l"
-
-  # TODO(dreisner): offer this upstream?
-  sed -i '/ListenStream/ aRuntimeDirectory=uuidd' 
"$pkgdir/usr/lib/systemd/system/uuidd.socket"
-
-  # adjust for usrmove
-  # TODO(dreisner): fix configure.ac upstream so that this isn't needed
-  cd "$pkgdir"
-  mv {,usr/}sbin/* usr/bin
-  rmdir sbin usr/sbin
-
-  ### runtime libs are shipped as part of libutil-linux
-  rm "$pkgdir"/usr/lib/lib*.{a,so}*
-}
-
-package_libutil-linux() {
-  pkgdesc="util-linux runtime libraries"
-  provides=('libblkid.so' 'libfdisk.so' 'libmount.so' 'libsmartcols.so' 
'libuuid.so')
-
-  make -C "$pkgbase-$pkgver" DESTDIR="$pkgdir" install-usrlib_execLTLIBRARIES
-}

Copied: util-linux/repos/testing-i686/PKGBUILD (from rev 283056, 
util-linux/trunk/PKGBUILD)
===================================================================
--- testing-i686/PKGBUILD                               (rev 0)
+++ testing-i686/PKGBUILD       2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,117 @@
+# $Id$
+# Maintainer: Tom Gundersen <t...@jklm.no>
+# Maintainer: Dave Reisner <dreis...@archlinux.org>
+# Contributor: judd <jvi...@zeroflux.org>
+
+pkgbase=util-linux
+pkgname=(util-linux libutil-linux)
+_pkgmajor=2.29
+pkgver=${_pkgmajor}
+pkgrel=1
+pkgdesc="Miscellaneous system utilities for Linux"
+url="https://www.kernel.org/pub/linux/utils/util-linux/";
+arch=('i686' 'x86_64')
+makedepends=('systemd' 'python')
+license=('GPL2')
+options=('strip' 'debug')
+validpgpkeys=('B0C64D14301CC6EFAEDF60E4E4B71D5EEC39C284')  # Karel Zak
+source=("https://www.kernel.org/pub/linux/utils/util-linux/v$_pkgmajor/$pkgbase-$pkgver.tar."{xz,sign}
+        pam-{login,common,su}
+        '0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch'
+        '0001-sfdisk-cleanup-dump-error-messages.patch'
+        '0001-sfdisk-support-empty-label-use-case.patch'
+        '0001-chrt-default-to-SCHED_RR-policy.patch'
+        '0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch')
+md5sums=('07b6845f48a421ad5844aa9d58edb837'
+         'SKIP'
+         '4368b3f98abd8a32662e094c54e7f9b1'
+         'a31374fef2cba0ca34dfc7078e2969e4'
+         'fa85e5cce5d723275b14365ba71a8aad'
+         '3fce7192ce1b3d97fdffd0226ed63a90'
+         '2f3c061865360170cacda948035fd02d'
+         '6d2e3915124938577f0ff18ef701c87f'
+         '168c1cb2cfe7d4eddfc6e3f3b19d3ced'
+         '68c2076a9a09564ba0c9776540a175fa')
+
+prepare() {
+  cd "$pkgbase-$pkgver"
+
+  patch -Np1 
<../0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
+  patch -Np1 <../0001-sfdisk-cleanup-dump-error-messages.patch
+  patch -Np1 <../0001-sfdisk-support-empty-label-use-case.patch
+  patch -Np1 <../0001-chrt-default-to-SCHED_RR-policy.patch
+  patch -Np1 
<../0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
+}
+
+build() {
+  cd "$pkgbase-$pkgver"
+
+  ./configure --prefix=/usr \
+              --libdir=/usr/lib \
+              --bindir=/usr/bin \
+              --localstatedir=/run \
+              --enable-fs-paths-extra=/usr/bin \
+              --enable-raw \
+              --enable-vipw \
+              --enable-newgrp \
+              --enable-chfn-chsh \
+              --enable-write \
+              --enable-mesg \
+              --disable-tailf \
+              --with-python=3
+
+  make
+}
+
+package_util-linux() {
+  conflicts=('util-linux-ng' 'eject' 'zramctl')
+  provides=("util-linux-ng=$pkgver" 'eject' 'zramctl')
+  replaces=('zramctl')
+  depends=('pam' 'shadow' 'coreutils' 'libsystemd' 'libutil-linux')
+  optdepends=('python: python bindings to libmount')
+  groups=('base' 'base-devel')
+  backup=(etc/pam.d/chfn
+          etc/pam.d/chsh
+          etc/pam.d/login
+          etc/pam.d/su
+          etc/pam.d/su-l)
+
+  cd "$pkgbase-$pkgver"
+
+  make DESTDIR="$pkgdir" install
+
+  # setuid chfn and chsh
+  chmod 4755 "$pkgdir"/usr/bin/{newgrp,ch{sh,fn}}
+
+  # install PAM files for login-utils
+  install -Dm644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chfn"
+  install -m644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chsh"
+  install -m644 "$srcdir/pam-login" "$pkgdir/etc/pam.d/login"
+  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su"
+  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su-l"
+
+  # TODO(dreisner): offer this upstream?
+  sed -i '/ListenStream/ aRuntimeDirectory=uuidd' 
"$pkgdir/usr/lib/systemd/system/uuidd.socket"
+
+  # adjust for usrmove
+  # TODO(dreisner): fix configure.ac upstream so that this isn't needed
+  cd "$pkgdir"
+  mv {,usr/}sbin/* usr/bin
+  rmdir sbin usr/sbin
+
+  ### runtime libs are shipped as part of libutil-linux
+  rm "$pkgdir"/usr/lib/lib*.{a,so}*
+
+  ### tailf has been deprecated for a while. let's not include it anymore.
+  rm \
+    "$pkgdir"/usr/bin/tailf \
+    "$pkgdir"/usr/share/bash-completion/completions/tailf \
+    "$pkgdir"/usr/share/man/man1/tailf.1
+}
+
+package_libutil-linux() {
+  pkgdesc="util-linux runtime libraries"
+  provides=('libblkid.so' 'libfdisk.so' 'libmount.so' 'libsmartcols.so' 
'libuuid.so')
+
+  make -C "$pkgbase-$pkgver" DESTDIR="$pkgdir" install-usrlib_execLTLIBRARIES
+}

Deleted: testing-i686/pam-common
===================================================================
--- testing-i686/pam-common     2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-i686/pam-common     2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,6 +0,0 @@
-#%PAM-1.0
-auth           sufficient      pam_rootok.so
-auth           required        pam_unix.so
-account                required        pam_unix.so
-session                required        pam_unix.so
-password       required        pam_permit.so

Copied: util-linux/repos/testing-i686/pam-common (from rev 283056, 
util-linux/trunk/pam-common)
===================================================================
--- testing-i686/pam-common                             (rev 0)
+++ testing-i686/pam-common     2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth           sufficient      pam_rootok.so
+auth           required        pam_unix.so
+account                required        pam_unix.so
+session                required        pam_unix.so
+password       required        pam_permit.so

Deleted: testing-i686/pam-login
===================================================================
--- testing-i686/pam-login      2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-i686/pam-login      2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,7 +0,0 @@
-#%PAM-1.0
-
-auth       required     pam_securetty.so
-auth       requisite    pam_nologin.so
-auth       include      system-local-login
-account    include      system-local-login
-session    include      system-local-login

Copied: util-linux/repos/testing-i686/pam-login (from rev 283056, 
util-linux/trunk/pam-login)
===================================================================
--- testing-i686/pam-login                              (rev 0)
+++ testing-i686/pam-login      2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,7 @@
+#%PAM-1.0
+
+auth       required     pam_securetty.so
+auth       requisite    pam_nologin.so
+auth       include      system-local-login
+account    include      system-local-login
+session    include      system-local-login

Deleted: testing-i686/pam-su
===================================================================
--- testing-i686/pam-su 2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-i686/pam-su 2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,9 +0,0 @@
-#%PAM-1.0
-auth           sufficient      pam_rootok.so
-# Uncomment the following line to implicitly trust users in the "wheel" group.
-#auth          sufficient      pam_wheel.so trust use_uid
-# Uncomment the following line to require a user to be in the "wheel" group.
-#auth          required        pam_wheel.so use_uid
-auth           required        pam_unix.so
-account                required        pam_unix.so
-session                required        pam_unix.so

Copied: util-linux/repos/testing-i686/pam-su (from rev 283056, 
util-linux/trunk/pam-su)
===================================================================
--- testing-i686/pam-su                         (rev 0)
+++ testing-i686/pam-su 2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth           sufficient      pam_rootok.so
+# Uncomment the following line to implicitly trust users in the "wheel" group.
+#auth          sufficient      pam_wheel.so trust use_uid
+# Uncomment the following line to require a user to be in the "wheel" group.
+#auth          required        pam_wheel.so use_uid
+auth           required        pam_unix.so
+account                required        pam_unix.so
+session                required        pam_unix.so

Deleted: testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch
===================================================================
--- testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch   2016-12-12 
13:16:52 UTC (rev 283056)
+++ testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch   2016-12-12 
13:17:53 UTC (rev 283057)
@@ -1,39 +0,0 @@
-From c7adc2f204f19167f781fa2ee739e0ca386fc4f5 Mon Sep 17 00:00:00 2001
-From: Andreas Henriksson <andr...@fatal.se>
-Date: Fri, 2 Dec 2016 15:10:18 +0100
-Subject: [PATCH] chrt: default to SCHED_RR policy
-
-This fixes a regression introduced in:
-
-commit 7a4ea5664edba98bff28adec3a9c3cfb5763a495
-"chrt: add control struct"
-
-Previously (and as documented in the manpage) the default policy
-was SCHED_RR. Now it's implicitly SCHED_OTHER (0) as the value
-is not initialized explicitly anymore.
-
-Test-command: chrt 90 echo hello
-
-Reported-by: Patrick Pelissier <patrick.peliss...@gmail.com>
-Addresses: http://bugs.debian.org/846572
-Signed-off-by: Andreas Henriksson <andr...@fatal.se>
----
- schedutils/chrt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/schedutils/chrt.c b/schedutils/chrt.c
-index a861d9f..73d1ffa 100644
---- a/schedutils/chrt.c
-+++ b/schedutils/chrt.c
-@@ -409,7 +409,7 @@ static void set_sched(struct chrt_ctl *ctl)
- 
- int main(int argc, char **argv)
- {
--      struct chrt_ctl _ctl = { .pid = -1 }, *ctl = &_ctl;
-+      struct chrt_ctl _ctl = { .pid = -1, .policy = SCHED_RR }, *ctl = &_ctl;
-       int c;
- 
-       static const struct option longopts[] = {
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch 
(from rev 283056, util-linux/trunk/0001-chrt-default-to-SCHED_RR-policy.patch)
===================================================================
--- testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch                   
        (rev 0)
+++ testing-x86_64/0001-chrt-default-to-SCHED_RR-policy.patch   2016-12-12 
13:17:53 UTC (rev 283057)
@@ -0,0 +1,39 @@
+From c7adc2f204f19167f781fa2ee739e0ca386fc4f5 Mon Sep 17 00:00:00 2001
+From: Andreas Henriksson <andr...@fatal.se>
+Date: Fri, 2 Dec 2016 15:10:18 +0100
+Subject: [PATCH] chrt: default to SCHED_RR policy
+
+This fixes a regression introduced in:
+
+commit 7a4ea5664edba98bff28adec3a9c3cfb5763a495
+"chrt: add control struct"
+
+Previously (and as documented in the manpage) the default policy
+was SCHED_RR. Now it's implicitly SCHED_OTHER (0) as the value
+is not initialized explicitly anymore.
+
+Test-command: chrt 90 echo hello
+
+Reported-by: Patrick Pelissier <patrick.peliss...@gmail.com>
+Addresses: http://bugs.debian.org/846572
+Signed-off-by: Andreas Henriksson <andr...@fatal.se>
+---
+ schedutils/chrt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/schedutils/chrt.c b/schedutils/chrt.c
+index a861d9f..73d1ffa 100644
+--- a/schedutils/chrt.c
++++ b/schedutils/chrt.c
+@@ -409,7 +409,7 @@ static void set_sched(struct chrt_ctl *ctl)
+ 
+ int main(int argc, char **argv)
+ {
+-      struct chrt_ctl _ctl = { .pid = -1 }, *ctl = &_ctl;
++      struct chrt_ctl _ctl = { .pid = -1, .policy = SCHED_RR }, *ctl = &_ctl;
+       int c;
+ 
+       static const struct option longopts[] = {
+-- 
+2.10.2
+

Deleted: 
testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
===================================================================
--- 
testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch  
    2016-12-12 13:16:52 UTC (rev 283056)
+++ 
testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch  
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,79 +0,0 @@
-From 3fcbd7978980dc1a29c626b701333e27599e506d Mon Sep 17 00:00:00 2001
-From: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
-Date: Wed, 23 Nov 2016 14:13:34 +0900
-Subject: [PATCH] lsns: Fix parser for /proc/<pid>/stat which is including
- space in comm
-
-For example, child process of spamd has
-
-    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
-
-fscanf("%d %*s %c %d*[^\n]") in read_process() can't parse above as we
-expected, because %s only skips non-whitespace. I.e. it parses like
-following,
-
-    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
-    +---+ +----+ +
-      %d    %*s  %c
-
-and returns 2 (pid=32031, state=c).
-
-This fixes it by skipping task->comm part manually.
-
-Signed-off-by: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
----
- sys-utils/lsns.c | 30 ++++++++++++++++++++++++++----
- 1 file changed, 26 insertions(+), 4 deletions(-)
-
-diff --git a/sys-utils/lsns.c b/sys-utils/lsns.c
-index e4fd208..809737c 100644
---- a/sys-utils/lsns.c
-+++ b/sys-utils/lsns.c
-@@ -217,6 +217,30 @@ static int get_ns_ino(int dir, const char *nsname, ino_t 
*ino)
-       return 0;
- }
- 
-+static int parse_proc_stat(FILE *fp, pid_t *pid, char *state, pid_t *ppid)
-+{
-+      char *line = NULL, *p;
-+      size_t len = 0;
-+      int rc;
-+
-+      if (getline(&line, &len, fp) < 0) {
-+              rc = -errno;
-+              goto error;
-+      }
-+
-+      p = strrchr(line, ')');
-+      if (p == NULL ||
-+          sscanf(line, "%d (", pid) != 1 ||
-+          sscanf(p, ") %c %d*[^\n]", state, ppid) != 2) {
-+              rc = -EINVAL;
-+              goto error;
-+      }
-+      rc = 0;
-+
-+error:
-+      free(line);
-+      return rc;
-+}
- 
- static int read_process(struct lsns *ls, pid_t pid)
- {
-@@ -255,11 +279,9 @@ static int read_process(struct lsns *ls, pid_t pid)
-               rc = -errno;
-               goto done;
-       }
--      rc = fscanf(f, "%d %*s %c %d*[^\n]", &p->pid, &p->state, &p->ppid);
--      if (rc != 3) {
--              rc = rc < 0 ? -errno : -EINVAL;
-+      rc = parse_proc_stat(f, &p->pid, &p->state, &p->ppid);
-+      if (rc < 0)
-               goto done;
--      }
-       rc = 0;
- 
-       for (i = 0; i < ARRAY_SIZE(p->ns_ids); i++) {
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
 (from rev 283056, 
util-linux/trunk/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch)
===================================================================
--- 
testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch  
                            (rev 0)
+++ 
testing-x86_64/0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch  
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,79 @@
+From 3fcbd7978980dc1a29c626b701333e27599e506d Mon Sep 17 00:00:00 2001
+From: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
+Date: Wed, 23 Nov 2016 14:13:34 +0900
+Subject: [PATCH] lsns: Fix parser for /proc/<pid>/stat which is including
+ space in comm
+
+For example, child process of spamd has
+
+    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
+
+fscanf("%d %*s %c %d*[^\n]") in read_process() can't parse above as we
+expected, because %s only skips non-whitespace. I.e. it parses like
+following,
+
+    32031 (spamd child) S 32026 32026 32026 0 -1 4210752 338 0 0 0 ...
+    +---+ +----+ +
+      %d    %*s  %c
+
+and returns 2 (pid=32031, state=c).
+
+This fixes it by skipping task->comm part manually.
+
+Signed-off-by: OGAWA Hirofumi <hirof...@mail.parknet.co.jp>
+---
+ sys-utils/lsns.c | 30 ++++++++++++++++++++++++++----
+ 1 file changed, 26 insertions(+), 4 deletions(-)
+
+diff --git a/sys-utils/lsns.c b/sys-utils/lsns.c
+index e4fd208..809737c 100644
+--- a/sys-utils/lsns.c
++++ b/sys-utils/lsns.c
+@@ -217,6 +217,30 @@ static int get_ns_ino(int dir, const char *nsname, ino_t 
*ino)
+       return 0;
+ }
+ 
++static int parse_proc_stat(FILE *fp, pid_t *pid, char *state, pid_t *ppid)
++{
++      char *line = NULL, *p;
++      size_t len = 0;
++      int rc;
++
++      if (getline(&line, &len, fp) < 0) {
++              rc = -errno;
++              goto error;
++      }
++
++      p = strrchr(line, ')');
++      if (p == NULL ||
++          sscanf(line, "%d (", pid) != 1 ||
++          sscanf(p, ") %c %d*[^\n]", state, ppid) != 2) {
++              rc = -EINVAL;
++              goto error;
++      }
++      rc = 0;
++
++error:
++      free(line);
++      return rc;
++}
+ 
+ static int read_process(struct lsns *ls, pid_t pid)
+ {
+@@ -255,11 +279,9 @@ static int read_process(struct lsns *ls, pid_t pid)
+               rc = -errno;
+               goto done;
+       }
+-      rc = fscanf(f, "%d %*s %c %d*[^\n]", &p->pid, &p->state, &p->ppid);
+-      if (rc != 3) {
+-              rc = rc < 0 ? -errno : -EINVAL;
++      rc = parse_proc_stat(f, &p->pid, &p->state, &p->ppid);
++      if (rc < 0)
+               goto done;
+-      }
+       rc = 0;
+ 
+       for (i = 0; i < ARRAY_SIZE(p->ns_ids); i++) {
+-- 
+2.10.2
+

Deleted: testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch
===================================================================
--- testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch        
2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch        
2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,44 +0,0 @@
-From c49b765a6e9031642e2bb846e93dddc6827e4b28 Mon Sep 17 00:00:00 2001
-From: Karel Zak <k...@redhat.com>
-Date: Wed, 30 Nov 2016 10:53:56 +0100
-Subject: [PATCH] sfdisk: cleanup --dump error messages
-
-old:
-  # truncate -s 1G empty && ./sfdisk --dump empty
-  sfdisk: failed to dump partition table: Success
-
-new:
-  # truncate -s 1G empty && ./sfdisk --dump empty
-  sfdisk: empty: does not contain a recognized partition table.
-
-Addresses: https://github.com/karelzak/util-linux/issues/375
-Signed-off-by: Karel Zak <k...@redhat.com>
----
- disk-utils/sfdisk.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
-index 0f69d65..10307ad 100644
---- a/disk-utils/sfdisk.c
-+++ b/disk-utils/sfdisk.c
-@@ -950,13 +950,16 @@ static int command_dump(struct sfdisk *sf, int argc, 
char **argv)
-       if (rc)
-               err(EXIT_FAILURE, _("cannot open %s"), devname);
- 
-+      if (!fdisk_has_label(sf->cxt))
-+              errx(EXIT_FAILURE, _("%s: does not contain a recognized 
partition table"), devname);
-+
-       dp = fdisk_new_script(sf->cxt);
-       if (!dp)
-               err(EXIT_FAILURE, _("failed to allocate dump struct"));
- 
-       rc = fdisk_script_read_context(dp, NULL);
-       if (rc)
--              err(EXIT_FAILURE, _("failed to dump partition table"));
-+              errx(EXIT_FAILURE, _("%s: failed to dump partition table"), 
devname);
- 
-       if (sf->json)
-               fdisk_script_enable_json(dp, 1);
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch 
(from rev 283056, 
util-linux/trunk/0001-sfdisk-cleanup-dump-error-messages.patch)
===================================================================
--- testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch                
                (rev 0)
+++ testing-x86_64/0001-sfdisk-cleanup-dump-error-messages.patch        
2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,44 @@
+From c49b765a6e9031642e2bb846e93dddc6827e4b28 Mon Sep 17 00:00:00 2001
+From: Karel Zak <k...@redhat.com>
+Date: Wed, 30 Nov 2016 10:53:56 +0100
+Subject: [PATCH] sfdisk: cleanup --dump error messages
+
+old:
+  # truncate -s 1G empty && ./sfdisk --dump empty
+  sfdisk: failed to dump partition table: Success
+
+new:
+  # truncate -s 1G empty && ./sfdisk --dump empty
+  sfdisk: empty: does not contain a recognized partition table.
+
+Addresses: https://github.com/karelzak/util-linux/issues/375
+Signed-off-by: Karel Zak <k...@redhat.com>
+---
+ disk-utils/sfdisk.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 0f69d65..10307ad 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -950,13 +950,16 @@ static int command_dump(struct sfdisk *sf, int argc, 
char **argv)
+       if (rc)
+               err(EXIT_FAILURE, _("cannot open %s"), devname);
+ 
++      if (!fdisk_has_label(sf->cxt))
++              errx(EXIT_FAILURE, _("%s: does not contain a recognized 
partition table"), devname);
++
+       dp = fdisk_new_script(sf->cxt);
+       if (!dp)
+               err(EXIT_FAILURE, _("failed to allocate dump struct"));
+ 
+       rc = fdisk_script_read_context(dp, NULL);
+       if (rc)
+-              err(EXIT_FAILURE, _("failed to dump partition table"));
++              errx(EXIT_FAILURE, _("%s: failed to dump partition table"), 
devname);
+ 
+       if (sf->json)
+               fdisk_script_enable_json(dp, 1);
+-- 
+2.10.2
+

Deleted: 
testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
===================================================================
--- 
testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch  
    2016-12-12 13:16:52 UTC (rev 283056)
+++ 
testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch  
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,70 +0,0 @@
-From fed304837f60b626f6198663990e76e506f89063 Mon Sep 17 00:00:00 2001
-From: Karel Zak <k...@redhat.com>
-Date: Tue, 29 Nov 2016 15:58:18 +0100
-Subject: [PATCH] sfdisk: don't be silent when list non-existing device
-
-Addresses: https://github.com/karelzak/util-linux/issues/376
-Signed-off-by: Karel Zak <k...@redhat.com>
----
- disk-utils/sfdisk.c | 16 ++++++++++------
- 1 file changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
-index 52f2a6d..0f69d65 100644
---- a/disk-utils/sfdisk.c
-+++ b/disk-utils/sfdisk.c
-@@ -560,6 +560,7 @@ static int write_changes(struct sfdisk *sf)
-  */
- static int command_list_partitions(struct sfdisk *sf, int argc, char **argv)
- {
-+      int fail = 0;
-       fdisk_enable_listonly(sf->cxt, 1);
- 
-       if (argc) {
-@@ -568,13 +569,14 @@ static int command_list_partitions(struct sfdisk *sf, 
int argc, char **argv)
-               for (i = 0; i < argc; i++) {
-                       if (ct)
-                               fputs("\n\n", stdout);
--                      if (print_device_pt(sf->cxt, argv[i], 0, sf->verify) == 
0)
--                              ct++;
-+                      if (print_device_pt(sf->cxt, argv[i], 1, sf->verify) != 
0)
-+                              fail++;
-+                      ct++;
-               }
-       } else
-               print_all_devices_pt(sf->cxt, sf->verify);
- 
--      return 0;
-+      return fail;
- }
- 
- /*
-@@ -582,6 +584,7 @@ static int command_list_partitions(struct sfdisk *sf, int 
argc, char **argv)
-  */
- static int command_list_freespace(struct sfdisk *sf, int argc, char **argv)
- {
-+      int fail = 0;
-       fdisk_enable_listonly(sf->cxt, 1);
- 
-       if (argc) {
-@@ -590,13 +593,14 @@ static int command_list_freespace(struct sfdisk *sf, int 
argc, char **argv)
-               for (i = 0; i < argc; i++) {
-                       if (ct)
-                               fputs("\n\n", stdout);
--                      if (print_device_freespace(sf->cxt, argv[i], 0) == 0)
--                              ct++;
-+                      if (print_device_freespace(sf->cxt, argv[i], 1) != 0)
-+                              fail++;
-+                      ct++;
-               }
-       } else
-               print_all_devices_freespace(sf->cxt);
- 
--      return 0;
-+      return fail;
- }
- 
- /*
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
 (from rev 283056, 
util-linux/trunk/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch)
===================================================================
--- 
testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch  
                            (rev 0)
+++ 
testing-x86_64/0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch  
    2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,70 @@
+From fed304837f60b626f6198663990e76e506f89063 Mon Sep 17 00:00:00 2001
+From: Karel Zak <k...@redhat.com>
+Date: Tue, 29 Nov 2016 15:58:18 +0100
+Subject: [PATCH] sfdisk: don't be silent when list non-existing device
+
+Addresses: https://github.com/karelzak/util-linux/issues/376
+Signed-off-by: Karel Zak <k...@redhat.com>
+---
+ disk-utils/sfdisk.c | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 52f2a6d..0f69d65 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -560,6 +560,7 @@ static int write_changes(struct sfdisk *sf)
+  */
+ static int command_list_partitions(struct sfdisk *sf, int argc, char **argv)
+ {
++      int fail = 0;
+       fdisk_enable_listonly(sf->cxt, 1);
+ 
+       if (argc) {
+@@ -568,13 +569,14 @@ static int command_list_partitions(struct sfdisk *sf, 
int argc, char **argv)
+               for (i = 0; i < argc; i++) {
+                       if (ct)
+                               fputs("\n\n", stdout);
+-                      if (print_device_pt(sf->cxt, argv[i], 0, sf->verify) == 
0)
+-                              ct++;
++                      if (print_device_pt(sf->cxt, argv[i], 1, sf->verify) != 
0)
++                              fail++;
++                      ct++;
+               }
+       } else
+               print_all_devices_pt(sf->cxt, sf->verify);
+ 
+-      return 0;
++      return fail;
+ }
+ 
+ /*
+@@ -582,6 +584,7 @@ static int command_list_partitions(struct sfdisk *sf, int 
argc, char **argv)
+  */
+ static int command_list_freespace(struct sfdisk *sf, int argc, char **argv)
+ {
++      int fail = 0;
+       fdisk_enable_listonly(sf->cxt, 1);
+ 
+       if (argc) {
+@@ -590,13 +593,14 @@ static int command_list_freespace(struct sfdisk *sf, int 
argc, char **argv)
+               for (i = 0; i < argc; i++) {
+                       if (ct)
+                               fputs("\n\n", stdout);
+-                      if (print_device_freespace(sf->cxt, argv[i], 0) == 0)
+-                              ct++;
++                      if (print_device_freespace(sf->cxt, argv[i], 1) != 0)
++                              fail++;
++                      ct++;
+               }
+       } else
+               print_all_devices_freespace(sf->cxt);
+ 
+-      return 0;
++      return fail;
+ }
+ 
+ /*
+-- 
+2.10.2
+

Deleted: testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch
===================================================================
--- testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch       
2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch       
2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,223 +0,0 @@
-From 35ca51182782193f555fbdcb06bb10766550d017 Mon Sep 17 00:00:00 2001
-From: Karel Zak <k...@redhat.com>
-Date: Wed, 30 Nov 2016 12:43:10 +0100
-Subject: [PATCH] sfdisk: support empty label use-case
-
-By default sfdisk creates partition table when a first partition is
-specified, otherwise the device is not modified. This force users to
-create at least one partition.
-
-This commit allows to create empty label without partitions if "label:
-<name>" header line is specified by script.
-
-The commit also modifies "New situation:" output to list label name
-and label identifier.
-
-Addresses: https://github.com/karelzak/util-linux/issues/374
-Signed-off-by: Karel Zak <k...@redhat.com>
----
- disk-utils/fdisk-list.c    | 23 +++++++++++++++--------
- disk-utils/fdisk-list.h    |  1 +
- disk-utils/sfdisk.8        | 18 +++++++++++++++++-
- disk-utils/sfdisk.c        | 17 +++++++++++++++++
- libfdisk/src/libfdisk.h.in |  1 +
- libfdisk/src/libfdisk.sym  |  5 +++++
- libfdisk/src/script.c      | 20 +++++++++++++++++++-
- 7 files changed, 75 insertions(+), 10 deletions(-)
-
-diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c
-index e6b2033..c9560f4 100644
---- a/disk-utils/fdisk-list.c
-+++ b/disk-utils/fdisk-list.c
-@@ -34,10 +34,23 @@ static int is_ide_cdrom_or_tape(char *device)
-       return ret;
- }
- 
-+void list_disk_identifier(struct fdisk_context *cxt)
-+{
-+      struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
-+      char *id = NULL;
-+
-+      if (fdisk_has_label(cxt))
-+              fdisk_info(cxt, _("Disklabel type: %s"),
-+                              fdisk_label_get_name(lb));
-+
-+      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
-+              fdisk_info(cxt, _("Disk identifier: %s"), id);
-+              free(id);
-+      }
-+}
- 
- void list_disk_geometry(struct fdisk_context *cxt)
- {
--      char *id = NULL;
-       struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
-       uint64_t bytes = fdisk_get_nsectors(cxt) * fdisk_get_sector_size(cxt);
-       char *strsz = size_to_human_string(SIZE_SUFFIX_SPACE
-@@ -71,14 +84,8 @@ void list_disk_geometry(struct fdisk_context *cxt)
-       if (fdisk_get_alignment_offset(cxt))
-               fdisk_info(cxt, _("Alignment offset: %lu bytes"),
-                               fdisk_get_alignment_offset(cxt));
--      if (fdisk_has_label(cxt))
--              fdisk_info(cxt, _("Disklabel type: %s"),
--                              fdisk_label_get_name(lb));
- 
--      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
--              fdisk_info(cxt, _("Disk identifier: %s"), id);
--              free(id);
--      }
-+      list_disk_identifier(cxt);
- }
- 
- void list_disklabel(struct fdisk_context *cxt)
-diff --git a/disk-utils/fdisk-list.h b/disk-utils/fdisk-list.h
-index eddab92..4ed5c25 100644
---- a/disk-utils/fdisk-list.h
-+++ b/disk-utils/fdisk-list.h
-@@ -2,6 +2,7 @@
- #define UTIL_LINUX_FDISK_LIST_H
- 
- extern void list_disklabel(struct fdisk_context *cxt);
-+extern void list_disk_identifier(struct fdisk_context *cxt);
- extern void list_disk_geometry(struct fdisk_context *cxt);
- extern void list_freespace(struct fdisk_context *cxt);
- 
-diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8
-index fcde872..efe4a86 100644
---- a/disk-utils/sfdisk.8
-+++ b/disk-utils/sfdisk.8
-@@ -212,7 +212,10 @@ Deprecated option.  Only the sector unit is supported.
- .BR \-X , " \-\-label " \fItype
- Specify the disk label type (e.g. \fBdos\fR, \fBgpt\fR, ...).  If this option
- is not given, then \fBsfdisk\fR defaults to the existing label, but if there
--is no label on the device yet, then the type defaults to \fBdos\fR.
-+is no label on the device yet, then the type defaults to \fBdos\fR. The 
default
-+or the current label may be overwritten by the "label: <name>" script header
-+line. The option \fB\-\-label\fR does not force \fBsfdisk\fR to create empty
-+disk label (see the \fBEMPTY DISK LABEL\fR section below).
- .TP
- .BR \-Y , " \-\-label\-nested " \fItype
- Force editing of a nested disk label.  The primary disk label has to exist 
already.
-@@ -404,6 +407,19 @@ For backward compatibility the \fBId=\fR field has the 
same meaning.
- .RE
- .RE
- 
-+.SH "EMPTY DISK LABEL"
-+.B sfdisk
-+does not create partition table without partitions by default. The lines with
-+partitions are expected in the script by default. The empty partition table 
has
-+to be explicitly requested by "label: <name>" script header line without any
-+partitions lines. For example:
-+.RS
-+.sp
-+.B "echo 'label: gpt' | sfdisk /dev/sdb"
-+.sp
-+.RE
-+creates empty GPT partition table. Note that the \fB\-\-append\fR disables 
this feature.
-+
- .SH "BACKING UP THE PARTITION TABLE"
- It is recommended to save the layout of your devices.
- .B sfdisk
-diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
-index 10307ad..2d65974 100644
---- a/disk-utils/sfdisk.c
-+++ b/disk-utils/sfdisk.c
-@@ -1766,8 +1766,25 @@ static int command_fdisk(struct sfdisk *sf, int argc, 
char **argv)
-               }
-       } while (1);
- 
-+      /* create empty disk label if label, but no partition specified */
-+      if (rc == SFDISK_DONE_EOF && created == 0
-+          && fdisk_script_has_force_label(dp) == 1
-+          && fdisk_table_get_nents(tb) == 0
-+          && fdisk_script_get_header(dp, "label")) {
-+
-+              int xrc = fdisk_apply_script_headers(sf->cxt, dp);
-+              created = !xrc;
-+              if (xrc) {
-+                      fdisk_warnx(sf->cxt, _(
-+                                "Failed to apply script headers, "
-+                                "disk label not created."));
-+                      rc = SFDISK_DONE_ABORT;
-+              }
-+      }
-+
-       if (!sf->quiet && rc != SFDISK_DONE_ABORT) {
-               fdisk_info(sf->cxt, _("\nNew situation:"));
-+              list_disk_identifier(sf->cxt);
-               list_disklabel(sf->cxt);
-       }
- 
-diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in
-index 9154f5b..59cce19 100644
---- a/libfdisk/src/libfdisk.h.in
-+++ b/libfdisk/src/libfdisk.h.in
-@@ -642,6 +642,7 @@ const char *fdisk_script_get_header(struct fdisk_script 
*dp, const char *name);
- int fdisk_script_set_header(struct fdisk_script *dp, const char *name, const 
char *data);
- struct fdisk_table *fdisk_script_get_table(struct fdisk_script *dp);
- int fdisk_script_get_nlines(struct fdisk_script *dp);
-+int fdisk_script_has_force_label(struct fdisk_script *dp);
- 
- int fdisk_script_set_userdata(struct fdisk_script *dp, void *data);
- void *fdisk_script_get_userdata(struct fdisk_script *dp);
-diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym
-index 02cd7a8..d6d4ac5 100644
---- a/libfdisk/src/libfdisk.sym
-+++ b/libfdisk/src/libfdisk.sym
-@@ -274,3 +274,8 @@ FDISK_2.29 {
-       fdisk_labelitem_is_number;
-       fdisk_gpt_set_npartitions;
- } FDISK_2.28;
-+
-+
-+FDISK_2.30 {
-+      fdisk_script_has_force_label;
-+} FDISK_2.29;
-diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
-index ae7e99a..0d1f260 100644
---- a/libfdisk/src/script.c
-+++ b/libfdisk/src/script.c
-@@ -36,7 +36,8 @@ struct fdisk_script {
-       size_t                  nlines;
-       struct fdisk_label      *label;
- 
--      unsigned int            json : 1;               /* JSON output */
-+      unsigned int            json : 1,               /* JSON output */
-+                              force_label : 1;        /* label: <name> 
specified */
- };
- 
- 
-@@ -354,6 +355,22 @@ int fdisk_script_get_nlines(struct fdisk_script *dp)
- }
- 
- /**
-+ * fdisk_script_has_force_label:
-+ * @dp: script
-+ *
-+ * Note that fdisk_script_set_header(dp, "label", name) does not modify
-+ * force_label status. The label has to be specified by script.
-+ *
-+ * Returns: true if "label: <name>" has been parsed.
-+ */
-+int fdisk_script_has_force_label(struct fdisk_script *dp)
-+{
-+      assert(dp);
-+      return dp->force_label;
-+}
-+
-+
-+/**
-  * fdisk_script_read_context:
-  * @dp: script
-  * @cxt: context
-@@ -706,6 +723,7 @@ static int parse_line_header(struct fdisk_script *dp, char 
*s)
-       if (strcmp(name, "label") == 0) {
-               if (dp->cxt && !fdisk_get_label(dp->cxt, value))
-                       goto done;                      /* unknown label name */
-+              dp->force_label = 1;
-       } else if (strcmp(name, "unit") == 0) {
-               if (strcmp(value, "sectors") != 0)
-                       goto done;                      /* only "sectors" 
supported */
--- 
-2.10.2
-

Copied: 
util-linux/repos/testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch 
(from rev 283056, 
util-linux/trunk/0001-sfdisk-support-empty-label-use-case.patch)
===================================================================
--- testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch               
                (rev 0)
+++ testing-x86_64/0001-sfdisk-support-empty-label-use-case.patch       
2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,223 @@
+From 35ca51182782193f555fbdcb06bb10766550d017 Mon Sep 17 00:00:00 2001
+From: Karel Zak <k...@redhat.com>
+Date: Wed, 30 Nov 2016 12:43:10 +0100
+Subject: [PATCH] sfdisk: support empty label use-case
+
+By default sfdisk creates partition table when a first partition is
+specified, otherwise the device is not modified. This force users to
+create at least one partition.
+
+This commit allows to create empty label without partitions if "label:
+<name>" header line is specified by script.
+
+The commit also modifies "New situation:" output to list label name
+and label identifier.
+
+Addresses: https://github.com/karelzak/util-linux/issues/374
+Signed-off-by: Karel Zak <k...@redhat.com>
+---
+ disk-utils/fdisk-list.c    | 23 +++++++++++++++--------
+ disk-utils/fdisk-list.h    |  1 +
+ disk-utils/sfdisk.8        | 18 +++++++++++++++++-
+ disk-utils/sfdisk.c        | 17 +++++++++++++++++
+ libfdisk/src/libfdisk.h.in |  1 +
+ libfdisk/src/libfdisk.sym  |  5 +++++
+ libfdisk/src/script.c      | 20 +++++++++++++++++++-
+ 7 files changed, 75 insertions(+), 10 deletions(-)
+
+diff --git a/disk-utils/fdisk-list.c b/disk-utils/fdisk-list.c
+index e6b2033..c9560f4 100644
+--- a/disk-utils/fdisk-list.c
++++ b/disk-utils/fdisk-list.c
+@@ -34,10 +34,23 @@ static int is_ide_cdrom_or_tape(char *device)
+       return ret;
+ }
+ 
++void list_disk_identifier(struct fdisk_context *cxt)
++{
++      struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
++      char *id = NULL;
++
++      if (fdisk_has_label(cxt))
++              fdisk_info(cxt, _("Disklabel type: %s"),
++                              fdisk_label_get_name(lb));
++
++      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
++              fdisk_info(cxt, _("Disk identifier: %s"), id);
++              free(id);
++      }
++}
+ 
+ void list_disk_geometry(struct fdisk_context *cxt)
+ {
+-      char *id = NULL;
+       struct fdisk_label *lb = fdisk_get_label(cxt, NULL);
+       uint64_t bytes = fdisk_get_nsectors(cxt) * fdisk_get_sector_size(cxt);
+       char *strsz = size_to_human_string(SIZE_SUFFIX_SPACE
+@@ -71,14 +84,8 @@ void list_disk_geometry(struct fdisk_context *cxt)
+       if (fdisk_get_alignment_offset(cxt))
+               fdisk_info(cxt, _("Alignment offset: %lu bytes"),
+                               fdisk_get_alignment_offset(cxt));
+-      if (fdisk_has_label(cxt))
+-              fdisk_info(cxt, _("Disklabel type: %s"),
+-                              fdisk_label_get_name(lb));
+ 
+-      if (!fdisk_is_details(cxt) && fdisk_get_disklabel_id(cxt, &id) == 0 && 
id) {
+-              fdisk_info(cxt, _("Disk identifier: %s"), id);
+-              free(id);
+-      }
++      list_disk_identifier(cxt);
+ }
+ 
+ void list_disklabel(struct fdisk_context *cxt)
+diff --git a/disk-utils/fdisk-list.h b/disk-utils/fdisk-list.h
+index eddab92..4ed5c25 100644
+--- a/disk-utils/fdisk-list.h
++++ b/disk-utils/fdisk-list.h
+@@ -2,6 +2,7 @@
+ #define UTIL_LINUX_FDISK_LIST_H
+ 
+ extern void list_disklabel(struct fdisk_context *cxt);
++extern void list_disk_identifier(struct fdisk_context *cxt);
+ extern void list_disk_geometry(struct fdisk_context *cxt);
+ extern void list_freespace(struct fdisk_context *cxt);
+ 
+diff --git a/disk-utils/sfdisk.8 b/disk-utils/sfdisk.8
+index fcde872..efe4a86 100644
+--- a/disk-utils/sfdisk.8
++++ b/disk-utils/sfdisk.8
+@@ -212,7 +212,10 @@ Deprecated option.  Only the sector unit is supported.
+ .BR \-X , " \-\-label " \fItype
+ Specify the disk label type (e.g. \fBdos\fR, \fBgpt\fR, ...).  If this option
+ is not given, then \fBsfdisk\fR defaults to the existing label, but if there
+-is no label on the device yet, then the type defaults to \fBdos\fR.
++is no label on the device yet, then the type defaults to \fBdos\fR. The 
default
++or the current label may be overwritten by the "label: <name>" script header
++line. The option \fB\-\-label\fR does not force \fBsfdisk\fR to create empty
++disk label (see the \fBEMPTY DISK LABEL\fR section below).
+ .TP
+ .BR \-Y , " \-\-label\-nested " \fItype
+ Force editing of a nested disk label.  The primary disk label has to exist 
already.
+@@ -404,6 +407,19 @@ For backward compatibility the \fBId=\fR field has the 
same meaning.
+ .RE
+ .RE
+ 
++.SH "EMPTY DISK LABEL"
++.B sfdisk
++does not create partition table without partitions by default. The lines with
++partitions are expected in the script by default. The empty partition table 
has
++to be explicitly requested by "label: <name>" script header line without any
++partitions lines. For example:
++.RS
++.sp
++.B "echo 'label: gpt' | sfdisk /dev/sdb"
++.sp
++.RE
++creates empty GPT partition table. Note that the \fB\-\-append\fR disables 
this feature.
++
+ .SH "BACKING UP THE PARTITION TABLE"
+ It is recommended to save the layout of your devices.
+ .B sfdisk
+diff --git a/disk-utils/sfdisk.c b/disk-utils/sfdisk.c
+index 10307ad..2d65974 100644
+--- a/disk-utils/sfdisk.c
++++ b/disk-utils/sfdisk.c
+@@ -1766,8 +1766,25 @@ static int command_fdisk(struct sfdisk *sf, int argc, 
char **argv)
+               }
+       } while (1);
+ 
++      /* create empty disk label if label, but no partition specified */
++      if (rc == SFDISK_DONE_EOF && created == 0
++          && fdisk_script_has_force_label(dp) == 1
++          && fdisk_table_get_nents(tb) == 0
++          && fdisk_script_get_header(dp, "label")) {
++
++              int xrc = fdisk_apply_script_headers(sf->cxt, dp);
++              created = !xrc;
++              if (xrc) {
++                      fdisk_warnx(sf->cxt, _(
++                                "Failed to apply script headers, "
++                                "disk label not created."));
++                      rc = SFDISK_DONE_ABORT;
++              }
++      }
++
+       if (!sf->quiet && rc != SFDISK_DONE_ABORT) {
+               fdisk_info(sf->cxt, _("\nNew situation:"));
++              list_disk_identifier(sf->cxt);
+               list_disklabel(sf->cxt);
+       }
+ 
+diff --git a/libfdisk/src/libfdisk.h.in b/libfdisk/src/libfdisk.h.in
+index 9154f5b..59cce19 100644
+--- a/libfdisk/src/libfdisk.h.in
++++ b/libfdisk/src/libfdisk.h.in
+@@ -642,6 +642,7 @@ const char *fdisk_script_get_header(struct fdisk_script 
*dp, const char *name);
+ int fdisk_script_set_header(struct fdisk_script *dp, const char *name, const 
char *data);
+ struct fdisk_table *fdisk_script_get_table(struct fdisk_script *dp);
+ int fdisk_script_get_nlines(struct fdisk_script *dp);
++int fdisk_script_has_force_label(struct fdisk_script *dp);
+ 
+ int fdisk_script_set_userdata(struct fdisk_script *dp, void *data);
+ void *fdisk_script_get_userdata(struct fdisk_script *dp);
+diff --git a/libfdisk/src/libfdisk.sym b/libfdisk/src/libfdisk.sym
+index 02cd7a8..d6d4ac5 100644
+--- a/libfdisk/src/libfdisk.sym
++++ b/libfdisk/src/libfdisk.sym
+@@ -274,3 +274,8 @@ FDISK_2.29 {
+       fdisk_labelitem_is_number;
+       fdisk_gpt_set_npartitions;
+ } FDISK_2.28;
++
++
++FDISK_2.30 {
++      fdisk_script_has_force_label;
++} FDISK_2.29;
+diff --git a/libfdisk/src/script.c b/libfdisk/src/script.c
+index ae7e99a..0d1f260 100644
+--- a/libfdisk/src/script.c
++++ b/libfdisk/src/script.c
+@@ -36,7 +36,8 @@ struct fdisk_script {
+       size_t                  nlines;
+       struct fdisk_label      *label;
+ 
+-      unsigned int            json : 1;               /* JSON output */
++      unsigned int            json : 1,               /* JSON output */
++                              force_label : 1;        /* label: <name> 
specified */
+ };
+ 
+ 
+@@ -354,6 +355,22 @@ int fdisk_script_get_nlines(struct fdisk_script *dp)
+ }
+ 
+ /**
++ * fdisk_script_has_force_label:
++ * @dp: script
++ *
++ * Note that fdisk_script_set_header(dp, "label", name) does not modify
++ * force_label status. The label has to be specified by script.
++ *
++ * Returns: true if "label: <name>" has been parsed.
++ */
++int fdisk_script_has_force_label(struct fdisk_script *dp)
++{
++      assert(dp);
++      return dp->force_label;
++}
++
++
++/**
+  * fdisk_script_read_context:
+  * @dp: script
+  * @cxt: context
+@@ -706,6 +723,7 @@ static int parse_line_header(struct fdisk_script *dp, char 
*s)
+       if (strcmp(name, "label") == 0) {
+               if (dp->cxt && !fdisk_get_label(dp->cxt, value))
+                       goto done;                      /* unknown label name */
++              dp->force_label = 1;
+       } else if (strcmp(name, "unit") == 0) {
+               if (strcmp(value, "sectors") != 0)
+                       goto done;                      /* only "sectors" 
supported */
+-- 
+2.10.2
+

Deleted: testing-x86_64/PKGBUILD
===================================================================
--- testing-x86_64/PKGBUILD     2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-x86_64/PKGBUILD     2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,112 +0,0 @@
-# $Id$
-# Maintainer: Tom Gundersen <t...@jklm.no>
-# Maintainer: Dave Reisner <dreis...@archlinux.org>
-# Contributor: judd <jvi...@zeroflux.org>
-
-pkgbase=util-linux
-pkgname=(util-linux libutil-linux)
-_pkgmajor=2.29
-pkgver=${_pkgmajor}
-pkgrel=2
-pkgdesc="Miscellaneous system utilities for Linux"
-url="https://www.kernel.org/pub/linux/utils/util-linux/";
-arch=('i686' 'x86_64')
-makedepends=('systemd' 'python')
-license=('GPL2')
-options=('strip' 'debug')
-validpgpkeys=('B0C64D14301CC6EFAEDF60E4E4B71D5EEC39C284')  # Karel Zak
-source=("https://www.kernel.org/pub/linux/utils/util-linux/v$_pkgmajor/$pkgbase-$pkgver.tar."{xz,sign}
-        pam-{login,common,su}
-        '0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch'
-        '0001-sfdisk-cleanup-dump-error-messages.patch'
-        '0001-sfdisk-support-empty-label-use-case.patch'
-        '0001-chrt-default-to-SCHED_RR-policy.patch'
-        '0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch')
-md5sums=('07b6845f48a421ad5844aa9d58edb837'
-         'SKIP'
-         '4368b3f98abd8a32662e094c54e7f9b1'
-         'a31374fef2cba0ca34dfc7078e2969e4'
-         'fa85e5cce5d723275b14365ba71a8aad'
-         '3fce7192ce1b3d97fdffd0226ed63a90'
-         '2f3c061865360170cacda948035fd02d'
-         '6d2e3915124938577f0ff18ef701c87f'
-         '168c1cb2cfe7d4eddfc6e3f3b19d3ced'
-         '68c2076a9a09564ba0c9776540a175fa')
-
-prepare() {
-  cd "$pkgbase-$pkgver"
-
-  patch -Np1 
<../0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
-  patch -Np1 <../0001-sfdisk-cleanup-dump-error-messages.patch
-  patch -Np1 <../0001-sfdisk-support-empty-label-use-case.patch
-  patch -Np1 <../0001-chrt-default-to-SCHED_RR-policy.patch
-  patch -Np1 
<../0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
-}
-
-build() {
-  cd "$pkgbase-$pkgver"
-
-  ./configure --prefix=/usr \
-              --libdir=/usr/lib \
-              --bindir=/usr/bin \
-              --localstatedir=/run \
-              --enable-fs-paths-extra=/usr/bin \
-              --enable-raw \
-              --enable-vipw \
-              --enable-newgrp \
-              --enable-chfn-chsh \
-              --enable-write \
-              --enable-mesg \
-              --enable-libmount-force-mountinfo \
-              --disable-tailf \
-              --with-python=3
-
-  make
-}
-
-package_util-linux() {
-  conflicts=('util-linux-ng' 'eject' 'zramctl')
-  provides=("util-linux-ng=$pkgver" 'eject' 'zramctl')
-  replaces=('zramctl')
-  depends=('pam' 'shadow' 'coreutils' 'libsystemd' 'libutil-linux')
-  optdepends=('python: python bindings to libmount')
-  groups=('base' 'base-devel')
-  backup=(etc/pam.d/chfn
-          etc/pam.d/chsh
-          etc/pam.d/login
-          etc/pam.d/su
-          etc/pam.d/su-l)
-
-  cd "$pkgbase-$pkgver"
-
-  make DESTDIR="$pkgdir" install
-
-  # setuid chfn and chsh
-  chmod 4755 "$pkgdir"/usr/bin/{newgrp,ch{sh,fn}}
-
-  # install PAM files for login-utils
-  install -Dm644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chfn"
-  install -m644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chsh"
-  install -m644 "$srcdir/pam-login" "$pkgdir/etc/pam.d/login"
-  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su"
-  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su-l"
-
-  # TODO(dreisner): offer this upstream?
-  sed -i '/ListenStream/ aRuntimeDirectory=uuidd' 
"$pkgdir/usr/lib/systemd/system/uuidd.socket"
-
-  # adjust for usrmove
-  # TODO(dreisner): fix configure.ac upstream so that this isn't needed
-  cd "$pkgdir"
-  mv {,usr/}sbin/* usr/bin
-  rmdir sbin usr/sbin
-
-  ### runtime libs are shipped as part of libutil-linux
-  rm "$pkgdir"/usr/lib/lib*.{a,so}*
-}
-
-package_libutil-linux() {
-  pkgdesc="util-linux runtime libraries"
-  provides=('libblkid.so' 'libfdisk.so' 'libmount.so' 'libsmartcols.so' 
'libuuid.so')
-
-  make -C "$pkgbase-$pkgver" DESTDIR="$pkgdir" install-usrlib_execLTLIBRARIES
-}

Copied: util-linux/repos/testing-x86_64/PKGBUILD (from rev 283056, 
util-linux/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD                             (rev 0)
+++ testing-x86_64/PKGBUILD     2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,117 @@
+# $Id$
+# Maintainer: Tom Gundersen <t...@jklm.no>
+# Maintainer: Dave Reisner <dreis...@archlinux.org>
+# Contributor: judd <jvi...@zeroflux.org>
+
+pkgbase=util-linux
+pkgname=(util-linux libutil-linux)
+_pkgmajor=2.29
+pkgver=${_pkgmajor}
+pkgrel=1
+pkgdesc="Miscellaneous system utilities for Linux"
+url="https://www.kernel.org/pub/linux/utils/util-linux/";
+arch=('i686' 'x86_64')
+makedepends=('systemd' 'python')
+license=('GPL2')
+options=('strip' 'debug')
+validpgpkeys=('B0C64D14301CC6EFAEDF60E4E4B71D5EEC39C284')  # Karel Zak
+source=("https://www.kernel.org/pub/linux/utils/util-linux/v$_pkgmajor/$pkgbase-$pkgver.tar."{xz,sign}
+        pam-{login,common,su}
+        '0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch'
+        '0001-sfdisk-cleanup-dump-error-messages.patch'
+        '0001-sfdisk-support-empty-label-use-case.patch'
+        '0001-chrt-default-to-SCHED_RR-policy.patch'
+        '0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch')
+md5sums=('07b6845f48a421ad5844aa9d58edb837'
+         'SKIP'
+         '4368b3f98abd8a32662e094c54e7f9b1'
+         'a31374fef2cba0ca34dfc7078e2969e4'
+         'fa85e5cce5d723275b14365ba71a8aad'
+         '3fce7192ce1b3d97fdffd0226ed63a90'
+         '2f3c061865360170cacda948035fd02d'
+         '6d2e3915124938577f0ff18ef701c87f'
+         '168c1cb2cfe7d4eddfc6e3f3b19d3ced'
+         '68c2076a9a09564ba0c9776540a175fa')
+
+prepare() {
+  cd "$pkgbase-$pkgver"
+
+  patch -Np1 
<../0001-sfdisk-don-t-be-silent-when-list-non-existing-device.patch
+  patch -Np1 <../0001-sfdisk-cleanup-dump-error-messages.patch
+  patch -Np1 <../0001-sfdisk-support-empty-label-use-case.patch
+  patch -Np1 <../0001-chrt-default-to-SCHED_RR-policy.patch
+  patch -Np1 
<../0001-lsns-Fix-parser-for-proc-pid-stat-which-is-including.patch
+}
+
+build() {
+  cd "$pkgbase-$pkgver"
+
+  ./configure --prefix=/usr \
+              --libdir=/usr/lib \
+              --bindir=/usr/bin \
+              --localstatedir=/run \
+              --enable-fs-paths-extra=/usr/bin \
+              --enable-raw \
+              --enable-vipw \
+              --enable-newgrp \
+              --enable-chfn-chsh \
+              --enable-write \
+              --enable-mesg \
+              --disable-tailf \
+              --with-python=3
+
+  make
+}
+
+package_util-linux() {
+  conflicts=('util-linux-ng' 'eject' 'zramctl')
+  provides=("util-linux-ng=$pkgver" 'eject' 'zramctl')
+  replaces=('zramctl')
+  depends=('pam' 'shadow' 'coreutils' 'libsystemd' 'libutil-linux')
+  optdepends=('python: python bindings to libmount')
+  groups=('base' 'base-devel')
+  backup=(etc/pam.d/chfn
+          etc/pam.d/chsh
+          etc/pam.d/login
+          etc/pam.d/su
+          etc/pam.d/su-l)
+
+  cd "$pkgbase-$pkgver"
+
+  make DESTDIR="$pkgdir" install
+
+  # setuid chfn and chsh
+  chmod 4755 "$pkgdir"/usr/bin/{newgrp,ch{sh,fn}}
+
+  # install PAM files for login-utils
+  install -Dm644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chfn"
+  install -m644 "$srcdir/pam-common" "$pkgdir/etc/pam.d/chsh"
+  install -m644 "$srcdir/pam-login" "$pkgdir/etc/pam.d/login"
+  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su"
+  install -m644 "$srcdir/pam-su" "$pkgdir/etc/pam.d/su-l"
+
+  # TODO(dreisner): offer this upstream?
+  sed -i '/ListenStream/ aRuntimeDirectory=uuidd' 
"$pkgdir/usr/lib/systemd/system/uuidd.socket"
+
+  # adjust for usrmove
+  # TODO(dreisner): fix configure.ac upstream so that this isn't needed
+  cd "$pkgdir"
+  mv {,usr/}sbin/* usr/bin
+  rmdir sbin usr/sbin
+
+  ### runtime libs are shipped as part of libutil-linux
+  rm "$pkgdir"/usr/lib/lib*.{a,so}*
+
+  ### tailf has been deprecated for a while. let's not include it anymore.
+  rm \
+    "$pkgdir"/usr/bin/tailf \
+    "$pkgdir"/usr/share/bash-completion/completions/tailf \
+    "$pkgdir"/usr/share/man/man1/tailf.1
+}
+
+package_libutil-linux() {
+  pkgdesc="util-linux runtime libraries"
+  provides=('libblkid.so' 'libfdisk.so' 'libmount.so' 'libsmartcols.so' 
'libuuid.so')
+
+  make -C "$pkgbase-$pkgver" DESTDIR="$pkgdir" install-usrlib_execLTLIBRARIES
+}

Deleted: testing-x86_64/pam-common
===================================================================
--- testing-x86_64/pam-common   2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-x86_64/pam-common   2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,6 +0,0 @@
-#%PAM-1.0
-auth           sufficient      pam_rootok.so
-auth           required        pam_unix.so
-account                required        pam_unix.so
-session                required        pam_unix.so
-password       required        pam_permit.so

Copied: util-linux/repos/testing-x86_64/pam-common (from rev 283056, 
util-linux/trunk/pam-common)
===================================================================
--- testing-x86_64/pam-common                           (rev 0)
+++ testing-x86_64/pam-common   2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,6 @@
+#%PAM-1.0
+auth           sufficient      pam_rootok.so
+auth           required        pam_unix.so
+account                required        pam_unix.so
+session                required        pam_unix.so
+password       required        pam_permit.so

Deleted: testing-x86_64/pam-login
===================================================================
--- testing-x86_64/pam-login    2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-x86_64/pam-login    2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,7 +0,0 @@
-#%PAM-1.0
-
-auth       required     pam_securetty.so
-auth       requisite    pam_nologin.so
-auth       include      system-local-login
-account    include      system-local-login
-session    include      system-local-login

Copied: util-linux/repos/testing-x86_64/pam-login (from rev 283056, 
util-linux/trunk/pam-login)
===================================================================
--- testing-x86_64/pam-login                            (rev 0)
+++ testing-x86_64/pam-login    2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,7 @@
+#%PAM-1.0
+
+auth       required     pam_securetty.so
+auth       requisite    pam_nologin.so
+auth       include      system-local-login
+account    include      system-local-login
+session    include      system-local-login

Deleted: testing-x86_64/pam-su
===================================================================
--- testing-x86_64/pam-su       2016-12-12 13:16:52 UTC (rev 283056)
+++ testing-x86_64/pam-su       2016-12-12 13:17:53 UTC (rev 283057)
@@ -1,9 +0,0 @@
-#%PAM-1.0
-auth           sufficient      pam_rootok.so
-# Uncomment the following line to implicitly trust users in the "wheel" group.
-#auth          sufficient      pam_wheel.so trust use_uid
-# Uncomment the following line to require a user to be in the "wheel" group.
-#auth          required        pam_wheel.so use_uid
-auth           required        pam_unix.so
-account                required        pam_unix.so
-session                required        pam_unix.so

Copied: util-linux/repos/testing-x86_64/pam-su (from rev 283056, 
util-linux/trunk/pam-su)
===================================================================
--- testing-x86_64/pam-su                               (rev 0)
+++ testing-x86_64/pam-su       2016-12-12 13:17:53 UTC (rev 283057)
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth           sufficient      pam_rootok.so
+# Uncomment the following line to implicitly trust users in the "wheel" group.
+#auth          sufficient      pam_wheel.so trust use_uid
+# Uncomment the following line to require a user to be in the "wheel" group.
+#auth          required        pam_wheel.so use_uid
+auth           required        pam_unix.so
+account                required        pam_unix.so
+session                required        pam_unix.so

Reply via email to