geadline2 #5
| @ -1,15 +1,32 @@ | |||||||
| geadline(prompt) { | geadline2(prompt, text) | ||||||
|  | { | ||||||
| 	local capacity = 64, | 	local capacity = 64, | ||||||
| 	      size = 0, | 	      size = 0, | ||||||
| 	      i = 0, | 	      i = 0, | ||||||
| 	      c, | 	      c, | ||||||
| 	      a, | 	      a, | ||||||
| 	      buf = galloc(capacity); | 	      buf; | ||||||
|  | 	if (text) { | ||||||
|  | 		size = strlen(text); | ||||||
|  | 		i = size; | ||||||
|  | 		loop { | ||||||
|  | 			if (capacity > size) | ||||||
|  | 				break; | ||||||
|  | 			capacity = capacity * 2; | ||||||
|  | 		} | ||||||
|  | 		buf = galloc(capacity); | ||||||
|  | 		if (buf == NULL) | ||||||
|  | 			return NULL; | ||||||
|  | 		strcpy(buf, text); | ||||||
|  | 	} else { | ||||||
|  | 		buf = galloc(capacity); | ||||||
|  | 		if (buf == NULL) | ||||||
|  | 			return NULL; | ||||||
|  | 		[buf] = 0; | ||||||
|  | 	} | ||||||
| 	if (prompt) | 	if (prompt) | ||||||
| 		putstr(prompt); | 		putstr(prompt); | ||||||
| 	if (buf == NULL) | 	putstr(buf); | ||||||
| 		return NULL; |  | ||||||
| 	[buf] = 0; |  | ||||||
|  |  | ||||||
| 	loop { | 	loop { | ||||||
| 		c = getchar(); | 		c = getchar(); | ||||||
| @ -104,7 +121,13 @@ geadline(prompt) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| esccode(c) { | geadline(prompt) | ||||||
|  | { | ||||||
|  | 	geadline2(prompt, NULL); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | esccode(c) | ||||||
|  | { | ||||||
| 	wrt 0x1b; | 	wrt 0x1b; | ||||||
| 	wrt '['; | 	wrt '['; | ||||||
| 	wrt c; | 	wrt c; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user