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: Fri, 20 Sep 2013 08:30:39 +0000 (UTC)	[thread overview]
Message-ID: <1379526278.4b8cd2970af58ba9043c1291312df8fc0d71454d.yamakuzure@gentoo> (raw)

commit:     4b8cd2970af58ba9043c1291312df8fc0d71454d
Author:     Sven Eden <yamakuzure <AT> gmx <DOT> net>
AuthorDate: Wed Sep 18 17:44:38 2013 +0000
Commit:     Sven Eden <sven.eden <AT> gmx <DOT> de>
CommitDate: Wed Sep 18 17:44:38 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/ufed.git;a=commit;h=4b8cd297

Rewrote drawFlag() and added some helper functions. The mess is consideratly cleared now and the function is much cleaner and more maintainable.

---
 ufed-curses-checklist.c | 406 ++++++++++++++++++++++++++----------------------
 1 file changed, 218 insertions(+), 188 deletions(-)

diff --git a/ufed-curses-checklist.c b/ufed-curses-checklist.c
index 8425997..b5eef00 100644
--- a/ufed-curses-checklist.c
+++ b/ufed-curses-checklist.c
@@ -21,6 +21,9 @@ static sFlag*  flags           = NULL;
 /* internal prototypes */
 static int  findFlagStart(sFlag* flag, int* index, sWrap** wrap, int* line, bool* isFirstWrap);
 static void free_flags(void);
+static char getFlagSpecialChar(sFlag* flag, int index);
+static void printFlagInfo(char* buf, sFlag* flag, int index, bool printFlagName, bool printFlagState);
+static void setFlagWrapDraw(sFlag* flag, int index, sWrap** wrap, size_t* pos, size_t* len, bool* isFirstWrap);
 
 
 /* static functions */
@@ -182,126 +185,74 @@ static void read_flags(void)
 	bottomline = lineNum;
 }
 
-static void free_flags(void)
-{
-	sFlag* flag = flags->prev;
-
-	// Clear all flags
-	while (flags) {
-		if (flag)
-			destroyFlag(&flags, &flag);
-		else
-			destroyFlag(&flags, &flags);
-		flag = flags ? flags->prev ? flags->prev : flags : NULL;
-	}
-
-	// Clear line buffer
-	if (lineBuf)
-		free(lineBuf);
-}
-
-
 static int drawflag(sFlag* flag, bool highlight)
 {
 	// Return early if there is nothing to display:
 	if (!isFlagLegal(flag))
 		return 0;
 
-	// Get the starting description/wrapped line of the flag
+	// Basic values for the flag display
 	int    idx       = 0;    // The description index to start with
 	int    line      = flag->currline;
 	int    usedY     = 0;    // Counts how many lines this flag really needs to display
 	sWrap* wrapPart  = NULL; // Wrap part to begin with/draw
 	bool   wrapFirst = true; // The first part, pkg or desc
 
+	// Get the starting description/wrapped line of the flag
 	if ((line < 0)
 	  && (0 == (usedY = findFlagStart(flag, &idx, &wrapPart, &line, &wrapFirst))) )
 		return 0;
 
-
-	char   buf[wWidth(List)+1];
-	char   desc[maxDescWidth];
-
-
-
-	memset(buf, 0, sizeof(char) * (wWidth(List)+1));
+	// Window values (aka shortcuts)
+	WINDOW* wLst    = win(List);
+	int     lHeight = wHeight(List);
+	int     lWidth  = wWidth(List);
+
+	// Set up needed buffers
+	char   buf[lWidth + 1];       // Buffer for the line to print
+	char   desc[maxDescWidth];    // Buffer to assemble the description accoring to e_order and e_desc
+	char   special;               // force/mask/none character
+	memset(buf,  0, sizeof(char) * (lWidth + 1));
+	memset(desc, 0, sizeof(char) * maxDescWidth);
+
+	// Description and wrapped lines state values
+	bool   hasBlankLeft  = false;                 // Set to true once the left side is blanked
+	bool   hasBlankRight = false;                 // Set to true once the right (state) side is blanked
+	bool   hasHead       = false;                 // Set to true once the left side (flag name and states) are printed
+	size_t length        = lWidth - minwidth - 8; // Characters to print
+	bool   newDesc       = true;                  // Set to fals when wrapped parts advance
+	size_t pos           = descriptionleft;       // position in desc to start printing on
+
+	// Safety check: Put in blank line if idx ended up too large
+	if (idx >= flag->ndesc) {
+		// This can happen when filters reduce the list too much
+		// so blank lines must be displayed
+		memset(buf, ' ', lWidth - 1);
+		buf[lWidth] = '\0';
+		waddstr(wLst, buf);
+	}
 
 	// print descriptions according to filters
-	if(idx < flag->ndesc) {
-		WINDOW* wLst      = win(List);
-		int     lHeight   = wHeight(List);
-		bool    hasHead   = false;
-		size_t  pos       = descriptionleft;
-		size_t  length    = wWidth(List) - (minwidth + 8);
-		bool    newDesc   = true; // Set to false when advanceing wrapped descriptions
-		char *p, special, *leftend;
-
-		while ( (idx < flag->ndesc) && (line < lHeight) ) {
-			// Continue if any of the filters apply:
-			if (newDesc && !isDescLegal(flag, idx))
-				continue;
-
-			if (hasHead) {
-				// Add spaces under the flag display
-				leftend = newDesc ? buf + minwidth : buf + minwidth + 8;
-				for(p = buf; p != leftend; ++p)
-					*p = ' ';
-			}
+	while ( (idx < flag->ndesc) && (line < lHeight) ) {
 
-			// Preparations when a new description line is started
-			if (newDesc) {
-				// Set special character if needed:
-				if (isDescForced(flag, idx))
-					special = 'f';
-				else if (isDescMasked(flag, idx))
-					special = 'm';
-				else
-					special = ' ';
-
-				// If this is the very first line, the flag data must be written
-				if (!hasHead) {
-					/* print the selection, name and state of the flag */
-					sprintf(buf, " %c%c%c %s%s%s%-*s ",
-						/* State of selection */
-						flag->stateConf == ' ' ? '(' : '[',
-						' ', // Filled in later
-						flag->stateConf == ' ' ? ')' : ']',
-						/* name */
-						flag->globalForced ? "(" : flag->globalMasked ? "(-" : "",
-						flag->name,
-						(flag->globalForced || flag->globalMasked) ? ")" : "",
-						/* distance */
-						(int)(minwidth
-							- (flag->globalForced ? 3 : flag->globalMasked ? 2 : 5)
-							- strlen(flag->name)), " ");
-				} // End of generating left side mask display
-
-				// At this point buf is filled up to minwidth
-
-				/* Display flag state
-				 * The order in which the states are to be displayed is:
-				 * 1. [D]efaults (make.defaults, IUSE, package.mask, package.force)
-				 *    Note: Filled in later
-				 * 2. [P]rofile package.use files
-				 * 3. [C]onfiguration (make.conf, users package.use)
-				 * 4. global/local
-				 * 5. installed/not installed
-				 */
-				sprintf(buf + minwidth, "  %c%c %c%c ",
-					flag->desc[idx].statePackage,
-					' ' == flag->desc[idx].statePkgUse ?
-						flag->stateConf : flag->desc[idx].statePkgUse,
-					flag->desc[idx].isGlobal ? ' ' : 'L',
-					flag->desc[idx].isInstalled ? 'i' : ' ');
-			} // End of preparing a new description line
+		// Continue if any of the filters apply:
+		if (newDesc && !isDescLegal(flag, idx))
+			continue;
 
-			// At this point buf is guaranteed to be filled up to minwidth + 8
+		// If the flag name and state are drawn, following lines
+		// need to start with spaces
+		if (hasHead && !hasBlankLeft) {
+			memset(buf, ' ', minwidth);
+			hasBlankLeft = true;
+		}
 
-			memset(desc, 0, maxDescWidth * sizeof(char));
+		// Prepare new description or blank on wrapped parts
+		if (newDesc) {
+			special = getFlagSpecialChar(flag, idx);
 
 			// Wrapped and not wrapped lines are unified here
 			// to simplify the usage of different ordering and
-			// stripped versus original descriptions
+			// stripped descriptions versus original descriptions
 			if (flag->desc[idx].pkg) {
 				if (e_order == eOrder_left)
 					sprintf(desc, "(%s) %s", flag->desc[idx].pkg, e_desc == eDesc_ori
@@ -314,111 +265,92 @@ static int drawflag(sFlag* flag, bool highlight)
 							  flag->desc[idx].pkg);
 			} else
 				sprintf(desc, "%s", flag->desc[idx].desc);
+		} else if (!hasBlankRight) {
+			memset(buf + minwidth, ' ', 10);
+			hasBlankRight = true;
+		}
 
-			/* Now display the description line according to either
-			 * its horizontal position or the wrapPart.
-			 *
-			 * With wrapped lines there are a total of three possible
-			 * situations here.
-			 * a) The line is not wrapped. In this case pos is simply
-			 *    descriptionleft and length is number of characters that
-			 *    can be displayed. (both are already set to this)
-			 * b) A new wrapped description starts. In this case wrapPart
-			 *    must be set, pos and length is taken from there.
-			 * c) A wrapped description is displayed, pos and length are
-			 *    taken from there.
-			 * As a) is already set, only b) and c) must be handled.
-			 */
-			if (eWrap_wrap == e_wrap) {
-				if (NULL == wrapPart) {
-					wrapPart  = flag->desc[idx].wrap;
-					wrapFirst = true;
-				} else if (wrapFirst
-						&& (flag->desc[idx].wrap != wrapPart)
-						&& !wrapPart->pos)
-					wrapFirst = false;
-				pos    = wrapPart->pos;
-				length = wrapPart->len;
-				// If this was switched, add the first length
-				if (!wrapFirst && !pos)
-					pos += eOrder_left == e_order
-							? strlen(flag->desc[idx].pkg)
-							: eDesc_ori == e_desc
-							  ? strlen(flag->desc[idx].desc)
-							  : strlen(flag->desc[idx].desc_alt)
-						 + 1;
-				wrapPart = wrapPart->next;
-			}
+		/* --- Preparations done --- */
 
-			// aaaaand go:
-			sprintf(buf + minwidth + (newDesc ? 8 : 10), "%-*.*s", (int)length, (int)length,
-				strlen(desc) > pos
-					? &desc[pos]
-					: "");
+		// 1: Print left side info
+		if (!hasHead || newDesc)
+			// Note: If either is false, the buffer is blanked already
+			printFlagInfo(buf, flag, idx, !hasHead, newDesc);
 
-			/* Set correct color set according to highlighting and status*/
-			if(highlight)
-				wattrset(wLst, COLOR_PAIR(3) | A_BOLD | A_REVERSE);
-			else
-				wattrset(wLst, COLOR_PAIR(3));
-
-			// Put the line on the screen
-			mvwaddstr(wLst, line, 0, buf);
-			mvwaddch(wLst, line, minwidth,     ACS_VLINE); // Before state
-			mvwaddch(wLst, line, minwidth + 4, ACS_VLINE); // Between state and scope
-			mvwaddch(wLst, line, minwidth + 7, ACS_VLINE); // After scope
-
-			// Add (default) selection if this is the header line
-			if (!hasHead) {
-				hasHead = true;
-				if (flag->globalForced) {
-					if(highlight)
-						wattrset(wLst, COLOR_PAIR(5) | A_REVERSE);
-					else
-						wattrset(wLst, COLOR_PAIR(5) | A_BOLD);
-					mvwaddch(wLst, line, 2, '+');
-				} else if (flag->globalMasked) {
-					if(highlight)
-						wattrset(wLst, COLOR_PAIR(4) | A_REVERSE);
-					else
-						wattrset(wLst, COLOR_PAIR(4) | A_BOLD);
-					mvwaddch(wLst, line, 2, '-');
-				} else if (' ' == flag->stateConf)
-					mvwaddch(wLst, line, 2, flag->stateDefault);
-				else
-					mvwaddch(wLst, line, 2, flag->stateConf);
-			}
+		// At this point buf is guaranteed to be filled up to minwidth + 8
+
+		// For normal descriptions, pos and length are already set, but
+		// not so for wrapped lines, these must be set for each line:
+		if (eWrap_wrap == e_wrap) {
+			setFlagWrapDraw(flag, idx, &wrapPart, &pos, &length, &wrapFirst);
+			wrapPart = wrapPart->next;
+		}
 
-			// Add [D]efault column content
-			if ('f' == special) {
+		// The right side of buf can be added now:
+		sprintf(buf + minwidth + (newDesc ? 8 : 10), "%-*.*s",
+			(int)length, (int)length,
+			strlen(desc) > pos ? &desc[pos] : "");
+		// Note: Follow up lines of wrapped descriptions are indented by 2
+
+		/* Set correct color set according to highlighting and status*/
+		if(highlight)
+			wattrset(wLst, COLOR_PAIR(3) | A_BOLD | A_REVERSE);
+		else
+			wattrset(wLst, COLOR_PAIR(3));
+
+		// Put the line on the screen
+		mvwaddstr(wLst, line, 0, buf);
+		mvwaddch(wLst, line, minwidth,     ACS_VLINE); // Before state
+		mvwaddch(wLst, line, minwidth + 4, ACS_VLINE); // Between state and scope
+		mvwaddch(wLst, line, minwidth + 7, ACS_VLINE); // After scope
+
+		// Add (default) selection if this is the header line
+		if (!hasHead) {
+			hasHead = true;
+			if (flag->globalForced) {
 				if(highlight)
 					wattrset(wLst, COLOR_PAIR(5) | A_REVERSE);
 				else
 					wattrset(wLst, COLOR_PAIR(5) | A_BOLD);
-				mvwaddch(wLst, line, minwidth + 1, special);
-			} else if ('m' == special) {
+				mvwaddch(wLst, line, 2, '+');
+			} else if (flag->globalMasked) {
 				if(highlight)
 					wattrset(wLst, COLOR_PAIR(4) | A_REVERSE);
 				else
 					wattrset(wLst, COLOR_PAIR(4) | A_BOLD);
-				mvwaddch(wLst, line, minwidth + 1, special);
-			} else {
-				if (' ' == flag->desc[idx].stateDefault)
-					mvwaddch(wLst, line, minwidth + 1, flag->stateDefault);
-				else
-					mvwaddch(wLst, line, minwidth + 1, flag->desc[idx].stateDefault);
-			}
+				mvwaddch(wLst, line, 2, '-');
+			} else if (' ' == flag->stateConf)
+				mvwaddch(wLst, line, 2, flag->stateDefault);
+			else
+				mvwaddch(wLst, line, 2, flag->stateConf);
+		}
 
-			++line;
-			++usedY;
-			if (NULL == wrapPart)
-				++idx;
-		} // End of looping descriptions while there are lines left
-	} else {
-		memset(buf+minwidth, ' ', wWidth(List)-minwidth);
-		buf[wWidth(List)] = '\0';
-		waddstr(win(List), buf);
-	}
+		// Add [D]efault column content
+		if ('f' == special) {
+			if(highlight)
+				wattrset(wLst, COLOR_PAIR(5) | A_REVERSE);
+			else
+				wattrset(wLst, COLOR_PAIR(5) | A_BOLD);
+			mvwaddch(wLst, line, minwidth + 1, special);
+		} else if ('m' == special) {
+			if(highlight)
+				wattrset(wLst, COLOR_PAIR(4) | A_REVERSE);
+			else
+				wattrset(wLst, COLOR_PAIR(4) | A_BOLD);
+			mvwaddch(wLst, line, minwidth + 1, special);
+		} else {
+			if (' ' == flag->desc[idx].stateDefault)
+				mvwaddch(wLst, line, minwidth + 1, flag->stateDefault);
+			else
+				mvwaddch(wLst, line, minwidth + 1, flag->desc[idx].stateDefault);
+		}
+
+		// Advance counters and possibly description index
+		++line;
+		++usedY;
+		if (NULL == wrapPart)
+			++idx;
+	} // end of looping flag descriptions
 
 	if(highlight)
 		wmove(win(List), max(flag->currline, 0), 2);
@@ -737,6 +669,104 @@ static int findFlagStart(sFlag* flag, int* index, sWrap** wrap, int* line, bool*
 	return usedLines;
 }
 
+static void free_flags(void)
+{
+	sFlag* flag = flags->prev;
+
+	// Clear all flags
+	while (flags) {
+		if (flag)
+			destroyFlag(&flags, &flag);
+		else
+			destroyFlag(&flags, &flags);
+		flag = flags ? flags->prev ? flags->prev : flags : NULL;
+	}
+
+	// Clear line buffer
+	if (lineBuf)
+		free(lineBuf);
+}
+
+static char getFlagSpecialChar(sFlag* flag, int index)
+{
+	// Return special character if needed:
+	if (isDescForced(flag, index))
+		return 'f';
+	else if (isDescMasked(flag, index))
+		return 'm';
+	return ' ';
+}
+
+
+static void printFlagInfo(char* buf, sFlag* flag, int index, bool printFlagName, bool printFlagState)
+{
+	if (printFlagName)
+		sprintf(buf, " %c%c%c %s%s%s%-*s ",
+			/* State of selection */
+			flag->stateConf == ' ' ? '(' : '[',
+			' ', // Filled in later
+			flag->stateConf == ' ' ? ')' : ']',
+			/* name */
+			flag->globalForced ? "(" : flag->globalMasked ? "(-" : "",
+			flag->name,
+			(flag->globalForced || flag->globalMasked) ? ")" : "",
+			/* distance */
+			(int)(minwidth
+				- (flag->globalForced ? 3 : flag->globalMasked ? 2 : 5)
+				- strlen(flag->name)), " ");
+
+	if (printFlagState)
+		/* Display flag state
+		 * The order in which the states are to be displayed is:
+		 * 1. [D]efaults (make.defaults, IUSE, package.mask, package.force)
+		 *    Note: Filled in later
+		 * 2. [P]rofile package.use files
+		 * 3. [C]onfiguration (make.conf, users package.use)
+		 * 4. global/local
+		 * 5. installed/not installed
+		 */
+		sprintf(buf + minwidth, "  %c%c %c%c ",
+			flag->desc[index].statePackage,
+			' ' == flag->desc[index].statePkgUse ?
+				flag->stateConf : flag->desc[index].statePkgUse,
+			flag->desc[index].isGlobal ? ' ' : 'L',
+			flag->desc[index].isInstalled ? 'i' : ' ');
+}
+
+static void setFlagWrapDraw(sFlag* flag, int index, sWrap** wrap, size_t* pos, size_t* len, bool* isFirstWrap)
+{
+	sWrap* wrapPart = *wrap;
+
+	if (NULL == wrapPart) {
+		wrapPart     = flag->desc[index].wrap;
+		*isFirstWrap = true;
+	} else if (*isFirstWrap
+			&& (flag->desc[index].wrap != wrapPart)
+			&& !wrapPart->pos)
+		*isFirstWrap = false;
+
+	// Position and length can be written back already
+	*pos = wrapPart->pos;
+	*len = wrapPart->len;
+
+	// If this was switched, add the first length
+	if ((false == *isFirstWrap) && (0 == *pos)) {
+		// Add the length of either the package list or the
+		// description (stripped or normal) or drawFlag will
+		// end up reprinting from the beginning due to the
+		// unified description string.
+		if (eOrder_left == e_order)
+			*pos += sizeof(flag->desc[index].pkg);
+		else
+			*pos += eDesc_ori == e_desc
+				  ? sizeof(flag->desc[index].desc)
+				  : sizeof(flag->desc[index].desc_alt);
+	}
+
+	// Write back wrap part pointer
+	*wrap = wrapPart;
+}
+
 
 int main(void)
 {


             reply	other threads:[~2013-09-20  8:30 UTC|newest]

Thread overview: 238+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-20  8:30 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-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-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=1379526278.4b8cd2970af58ba9043c1291312df8fc0d71454d.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