public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
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;
 }
 


             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