[ekg2-commit] r4019 - trunk/ekg: trunk/ekg/dynstuff.c

SVN commit svn w toxygen.net
Pią, 20 Cze 2008, 17:29:16 CEST


Author: darkjames
Date: 2008-06-20 17:29:16 +0200 (Fri, 20 Jun 2008)
New Revision: 4019

Modified:
   trunk/ekg/dynstuff.c
Log:
cleanup array_make()



Modified: trunk/ekg/dynstuff.c
===================================================================
--- trunk/ekg/dynstuff.c	2008-06-20 15:19:16 UTC (rev 4018)
+++ trunk/ekg/dynstuff.c	2008-06-20 15:29:16 UTC (rev 4019)
@@ -907,6 +907,7 @@
 
 		if (quotes && (*p == '\'' || *p == '\"')) {
 			char sep = *p;
+			char *r;
 
 			for (q = p + 1, len = 0; *q; q++, len++) {
 				if (*q == '\\') {
@@ -922,46 +923,41 @@
 
                         len++;
 
-			if ((token = xcalloc(1, len + 1))) {
-				char *r = token;
-			
-				for (q = p + 1; *q; q++, r++) {
-					if (*q == '\\') {
-						q++;
-						
-						if (!*q)
-							break;
-						
-						switch (*q) {
-							case 'n':
-								*r = '\n';
-								break;
-							case 'r':
-								*r = '\r';
-								break;
-							case 't':
-								*r = '\t';
-								break;
-							default:
-								*r = *q;
-						}
-					} else if (*q == sep) {
+			r = token = xmalloc(len + 1);
+			for (q = p + 1; *q; q++, r++) {
+				if (*q == '\\') {
+					q++;
+
+					if (!*q)
 						break;
-					} else 
-						*r = *q;
-				}
-				
-				*r = 0;
+
+					switch (*q) {
+						case 'n':
+							*r = '\n';
+							break;
+						case 'r':
+							*r = '\r';
+							break;
+						case 't':
+							*r = '\t';
+							break;
+						default:
+							*r = *q;
+					}
+				} else if (*q == sep) {
+					break;
+				} else 
+					*r = *q;
 			}
+
+			*r = 0;
 			
 			p = (*q) ? q + 1 : q;
 
 		} else {
 way2:
 			for (q = p, len = 0; *q && (last || !xstrchr(sep, *q)); q++, len++);
-			token = xcalloc(1, len + 1);
-			xstrncpy(token, p, len);
-			token[len] = 0;
+			token = xstrndup(p, len);
 			p = q;
 		}
 		



Więcej informacji o liście dyskusyjnej ekg2-commit