commit:     2eb21c641333c5c35bd8cf7d6f4da79d29e14fa2
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Mon May 20 12:14:17 2019 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Mon May 20 12:14:17 2019 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=2eb21c64

q: use overlay names from repos.conf if available

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 applets.h |  1 +
 main.c    |  8 ++++++--
 q.c       | 18 ++++++++++++------
 3 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/applets.h b/applets.h
index 71666bb..fbb4e8c 100644
--- a/applets.h
+++ b/applets.h
@@ -152,6 +152,7 @@ extern char *port_tmpdir;
 extern char *features;
 extern char *install_mask;
 extern DEFINE_ARRAY(overlays);
+extern DEFINE_ARRAY(overlay_names);
 extern char *main_overlay;
 
 void no_colors(void);

diff --git a/main.c b/main.c
index bf86c49..0fdb420 100644
--- a/main.c
+++ b/main.c
@@ -23,6 +23,7 @@
 #include "xasprintf.h"
 
 /* variables to control runtime behavior */
+char *main_overlay;
 char *module_name = NULL;
 int verbose = 0;
 int quiet = 0;
@@ -39,8 +40,8 @@ char *port_tmpdir;
 char *features;
 char *install_mask;
 DECLARE_ARRAY(overlays);
+DECLARE_ARRAY(overlay_names);
 
-static char *main_overlay;
 static char *portarch;
 static char *portedb;
 static char *eprefix;
@@ -237,6 +238,7 @@ read_one_repos_conf(const char *repos_conf)
                path = iniparser_getstring(dict, conf, NULL);
                if (path) {
                        void *ele = xarraypush_str(overlays, path);
+                       xarraypush_str(overlay_names, repo);
                        if (main_repo && !strcmp(repo, main_repo))
                                main_overlay = ele;
                }
@@ -735,8 +737,10 @@ initialize_portage_env(void)
        read_repos_conf(configroot, "/etc/portage/repos.conf");
        if (orig_main_overlay != main_overlay)
                free(orig_main_overlay);
-       if (array_cnt(overlays) == 0)
+       if (array_cnt(overlays) == 0) {
                xarraypush_str(overlays, main_overlay);
+               xarraypush_str(overlay_names, "<PORTDIR>");
+       }
 
        if (getenv("DEBUG")) {
                for (i = 0; vars_to_read[i].name; ++i) {

diff --git a/q.c b/q.c
index 5499017..31427f3 100644
--- a/q.c
+++ b/q.c
@@ -165,18 +165,24 @@ int q_main(int argc, char **argv)
                size_t n;
 
                array_for_each(overlays, n, overlay) {
-                       snprintf(buf, sizeof(buf), "%s/profiles/repo_name", 
overlay);
-                       if (!eat_file(buf, &repo_name, &repo_name_len))
+                       repo_name = xarrayget(overlay_names, n);
+                       if (strcmp(repo_name, "<PORTDIR>") == 0) {
                                repo_name = NULL;
-                       if (repo_name != NULL)
-                               rmspace(repo_name);
+                               snprintf(buf, sizeof(buf), 
"%s/profiles/repo_name", overlay);
+                               if (!eat_file(buf, &repo_name, &repo_name_len))
+                                       repo_name = NULL;
+                               if (repo_name != NULL)
+                                       rmspace(repo_name);
+                       }
                        printf("%s%s%s: %s%s%s%s\n",
                                        GREEN, repo_name == NULL ? "?unknown?" 
: repo_name,
                                        NORM, overlay,
                                        YELLOW, main_overlay == overlay ? " 
(main)" : "", NORM);
+                       if (repo_name_len != 0) {
+                               free(repo_name);
+                               repo_name_len = 0;
+                       }
                }
-               if (repo_name != NULL)
-                       free(repo_name);
 
                return 0;
        }

Reply via email to