From: "Mike Frysinger" <vapier@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/portage-utils:master commit in: /
Date: Sat, 28 Nov 2015 02:44:35 +0000 (UTC) [thread overview]
Message-ID: <1448666777.a0c3ddab026e271b3eb2e66e64b9e9a24eb6f708.vapier@gentoo> (raw)
commit: a0c3ddab026e271b3eb2e66e64b9e9a24eb6f708
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 27 23:26:17 2015 +0000
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Fri Nov 27 23:26:17 2015 +0000
URL: https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=a0c3ddab
qgrep/quse: add multiple overlay support
This is a pretty straight forward extension. The code hasn't seen
any clean ups in the process (although it probably should).
URL: https://bugs.gentoo.org/553260
qgrep.c | 366 +++++++++++++++++++++++++++++++++-------------------------------
quse.c | 268 ++++++++++++++++++++++++-----------------------
2 files changed, 329 insertions(+), 305 deletions(-)
diff --git a/qgrep.c b/qgrep.c
index de018ea..e7c2c10 100644
--- a/qgrep.c
+++ b/qgrep.c
@@ -259,7 +259,7 @@ int qgrep_main(int argc, char **argv)
int need_separator = 0;
char status = 1;
- QGREP_STR_FUNC strfunc = (QGREP_STR_FUNC) strstr;
+ QGREP_STR_FUNC strfunc = strstr;
DBG("argc=%d argv[0]=%s argv[1]=%s",
argc, argv[0], argc > 1 ? argv[1] : "NULL?");
@@ -271,7 +271,7 @@ int qgrep_main(int argc, char **argv)
switch (i) {
case 'I': invert_match = 1; break;
case 'i':
- strfunc = (QGREP_STR_FUNC) strcasestr;
+ strfunc = strcasestr;
reflags |= REG_ICASE;
break;
case 'c': do_count = 1; break;
@@ -369,203 +369,216 @@ int qgrep_main(int argc, char **argv)
xregcomp(&skip_preg, skip_pattern, reflags);
}
- /* go look either in ebuilds or eclasses or VDB */
- if (!do_eclass && !do_installed) {
- if ((fp = fopen(initialize_ebuild_flat(), "r")) == NULL)
- return 1;
- xchdir(portdir);
- } else if (do_eclass) {
- xchdir(portdir);
- if ((eclass_dir = opendir("eclass")) == NULL)
- errp("opendir(\"%s/eclass\") failed", portdir);
- } else { /* if (do_install) */
- char buf[_Q_PATH_MAX];
- snprintf(buf, sizeof(buf), "%s/%s", portroot, portvdb);
- xchdir(buf);
- if ((vdb_dir = opendir(".")) == NULL)
- errp("could not opendir(%s/%s) for ROOT/VDB", portroot, portvdb);
- }
-
/* allocate a circular buffers list for --before */
buf_list = qgrep_buf_list_alloc(num_lines_before + 1);
- /* iteration is either over ebuilds or eclasses */
- while (do_eclass
- ? ((dentry = readdir(eclass_dir))
- && snprintf(ebuild, sizeof(ebuild), "eclass/%s", dentry->d_name))
- : (do_installed
- ? (get_next_installed_ebuild(ebuild, vdb_dir, &dentry, &cat_dir) != NULL)
- : (fgets(ebuild, sizeof(ebuild), fp) != NULL))) {
- FILE *newfp;
-
- /* filter badly named files, prepare eclass or package name, etc. */
- if (do_eclass) {
- if ((p = strrchr(ebuild, '.')) == NULL)
+ size_t n;
+ char *overlay;
+ array_for_each(overlays, n, overlay) {
+
+ /* go look either in ebuilds or eclasses or VDB */
+ if (!do_eclass && !do_installed) {
+ fp = fopen(initialize_flat(overlay, CACHE_EBUILD, false), "re");
+ if (fp == NULL)
continue;
- if (strcmp(p, ".eclass"))
+ xchdir(overlay);
+ } else if (do_eclass) {
+ xchdir(overlay);
+ if ((eclass_dir = opendir("eclass")) == NULL) {
+ if (errno != ENOENT)
+ warnp("opendir(\"%s/eclass\") failed", overlay);
continue;
- if (show_name || (include_atoms != NULL)) {
- /* cut ".eclass" */
- *p = '\0';
- /* and skip "eclass/" */
- snprintf(name, sizeof(name), "%s", ebuild + 7);
- /* restore the filepath */
- *p = '.';
}
- } else {
- if ((p = strchr(ebuild, '\n')) != NULL)
- *p = '\0';
- if (show_name || (include_atoms != NULL)) {
- /* cut ".ebuild" */
- if (p == NULL)
- p = ebuild + strlen(ebuild);
- *(p-7) = '\0';
- /* cut "/foo/" from "cat/foo/foo-x.y" */
- if ((p = strchr(ebuild, '/')) == NULL)
+ } else { /* if (do_install) */
+ char buf[_Q_PATH_MAX];
+ snprintf(buf, sizeof(buf), "%s/%s", portroot, portvdb);
+ xchdir(buf);
+ if ((vdb_dir = opendir(".")) == NULL)
+ errp("could not opendir(%s/%s) for ROOT/VDB", portroot, portvdb);
+ }
+
+ /* iteration is either over ebuilds or eclasses */
+ while (do_eclass
+ ? ((dentry = readdir(eclass_dir))
+ && snprintf(ebuild, sizeof(ebuild), "eclass/%s", dentry->d_name))
+ : (do_installed
+ ? (get_next_installed_ebuild(ebuild, vdb_dir, &dentry, &cat_dir) != NULL)
+ : (fgets(ebuild, sizeof(ebuild), fp) != NULL))) {
+ FILE *newfp;
+
+ /* filter badly named files, prepare eclass or package name, etc. */
+ if (do_eclass) {
+ if ((p = strrchr(ebuild, '.')) == NULL)
continue;
- *(p++) = '\0';
- /* find head of the ebuild basename */
- if ((p = strchr(p, '/')) == NULL)
+ if (strcmp(p, ".eclass"))
continue;
- /* find start of the pkg name */
- snprintf(name, sizeof(name), "%s/%s", ebuild, (p+1));
- /* restore the filepath */
- *p = '/';
- *(p + strlen(p)) = '.';
- ebuild[strlen(ebuild)] = '/';
+ if (show_name || (include_atoms != NULL)) {
+ /* cut ".eclass" */
+ *p = '\0';
+ /* and skip "eclass/" */
+ snprintf(name, sizeof(name), "%s", ebuild + 7);
+ /* restore the filepath */
+ *p = '.';
+ }
+ } else {
+ if ((p = strchr(ebuild, '\n')) != NULL)
+ *p = '\0';
+ if (show_name || (include_atoms != NULL)) {
+ /* cut ".ebuild" */
+ if (p == NULL)
+ p = ebuild + strlen(ebuild);
+ *(p-7) = '\0';
+ /* cut "/foo/" from "cat/foo/foo-x.y" */
+ if ((p = strchr(ebuild, '/')) == NULL)
+ continue;
+ *(p++) = '\0';
+ /* find head of the ebuild basename */
+ if ((p = strchr(p, '/')) == NULL)
+ continue;
+ /* find start of the pkg name */
+ snprintf(name, sizeof(name), "%s/%s", ebuild, (p+1));
+ /* restore the filepath */
+ *p = '/';
+ *(p + strlen(p)) = '.';
+ ebuild[strlen(ebuild)] = '/';
+ }
}
- }
- /* filter the files we grep when there are extra args */
- if (include_atoms != NULL)
- if (!qgrep_name_match(name, (argc - optind - 1), include_atoms))
- continue;
-
- if ((newfp = fopen(ebuild, "r")) != NULL) {
- int lineno = 0;
- char remaining_after_context = 0;
- count = 0;
- /* if there have been some matches already, then a separator will be needed */
- need_separator = (!status) && (num_lines_before || num_lines_after);
- /* whatever is in the circular buffers list is no more a valid context */
- qgrep_buf_list_invalidate(buf_list);
-
- /* reading a new line always happen in the next buffer of the list */
- while ((buf_list = buf_list->next)
- && (fgets(buf_list->buf, sizeof(buf_list->buf), newfp)) != NULL) {
- lineno++;
- buf_list->valid = 1;
-
- /* cleanup EOL */
- if ((p = strrchr(buf_list->buf, '\n')) != NULL)
- *p = 0;
- if ((p = strrchr(buf_list->buf, '\r')) != NULL)
- *p = 0;
-
- if (skip_comments) {
- /* reject comments line ("^[ \t]*#") */
- p = buf_list->buf;
- while (*p == ' ' || *p == '\t') p++;
- if (*p == '#')
- goto print_after_context;
- }
+ /* filter the files we grep when there are extra args */
+ if (include_atoms != NULL)
+ if (!qgrep_name_match(name, (argc - optind - 1), include_atoms))
+ continue;
- if (skip_pattern) {
- /* reject some other lines which match an optional pattern */
- if (!do_regex) {
- if (strfunc(buf_list->buf, skip_pattern) != NULL)
- goto print_after_context;
- } else {
- if (regexec(&skip_preg, buf_list->buf, 0, NULL, 0) == 0)
+ if ((newfp = fopen(ebuild, "r")) != NULL) {
+ int lineno = 0;
+ char remaining_after_context = 0;
+ count = 0;
+ /* if there have been some matches already, then a separator will be needed */
+ need_separator = (!status) && (num_lines_before || num_lines_after);
+ /* whatever is in the circular buffers list is no more a valid context */
+ qgrep_buf_list_invalidate(buf_list);
+
+ /* reading a new line always happen in the next buffer of the list */
+ while ((buf_list = buf_list->next)
+ && (fgets(buf_list->buf, sizeof(buf_list->buf), newfp)) != NULL) {
+ lineno++;
+ buf_list->valid = 1;
+
+ /* cleanup EOL */
+ if ((p = strrchr(buf_list->buf, '\n')) != NULL)
+ *p = 0;
+ if ((p = strrchr(buf_list->buf, '\r')) != NULL)
+ *p = 0;
+
+ if (skip_comments) {
+ /* reject comments line ("^[ \t]*#") */
+ p = buf_list->buf;
+ while (*p == ' ' || *p == '\t') p++;
+ if (*p == '#')
goto print_after_context;
}
- }
- /* four ways to match a line (with/without inversion and regexp) */
- if (!invert_match) {
- if (do_regex == 0) {
- if (strfunc(buf_list->buf, argv[optind]) == NULL)
- goto print_after_context;
- } else {
- if (regexec(&preg, buf_list->buf, 0, NULL, 0) != 0)
- goto print_after_context;
+ if (skip_pattern) {
+ /* reject some other lines which match an optional pattern */
+ if (!do_regex) {
+ if (strfunc(buf_list->buf, skip_pattern) != NULL)
+ goto print_after_context;
+ } else {
+ if (regexec(&skip_preg, buf_list->buf, 0, NULL, 0) == 0)
+ goto print_after_context;
+ }
}
- } else {
- if (do_regex == 0) {
- if (strfunc(buf_list->buf, argv[optind]) != NULL)
- goto print_after_context;
+
+ /* four ways to match a line (with/without inversion and regexp) */
+ if (!invert_match) {
+ if (do_regex == 0) {
+ if (strfunc(buf_list->buf, argv[optind]) == NULL)
+ goto print_after_context;
+ } else {
+ if (regexec(&preg, buf_list->buf, 0, NULL, 0) != 0)
+ goto print_after_context;
+ }
} else {
- if (regexec(&preg, buf_list->buf, 0, NULL, 0) == 0)
- goto print_after_context;
+ if (do_regex == 0) {
+ if (strfunc(buf_list->buf, argv[optind]) != NULL)
+ goto print_after_context;
+ } else {
+ if (regexec(&preg, buf_list->buf, 0, NULL, 0) == 0)
+ goto print_after_context;
+ }
}
- }
- count++;
- status = 0; /* got a match, exit status should be 0 */
- if (per_file_output)
- continue; /* matching files are listed out of this loop */
-
- if ((need_separator > 0)
- && (num_lines_before || num_lines_after))
- printf("--\n");
- /* "need_separator" is not a flag, but a counter, so that
- * adjacent contextes are not separated */
- need_separator = 0 - num_lines_before;
- if (!do_list) {
- /* print the leading context */
- qgrep_print_before_context(buf_list, num_lines_before, label,
- ((verbose > 1) ? lineno : -1));
- /* print matching line */
- if (invert_match || *RED == '\0')
- qgrep_print_matching_line_nocolor(buf_list, label,
- ((verbose > 1) ? lineno : -1));
- else if (do_regex)
- qgrep_print_matching_line_regcolor(buf_list, label,
- ((verbose > 1) ? lineno : -1), &preg);
- else
- qgrep_print_matching_line_strcolor(buf_list, label,
- ((verbose > 1) ? lineno : -1), strfunc, argv[optind]);
- } else {
- /* in verbose do_list mode, list the file once per match */
- printf("%s", label);
- if (verbose > 1)
- printf(":%d", lineno);
- putchar('\n');
- }
- /* init count down of trailing context lines */
- remaining_after_context = num_lines_after;
- continue;
+ count++;
+ status = 0; /* got a match, exit status should be 0 */
+ if (per_file_output)
+ continue; /* matching files are listed out of this loop */
+
+ if ((need_separator > 0)
+ && (num_lines_before || num_lines_after))
+ printf("--\n");
+ /* "need_separator" is not a flag, but a counter, so that
+ * adjacent contextes are not separated */
+ need_separator = 0 - num_lines_before;
+ if (!do_list) {
+ /* print the leading context */
+ qgrep_print_before_context(buf_list, num_lines_before, label,
+ ((verbose > 1) ? lineno : -1));
+ /* print matching line */
+ if (invert_match || *RED == '\0')
+ qgrep_print_matching_line_nocolor(buf_list, label,
+ ((verbose > 1) ? lineno : -1));
+ else if (do_regex)
+ qgrep_print_matching_line_regcolor(buf_list, label,
+ ((verbose > 1) ? lineno : -1), &preg);
+ else
+ qgrep_print_matching_line_strcolor(buf_list, label,
+ ((verbose > 1) ? lineno : -1), strfunc, argv[optind]);
+ } else {
+ /* in verbose do_list mode, list the file once per match */
+ printf("%s", label);
+ if (verbose > 1)
+ printf(":%d", lineno);
+ putchar('\n');
+ }
+ /* init count down of trailing context lines */
+ remaining_after_context = num_lines_after;
+ continue;
-print_after_context:
- /* print some trailing context lines when needed */
- if (!remaining_after_context) {
- if (!status)
- /* we're getting closer to the need of a separator between
- * current match block and the next one */
- ++need_separator;
- } else {
- qgrep_print_context_line(buf_list, label,
- ((verbose > 1) ? lineno : -1));
- --remaining_after_context;
+ print_after_context:
+ /* print some trailing context lines when needed */
+ if (!remaining_after_context) {
+ if (!status)
+ /* we're getting closer to the need of a separator between
+ * current match block and the next one */
+ ++need_separator;
+ } else {
+ qgrep_print_context_line(buf_list, label,
+ ((verbose > 1) ? lineno : -1));
+ --remaining_after_context;
+ }
}
+ fclose(newfp);
+ if (!per_file_output)
+ continue; /* matches were already displayed, line per line */
+ if (do_count && count) {
+ if (label != NULL)
+ /* -c without -v/-N/-H only outputs
+ * the matches count of the file */
+ printf("%s:", label);
+ printf("%d\n", count);
+ } else if ((count && !invert_list) || (!count && invert_list))
+ printf("%s\n", label); /* do_list == 1, or we wouldn't be here */
}
- fclose(newfp);
- if (!per_file_output)
- continue; /* matches were already displayed, line per line */
- if (do_count && count) {
- if (label != NULL)
- /* -c without -v/-N/-H only outputs
- * the matches count of the file */
- printf("%s:", label);
- printf("%d\n", count);
- } else if ((count && !invert_list) || (!count && invert_list))
- printf("%s\n", label); /* do_list == 1, or we wouldn't be here */
}
+ if (do_eclass)
+ closedir(eclass_dir);
+ else if (!do_installed)
+ fclose(fp);
+
+ if (do_installed)
+ break;
}
- if (do_eclass)
- closedir(eclass_dir);
- else if (!do_installed)
- fclose(fp);
+
if (do_regex)
regfree(&preg);
if (do_regex && skip_pattern)
@@ -577,6 +590,7 @@ print_after_context:
free(include_atoms);
}
qgrep_buf_list_free(buf_list);
+
return status;
}
diff --git a/quse.c b/quse.c
index 8ba0be1..2ac6cad 100644
--- a/quse.c
+++ b/quse.c
@@ -239,6 +239,8 @@ int quse_main(int argc, char **argv)
short quse_all = 0;
int regexp_matching = 1, i, idx = 0;
size_t search_len;
+ size_t n;
+ const char *overlay;
DBG("argc=%d argv[0]=%s argv[1]=%s",
argc, argv[0], argc > 1 ? argv[1] : "NULL?");
@@ -259,179 +261,187 @@ int quse_main(int argc, char **argv)
quse_usage(EXIT_FAILURE);
if (idx == -1) {
- size_t n;
- const char *overlay;
array_for_each(overlays, n, overlay)
quse_describe_flag(overlay, optind, argc, argv);
return 0;
}
if (quse_all) optind = argc;
- cache_file = initialize_ebuild_flat();
search_len = strlen(search_vars[idx]);
assert(search_len < sizeof(buf0));
- if ((fp = fopen(cache_file, "r")) == NULL) {
- warnp("could not read cache: %s", cache_file);
- return 1;
- }
+ array_for_each(overlays, n, overlay) {
+ cache_file = initialize_flat(overlay, CACHE_EBUILD, false);
- int portdir_fd = open(portdir, O_RDONLY|O_CLOEXEC|O_PATH);
+ if ((fp = fopen(cache_file, "re")) == NULL) {
+ warnp("could not read cache: %s", cache_file);
+ continue;
+ }
- ebuild = NULL;
- while ((linelen = getline(&ebuild, &ebuildlen, fp)) != -1) {
- FILE *newfp;
- int fd;
+ int overlay_fd = open(overlay, O_RDONLY|O_CLOEXEC|O_PATH);
- rmspace_len(ebuild, linelen);
+ ebuild = NULL;
+ while ((linelen = getline(&ebuild, &ebuildlen, fp)) != -1) {
+ FILE *newfp;
+ int fd;
- fd = openat(portdir_fd, ebuild, O_RDONLY|O_CLOEXEC);
- if (fd < 0)
- continue;
- newfp = fdopen(fd, "r");
- if (newfp != NULL) {
- unsigned int lineno = 0;
- char revision[sizeof(buf0)];
- char date[sizeof(buf0)];
- char user[sizeof(buf0)];
-
- revision[0] = 0;
- user[0] = 0;
- date[0] = 0;
- while (fgets(buf0, sizeof(buf0), newfp) != NULL) {
- int ok = 0;
- char warned = 0;
- lineno++;
-
- if (*buf0 == '#') {
- if (strncmp(buf0, "# $Header: /", 12) == 0)
- sscanf(buf0, "%*s %*s %*s %s %s %*s %s %*s %*s", (char *) &revision, (char *) &date, (char *) &user);
- continue;
- }
- if (strncmp(buf0, search_vars[idx], search_len) != 0)
- continue;
+ rmspace_len(ebuild, linelen);
+
+ fd = openat(overlay_fd, ebuild, O_RDONLY|O_CLOEXEC);
+ if (fd < 0)
+ continue;
+ newfp = fdopen(fd, "r");
+ if (newfp != NULL) {
+ unsigned int lineno = 0;
+ char revision[sizeof(buf0)];
+ char date[sizeof(buf0)];
+ char user[sizeof(buf0)];
+
+ revision[0] = 0;
+ user[0] = 0;
+ date[0] = 0;
+ while (fgets(buf0, sizeof(buf0), newfp) != NULL) {
+ int ok = 0;
+ char warned = 0;
+ lineno++;
+
+ if (*buf0 == '#') {
+ if (strncmp(buf0, "# $Header: /", 12) == 0)
+ sscanf(buf0, "%*s %*s %*s %s %s %*s %s %*s %*s",
+ revision, date, user);
+ continue;
+ }
+ if (strncmp(buf0, search_vars[idx], search_len) != 0)
+ continue;
- if ((p = strchr(buf0, '\n')) != NULL)
- *p = 0;
- if ((p = strchr(buf0, '#')) != NULL) {
- if (buf0 != p && p[-1] == ' ')
- p[-1] = 0;
- else
+ if ((p = strchr(buf0, '\n')) != NULL)
*p = 0;
- }
- if (verbose > 1) {
- if ((strchr(buf0, '\t') != NULL)
- || (strchr(buf0, '$') != NULL)
- || (strchr(buf0, '\\') != NULL)
- || (strchr(buf0, '\'') != NULL)
- || (strstr(buf0, " ") != NULL)) {
- warned = 1;
- warn("# Line %d of %s has an annoying %s", lineno, ebuild, buf0);
+ if ((p = strchr(buf0, '#')) != NULL) {
+ if (buf0 != p && p[-1] == ' ')
+ p[-1] = 0;
+ else
+ *p = 0;
+ }
+ if (verbose > 1) {
+ if ((strchr(buf0, '\t') != NULL)
+ || (strchr(buf0, '$') != NULL)
+ || (strchr(buf0, '\\') != NULL)
+ || (strchr(buf0, '\'') != NULL)
+ || (strstr(buf0, " ") != NULL)) {
+ warned = 1;
+ warn("# Line %d of %s has an annoying %s",
+ lineno, ebuild, buf0);
+ }
}
- }
#ifdef THIS_SUCKS
- if ((p = strrchr(&buf0[search_len + 1], '\\')) != NULL) {
+ if ((p = strrchr(&buf0[search_len + 1], '\\')) != NULL) {
- multiline:
- *p = ' ';
+ multiline:
+ *p = ' ';
- if (fgets(buf1, sizeof(buf1), newfp) == NULL)
- continue;
- lineno++;
+ if (fgets(buf1, sizeof(buf1), newfp) == NULL)
+ continue;
+ lineno++;
- if ((p = strchr(buf1, '\n')) != NULL)
- *p = 0;
- snprintf(buf2, sizeof(buf2), "%s %s", buf0, buf1);
- remove_extra_space(buf2);
- strcpy(buf0, buf2);
- if ((p = strrchr(buf1, '\\')) != NULL)
- goto multiline;
- }
+ if ((p = strchr(buf1, '\n')) != NULL)
+ *p = 0;
+ snprintf(buf2, sizeof(buf2), "%s %s", buf0, buf1);
+ remove_extra_space(buf2);
+ strcpy(buf0, buf2);
+ if ((p = strrchr(buf1, '\\')) != NULL)
+ goto multiline;
+ }
#else
- remove_extra_space(buf0);
+ remove_extra_space(buf0);
#endif
- while ((p = strrchr(&buf0[search_len + 1], '"')) != NULL) *p = 0;
- while ((p = strrchr(&buf0[search_len + 1], '\'')) != NULL) *p = 0;
- while ((p = strrchr(&buf0[search_len + 1], '\\')) != NULL) *p = ' ';
-
- if (verbose && warned == 0) {
- if ((strchr(buf0, '$') != NULL) || (strchr(buf0, '\\') != NULL)) {
- warned = 1;
- warn("# Line %d of %s has an annoying %s", lineno, ebuild, buf0);
+ while ((p = strrchr(&buf0[search_len + 1], '"')) != NULL) *p = 0;
+ while ((p = strrchr(&buf0[search_len + 1], '\'')) != NULL) *p = 0;
+ while ((p = strrchr(&buf0[search_len + 1], '\\')) != NULL) *p = ' ';
+
+ if (verbose && warned == 0) {
+ if ((strchr(buf0, '$') != NULL) || (strchr(buf0, '\\') != NULL)) {
+ warned = 1;
+ warn("# Line %d of %s has an annoying %s",
+ lineno, ebuild, buf0);
+ }
}
- }
- if (strlen(buf0) < search_len + 1) {
- /* warnf("err '%s'/%zu <= %zu; line %u\n", buf0, strlen(buf0), search_len + 1, lineno); */
- continue;
- }
+ if (strlen(buf0) < search_len + 1) {
+ /* warnf("err '%s'/%zu <= %zu; line %u\n", buf0, strlen(buf0), search_len + 1, lineno); */
+ continue;
+ }
- if ((argc == optind) || (quse_all)) {
- ok = 1;
- } else {
- ok = 0;
- if (regexp_matching) {
- for (i = optind; i < argc; ++i) {
- if (rematch(argv[i], &buf0[search_len + 1], REG_NOSUB) == 0) {
- ok = 1;
- break;
- }
- }
+ if ((argc == optind) || (quse_all)) {
+ ok = 1;
} else {
- remove_extra_space(buf0);
- strcpy(buf1, &buf0[search_len + 1]);
-
- for (i = (size_t) optind; i < argc && argv[i] != NULL; i++) {
- if (strcmp(buf1, argv[i]) == 0) {
- ok = 1;
- break;
+ ok = 0;
+ if (regexp_matching) {
+ for (i = optind; i < argc; ++i) {
+ if (rematch(argv[i], &buf0[search_len + 1], REG_NOSUB) == 0) {
+ ok = 1;
+ break;
+ }
}
- }
- if (ok == 0) while ((p = strchr(buf1, ' ')) != NULL) {
- *p = 0;
+ } else {
+ remove_extra_space(buf0);
+ strcpy(buf1, &buf0[search_len + 1]);
+
for (i = (size_t) optind; i < argc && argv[i] != NULL; i++) {
if (strcmp(buf1, argv[i]) == 0) {
ok = 1;
break;
}
}
- strcpy(buf2, p + 1);
- strcpy(buf1, buf2);
- if (strchr(buf1, ' ') == NULL)
+ if (ok == 0) while ((p = strchr(buf1, ' ')) != NULL) {
+ *p = 0;
for (i = (size_t) optind; i < argc && argv[i] != NULL; i++) {
- if (strcmp(buf1, argv[i]) == 0)
+ if (strcmp(buf1, argv[i]) == 0) {
ok = 1;
+ break;
+ }
}
+ strcpy(buf2, p + 1);
+ strcpy(buf1, buf2);
+ if (strchr(buf1, ' ') == NULL)
+ for (i = (size_t) optind; i < argc && argv[i] != NULL; i++) {
+ if (strcmp(buf1, argv[i]) == 0)
+ ok = 1;
+ }
+ }
}
}
- }
- if (ok) {
- if (verbose > 3)
- printf("%s %s %s ", *user ? user : "MISSING", *revision ? revision : "MISSING", *date ? date : "MISSING");
-
- printf("%s%s%s ", CYAN, ebuild, NORM);
- print_highlighted_use_flags(&buf0[search_len + 1], optind, argc, argv);
- puts(NORM);
- if (verbose > 1) {
- char **ARGV;
- int ARGC;
- makeargv(&buf0[search_len + 1], &ARGC, &ARGV);
- quse_describe_flag(portdir, 1, ARGC, ARGV);
- freeargv(ARGC, ARGV);
+ if (ok) {
+ if (verbose > 3)
+ printf("%s %s %s ",
+ *user ? user : "MISSING",
+ *revision ? revision : "MISSING",
+ *date ? date : "MISSING");
+
+ printf("%s%s%s ", CYAN, ebuild, NORM);
+ print_highlighted_use_flags(&buf0[search_len + 1], optind, argc, argv);
+ puts(NORM);
+ if (verbose > 1) {
+ char **ARGV;
+ int ARGC;
+ makeargv(&buf0[search_len + 1], &ARGC, &ARGV);
+ quse_describe_flag(overlay, 1, ARGC, ARGV);
+ freeargv(ARGC, ARGV);
+ }
}
+ break;
}
- break;
+ fclose(newfp);
+ } else {
+ if (!reinitialize)
+ warnfp("(cache update pending) %s", ebuild);
+ reinitialize = 1;
}
- fclose(newfp);
- } else {
- if (!reinitialize)
- warnfp("(cache update pending) %s", ebuild);
- reinitialize = 1;
}
+ fclose(fp);
+ close(overlay_fd);
}
- fclose(fp);
- close(portdir_fd);
+
return EXIT_SUCCESS;
}
next reply other threads:[~2015-11-28 2:44 UTC|newest]
Thread overview: 599+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-11-28 2:44 Mike Frysinger [this message]
-- strict thread matches above, loose matches on Subject: below --
2025-04-19 14:10 [gentoo-commits] proj/portage-utils:master commit in: / Fabian Groffen
2025-04-19 14:06 Fabian Groffen
2025-04-19 13:58 Fabian Groffen
2025-04-18 20:50 Fabian Groffen
2025-04-18 19:59 Fabian Groffen
2025-04-18 19:29 Fabian Groffen
2024-12-02 7:26 Fabian Groffen
2024-07-03 19:44 Fabian Groffen
2024-06-28 19:51 Fabian Groffen
2024-06-27 19:19 Fabian Groffen
2024-04-20 13:05 Fabian Groffen
2024-03-29 11:22 Fabian Groffen
2024-03-29 10:58 Fabian Groffen
2024-03-29 10:57 Fabian Groffen
2024-01-02 13:16 Fabian Groffen
2024-01-02 13:16 Fabian Groffen
2024-01-02 7:57 Fabian Groffen
2024-01-01 10:37 Fabian Groffen
2023-12-20 21:32 Mike Frysinger
2023-07-18 6:28 Fabian Groffen
2023-07-18 6:28 Fabian Groffen
2023-04-21 19:11 Fabian Groffen
2023-03-01 21:00 Fabian Groffen
2023-02-22 20:06 Fabian Groffen
2023-02-07 8:10 Fabian Groffen
2022-12-15 9:13 Fabian Groffen
2022-12-15 9:03 Fabian Groffen
2022-12-15 9:03 Fabian Groffen
2022-11-16 8:59 Fabian Groffen
2022-08-29 8:44 Fabian Groffen
2022-08-29 8:44 Fabian Groffen
2022-08-28 12:26 Fabian Groffen
2022-08-28 12:26 Fabian Groffen
2022-06-14 6:36 Fabian Groffen
2022-05-26 14:53 Fabian Groffen
2022-05-20 17:15 Fabian Groffen
2022-04-06 19:31 Fabian Groffen
2022-02-27 12:29 Fabian Groffen
2022-02-23 11:57 Fabian Groffen
2022-02-23 11:57 Fabian Groffen
2022-02-12 18:31 Fabian Groffen
2022-02-12 18:31 Fabian Groffen
2022-02-12 18:31 Fabian Groffen
2022-02-12 17:13 Fabian Groffen
2022-02-12 17:13 Fabian Groffen
2022-02-12 17:13 Fabian Groffen
2022-02-12 17:13 Fabian Groffen
2022-02-12 17:13 Fabian Groffen
2022-02-12 16:14 Fabian Groffen
2022-02-07 7:16 Fabian Groffen
2022-02-06 15:21 Fabian Groffen
2022-02-06 14:51 Fabian Groffen
2022-02-06 14:29 Fabian Groffen
2022-02-06 14:29 Fabian Groffen
2022-01-31 8:01 Fabian Groffen
2021-12-31 15:36 Fabian Groffen
2021-12-31 15:36 Fabian Groffen
2021-12-31 15:36 Fabian Groffen
2021-12-29 12:20 Fabian Groffen
2021-12-27 18:13 Fabian Groffen
2021-12-26 13:59 Fabian Groffen
2021-12-25 9:15 Fabian Groffen
2021-12-23 12:55 Fabian Groffen
2021-12-21 11:30 Fabian Groffen
2021-12-13 8:39 Fabian Groffen
2021-12-13 8:39 Fabian Groffen
2021-12-13 8:39 Fabian Groffen
2021-11-13 14:27 Fabian Groffen
2021-11-13 14:27 Fabian Groffen
2021-11-07 10:53 Fabian Groffen
2021-10-09 12:03 Fabian Groffen
2021-10-03 11:15 Fabian Groffen
2021-10-03 8:54 Fabian Groffen
2021-09-27 18:14 Fabian Groffen
2021-07-06 6:43 Fabian Groffen
2021-07-05 8:40 Fabian Groffen
2021-07-01 10:07 Fabian Groffen
2021-07-01 10:05 Fabian Groffen
2021-06-30 6:26 Fabian Groffen
2021-06-24 6:44 Fabian Groffen
2021-06-23 7:14 Fabian Groffen
2021-06-21 20:04 Fabian Groffen
2021-06-17 6:27 Fabian Groffen
2021-06-16 20:11 Fabian Groffen
2021-06-16 19:21 Fabian Groffen
2021-06-16 19:21 Fabian Groffen
2021-06-16 19:21 Fabian Groffen
2021-06-16 19:21 Fabian Groffen
2021-06-16 19:21 Fabian Groffen
2021-06-16 19:21 Fabian Groffen
2021-06-16 19:19 Fabian Groffen
2021-06-01 19:43 Fabian Groffen
2021-06-01 19:43 Fabian Groffen
2021-05-31 19:14 Fabian Groffen
2021-05-15 12:19 Fabian Groffen
2021-05-10 9:16 Fabian Groffen
2021-05-02 11:32 Fabian Groffen
2021-05-02 11:25 Fabian Groffen
2021-05-02 11:25 Fabian Groffen
2021-05-01 19:32 Fabian Groffen
2021-05-01 8:40 Fabian Groffen
2021-03-13 20:32 Fabian Groffen
2021-02-20 12:06 Fabian Groffen
2021-02-20 11:44 Fabian Groffen
2021-02-20 11:44 Fabian Groffen
2021-02-17 20:23 Fabian Groffen
2020-11-29 9:13 Fabian Groffen
2020-11-21 10:53 Fabian Groffen
2020-11-21 10:45 Fabian Groffen
2020-11-21 10:00 Fabian Groffen
2020-11-21 9:53 Fabian Groffen
2020-11-21 8:53 Fabian Groffen
2020-11-14 17:06 Fabian Groffen
2020-11-14 17:06 Fabian Groffen
2020-11-13 9:32 Fabian Groffen
2020-10-04 19:30 Fabian Groffen
2020-10-04 19:06 Fabian Groffen
2020-10-04 18:46 Fabian Groffen
2020-10-04 18:44 Fabian Groffen
2020-10-04 12:33 Fabian Groffen
2020-10-04 11:54 Fabian Groffen
2020-10-04 11:31 Fabian Groffen
2020-10-04 11:09 Fabian Groffen
2020-08-17 14:34 Fabian Groffen
2020-08-17 13:08 Fabian Groffen
2020-08-17 13:08 Fabian Groffen
2020-08-14 10:44 Fabian Groffen
2020-08-14 10:09 Fabian Groffen
2020-08-14 9:35 Fabian Groffen
2020-08-14 9:35 Fabian Groffen
2020-08-02 7:39 Fabian Groffen
2020-07-08 8:12 Fabian Groffen
2020-06-28 19:11 Fabian Groffen
2020-06-28 15:58 Fabian Groffen
2020-06-27 9:38 Fabian Groffen
2020-06-27 9:38 Fabian Groffen
2020-05-25 19:01 Fabian Groffen
2020-05-25 18:29 Fabian Groffen
2020-05-25 18:25 Fabian Groffen
2020-05-25 18:08 Fabian Groffen
2020-05-25 18:05 Fabian Groffen
2020-05-25 11:20 Fabian Groffen
2020-05-25 11:12 Fabian Groffen
2020-05-25 10:43 Fabian Groffen
2020-05-25 10:43 Fabian Groffen
2020-05-21 11:13 Fabian Groffen
2020-05-17 12:35 Fabian Groffen
2020-05-17 12:35 Fabian Groffen
2020-05-17 12:35 Fabian Groffen
2020-05-17 12:35 Fabian Groffen
2020-05-17 8:27 Fabian Groffen
2020-05-17 8:27 Fabian Groffen
2020-05-17 8:15 Fabian Groffen
2020-05-16 18:51 Fabian Groffen
2020-05-16 14:30 Fabian Groffen
2020-05-16 13:06 Fabian Groffen
2020-05-16 13:06 Fabian Groffen
2020-05-02 8:45 Fabian Groffen
2020-04-27 7:46 Fabian Groffen
2020-02-21 8:50 Fabian Groffen
2020-02-21 8:18 Fabian Groffen
2020-01-31 14:45 Fabian Groffen
2020-01-31 13:26 Fabian Groffen
2020-01-31 13:26 Fabian Groffen
2020-01-31 13:26 Fabian Groffen
2020-01-31 10:49 Fabian Groffen
2020-01-31 10:49 Fabian Groffen
2020-01-31 10:49 Fabian Groffen
2020-01-26 19:31 Fabian Groffen
2020-01-25 12:20 Fabian Groffen
2020-01-25 12:20 Fabian Groffen
2020-01-25 12:11 Fabian Groffen
2020-01-25 10:01 Fabian Groffen
2020-01-25 9:45 Fabian Groffen
2020-01-25 9:11 Fabian Groffen
2020-01-25 9:11 Fabian Groffen
2020-01-25 9:03 Fabian Groffen
2020-01-25 9:03 Fabian Groffen
2020-01-25 9:03 Fabian Groffen
2020-01-25 9:03 Fabian Groffen
2020-01-25 9:03 Fabian Groffen
2020-01-22 20:11 Fabian Groffen
2020-01-22 20:11 Fabian Groffen
2020-01-22 20:11 Fabian Groffen
2020-01-22 20:04 Fabian Groffen
2020-01-22 20:04 Fabian Groffen
2020-01-22 20:04 Fabian Groffen
2020-01-22 20:04 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-22 19:54 Fabian Groffen
2020-01-20 19:54 Fabian Groffen
2020-01-19 19:36 Fabian Groffen
2020-01-19 19:36 Fabian Groffen
2020-01-19 19:36 Fabian Groffen
2020-01-19 19:36 Fabian Groffen
2020-01-19 19:36 Fabian Groffen
2020-01-19 19:36 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 19:09 Fabian Groffen
2020-01-19 16:40 Fabian Groffen
2020-01-19 16:37 Fabian Groffen
2020-01-19 16:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-19 12:37 Fabian Groffen
2020-01-18 13:09 Fabian Groffen
2020-01-06 8:03 Fabian Groffen
2020-01-06 7:36 Fabian Groffen
2020-01-05 16:08 Fabian Groffen
2020-01-05 16:08 Fabian Groffen
2020-01-05 16:08 Fabian Groffen
2020-01-05 13:28 Fabian Groffen
2020-01-04 20:02 Fabian Groffen
2020-01-04 19:48 Fabian Groffen
2020-01-04 13:28 Fabian Groffen
2020-01-04 10:44 Fabian Groffen
2020-01-04 10:38 Fabian Groffen
2020-01-04 10:27 Fabian Groffen
2020-01-04 10:20 Fabian Groffen
2020-01-03 15:05 Fabian Groffen
2020-01-03 14:58 Fabian Groffen
2020-01-03 10:36 Fabian Groffen
2020-01-02 20:27 Fabian Groffen
2020-01-02 20:00 Fabian Groffen
2020-01-02 15:32 Fabian Groffen
2020-01-02 15:09 Fabian Groffen
2020-01-02 15:09 Fabian Groffen
2020-01-02 14:07 Fabian Groffen
2020-01-02 14:07 Fabian Groffen
2020-01-02 14:07 Fabian Groffen
2020-01-02 14:07 Fabian Groffen
2020-01-02 11:55 Fabian Groffen
2020-01-02 9:47 Fabian Groffen
2020-01-01 19:57 Fabian Groffen
2019-12-31 9:10 Fabian Groffen
2019-12-31 9:05 Fabian Groffen
2019-12-29 12:35 Fabian Groffen
2019-12-29 9:57 Fabian Groffen
2019-12-27 21:45 Fabian Groffen
2019-12-27 21:14 Fabian Groffen
2019-12-27 19:16 Fabian Groffen
2019-12-14 17:01 Fabian Groffen
2019-12-14 17:01 Fabian Groffen
2019-12-14 17:01 Fabian Groffen
2019-12-08 11:53 Fabian Groffen
2019-11-29 13:56 Fabian Groffen
2019-11-29 13:22 Fabian Groffen
2019-11-25 19:51 Fabian Groffen
2019-11-25 19:39 Fabian Groffen
2019-11-19 20:28 Fabian Groffen
2019-11-19 20:28 Fabian Groffen
2019-11-17 15:12 Fabian Groffen
2019-11-17 15:12 Fabian Groffen
2019-11-17 15:12 Fabian Groffen
2019-11-17 15:12 Fabian Groffen
2019-11-17 15:12 Fabian Groffen
2019-11-15 13:52 Fabian Groffen
2019-11-13 18:19 Fabian Groffen
2019-11-13 12:59 Fabian Groffen
2019-11-13 12:53 Fabian Groffen
2019-11-13 12:53 Fabian Groffen
2019-11-09 10:35 Fabian Groffen
2019-10-27 12:23 Fabian Groffen
2019-10-20 10:11 Fabian Groffen
2019-10-12 12:47 Fabian Groffen
2019-10-03 11:50 Fabian Groffen
2019-09-29 12:18 Fabian Groffen
2019-09-28 13:28 Fabian Groffen
2019-09-28 13:06 Fabian Groffen
2019-09-26 19:28 Fabian Groffen
2019-09-26 19:28 Fabian Groffen
2019-09-26 14:06 Fabian Groffen
2019-09-26 14:06 Fabian Groffen
2019-09-21 20:23 Fabian Groffen
2019-09-21 20:17 Fabian Groffen
2019-09-21 19:53 Fabian Groffen
2019-09-10 18:25 Fabian Groffen
2019-08-17 8:37 Fabian Groffen
2019-07-18 17:55 Fabian Groffen
2019-07-14 18:51 Fabian Groffen
2019-07-14 16:27 Fabian Groffen
2019-07-14 16:27 Fabian Groffen
2019-07-14 16:00 Fabian Groffen
2019-07-14 13:09 Fabian Groffen
2019-07-14 13:09 Fabian Groffen
2019-07-14 8:37 Fabian Groffen
2019-06-27 8:54 Fabian Groffen
2019-06-26 19:32 Fabian Groffen
2019-06-19 10:44 Fabian Groffen
2019-06-13 10:52 Fabian Groffen
2019-06-13 9:28 Fabian Groffen
2019-06-13 8:41 Fabian Groffen
2019-06-11 17:55 Fabian Groffen
2019-06-10 18:38 Fabian Groffen
2019-06-10 15:29 Fabian Groffen
2019-06-10 13:31 Fabian Groffen
2019-06-10 12:50 Fabian Groffen
2019-06-10 10:12 Fabian Groffen
2019-06-10 10:09 Fabian Groffen
2019-06-10 10:09 Fabian Groffen
2019-06-10 10:09 Fabian Groffen
2019-06-10 10:09 Fabian Groffen
2019-06-10 10:09 Fabian Groffen
2019-06-09 9:23 Fabian Groffen
2019-06-08 18:42 Fabian Groffen
2019-06-08 18:25 Fabian Groffen
2019-06-08 18:13 Fabian Groffen
2019-06-08 18:13 Fabian Groffen
2019-06-08 18:13 Fabian Groffen
2019-06-08 18:13 Fabian Groffen
2019-06-07 12:20 Fabian Groffen
2019-06-06 13:52 Fabian Groffen
2019-06-06 13:46 Fabian Groffen
2019-06-06 13:46 Fabian Groffen
2019-06-06 8:14 Fabian Groffen
2019-06-05 7:57 Fabian Groffen
2019-05-30 10:23 Fabian Groffen
2019-05-30 10:09 Fabian Groffen
2019-05-30 8:55 Fabian Groffen
2019-05-25 16:04 Fabian Groffen
2019-05-25 14:54 Fabian Groffen
2019-05-25 14:04 Fabian Groffen
2019-05-25 12:19 Fabian Groffen
2019-05-24 12:26 Fabian Groffen
2019-05-22 8:54 Fabian Groffen
2019-05-21 14:42 Fabian Groffen
2019-05-21 14:37 Fabian Groffen
2019-05-21 14:12 Fabian Groffen
2019-05-21 14:12 Fabian Groffen
2019-05-20 12:15 Fabian Groffen
2019-05-20 10:46 Fabian Groffen
2019-05-16 17:13 Fabian Groffen
2019-05-16 17:13 Fabian Groffen
2019-05-16 17:13 Fabian Groffen
2019-05-16 17:13 Fabian Groffen
2019-05-16 13:18 Fabian Groffen
2019-05-15 9:42 Fabian Groffen
2019-05-13 13:39 Fabian Groffen
2019-05-12 9:58 Fabian Groffen
2019-05-12 9:58 Fabian Groffen
2019-05-12 9:58 Fabian Groffen
2019-05-11 11:11 Fabian Groffen
2019-05-11 7:14 Fabian Groffen
2019-05-11 7:14 Fabian Groffen
2019-05-11 7:14 Fabian Groffen
2019-05-11 7:14 Fabian Groffen
2019-05-10 15:32 Fabian Groffen
2019-05-10 15:32 Fabian Groffen
2019-05-10 7:30 Fabian Groffen
2019-05-10 7:30 Fabian Groffen
2019-05-10 7:30 Fabian Groffen
2019-05-07 6:19 Fabian Groffen
2019-05-07 6:19 Fabian Groffen
2019-05-06 16:04 Fabian Groffen
2019-05-06 6:41 Fabian Groffen
2019-05-04 17:23 Fabian Groffen
2019-05-04 11:53 Fabian Groffen
2019-05-03 11:45 Fabian Groffen
2019-05-03 8:50 Fabian Groffen
2019-05-03 8:50 Fabian Groffen
2019-05-03 8:50 Fabian Groffen
2019-05-03 8:50 Fabian Groffen
2019-05-02 16:09 Fabian Groffen
2019-05-02 8:29 Fabian Groffen
2019-04-30 8:02 Fabian Groffen
2019-04-30 7:54 Fabian Groffen
2019-04-28 18:10 Fabian Groffen
2019-04-27 9:01 Fabian Groffen
2019-04-27 8:33 Fabian Groffen
2019-04-25 17:36 Fabian Groffen
2019-04-25 9:48 Fabian Groffen
2019-04-25 9:48 Fabian Groffen
2019-04-25 9:48 Fabian Groffen
2019-04-25 9:22 Fabian Groffen
2019-04-25 9:22 Fabian Groffen
2019-04-25 9:22 Fabian Groffen
2019-04-25 9:22 Fabian Groffen
2019-04-14 10:52 Fabian Groffen
2019-03-27 20:52 Fabian Groffen
2019-03-27 20:37 Fabian Groffen
2019-03-27 20:18 Fabian Groffen
2019-03-18 13:14 Fabian Groffen
2019-03-18 13:14 Fabian Groffen
2019-03-18 13:14 Fabian Groffen
2019-03-12 8:05 Fabian Groffen
2019-03-01 13:51 Fabian Groffen
2019-02-28 18:37 Fabian Groffen
2019-02-28 18:37 Fabian Groffen
2019-02-27 21:18 Fabian Groffen
2019-02-27 20:53 Fabian Groffen
2019-02-23 15:22 Fabian Groffen
2018-12-28 9:08 Fabian Groffen
2018-12-24 16:02 Fabian Groffen
2018-12-20 18:24 Fabian Groffen
2018-12-20 18:24 Fabian Groffen
2018-12-09 10:42 Fabian Groffen
2018-11-20 14:25 Fabian Groffen
2018-10-26 13:50 Fabian Groffen
2018-10-26 13:50 Fabian Groffen
2018-08-06 7:25 Fabian Groffen
2018-08-06 7:25 Fabian Groffen
2018-08-01 13:28 Fabian Groffen
2018-07-18 20:20 Fabian Groffen
2018-06-28 9:35 Fabian Groffen
2018-06-28 9:35 Fabian Groffen
2018-05-18 16:58 Fabian Groffen
2018-05-18 12:19 Fabian Groffen
2018-05-18 12:19 Fabian Groffen
2018-05-18 10:15 Fabian Groffen
2018-04-18 13:58 Fabian Groffen
2018-04-17 20:12 Fabian Groffen
2018-04-15 15:41 Fabian Groffen
2018-04-15 15:38 Fabian Groffen
2018-04-09 7:15 Fabian Groffen
2018-04-09 7:15 Fabian Groffen
2018-04-04 13:16 Fabian Groffen
2018-04-03 20:13 Fabian Groffen
2018-04-03 13:39 Fabian Groffen
2018-04-02 17:27 Fabian Groffen
2018-04-01 10:22 Fabian Groffen
2018-04-01 10:22 Fabian Groffen
2018-03-31 6:54 Fabian Groffen
2018-03-31 6:54 Fabian Groffen
2018-03-31 6:54 Fabian Groffen
2018-03-31 6:54 Fabian Groffen
2018-03-30 5:56 Fabian Groffen
2018-03-30 5:56 Fabian Groffen
2018-03-26 19:08 Fabian Groffen
2018-03-25 14:00 Fabian Groffen
2018-03-23 20:17 Fabian Groffen
2018-03-23 20:17 Fabian Groffen
2018-03-23 15:27 Fabian Groffen
2018-03-23 15:27 Fabian Groffen
2018-03-23 13:17 Fabian Groffen
2018-03-23 11:29 Fabian Groffen
2018-03-23 11:08 Fabian Groffen
2018-03-23 9:37 Fabian Groffen
2018-01-08 12:33 Fabian Groffen
2018-01-08 12:33 Fabian Groffen
2017-12-29 11:45 Fabian Groffen
2017-12-29 11:45 Fabian Groffen
2017-12-29 11:45 Fabian Groffen
2017-11-27 7:55 Robin H. Johnson
2017-11-27 7:55 Robin H. Johnson
2017-02-07 3:03 Mike Frysinger
2016-12-29 2:33 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-12-29 2:25 Mike Frysinger
2016-12-20 19:15 Mike Frysinger
2016-12-20 16:55 Mike Frysinger
2016-11-27 5:46 Mike Frysinger
2016-11-27 5:46 Mike Frysinger
2016-11-27 5:46 Mike Frysinger
2016-11-27 1:52 Mike Frysinger
2016-11-27 1:50 Mike Frysinger
2016-11-27 0:00 Mike Frysinger
2016-11-26 23:48 Mike Frysinger
2016-11-26 23:46 Mike Frysinger
2016-11-26 23:24 Mike Frysinger
2016-11-26 23:17 Mike Frysinger
2016-11-15 3:34 Mike Frysinger
2016-11-15 3:34 Mike Frysinger
2016-11-15 3:34 Mike Frysinger
2016-11-15 3:34 Mike Frysinger
2016-11-15 3:34 Mike Frysinger
2016-11-12 17:17 Mike Frysinger
2016-06-21 20:53 Mike Frysinger
2016-06-20 3:22 Mike Frysinger
2016-04-04 15:47 Mike Frysinger
2016-04-01 21:42 Mike Frysinger
2016-04-01 21:42 Mike Frysinger
2016-03-28 4:53 Mike Frysinger
2016-03-28 4:53 Mike Frysinger
2016-03-28 4:53 Mike Frysinger
2016-02-22 20:37 Mike Frysinger
2016-02-22 20:37 Mike Frysinger
2016-02-22 20:37 Mike Frysinger
2016-02-22 20:37 Mike Frysinger
2016-02-17 7:15 Mike Frysinger
2016-02-14 1:26 Mike Frysinger
2016-02-14 1:26 Mike Frysinger
2016-02-14 1:26 Mike Frysinger
2016-01-29 5:53 Mike Frysinger
2016-01-05 0:25 Mike Frysinger
2015-12-17 5:06 Mike Frysinger
2015-12-17 5:06 Mike Frysinger
2015-12-17 5:06 Mike Frysinger
2015-12-17 5:06 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-28 2:44 Mike Frysinger
2015-11-26 10:52 Mike Frysinger
2015-11-26 10:52 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 10:39 Mike Frysinger
2015-11-26 8:59 Mike Frysinger
2015-11-26 8:00 Mike Frysinger
2015-09-15 18:27 Mike Frysinger
2015-06-23 8:58 Mike Frysinger
2015-06-06 6:20 Mike Frysinger
2015-06-06 6:20 Mike Frysinger
2015-06-06 6:20 Mike Frysinger
2015-06-06 6:20 Mike Frysinger
2015-06-03 15:44 Mike Frysinger
2015-06-03 15:44 Mike Frysinger
2015-05-31 8:31 Mike Frysinger
2015-05-19 17:37 Mike Frysinger
2015-05-19 17:37 Mike Frysinger
2015-05-19 17:37 Mike Frysinger
2015-05-19 17:37 Mike Frysinger
2015-05-19 17:37 Mike Frysinger
2015-05-19 17:37 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-24 1:26 Mike Frysinger
2015-02-21 18:06 Mike Frysinger
2015-02-21 0:00 Mike Frysinger
2015-02-21 0:00 Mike Frysinger
2015-02-20 22:28 Mike Frysinger
2015-02-19 7:49 Mike Frysinger
2014-10-19 16:56 Mike Frysinger
2014-06-16 18:01 Mike Frysinger
2014-03-16 6:34 Mike Frysinger
2014-03-16 6:34 Mike Frysinger
2014-03-16 6:14 Mike Frysinger
2014-03-16 6:14 Mike Frysinger
2014-03-16 6:14 Mike Frysinger
2014-03-15 6:02 Mike Frysinger
2014-03-11 4:53 Mike Frysinger
2014-03-11 4:53 Mike Frysinger
2014-03-10 8:45 Mike Frysinger
2014-03-10 8:45 Mike Frysinger
2014-03-10 8:45 Mike Frysinger
2014-03-10 6:00 Mike Frysinger
2014-03-10 6:00 Mike Frysinger
2014-03-10 6:00 Mike Frysinger
2014-03-10 6:00 Mike Frysinger
2014-03-10 6:00 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
2014-03-08 5:51 Mike Frysinger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1448666777.a0c3ddab026e271b3eb2e66e64b9e9a24eb6f708.vapier@gentoo \
--to=vapier@gentoo.org \
--cc=gentoo-commits@lists.gentoo.org \
--cc=gentoo-dev@lists.gentoo.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox