static bool arg_watch_bind = false;
static usec_t arg_timeout = 0;
static const char *arg_destination = NULL;
-static uint64_t arg_num_matches = UINT64_MAX;
+static uint64_t arg_limit_messages = UINT64_MAX;
STATIC_DESTRUCTOR_REGISTER(arg_matches, strv_freep);
dump(m, stdout);
fflush(stdout);
- if (arg_num_matches != UINT64_MAX && --arg_num_matches == 0) {
- if (!arg_quiet && !sd_json_format_enabled(arg_json_format_flags))
- log_info("Received requested number of matching messages, exiting.");
- return 0;
+ if (arg_limit_messages != UINT64_MAX) {
+ arg_limit_messages--;
+
+ if (arg_limit_messages == 0) {
+ if (!arg_quiet && !sd_json_format_enabled(arg_json_format_flags))
+ log_info("Received requested maximum number of messages, exiting.");
+ return 0;
+ }
}
if (sd_bus_message_is_signal(m, "org.freedesktop.DBus.Local", "Disconnected") > 0) {
" --watch-bind=BOOL Wait for bus AF_UNIX socket to be bound in the file\n"
" system\n"
" --destination=SERVICE Destination service of a signal\n"
- " --num-matches=NUMBER Exit after receiving a number of matches while\n"
+ " -N --limit-messages=NUMBER\n"
+ " Exit after receiving a number of matches while\n"
" monitoring\n"
"\nSee the %s for details.\n",
program_invocation_short_name,
ARG_WATCH_BIND,
ARG_JSON,
ARG_DESTINATION,
- ARG_NUM_MATCHES,
};
static const struct option options[] = {
{ "watch-bind", required_argument, NULL, ARG_WATCH_BIND },
{ "json", required_argument, NULL, ARG_JSON },
{ "destination", required_argument, NULL, ARG_DESTINATION },
- { "num-matches", required_argument, NULL, ARG_NUM_MATCHES },
+ { "limit-messages", required_argument, NULL, 'N' },
{},
};
assert(argc >= 0);
assert(argv);
- while ((c = getopt_long(argc, argv, "hH:M:C:J:qjl", options, NULL)) >= 0)
+ while ((c = getopt_long(argc, argv, "hH:M:C:J:qjlN:", options, NULL)) >= 0)
switch (c) {
arg_destination = optarg;
break;
- case ARG_NUM_MATCHES:
- r = safe_atou64(optarg, &arg_num_matches);
+ case 'N':
+ r = safe_atou64(optarg, &arg_limit_messages);
if (r < 0)
- return log_error_errno(r, "Failed to parse --num-matches= parameter '%s': %m", optarg);
- if (arg_num_matches == 0)
- return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--num-matches= parameter cannot be 0");
+ return log_error_errno(r, "Failed to parse --limit-messages= parameter: %s", optarg);
+ if (arg_limit_messages == 0)
+ return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "--limit-messages= parameter cannot be 0");
break;