1 diff --git a/cli/ls.c b/cli/ls.c
2 index 86b755d..1fa55ba 100644
5 @@ -49,6 +49,7 @@ int pkg_cmp_lookup(struct pkg *lpkg, tn_array *pkgs, int compare_ver,
6 #define OPT_LS_GROUP (1 << 9)
7 #define OPT_LS_SUMMARY (1 << 10)
8 #define OPT_LS_NAMES_ONLY (1 << 11)
9 +#define OPT_LS_SOURCERPM (1 << 12)
12 #define OPT_LS_ERR (1 << 16);
13 @@ -67,7 +68,8 @@ static struct argp_option options[] = {
14 { NULL, 'n', 0, 0, N_("Print only package names"), 1},
15 { NULL, 'G', 0, 0, N_("Print package groups"), 1},
16 { NULL, 'O', 0, 0, N_("Print package summaries"), 1},
17 -// { NULL, 'i', 0, OPTION_ALIAS, 0, 1 },
18 + { "source-rpm", 's', 0, 0,N_("Print package source rpm"), 1},
19 +// { NULL, 'i', 0, OPTION_ALIAS, 0, 1 },
23 @@ -84,7 +86,7 @@ static
24 error_t parse_opt(int key, char *arg, struct argp_state *state)
26 struct cmdctx *cmdctx = state->input;
27 - const char *errmsg_excl = _("ls: -l and -G are exclusive");
28 + const char *errmsg_excl = _("ls: -l,-s and -G are exclusive");
32 @@ -102,14 +104,23 @@ error_t parse_opt(int key, char *arg, struct argp_state *state)
36 - if (cmdctx->_flags & OPT_LS_LONG) {
37 + if (cmdctx->_flags & OPT_LS_LONG || cmdctx->_flags & OPT_LS_SOURCERPM) {
38 logn(LOGERR, errmsg_excl);
42 cmdctx->_flags |= OPT_LS_GROUP;
47 + if (cmdctx->_flags & OPT_LS_LONG || cmdctx->_flags & OPT_LS_GROUP) {
48 + logn(LOGERR, errmsg_excl);
52 + cmdctx->_flags |= OPT_LS_SOURCERPM;
56 cmdctx->_flags |= OPT_LS_SORTBUILDTIME;
58 @@ -403,15 +414,17 @@ int do_ls(const tn_array *ents, struct cmdctx *cmdctx, const tn_array *evrs)
62 - if (flags & OPT_LS_GROUP) {
63 + if (flags & OPT_LS_GROUP || flags & OPT_LS_SOURCERPM) {
64 snprintf(fmt_hdr, sizeof(fmt_hdr), "%%-%ds%%-%ds\n",
65 term_width_div2 + term_width_div2/10, (term_width/7));
67 snprintf(fmt_pkg, sizeof(fmt_pkg), "%%-%ds%%-%ds\n",
68 term_width_div2 + term_width_div2/10, (term_width/7));
70 - snprintf(hdr, sizeof(hdr), fmt_hdr, _("package"), _("group"));
72 + if (flags & OPT_LS_GROUP)
73 + snprintf(hdr, sizeof(hdr), fmt_hdr, _("package"), _("group"));
75 + snprintf(hdr, sizeof(hdr), fmt_hdr, _("package"), _("source rpm"));
76 } else if (flags & OPT_LS_LONG) {
77 if ((flags & OPT_LS_UPGRADEABLE) == 0) {
78 snprintf(fmt_hdr, sizeof(fmt_hdr), "%%-%ds %%-%ds%%%ds\n",
79 @@ -480,7 +493,10 @@ int do_ls(const tn_array *ents, struct cmdctx *cmdctx, const tn_array *evrs)
80 if (flags & OPT_LS_GROUP) {
81 const char *group = pkg_group(pkg);
82 cmdctx_printf(cmdctx, fmt_pkg, pkg_name, group ? group : "(unset)");
85 + else if (flags & OPT_LS_SOURCERPM) {
86 + const char *srcrpm = pkg_srcfilename_s(pkg);
87 + cmdctx_printf(cmdctx, fmt_pkg, pkg_name, srcrpm ? srcrpm : "(unset)");
88 } else if ((flags & OPT_LS_LONG) == 0) {
89 cmdctx_printf(cmdctx, "%s\n", pkg_name);