git: 9front

Download patch

ref: a92813cb71bc51ce91f5ee0953161fc1b65e065f
parent: 49e569f7f8e35c2e9ab3c714ed2c43e32c8cb592
author: spew <devnull@localhost>
date: Thu Aug 18 04:52:58 EDT 2016

fix awk format printing bugs (thanks aiju)

--- a/sys/src/cmd/awk/run.c
+++ b/sys/src/cmd/awk/run.c
@@ -895,18 +895,21 @@
 		case 'd': case 'i':
 			flag = 2;
 			if(*(s-1) == 'l') break;
-			*(t-1) = 'l';
+			t[-1] = 'l';
 			*t = 'd';
 			*++t = '\0';
 			break;
 		case 'u':
 			flag = *(s-1) == 'l' ? 2 : 3;
-			*t++ = 'u';
+			t[-1] = 'u';
 			*t++ = 'd';
 			*t = '\0';
 			break;				
 		case 'o': case 'x': case 'X':
 			flag = *(s-1) == 'l' ? 2 : 3;
+			t[-1] = 'u';
+			*t++ = *s;
+			*t = '\0';
 			break;
 		case 's':
 			flag = 4;
@@ -939,7 +942,7 @@
 			break;
 		case 1:	sprint(p, fmt, getfval(x)); break;
 		case 2:	sprint(p, fmt, (long) getfval(x)); break;
-		case 3:	sprint(p, fmt, (int) getfval(x)); break;
+		case 3: sprint(p, fmt, (int) getfval(x)); break;
 		case 4:
 			t = getsval(x);
 			n = strlen(t);
--