Dr. Werner Fink 2014-12-16 15:35:35 +00:00 committed by Git OBS Bridge
parent 7cb75591c8
commit 16d9893edf
3 changed files with 170 additions and 0 deletions

View File

@ -0,0 +1,157 @@
pgrep.c | 39 +++++++++++++++++++--------------------
1 file changed, 19 insertions(+), 20 deletions(-)
diff --git pgrep.c pgrep.c
index d8d3dcb..3ba3634 100644
--- pgrep.c
+++ pgrep.c
@@ -106,6 +106,7 @@ static int __attribute__ ((__noreturn__)) usage(int opt)
if (i_am_pkill == 0) {
fputs(_(" -d, --delimiter <string> specify output delimiter\n"),fp);
fputs(_(" -l, --list-name list PID and process name\n"),fp);
+ fputs(_(" -a, --list-full list PID and full command line\n"),fp);
fputs(_(" -v, --inverse negates the matching\n"),fp);
fputs(_(" -w, --lightweight list all TID\n"), fp);
}
@@ -137,7 +138,7 @@ static int __attribute__ ((__noreturn__)) usage(int opt)
fputs(USAGE_VERSION, fp);
fprintf(fp, USAGE_MAN_TAIL("pgrep(1)"));
- exit(fp == stderr ? EXIT_FAILURE : EXIT_SUCCESS);
+ exit(fp == stderr ? EXIT_USAGE : EXIT_SUCCESS);
}
static struct el *split_list (const char *restrict str, int (*convert)(const char *, struct el *))
@@ -628,7 +629,7 @@ static struct el * select_procs (int *num)
if (list == NULL)
exit (EXIT_FATAL);
}
- if (opt_long) {
+ if (opt_long || opt_longlong) {
list[matches].str = xstrdup (cmdoutput);
list[matches++].num = subtask.XXXID;
} else {
@@ -747,7 +748,7 @@ static void parse_opts (int argc, char **argv)
case 'G': /* Solaris: match rgid/rgroup */
opt_rgid = split_list (optarg, conv_gid);
if (opt_rgid == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
/* case 'I': / * FreeBSD: require confirmation before killing * /
@@ -764,7 +765,7 @@ static void parse_opts (int argc, char **argv)
case 'P': /* Solaris: match by PPID */
opt_ppid = split_list (optarg, conv_num);
if (opt_ppid == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
/* case 'S': / * FreeBSD: don't ignore the built-in kernel tasks * /
@@ -774,7 +775,7 @@ static void parse_opts (int argc, char **argv)
case 'U': /* Solaris: match by ruid/rgroup */
opt_ruid = split_list (optarg, conv_uid);
if (opt_ruid == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
case 'V':
@@ -794,7 +795,7 @@ static void parse_opts (int argc, char **argv)
case 'g': /* Solaris: match pgrp */
opt_pgrp = split_list (optarg, conv_pgrp);
if (opt_pgrp == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
/* case 'i': / * FreeBSD: ignore case. OpenBSD: withdrawn. See -I. This sucks. * /
@@ -812,37 +813,37 @@ static void parse_opts (int argc, char **argv)
break;
case 'n': /* Solaris: match only the newest */
if (opt_oldest|opt_negate|opt_newest)
- usage (opt);
+ usage ('?');
opt_newest = 1;
++criteria_count;
break;
case 'o': /* Solaris: match only the oldest */
if (opt_oldest|opt_negate|opt_newest)
- usage (opt);
+ usage ('?');
opt_oldest = 1;
++criteria_count;
break;
case 's': /* Solaris: match by session ID -- zero means self */
opt_sid = split_list (optarg, conv_sid);
if (opt_sid == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
case 't': /* Solaris: match by tty */
opt_term = split_list (optarg, conv_str);
if (opt_term == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
case 'u': /* Solaris: match by euid/egroup */
opt_euid = split_list (optarg, conv_uid);
if (opt_euid == NULL)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
case 'v': /* Solaris: as in grep, invert the matching (uh... applied after selection I think) */
if (opt_oldest|opt_negate|opt_newest)
- usage (opt);
+ usage ('?');
opt_negate = 1;
break;
case 'w': // Linux: show threads (lightweight process) too
@@ -857,25 +858,23 @@ static void parse_opts (int argc, char **argv)
case NS_OPTION:
opt_ns_pid = atoi(optarg);
if (opt_ns_pid == 0)
- usage (opt);
+ usage ('?');
++criteria_count;
break;
case NSLIST_OPTION:
opt_nslist = split_list (optarg, conv_ns);
if (opt_nslist == NULL)
- usage (opt);
+ usage ('?');
break;
case 'h':
- usage (opt);
- break;
case '?':
- usage (optopt ? optopt : opt);
+ usage (opt);
break;
}
}
if(opt_lock && !opt_pidfile)
- xerrx(EXIT_FAILURE, _("-L without -F makes no sense\n"
+ xerrx(EXIT_USAGE, _("-L without -F makes no sense\n"
"Try `%s --help' for more information."),
program_invocation_short_name);
@@ -890,11 +889,11 @@ static void parse_opts (int argc, char **argv)
if (argc - optind == 1)
opt_pattern = argv[optind];
else if (argc - optind > 1)
- xerrx(EXIT_FAILURE, _("only one pattern can be provided\n"
+ xerrx(EXIT_USAGE, _("only one pattern can be provided\n"
"Try `%s --help' for more information."),
program_invocation_short_name);
else if (criteria_count == 0)
- xerrx(EXIT_FAILURE, _("no matching criteria specified\n"
+ xerrx(EXIT_USAGE, _("no matching criteria specified\n"
"Try `%s --help' for more information."),
program_invocation_short_name);
}

View File

@ -1,3 +1,13 @@
-------------------------------------------------------------------
Tue Dec 16 15:32:40 UTC 2014 - werner@suse.de
- Add upstream patch bsc901202-add-better-help-output.patch
which includes the commits
0f649e2cd2eef94075f1975248953f8c5b85d9f4
4ba9ff5c0df7e94d03a555ac4cec947f6fac2ba6
b4951bfea367eef551b053e9f0240d717c353c11
to fix the bug bsc#901202
-------------------------------------------------------------------
Fri Dec 5 10:07:22 UTC 2014 - werner@suse.de

View File

@ -134,6 +134,8 @@ Patch131: 0053-top-minimize-the-usage-of-apostrophes-in-man-documen.patch
Patch132: 0054-top-swap-opening-quotes-for-back-tics-in-man-documen.patch
# PATCH-FIX-UPSTREAM added at 2014/05/16
Patch133: 0060-top-miscellaneous-accumulated-changes-to-man-documen.patch
# PATCH-FIX-UPSTREAM added at 2014/12/16
Patch134: bsc901202-add-better-help-output.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@ -240,6 +242,7 @@ the process information pseudo-file system,
%patch131
%patch132
%patch133
%patch134
%build
tar --strip-components=1 -xf %{S:1}