[systemd-commits] 5 commits - NEWS README src/analyze src/journal-remote src/libsystemd-network src/resolve-host src/shared

Lennart Poettering lennart at kemper.freedesktop.org
Tue Aug 19 15:19:22 PDT 2014


 NEWS                                     |   11 ++++
 README                                   |    1 
 src/analyze/analyze.c                    |   20 ++++++--
 src/journal-remote/journal-remote.c      |   74 +++++++++++++++++--------------
 src/journal-remote/journal-upload.c      |   57 ++++++++++++-----------
 src/libsystemd-network/sd-dhcp6-client.c |    2 
 src/resolve-host/resolve-host.c          |   19 +++++--
 src/shared/util.c                        |    1 
 8 files changed, 114 insertions(+), 71 deletions(-)

New commits:
commit 5364f729ba9616cd9fdab8d5413fbc25a1af3a57
Author: Lennart Poettering <lennart at poettering.net>
Date:   Wed Aug 20 00:18:04 2014 +0200

    indentation/spurious whitespace fixes

diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
index c6c82eb..f69c0ed 100644
--- a/src/libsystemd-network/sd-dhcp6-client.c
+++ b/src/libsystemd-network/sd-dhcp6-client.c
@@ -707,7 +707,7 @@ static int client_receive_reply(sd_dhcp6_client *client, DHCP6Message *reply,
         }
 
         if (client->lease)
-            dhcp6_lease_clear_timers(&client->lease->ia);
+                dhcp6_lease_clear_timers(&client->lease->ia);
 
         client->lease = sd_dhcp6_lease_unref(client->lease);
         client->lease = lease;
diff --git a/src/shared/util.c b/src/shared/util.c
index 2bb3b5e..85a570a 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -3942,7 +3942,6 @@ void execute_directory(const char *directory, DIR *d, usec_t timeout, char *argv
                                 _exit(EXIT_FAILURE);
                         }
 
-
                         log_debug("Spawned %s as " PID_FMT ".", path, pid);
 
                         r = hashmap_put(pids, UINT_TO_PTR(pid), path);

commit 4015ac5c321f34784f73bd91ae9d7855ed663e5e
Author: Lennart Poettering <lennart at poettering.net>
Date:   Wed Aug 20 00:17:46 2014 +0200

    journal-upload: allow the tool to start

diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c
index 5a30a29..7a7aee8 100644
--- a/src/journal-remote/journal-upload.c
+++ b/src/journal-remote/journal-upload.c
@@ -748,7 +748,7 @@ int main(int argc, char **argv) {
         log_parse_environment();
 
         r = parse_config();
-        if (r <= 0)
+        if (r < 0)
                 goto finish;
 
         r = parse_argv(argc, argv);

commit dad29dff1925a114e20d4eb7b47fca23c4f25fd7
Author: Lennart Poettering <lennart at poettering.net>
Date:   Wed Aug 20 00:15:05 2014 +0200

    cmdline: for new tools avoid introduce new negative switches, and properly align --help texts
    
    Negative switches are a bad un-normalized thing. We alerady have some,
    but we should try harder to avoid intrdoucing new ones.
    
    Hence, instead of adding two switches:
    
            --foobar
            --no-foobar
    
    Let's instead use the syntax
    
            --foobar
            --foobar=yes
            --foobar=no
    
    Where the first two are equivalent. The boolean argument is parsed
    following the usual rules.
    
    Change all new negative switches this way.
    
    This patch also properly aligns the --help table, so that single char
    switches always get a column separate of the long switches.

diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c
index b8b47ed..d860a02 100644
--- a/src/analyze/analyze.c
+++ b/src/analyze/analyze.c
@@ -1202,7 +1202,7 @@ static void help(void) {
                "                          services, which finished TIMESPAN earlier, than the\n"
                "                          latest in the branch. The unit of TIMESPAN is seconds\n"
                "                          unless specified with a different unit, i.e. 50ms\n"
-               "     --no-man             Do not check for existence of man pages\n\n"
+               "     --man[=BOOL]         Do [not] check for existence of man pages\n\n"
                "Commands:\n"
                "  time                    Print time spent in the kernel before reaching userspace\n"
                "  blame                   Print list of running units ordered by time to init\n"
@@ -1230,7 +1230,7 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_DOT_TO_PATTERN,
                 ARG_FUZZ,
                 ARG_NO_PAGER,
-                ARG_NO_MAN,
+                ARG_MAN,
         };
 
         static const struct option options[] = {
@@ -1244,7 +1244,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "to-pattern",   required_argument, NULL, ARG_DOT_TO_PATTERN   },
                 { "fuzz",         required_argument, NULL, ARG_FUZZ             },
                 { "no-pager",     no_argument,       NULL, ARG_NO_PAGER         },
-                { "no-man",       no_argument,       NULL, ARG_NO_MAN           },
+                { "man",          optional_argument, NULL, ARG_MAN              },
                 { "host",         required_argument, NULL, 'H'                  },
                 { "machine",      required_argument, NULL, 'M'                  },
                 {}
@@ -1315,8 +1315,18 @@ static int parse_argv(int argc, char *argv[]) {
                         arg_host = optarg;
                         break;
 
-                case ARG_NO_MAN:
-                        arg_man = false;
+                case ARG_MAN:
+                        if (optarg) {
+                                r = parse_boolean(optarg);
+                                if (r < 0) {
+                                        log_error("Failed to parse --man= argument.");
+                                        return -EINVAL;
+                                }
+
+                                arg_man = !!r;
+                        } else
+                                arg_man = true;
+
                         break;
 
                 case '?':
diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c
index 36c8e00..aa659d1 100644
--- a/src/journal-remote/journal-remote.c
+++ b/src/journal-remote/journal-remote.c
@@ -1134,25 +1134,24 @@ static int parse_config(void) {
 static void help(void) {
         printf("%s [OPTIONS...] {FILE|-}...\n\n"
                "Write external journal events to journal file(s).\n\n"
-               "Options:\n"
-               "  --url=URL            Read events from systemd-journal-gatewayd at URL\n"
-               "  --getter=COMMAND     Read events from the output of COMMAND\n"
-               "  --listen-raw=ADDR    Listen for connections at ADDR\n"
-               "  --listen-http=ADDR   Listen for HTTP connections at ADDR\n"
-               "  --listen-https=ADDR  Listen for HTTPS connections at ADDR\n"
+               "  -h --help               Show this help\n"
+               "     --version            Show package version\n"
+               "     --url=URL            Read events from systemd-journal-gatewayd at URL\n"
+               "     --getter=COMMAND     Read events from the output of COMMAND\n"
+               "     --listen-raw=ADDR    Listen for connections at ADDR\n"
+               "     --listen-http=ADDR   Listen for HTTP connections at ADDR\n"
+               "     --listen-https=ADDR  Listen for HTTPS connections at ADDR\n"
                "  -o --output=FILE|DIR Write output to FILE or DIR/external-*.journal\n"
-               "  --[no-]compress      Use XZ-compression in the output journal (default: yes)\n"
-               "  --[no-]seal          Use Event sealing in the output journal (default: no)\n"
-               "  --key=FILENAME       Specify key in PEM format (default:\n"
-               "                           \"" PRIV_KEY_FILE "\")\n"
-               "  --cert=FILENAME      Specify certificate in PEM format (default:\n"
-               "                           \"" CERT_FILE "\")\n"
-               "  --trust=FILENAME|all Specify CA certificate or disable checking (default:\n"
-               "                           \"" TRUST_FILE "\")\n"
-               "  --gnutls-log=CATEGORY...\n"
-               "                       Specify a list of gnutls logging categories\n"
-               "  -h --help            Show this help and exit\n"
-               "  --version            Print version string and exit\n"
+               "     --compress[=BOOL]    Use XZ-compression in the output journal (default: yes)\n"
+               "     --seal[=BOOL]        Use Event sealing in the output journal (default: no)\n"
+               "     --key=FILENAME       Specify key in PEM format (default:\n"
+               "                          \"" PRIV_KEY_FILE "\")\n"
+               "     --cert=FILENAME      Specify certificate in PEM format (default:\n"
+               "                          \"" CERT_FILE "\")\n"
+               "     --trust=FILENAME|all Specify CA certificate or disable checking (default:\n"
+               "                          \"" TRUST_FILE "\")\n"
+               "     --gnutls-log=CATEGORY...\n"
+               "                          Specify a list of gnutls logging categories\n"
                "\n"
                "Note: file descriptors from sd_listen_fds() will be consumed, too.\n"
                , program_invocation_short_name);
@@ -1168,9 +1167,7 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_GETTER,
                 ARG_SPLIT_MODE,
                 ARG_COMPRESS,
-                ARG_NO_COMPRESS,
                 ARG_SEAL,
-                ARG_NO_SEAL,
                 ARG_KEY,
                 ARG_CERT,
                 ARG_TRUST,
@@ -1187,10 +1184,8 @@ static int parse_argv(int argc, char *argv[]) {
                 { "listen-https", required_argument, NULL, ARG_LISTEN_HTTPS },
                 { "output",       required_argument, NULL, 'o'              },
                 { "split-mode",   required_argument, NULL, ARG_SPLIT_MODE   },
-                { "compress",     no_argument,       NULL, ARG_COMPRESS     },
-                { "no-compress",  no_argument,       NULL, ARG_NO_COMPRESS  },
-                { "seal",         no_argument,       NULL, ARG_SEAL         },
-                { "no-seal",      no_argument,       NULL, ARG_NO_SEAL      },
+                { "compress",     optional_argument, NULL, ARG_COMPRESS     },
+                { "seal",         optional_argument, NULL, ARG_SEAL         },
                 { "key",          required_argument, NULL, ARG_KEY          },
                 { "cert",         required_argument, NULL, ARG_CERT         },
                 { "trust",        required_argument, NULL, ARG_TRUST        },
@@ -1332,16 +1327,31 @@ static int parse_argv(int argc, char *argv[]) {
                         break;
 
                 case ARG_COMPRESS:
-                        arg_compress = true;
-                        break;
-                case ARG_NO_COMPRESS:
-                        arg_compress = false;
+                        if (optarg) {
+                                r = parse_boolean(optarg);
+                                if (r < 0) {
+                                        log_error("Failed to parse --compress= parameter.");
+                                        return -EINVAL;
+                                }
+
+                                arg_compress = !!r;
+                        } else
+                                arg_compress = true;
+
                         break;
+
                 case ARG_SEAL:
-                        arg_seal = true;
-                        break;
-                case ARG_NO_SEAL:
-                        arg_seal = false;
+                        if (optarg) {
+                                r = parse_boolean(optarg);
+                                if (r < 0) {
+                                        log_error("Failed to parse --seal= parameter.");
+                                        return -EINVAL;
+                                }
+
+                                arg_seal = !!r;
+                        } else
+                                arg_seal = true;
+
                         break;
 
                 case ARG_GNUTLS_LOG: {
diff --git a/src/journal-remote/journal-upload.c b/src/journal-remote/journal-upload.c
index b178df2..5a30a29 100644
--- a/src/journal-remote/journal-upload.c
+++ b/src/journal-remote/journal-upload.c
@@ -505,24 +505,25 @@ static int parse_config(void) {
 static void help(void) {
         printf("%s -u URL {FILE|-}...\n\n"
                "Upload journal events to a remote server.\n\n"
-               "Options:\n"
-               "  -u --url=URL             Upload to this address\n"
-               "  --key=FILENAME           Specify key in PEM format\n"
-               "  --cert=FILENAME          Specify certificate in PEM format\n"
-               "  --trust=FILENAME         Specify CA certificate in PEM format\n"
-               "     --system              Use the system journal\n"
-               "     --user                Use the user journal for the current user\n"
-               "  -m --merge               Use  all available journals\n"
-               "  -M --machine=CONTAINER   Operate on local container\n"
-               "  -D --directory=PATH      Use journal files from directory\n"
-               "     --file=PATH           Use this journal file\n"
-               "  --cursor=CURSOR          Start at the specified cursor\n"
-               "  --after-cursor=CURSOR    Start after the specified cursor\n"
-               "  --[no-]follow            Do [not] wait for input\n"
-               "  --save-state[=FILE]      Save uploaded cursors (default \n"
-               "                           " STATE_FILE ")\n"
-               "  -h --help                Show this help and exit\n"
-               "  --version                Print version string and exit\n"
+               "  -h --help                 Show this help\n"
+               "     --version              Show package version\n"
+               "  -u --url=URL              Upload to this address\n"
+               "     --key=FILENAME         Specify key in PEM format\n"
+               "     --cert=FILENAME        Specify certificate in PEM format\n"
+               "     --trust=FILENAME       Specify CA certificate in PEM format\n"
+               "     --system               Use the system journal\n"
+               "     --user                 Use the user journal for the current user\n"
+               "  -m --merge                Use  all available journals\n"
+               "  -M --machine=CONTAINER    Operate on local container\n"
+               "  -D --directory=PATH       Use journal files from directory\n"
+               "     --file=PATH            Use this journal file\n"
+               "     --cursor=CURSOR        Start at the specified cursor\n"
+               "     --after-cursor=CURSOR  Start after the specified cursor\n"
+               "     --follow[=BOOL]        Do [not] wait for input\n"
+               "     --save-state[=FILE]    Save uploaded cursors (default \n"
+               "                            " STATE_FILE ")\n"
+               "  -h --help                 Show this help and exit\n"
+               "     --version              Print version string and exit\n"
                , program_invocation_short_name);
 }
 
@@ -538,7 +539,6 @@ static int parse_argv(int argc, char *argv[]) {
                 ARG_CURSOR,
                 ARG_AFTER_CURSOR,
                 ARG_FOLLOW,
-                ARG_NO_FOLLOW,
                 ARG_SAVE_STATE,
         };
 
@@ -557,8 +557,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "file",         required_argument, NULL, ARG_FILE           },
                 { "cursor",       required_argument, NULL, ARG_CURSOR         },
                 { "after-cursor", required_argument, NULL, ARG_AFTER_CURSOR   },
-                { "follow",       no_argument,       NULL, ARG_FOLLOW         },
-                { "no-follow",    no_argument,       NULL, ARG_NO_FOLLOW      },
+                { "follow",       optional_argument, NULL, ARG_FOLLOW         },
                 { "save-state",   optional_argument, NULL, ARG_SAVE_STATE     },
                 {}
         };
@@ -675,11 +674,17 @@ static int parse_argv(int argc, char *argv[]) {
                         break;
 
                 case ARG_FOLLOW:
-                        arg_follow = true;
-                        break;
+                        if (optarg) {
+                                r = parse_boolean(optarg);
+                                if (r < 0) {
+                                        log_error("Failed to parse --follow= parameter.");
+                                        return -EINVAL;
+                                }
+
+                                arg_follow = !!r;
+                        } else
+                                arg_follow = true;
 
-                case ARG_NO_FOLLOW:
-                        arg_follow = false;
                         break;
 
                 case ARG_SAVE_STATE:
diff --git a/src/resolve-host/resolve-host.c b/src/resolve-host/resolve-host.c
index c39b582..49049d2 100644
--- a/src/resolve-host/resolve-host.c
+++ b/src/resolve-host/resolve-host.c
@@ -466,14 +466,14 @@ static void help(void) {
                "  -p --protocol=PROTOCOL  Look via protocol\n"
                "  -t --type=TYPE          Query RR with DNS type\n"
                "  -c --class=CLASS        Query RR with DNS class\n"
-               "     --no-legend          Do not print column headers\n"
+               "     --legend[=BOOL]      Do [not] print column headers\n"
                , program_invocation_short_name);
 }
 
 static int parse_argv(int argc, char *argv[]) {
         enum {
                 ARG_VERSION = 0x100,
-                ARG_NO_LEGEND,
+                ARG_LEGEND,
         };
 
         static const struct option options[] = {
@@ -481,7 +481,7 @@ static int parse_argv(int argc, char *argv[]) {
                 { "version",   no_argument,       NULL, ARG_VERSION   },
                 { "type",      required_argument, NULL, 't'           },
                 { "class",     required_argument, NULL, 'c'           },
-                { "no-legend", no_argument,       NULL, ARG_NO_LEGEND },
+                { "legend", optional_argument,    NULL, ARG_LEGEND    },
                 { "protocol",  required_argument, NULL, 'p'           },
                 {}
         };
@@ -548,8 +548,17 @@ static int parse_argv(int argc, char *argv[]) {
 
                         break;
 
-                case ARG_NO_LEGEND:
-                        arg_legend = false;
+                case ARG_LEGEND:
+                        if (optarg) {
+                                r = parse_boolean(optarg);
+                                if (r < 0) {
+                                        log_error("Failed to parse --legend= argument");
+                                        return r;
+                                }
+
+                                arg_legend = !!r;
+                        } else
+                                arg_legend = false;
                         break;
 
                 case 'p':

commit f9ffbca2fb1ba7a7854d83439a4644590be0d9e1
Author: Lennart Poettering <lennart at poettering.net>
Date:   Wed Aug 20 00:14:09 2014 +0200

    README: mention the new optional libidn dependency

diff --git a/README b/README
index 171c76d..d47ea45 100644
--- a/README
+++ b/README
@@ -122,6 +122,7 @@ REQUIREMENTS:
         libqrencode (optional)
         libmicrohttpd (optional)
         libpython (optional)
+        libidn (optional)
         gobject-introspection > 1.40.0 (optional)
         elfutils >= 158 (optional)
         make, gcc, and similar tools

commit 01da80b1aa0e21f8785d467afc295e37fd00ffa1
Author: Lennart Poettering <lennart at poettering.net>
Date:   Tue Aug 19 23:37:16 2014 +0200

    update NEWS

diff --git a/NEWS b/NEWS
index 6527967..7dad765 100644
--- a/NEWS
+++ b/NEWS
@@ -101,7 +101,9 @@ CHANGES WITH 216:
           3.17 memfd subsystem instead of the old kdbus-specific one.
 
         * systemd-networkd's DHCP client and server now support
-          FORCERENEW.
+          FORCERENEW. There are also new configuration options to
+          configure the vendor client identifier and broadcast mode
+          for DHCP.
 
         * systemd will no longer inform the kernel about the current
           timezone, as this is necessarily incorrect and racy as the
@@ -175,6 +177,13 @@ CHANGES WITH 216:
           boot. Alternatively it may also be used to provision these
           things offline on OS images installed into directories.
 
+        * The default sysctl.d/ snippets will now set
+
+                net.ipv4.conf.default.promote_secondaries=1
+
+          This has the benefit of no flushing secondary IP addresses
+          when primary addresses are removed.
+
         Contributions from: Ansgar Burchardt, Bastien Nocera, Colin
         Walters, Dan Dedrick, Daniel Buch, Daniel Korostil, Daniel
         Mack, Dan Williams, Dave Reisner, David Herrmann, Denis



More information about the systemd-commits mailing list