public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sven Eden" <sven.eden@gmx.de>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/ufed:master commit in: /
Date: Wed, 23 Jan 2013 12:05:26 +0000 (UTC)	[thread overview]
Message-ID: <1358755403.876dd7edca1a28acceb95046ce466db0690f60e9.yamakuzure@gentoo> (raw)

commit:     876dd7edca1a28acceb95046ce466db0690f60e9
Author:     Sven Eden <sven.eden <AT> gmx <DOT> de>
AuthorDate: Mon Jan 21 08:03:23 2013 +0000
Commit:     Sven Eden <sven.eden <AT> gmx <DOT> de>
CommitDate: Mon Jan 21 08:03:23 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/ufed.git;a=commit;h=876dd7ed

Changed keys display to be more easier to handle. Added convenience methods to set prev/next items to display. Added a method to apply filters. Added a method to reset the display. Optimized filter handling. Prepared the upcoming rewrite of the core display design. (It is not fit to handle filters or wrapped lines.)

---
 ufed-curses-checklist.c |   40 +++++++---
 ufed-curses-help.c      |    3 +-
 ufed-curses.c           |  196 +++++++++++++++++++++++++++++-----------------
 ufed-curses.h           |    6 +-
 4 files changed, 159 insertions(+), 86 deletions(-)

diff --git a/ufed-curses-checklist.c b/ufed-curses-checklist.c
index b0b8ff1..a4f65b8 100644
--- a/ufed-curses-checklist.c
+++ b/ufed-curses-checklist.c
@@ -36,10 +36,12 @@ static const struct key keys[] = {
 	{ '?',      mkKey("Help (?)")            },
 	{ '\n',     mkKey("Save (Return/Enter)") },
 	{ '\033',   mkKey("Cancel (Esc)")        },
-	{ KEY_F(5), mkKey("Toggle (F5: Mask")    },
-	{ KEY_F(6), mkKey("F6: Pkg")             },
-//	{ KEY_F(7), mkKey("F7: Local")           },
-//	{ KEY_F(8), mkKey("F8: Installed)")      },
+	{ -1,       mkKey("Display (")           },
+	{ KEY_F(5), mkKey("Mask (F5)")           },
+	{ KEY_F(6), mkKey("Order (F6)")          },
+//	{ KEY_F(7), mkKey("Local/Global (F7)")   },
+//	{ KEY_F(8), mkKey("Installed (F8)")      },
+	{ -1,       mkKey(")")                   },
 	{ '\0',     mkKey("")                    }
 };
 #undef mkKey
@@ -52,6 +54,7 @@ static void free_flags(void);
 /* external members */
 enum mask  showMasked = show_unmasked; //!< Set whether to show masked, unmasked or both flags
 enum order pkgOrder   = pkgs_left;     //!< Set whether to display package lists left or right of the description
+enum scope showScope  = show_all;      //!< Set whether global, local or all flags are shown
 int firstNormalY      = -1;            //!< y of first not masked flag
 
 
@@ -283,12 +286,17 @@ static void free_flags(void) {
 }
 
 
-static void drawflag(struct item *item, bool highlight) {
+static int drawflag(struct item *item, bool highlight) {
 	struct flag *flag = (struct flag *) item;
 	char buf[wWidth(List)+1];
 	char desc[maxDescWidth];
 	int y = flag->item.top - topy;
 	int idx = 0;
+	int usedY = 0;
+
+	// Return early if there is nothing to display:
+	if (!isLegalItem(item))
+		return 0;
 
 	/* Determine with which description to start.
 	 * Overly long description lists might not fit on one screen,
@@ -318,10 +326,20 @@ static void drawflag(struct item *item, bool highlight) {
 		flag->state);
 
 	/* print descriptions according to filters
-	 * TODO: Implement local/global and installed/all filters
+	 * TODO: Implement installed/all filters
 	 */
 	if(idx < flag->item.height) {
 		for(;;) {
+			// Filter global description if it is not wanted:
+			if (!idx && (show_local == showScope) && flag->item.isGlobal) {
+				++idx;
+				continue;
+			}
+
+			// Break on local descriptions if they are not wanted:
+			if (idx && (show_global == showScope))
+				break;
+
 			// Display flag state
 			sprintf(buf + minwidth, "[%c] ",
 				flag->item.isMasked ? flag->isInstalled[idx] ? 'M' : 'm'
@@ -358,6 +376,7 @@ static void drawflag(struct item *item, bool highlight) {
 			waddstr(win(List), buf);
 			y++;
 			idx++;
+			usedY++;
 			if((idx < flag->item.height) && (y < wHeight(List)) ) {
 				char *p;
 				for(p = buf; p != buf + minwidth; p++)
@@ -374,6 +393,7 @@ static void drawflag(struct item *item, bool highlight) {
 	if(highlight)
 		wmove(win(List), max(flag->item.top - topy, 0), 2);
 	wnoutrefresh(win(List));
+	return usedY;
 }
 
 static int callback(struct item **currentitem, int key) {
@@ -410,14 +430,14 @@ static int callback(struct item **currentitem, int key) {
 			/* if the current flag does not match, search one that does. */
 			else {
 				do item = item->next;
-				while(item!=*currentitem && strncasecmp(((struct flag *) item)->name, fayt, n)!=0);
+				while( (item != *currentitem)
+				    && ( ( strncasecmp(((struct flag *) item)->name, fayt, n)
+				    	|| !isLegalItem(item)) ) );
 
 				/* if there was no match (or the match is filtered),
 				 * update the input area to show that there is no match
 				 */
-				if ( (item == *currentitem)
-					|| ( item->isMasked && (show_unmasked == showMasked))
-					|| (!item->isMasked && (show_masked   == showMasked)) ) {
+				if (item == *currentitem) {
 					if (item != *currentitem)
 						item = *currentitem;
 					wattrset(win(Input), COLOR_PAIR(4) | A_BOLD | A_REVERSE);

diff --git a/ufed-curses-help.c b/ufed-curses-help.c
index 79bd35e..c967ff6 100644
--- a/ufed-curses-help.c
+++ b/ufed-curses-help.c
@@ -170,7 +170,7 @@ static const struct key keys[] = {
 #undef key
 };
 
-static void drawline(struct item *item, bool highlight) {
+static int drawline(struct item *item, bool highlight) {
 	struct line *line = (struct line *) item;
 	char buf[wWidth(List)+1];
 	sprintf(buf, "%-*.*s", wWidth(List), wWidth(List), line->text);
@@ -182,6 +182,7 @@ static void drawline(struct item *item, bool highlight) {
 	if(highlight)
 		wmove(win(List), line->item.top-topy, 0);
 	wnoutrefresh(win(List));
+	return 1;
 }
 
 static int callback(struct item **currentitem, int key) {

diff --git a/ufed-curses.c b/ufed-curses.c
index 63797e9..1e9b232 100644
--- a/ufed-curses.c
+++ b/ufed-curses.c
@@ -28,10 +28,15 @@ static struct item *items, *currentitem;
 int topy, minwidth;
 extern enum mask showMasked;
 extern enum order pkgOrder;
+extern enum scope showScope;
 extern int firstNormalY;
 
+
 /* internal prototypes */
 static void checktermsize(void);
+void resetDisplay();
+void setNextItem(int count, bool strict);
+void setPrevItem(int count, bool strict);
 
 
 /* internal functions */
@@ -79,7 +84,7 @@ static void checktermsize(void) {
 	}
 }
 
-static void (*drawitem)(struct item *, bool);
+static int (*drawitem)(struct item *, bool);
 
 void drawitems(void) {
 	struct item *item = currentitem;
@@ -107,8 +112,9 @@ void drawitems(void) {
 
 	for(;;) {
 		if(item!=currentitem)
-			(*drawitem)(item, FALSE);
-		y += item->height;
+			y += (*drawitem)(item, FALSE);
+		else
+			y += item->height;
 		item = item->next;
 		if(y >= wHeight(List))
 			break;
@@ -338,7 +344,7 @@ bool yesno(const char *prompt) {
 int maineventloop(
 		const char *_subtitle,
 		int(*_callback)(struct item **, int),
-		void(*_drawitem)(struct item *, bool),
+		int(*_drawitem)(struct item *, bool),
 		struct item *_items,
 		const struct key *_keys) {
 	int result;
@@ -346,7 +352,7 @@ int maineventloop(
 	{ const char *temp = subtitle;
 		subtitle=_subtitle;
 		_subtitle=temp; }
-	{ void(*temp)(struct item *, bool) = drawitem;
+	{ int(*temp)(struct item *, bool) = drawitem;
 		drawitem=_drawitem;
 		_drawitem=temp; }
 	{ struct item *temp=items;
@@ -475,7 +481,7 @@ int maineventloop(
 							continue;
 						x -= 2;
 						for(key = keys; key->key!='\0'; key++) {
-							if((size_t)x < key->length) {
+							if( (key->key > 0) && ((size_t)x < key->length)) {
 								event.x -= x;
 								wattrset(win(Bottom), COLOR_PAIR(3) | A_BOLD | A_REVERSE);
 								mvwaddstr(win(Bottom), event.y, event.x, key->descr);
@@ -509,83 +515,41 @@ int maineventloop(
 						(*drawitem)(currentitem, FALSE);
 						topy--;
 						(*drawitem)(currentitem, TRUE);
-					} else if( (currentitem!=items || topy>currentitem->top)
-							&& (	!currentitem->prev->isMasked
-								||	(show_unmasked != showMasked)) ) {
-						(*drawitem)(currentitem, FALSE);
-						currentitem = currentitem->prev;
-						scrollcurrent();
-						(*drawitem)(currentitem, TRUE);
-					}
+					} else
+						setPrevItem(1, true);
 					break;
 	
 				case KEY_DOWN:
 					if( (currentitem->top + currentitem->height) > (topy + wHeight(List)) ) {
+						// Scroll through descriptions if their list is longer than the window
 						(*drawitem)(currentitem, FALSE);
 						topy++;
 						(*drawitem)(currentitem, TRUE);
-					} else if( (currentitem->next != items)
-							&& (	currentitem->next->isMasked
-								||	(show_masked != showMasked)) ){
-						(*drawitem)(currentitem, FALSE);
-						currentitem = currentitem->next;
-						scrollcurrent();
-						(*drawitem)(currentitem, TRUE);
-					}
+					} else
+						setNextItem(1, true);
 					break;
 	
 				case KEY_PPAGE:
-					if(currentitem!=items) {
-						struct item *olditem = currentitem;
-						(*drawitem)(currentitem, FALSE);
-						while( (currentitem != items)
-							&& ( (olditem->top - currentitem->prev->top) <= wHeight(List))
-							&& ( (	!currentitem->prev->isMasked
-								||	(show_unmasked != showMasked)) ) ) {
-							currentitem = currentitem->prev;
-						}
-						scrollcurrent();
-						(*drawitem)(currentitem, TRUE);
-					}
+					if(currentitem!=items)
+						setPrevItem(wHeight(List), false);
 					break;
 	
 				case KEY_NPAGE:
-					if(currentitem->next!=items) {
-						struct item *olditem = currentitem;
-						(*drawitem)(currentitem, FALSE);
-						while( (currentitem->next != items)
-							&& (((currentitem->next->top + currentitem->next->height)
-								-(olditem->top + olditem->height) ) <= wHeight(List))
-							&& ( (	currentitem->next->isMasked
-								||	(show_masked != showMasked)) ) ) {
-							currentitem = currentitem->next;
-						}
-						scrollcurrent();
-						(*drawitem)(currentitem, TRUE);
-					}
+					if(currentitem->next!=items)
+						setNextItem(wHeight(List), false);
 					break;
 	
 				case KEY_HOME:
-					if(currentitem!=items) {
-						(*drawitem)(currentitem, FALSE);
-						currentitem = items;
-						if (show_unmasked == showMasked) {
-							while (currentitem->isMasked)
-								currentitem = currentitem->next;
-						}
-						scrollcurrent();
-						(*drawitem)(currentitem, TRUE);
-					}
+					if(currentitem!=items)
+						resetDisplay();
 					break;
 	
 				case KEY_END:
 					if(currentitem->next!=items) {
 						(*drawitem)(currentitem, FALSE);
 						currentitem = items->prev;
-						if (show_masked == showMasked) {
-							while (!currentitem->isMasked)
-								currentitem = currentitem->prev;
-						}
+						while (!isLegalItem(currentitem))
+							currentitem = currentitem->prev;
 						scrollcurrent();
 						(*drawitem)(currentitem, TRUE);
 					}
@@ -595,25 +559,21 @@ int maineventloop(
 					if      (show_masked   == showMasked) showMasked = show_unmasked;
 					else if (show_both     == showMasked) showMasked = show_masked;
 					else if (show_unmasked == showMasked) showMasked = show_both;
-					currentitem = items;
-					topy = 0;
-					draw();
+					resetDisplay();
 					break;
 
 				case KEY_F(6):
 					if (pkgs_left == pkgOrder) pkgOrder = pkgs_right;
 					else                       pkgOrder = pkgs_left;
-					draw();
+					drawitems();
 					break;
 
-				case KEY_BTAB:
-					if      (show_masked   == showMasked) showMasked = show_both;
-					else if (show_both     == showMasked) showMasked = show_unmasked;
-					else if (show_unmasked == showMasked) showMasked = show_masked;
-					currentitem = items;
-					topy = 0;
-					draw();
-					break;
+//				case KEY_F(7):
+//					if      (show_local  == showScope) showScope = show_all;
+//					else if (show_global == showScope) showScope = show_local;
+//					else if (show_all    == showScope) showScope = show_global;
+//					resetDisplay();
+//					break;
 
 #ifdef KEY_RESIZE
 				case KEY_RESIZE:
@@ -649,3 +609,93 @@ exit:
 
 	return result;
 }
+
+
+/* @brief Set display to first legal item and redraw
+ */
+void resetDisplay()
+{
+	(*drawitem)(currentitem, FALSE);
+	currentitem = items;
+	while (!isLegalItem(currentitem))
+		currentitem = currentitem->next;
+	topy = currentitem->top;
+	draw();
+}
+
+
+/* @brief set currentitem to the next item @a count lines away
+ * @param count set how many lines should be skipped
+ * @param strict if set to false, at least one item has to be skipped.
+ */
+void setNextItem(int count, bool strict)
+{
+	bool         result  = true;
+	struct item *curr    = currentitem;
+	int          skipped = 0;
+
+	while (result && (skipped < count)) {
+		if (curr->next == items)
+			result = false; // The list is finished, no next item to display
+		else
+			curr = curr->next;
+
+		// curr is only counted if it is not filtered out:
+		if (isLegalItem(curr))
+			++skipped;
+	} // End of trying to find a next item
+
+	if ( (result && strict) || (!strict && skipped) ) {
+		(*drawitem)(currentitem, FALSE);
+		currentitem = curr;
+		scrollcurrent();
+		(*drawitem)(currentitem, TRUE);
+	}
+}
+
+
+/* @brief set currentitem to the previous item @a count lines away
+ * @param count set how many lines should be skipped
+ * @param strict if set to false, at least one item has to be skipped.
+ */
+void setPrevItem(int count, bool strict)
+{
+	bool         result  = true;
+	struct item *curr    = currentitem;
+	int          skipped = 0;
+
+	while (result && (skipped < count)) {
+		if (curr == items)
+			result = false; // The list is finished, no previous item to display
+		else
+			curr = curr->prev;
+
+		// curr is only counted if it is not filtered out:
+		if (isLegalItem(curr))
+			++skipped;
+	} // End of trying to find next item
+
+	if ( (result && strict) || (!strict && skipped) ) {
+		(*drawitem)(currentitem, FALSE);
+		currentitem = curr;
+		scrollcurrent();
+		(*drawitem)(currentitem, TRUE);
+	}
+}
+
+
+/* @brief return true if the given @a item is not filtered out
+ */
+bool isLegalItem(struct item *item)
+{
+	if ( // 1: Mask filter
+	     ( ( item->isMasked && (show_unmasked != showMasked))
+	    || (!item->isMasked && (show_masked   != showMasked)) )
+	     // 2: Global / Local filter
+	  && ( ( item->isGlobal && ( (show_local  != showScope) || (item->height > 1) ) )
+	    || (!item->isGlobal && (  show_global != showScope)) ) )
+		return true;
+	return false;
+}
+
+

diff --git a/ufed-curses.h b/ufed-curses.h
index a608f33..7a1ca4d 100644
--- a/ufed-curses.h
+++ b/ufed-curses.h
@@ -6,7 +6,7 @@
 
 
 #define DEBUG_EXIT 1
-#define DEBUG_TRACE 1
+#undef DEBUG_TRACE
 
 #if defined(DEBUG_EXIT)
 #  define ERROR_EXIT(code, fmt, ...) { \
@@ -30,6 +30,7 @@
 enum win { Top, Left, List, Input, Scrollbar, Right, Bottom, wCount };
 enum mask { show_unmasked, show_both, show_masked };
 enum order { pkgs_left, pkgs_right };
+enum scope { show_all, show_global, show_local };
 
 struct window {
 	WINDOW *win;
@@ -57,12 +58,13 @@ extern void cursesdone(void);
 extern int maineventloop(
 	const char *subtitle,
 	int (*callback)(struct item **currentitem, int key),
-	void(*drawitem)(struct item *item, bool highlight),
+	int (*drawitem)(struct item *item, bool highlight),
 	struct item *items,
 	const struct key *keys);
 extern void drawitems(void);
 extern void scrollcurrent(void);
 extern bool yesno(const char *);
+bool isLegalItem(struct item *item);
 
 static inline WINDOW *win(enum win w) { return window[w].win; }
 static inline int wTop   (enum win w) { return (window[w].top   >= 0 ? 0 : LINES) + window[w].top   ; }


             reply	other threads:[~2013-01-23 12:05 UTC|newest]

Thread overview: 238+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-23 12:05 Sven Eden [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-11-07 14:25 [gentoo-commits] proj/ufed:master commit in: / Sven Eden
2020-05-02  8:38 Ulrich Müller
2019-09-27  6:42 Sven Eden
2019-09-27  6:39 Sven Eden
2019-09-24 17:57 Sven Eden
2019-09-24 17:56 Sven Eden
2019-04-07 15:17 David Seifert
2019-04-07 13:56 David Seifert
2019-04-07 13:19 David Seifert
2019-04-07 13:19 David Seifert
2019-04-07 13:19 David Seifert
2019-04-07 13:19 David Seifert
2019-04-07 13:19 David Seifert
2015-02-12 15:47 Sven Eden
2015-02-11  9:03 Sven Eden
2014-11-10  9:59 Sven Eden
2014-10-28 11:43 Sven Eden
2014-02-26 10:26 Sven Eden
2014-02-26 10:26 Sven Eden
2014-02-26 10:26 Sven Eden
2014-02-26 10:26 Sven Eden
2014-02-26 10:26 Sven Eden
2014-02-26 10:26 Sven Eden
2014-02-25  8:18 Sven Eden
2014-02-25  8:18 Sven Eden
2014-02-25  8:18 Sven Eden
2014-02-25  8:18 Sven Eden
2013-11-25 21:43 Sven Eden
2013-11-25 21:43 Sven Eden
2013-11-25 21:43 Sven Eden
2013-11-25 21:43 Sven Eden
2013-11-25 21:43 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-20  8:30 Sven Eden
2013-09-11  7:09 Sven Eden
2013-09-11  6:31 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-11  6:04 Sven Eden
2013-09-10 12:37 Sven Eden
2013-09-10  6:36 Sven Eden
2013-09-10  6:36 Sven Eden
2013-09-10  6:36 Sven Eden
2013-09-10  6:36 Sven Eden
2013-09-10  6:36 Sven Eden
2013-09-10  6:36 Sven Eden
2013-09-10  6:36 Sven Eden
2013-07-22  9:34 Sven Eden
2013-07-22  6:09 Sven Eden
2013-07-22  6:09 Sven Eden
2013-04-09  7:22 Sven Eden
2013-04-09  7:22 Sven Eden
2013-04-09  7:22 Sven Eden
2013-04-08  7:18 Sven Eden
2013-04-03 13:39 Sven Eden
2013-03-05 16:53 Sven Eden
2013-03-05 16:49 Sven Eden
2013-03-05 16:49 Sven Eden
2013-03-05 16:49 Sven Eden
2013-03-05 16:49 Sven Eden
2013-03-05 16:49 Sven Eden
2013-02-21 10:02 Sven Eden
2013-02-19 15:16 Sven Eden
2013-02-19 13:34 Sven Eden
2013-02-18  7:22 Sven Eden
2013-02-15  8:36 Sven Eden
2013-02-15  8:36 Sven Eden
2013-02-15  8:36 Sven Eden
2013-02-14  8:35 Sven Eden
2013-02-14  8:35 Sven Eden
2013-02-14  8:35 Sven Eden
2013-02-13  9:23 Sven Eden
2013-02-13  9:23 Sven Eden
2013-02-13  9:23 Sven Eden
2013-02-13  9:23 Sven Eden
2013-02-13  9:23 Sven Eden
2013-02-12 10:51 Sven Eden
2013-02-12 10:51 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-12  9:01 Sven Eden
2013-02-06  9:09 Sven Eden
2013-02-06  9:09 Sven Eden
2013-02-05 18:06 Paul Varner
2013-02-05 13:53 Sven Eden
2013-02-05 13:53 Sven Eden
2013-02-05 11:24 Sven Eden
2013-02-03 14:32 Sven Eden
2013-02-03 14:32 Sven Eden
2013-02-03 14:32 Sven Eden
2013-02-03 14:32 Sven Eden
2013-02-03 14:32 Sven Eden
2013-02-02 20:49 Sven Eden
2013-02-02 10:11 Sven Eden
2013-02-02  9:47 Sven Eden
2013-02-02  9:47 Sven Eden
2013-02-02  9:47 Sven Eden
2013-02-01 21:12 Sven Eden
2013-02-01 21:12 Sven Eden
2013-02-01 21:12 Sven Eden
2013-02-01 16:04 Sven Eden
2013-02-01 15:55 Sven Eden
2013-02-01 15:26 Sven Eden
2013-02-01 14:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-02-01 10:49 Sven Eden
2013-01-24 10:15 Sven Eden
2013-01-24 10:15 Sven Eden
2013-01-24 10:15 Sven Eden
2013-01-24 10:15 Sven Eden
2013-01-24 10:15 Sven Eden
2013-01-23 14:44 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-23 12:05 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-19 21:43 Sven Eden
2013-01-16 13:43 Sven Eden
2013-01-16 12:56 Sven Eden
2013-01-16 12:56 Sven Eden
2013-01-16 12:56 Sven Eden
2013-01-16 12:56 Sven Eden
2013-01-16 12:56 Sven Eden
2013-01-16 12:56 Sven Eden
2013-01-08 11:02 Sven Eden
2013-01-02  8:47 Sven Eden
2013-01-02  8:01 Sven Eden
2013-01-02  8:01 Sven Eden
2012-11-20 17:31 Paul Varner
2012-11-20 17:25 Paul Varner
2012-10-23 16:13 Paul Varner
2012-10-23 16:13 Paul Varner
2012-10-23 16:13 Paul Varner
2012-10-23 16:01 Paul Varner
2012-10-22 20:42 Paul Varner

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=1358755403.876dd7edca1a28acceb95046ce466db0690f60e9.yamakuzure@gentoo \
    --to=sven.eden@gmx.de \
    --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