svn commit: trunk/busybox/editors

landley at busybox.net landley at busybox.net
Tue Feb 14 16:05:34 UTC 2006


Author: landley
Date: 2006-02-14 08:05:32 -0800 (Tue, 14 Feb 2006)
New Revision: 14013

Log:
Patch from awk maintainer (Dmitry Zakhrov) to fix bugs 642, 663, and 667.


Modified:
   trunk/busybox/editors/awk.c


Changeset:
Modified: trunk/busybox/editors/awk.c
===================================================================
--- trunk/busybox/editors/awk.c	2006-02-14 10:43:40 UTC (rev 14012)
+++ trunk/busybox/editors/awk.c	2006-02-14 16:05:32 UTC (rev 14013)
@@ -948,7 +948,7 @@
 				*(p-1) = '\0';
 				tc = TC_VARIABLE;
 				/* also consume whitespace between functionname and bracket */
-				skip_spaces(&p);
+				if (! (expected & TC_VARIABLE)) skip_spaces(&p);
 				if (*p == '(') {
 					tc = TC_FUNCTION;
 				} else {
@@ -1656,6 +1656,7 @@
 				}
 			} else if (c != '\0') {
 				s = strchr(b+pp, c);
+				if (! s) s = memchr(b+pp, '\0', p - pp);
 				if (s) {
 					so = eo = s-b;
 					eo++;
@@ -2614,7 +2615,7 @@
 extern int awk_main(int argc, char **argv)
 {
 	char *s, *s1;
-	int i, j, c;
+	int i, j, c, flen;
 	var *v;
 	static var tv;
 	char **envp;
@@ -2682,9 +2683,16 @@
 				F = afopen(programname = optarg, "r");
 				s = NULL;
 				/* one byte is reserved for some trick in next_token */
-				for (i=j=1; j>0; i+=j) {
-					s = (char *)xrealloc(s, i+4096);
-					j = fread(s+i, 1, 4094, F);
+				if (fseek(F, 0, SEEK_END) == 0) {
+					flen = ftell(F);
+					s = (char *)xmalloc(flen+4);
+					fseek(F, 0, SEEK_SET);
+					i = 1 + fread(s+1, 1, flen, F);
+				} else {
+					for (i=j=1; j>0; i+=j) {
+						s = (char *)xrealloc(s, i+4096);
+						j = fread(s+i, 1, 4094, F);
+					}
 				}
 				s[i] = '\0';
 				fclose(F);




More information about the busybox-cvs mailing list