solve the issue (although not quite how I’d like it)
This commit is contained in:
		
							
								
								
									
										93
									
								
								check.t
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								check.t
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| # $MirOS: src/bin/mksh/check.t,v 1.178 2008/04/19 22:15:01 tg Exp $ | # $MirOS: src/bin/mksh/check.t,v 1.179 2008/04/19 23:49:58 tg Exp $ | ||||||
| # $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $ | # $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $ | ||||||
| # $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $ | # $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $ | ||||||
| # $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $ | # $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $ | ||||||
| @@ -4722,7 +4722,14 @@ name: integer-base-one-3a | |||||||
| description: | description: | ||||||
| 	some sample code for hexdumping | 	some sample code for hexdumping | ||||||
| stdin: | stdin: | ||||||
| 	print 'Hello, World!\\\nこんにちは!' | { | 	{ | ||||||
|  | 		print 'Hello, World!\\\nこんにちは!' | ||||||
|  | 		typeset -Uui16 i=0x100 | ||||||
|  | 		while (( i++ < 0x1FF )); do | ||||||
|  | 			print -n "\x${i#16#1}" | ||||||
|  | 		done | ||||||
|  | 		print | ||||||
|  | 	} | { | ||||||
| 		typeset -Uui16 -Z11 pos=0 | 		typeset -Uui16 -Z11 pos=0 | ||||||
| 		typeset -Uui16 -Z5 hv | 		typeset -Uui16 -Z5 hv | ||||||
| 		typeset -i1 wc=0x0A | 		typeset -i1 wc=0x0A | ||||||
| @@ -4758,16 +4765,37 @@ stdin: | |||||||
| expected-stdout: | expected-stdout: | ||||||
| 	00000000  48 65 6C 6C 6F 2C 20 57 - 6F 72 6C 64 21 5C 0A E3  |Hello, World!\..| | 	00000000  48 65 6C 6C 6F 2C 20 57 - 6F 72 6C 64 21 5C 0A E3  |Hello, World!\..| | ||||||
| 	00000010  81 93 E3 82 93 E3 81 AB - E3 81 A1 E3 81 AF EF BC  |................| | 	00000010  81 93 E3 82 93 E3 81 AB - E3 81 A1 E3 81 AF EF BC  |................| | ||||||
| 	00000020  81 0A                   -                          |..| | 	00000020  81 0A 01 02 03 04 05 06 - 07 08 09 0A 0B 0C 0D 0E  |................| | ||||||
|  | 	00000030  0F 10 11 12 13 14 15 16 - 17 18 19 1A 1B 1C 1D 1E  |................| | ||||||
|  | 	00000040  1F 20 21 22 23 24 25 26 - 27 28 29 2A 2B 2C 2D 2E  |. !"#$%&'()*+,-.| | ||||||
|  | 	00000050  2F 30 31 32 33 34 35 36 - 37 38 39 3A 3B 3C 3D 3E  |/0123456789:;<=>| | ||||||
|  | 	00000060  3F 40 41 42 43 44 45 46 - 47 48 49 4A 4B 4C 4D 4E  |?@ABCDEFGHIJKLMN| | ||||||
|  | 	00000070  4F 50 51 52 53 54 55 56 - 57 58 59 5A 5B 5C 5D 5E  |OPQRSTUVWXYZ[\]^| | ||||||
|  | 	00000080  5F 60 61 62 63 64 65 66 - 67 68 69 6A 6B 6C 6D 6E  |_`abcdefghijklmn| | ||||||
|  | 	00000090  6F 70 71 72 73 74 75 76 - 77 78 79 7A 7B 7C 7D 7E  |opqrstuvwxyz{|}~| | ||||||
|  | 	000000A0  7F 80 81 82 83 84 85 86 - 87 88 89 8A 8B 8C 8D 8E  |................| | ||||||
|  | 	000000B0  8F 90 91 92 93 94 95 96 - 97 98 99 9A 9B 9C 9D 9E  |................| | ||||||
|  | 	000000C0  9F A0 A1 A2 A3 A4 A5 A6 - A7 A8 A9 AA AB AC AD AE  |................| | ||||||
|  | 	000000D0  AF B0 B1 B2 B3 B4 B5 B6 - B7 B8 B9 BA BB BC BD BE  |................| | ||||||
|  | 	000000E0  BF C0 C1 C2 C3 C4 C5 C6 - C7 C8 C9 CA CB CC CD CE  |................| | ||||||
|  | 	000000F0  CF D0 D1 D2 D3 D4 D5 D6 - D7 D8 D9 DA DB DC DD DE  |................| | ||||||
|  | 	00000100  DF E0 E1 E2 E3 E4 E5 E6 - E7 E8 E9 EA EB EC ED EE  |................| | ||||||
|  | 	00000110  EF F0 F1 F2 F3 F4 F5 F6 - F7 F8 F9 FA FB FC FD FE  |................| | ||||||
|  | 	00000120  FF 0A                   -                          |..| | ||||||
| --- | --- | ||||||
| name: integer-base-one-3b | name: integer-base-one-3b | ||||||
| description: | description: | ||||||
| 	some sample code for hexdumping Unicode | 	some sample code for hexdumping Unicode | ||||||
| 	as of now, doesn't work because illicit assignments break |  | ||||||
| expected-fail: yes |  | ||||||
| stdin: | stdin: | ||||||
| 	set -o utf8-hack | 	set -o utf8-hack | ||||||
| 	print 'Hello, World!\\\nこんにちは!' | { | 	{ | ||||||
|  | 		print 'Hello, World!\\\nこんにちは!' | ||||||
|  | 		typeset -Uui16 i=0x100 | ||||||
|  | 		while (( i++ < 0x1FF )); do | ||||||
|  | 			print -n "\u${i#16#1}" | ||||||
|  | 		done | ||||||
|  | 		print | ||||||
|  | 	} | { | ||||||
| 		typeset -Uui16 -Z11 pos=0 | 		typeset -Uui16 -Z11 pos=0 | ||||||
| 		typeset -Uui16 -Z5 hv | 		typeset -Uui16 -Z5 hv | ||||||
| 		typeset -i1 wc=0x0A | 		typeset -i1 wc=0x0A | ||||||
| @@ -4777,19 +4805,23 @@ stdin: | |||||||
| 		while IFS= read -r line; do | 		while IFS= read -r line; do | ||||||
| 			line=$line$nl | 			line=$line$nl | ||||||
| 			while [[ -n $line ]]; do | 			while [[ -n $line ]]; do | ||||||
| 				if (( ${#line} > 2 )) && wc=1#${line::3}; then | 				if (( ${#line} > 2 )) && let wc="1#${line::3}"; then | ||||||
| 					n=3 | 					n=3 | ||||||
| 				elif (( ${#line} > 1 )) && wc=1#${line::2}; then | 				elif (( ${#line} > 1 )) && let wc="1#${line::2}"; then | ||||||
| 					n=2 | 					n=2 | ||||||
| 				else | 				else | ||||||
| 					wc=1#${line::1} | 					wc=1#${line::1} | ||||||
| 					n=3 | 					n=1 | ||||||
| 				fi | 				fi | ||||||
| 				if (( (wc < 32) || \ | 				if (( (wc < 32) || \ | ||||||
| 				    ((wc > 126) && (wc < 160)) )); then | 				    ((wc > 126) && (wc < 160)) )); then | ||||||
| 					dasc=$dasc. | 					dch=. | ||||||
| 				elif (( wc < 0x0800 )); then | 				else | ||||||
| 					dasc=$dasc${wc#1#} | 					dch=${wc#1#} | ||||||
|  | 				fi | ||||||
|  | 				if (( (pos & 15) >= (n == 3 ? 14 : 15) )); then | ||||||
|  | 					dasc=$dasc$dch | ||||||
|  | 					dch= | ||||||
| 				fi | 				fi | ||||||
| 				while (( n-- )); do | 				while (( n-- )); do | ||||||
| 					if (( (pos & 15) == 0 )); then | 					if (( (pos & 15) == 0 )); then | ||||||
| @@ -4799,22 +4831,47 @@ stdin: | |||||||
| 					fi | 					fi | ||||||
| 					hv=1#${line::1} | 					hv=1#${line::1} | ||||||
| 					print -n "${hv#16#} " | 					print -n "${hv#16#} " | ||||||
| 					(( (pos++ & 15) == 7 )) && print -- '- ' | 					(( (pos++ & 15) == 7 )) && \ | ||||||
|  | 					    print -n -- '- ' | ||||||
| 					line=${line:1} | 					line=${line:1} | ||||||
| 				done | 				done | ||||||
| 				(( wc >= 0x0800 )) && dasc=$dasc${wc#1#} | 				dasc=$dasc$dch | ||||||
| 			done | 			done | ||||||
| 		done | 		done | ||||||
| 		if (( pos & 15 )); then | 		if (( pos & 15 )); then | ||||||
| 			while (( pos & 15 )); do | 			while (( pos & 15 )); do | ||||||
| 				print -n '   ' | 				print -n '   ' | ||||||
| 				(( (pos++ & 15) == 7 )) && print -- '- ' | 				(( (pos++ & 15) == 7 )) && print -n -- '- ' | ||||||
| 			done | 			done | ||||||
| 			print "$dasc|" | 			print "$dasc|" | ||||||
| 		fi | 		fi | ||||||
| 	} | 	} | ||||||
| expected-stdout: | expected-stdout: | ||||||
| 	00000000  48 65 6C 6C 6F 2C 20 57 - 6F 72 6C 64 21 5C 0A E3  |Hello, World!\.| | 	00000000  48 65 6C 6C 6F 2C 20 57 - 6F 72 6C 64 21 5C 0A E3  |Hello, World!\.こ| | ||||||
| 	00000010  81 93 E3 82 93 E3 81 AB - E3 81 A1 E3 81 AF EF BC  |こんにちは| | 	00000010  81 93 E3 82 93 E3 81 AB - E3 81 A1 E3 81 AF EF BC  |んにちは!| | ||||||
| 	00000020  81 0A                   -                          |!.| | 	00000020  81 0A 01 02 03 04 05 06 - 07 08 09 0A 0B 0C 0D 0E  |...............| | ||||||
|  | 	00000030  0F 10 11 12 13 14 15 16 - 17 18 19 1A 1B 1C 1D 1E  |................| | ||||||
|  | 	00000040  1F 20 21 22 23 24 25 26 - 27 28 29 2A 2B 2C 2D 2E  |. !"#$%&'()*+,-.| | ||||||
|  | 	00000050  2F 30 31 32 33 34 35 36 - 37 38 39 3A 3B 3C 3D 3E  |/0123456789:;<=>| | ||||||
|  | 	00000060  3F 40 41 42 43 44 45 46 - 47 48 49 4A 4B 4C 4D 4E  |?@ABCDEFGHIJKLMN| | ||||||
|  | 	00000070  4F 50 51 52 53 54 55 56 - 57 58 59 5A 5B 5C 5D 5E  |OPQRSTUVWXYZ[\]^| | ||||||
|  | 	00000080  5F 60 61 62 63 64 65 66 - 67 68 69 6A 6B 6C 6D 6E  |_`abcdefghijklmn| | ||||||
|  | 	00000090  6F 70 71 72 73 74 75 76 - 77 78 79 7A 7B 7C 7D 7E  |opqrstuvwxyz{|}~| | ||||||
|  | 	000000A0  7F C2 80 C2 81 C2 82 C2 - 83 C2 84 C2 85 C2 86 C2  |.........| | ||||||
|  | 	000000B0  87 C2 88 C2 89 C2 8A C2 - 8B C2 8C C2 8D C2 8E C2  |........| | ||||||
|  | 	000000C0  8F C2 90 C2 91 C2 92 C2 - 93 C2 94 C2 95 C2 96 C2  |........| | ||||||
|  | 	000000D0  97 C2 98 C2 99 C2 9A C2 - 9B C2 9C C2 9D C2 9E C2  |........| | ||||||
|  | 	000000E0  9F C2 A0 C2 A1 C2 A2 C2 - A3 C2 A4 C2 A5 C2 A6 C2  | ¡¢£¤¥¦§| | ||||||
|  | 	000000F0  A7 C2 A8 C2 A9 C2 AA C2 - AB C2 AC C2 AD C2 AE C2  |¨©ª«¬®¯| | ||||||
|  | 	00000100  AF C2 B0 C2 B1 C2 B2 C2 - B3 C2 B4 C2 B5 C2 B6 C2  |°±²³´µ¶·| | ||||||
|  | 	00000110  B7 C2 B8 C2 B9 C2 BA C2 - BB C2 BC C2 BD C2 BE C2  |¸¹º»¼½¾¿| | ||||||
|  | 	00000120  BF C3 80 C3 81 C3 82 C3 - 83 C3 84 C3 85 C3 86 C3  |ÀÁÂÃÄÅÆÇ| | ||||||
|  | 	00000130  87 C3 88 C3 89 C3 8A C3 - 8B C3 8C C3 8D C3 8E C3  |ÈÉÊËÌÍÎÏ| | ||||||
|  | 	00000140  8F C3 90 C3 91 C3 92 C3 - 93 C3 94 C3 95 C3 96 C3  |ÐÑÒÓÔÕÖ×| | ||||||
|  | 	00000150  97 C3 98 C3 99 C3 9A C3 - 9B C3 9C C3 9D C3 9E C3  |ØÙÚÛÜÝÞß| | ||||||
|  | 	00000160  9F C3 A0 C3 A1 C3 A2 C3 - A3 C3 A4 C3 A5 C3 A6 C3  |àáâãäåæç| | ||||||
|  | 	00000170  A7 C3 A8 C3 A9 C3 AA C3 - AB C3 AC C3 AD C3 AE C3  |èéêëìíîï| | ||||||
|  | 	00000180  AF C3 B0 C3 B1 C3 B2 C3 - B3 C3 B4 C3 B5 C3 B6 C3  |ðñòóôõö÷| | ||||||
|  | 	00000190  B7 C3 B8 C3 B9 C3 BA C3 - BB C3 BC C3 BD C3 BE C3  |øùúûüýþÿ| | ||||||
|  | 	000001A0  BF 0A                   -                          |.| | ||||||
| --- | --- | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								expr.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								expr.c
									
									
									
									
									
								
							| @@ -2,7 +2,7 @@ | |||||||
|  |  | ||||||
| #include "sh.h" | #include "sh.h" | ||||||
|  |  | ||||||
| __RCSID("$MirOS: src/bin/mksh/expr.c,v 1.15 2008/04/19 22:15:02 tg Exp $"); | __RCSID("$MirOS: src/bin/mksh/expr.c,v 1.16 2008/04/19 23:49:58 tg Exp $"); | ||||||
|  |  | ||||||
| /* The order of these enums is constrained by the order of opinfo[] */ | /* The order of these enums is constrained by the order of opinfo[] */ | ||||||
| enum token { | enum token { | ||||||
| @@ -478,6 +478,11 @@ exprtoken(Expr_state *es) | |||||||
| 	} else if (c == '1' && cp[1] == '#') { | 	} else if (c == '1' && cp[1] == '#') { | ||||||
| 		utf_cptradj(cp + 2, &cp); | 		utf_cptradj(cp + 2, &cp); | ||||||
| 		tvar = str_nsave(es->tokp, cp - es->tokp, ATEMP); | 		tvar = str_nsave(es->tokp, cp - es->tokp, ATEMP); | ||||||
|  | 		if (*cp) { | ||||||
|  | 			*tvar = '\0';	/* produce an artificial error */ | ||||||
|  | 			while (*cp)	/* and skip until end of expr */ | ||||||
|  | 				++cp; | ||||||
|  | 		} | ||||||
| 		goto process_tvar; | 		goto process_tvar; | ||||||
| 	} else if (ksh_isdigit(c)) { | 	} else if (ksh_isdigit(c)) { | ||||||
| 		while (c != '_' && (ksh_isalnux(c) || c == '#')) | 		while (c != '_' && (ksh_isalnux(c) || c == '#')) | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								mksh.1
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								mksh.1
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| .\" $MirOS: src/bin/mksh/mksh.1,v 1.118 2008/04/19 22:15:04 tg Exp $ | .\" $MirOS: src/bin/mksh/mksh.1,v 1.119 2008/04/19 23:49:59 tg Exp $ | ||||||
| .\" $OpenBSD: ksh.1,v 1.121 2008/03/21 12:51:19 millert Exp $ | .\" $OpenBSD: ksh.1,v 1.121 2008/03/21 12:51:19 millert Exp $ | ||||||
| .\"- | .\"- | ||||||
| .\" Try to make GNU groff and AT&T nroff more compatible | .\" Try to make GNU groff and AT&T nroff more compatible | ||||||
| @@ -2118,6 +2118,7 @@ transparent) ASCII or Unicode codepoints, depending on the shell's | |||||||
| flag (current setting). | flag (current setting). | ||||||
| In Unicode mode, raw octets are mapped into the range EF80..EFFF, | In Unicode mode, raw octets are mapped into the range EF80..EFFF, | ||||||
| which is in the PUA and has been assigned by CSUR for this use. | which is in the PUA and has been assigned by CSUR for this use. | ||||||
|  | Base 1 integers can only be the last part of an assignment. | ||||||
| .Pp | .Pp | ||||||
| The operators are evaluated as follows: | The operators are evaluated as follows: | ||||||
| .Bl -tag -width Ds -offset indent | .Bl -tag -width Ds -offset indent | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user