[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