Merge remote-tracking branch 'mksh/master'
Conflicts: Makefile edit.c eval.c exec.c main.c misc.c sh.h var.c
This commit is contained in:
67
expr.c
67
expr.c
@ -23,7 +23,7 @@
|
||||
|
||||
#include "sh.h"
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/expr.c,v 1.88 2016/07/27 00:55:27 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/expr.c,v 1.90 2016/11/07 16:58:48 tg Exp $");
|
||||
|
||||
#define EXPRTOK_DEFNS
|
||||
#include "exprtok.h"
|
||||
@ -326,7 +326,15 @@ evalexpr(Expr_state *es, unsigned int prec)
|
||||
vl = evalexpr(es, prec - 1);
|
||||
while ((int)(op = es->tok) >= (int)O_EQ && (int)op <= (int)O_COMMA &&
|
||||
opprec[(int)op] == prec) {
|
||||
exprtoken(es);
|
||||
switch ((int)op) {
|
||||
case O_TERN:
|
||||
case O_LAND:
|
||||
case O_LOR:
|
||||
break;
|
||||
default:
|
||||
exprtoken(es);
|
||||
}
|
||||
|
||||
vasn = vl;
|
||||
if (op != O_ASN)
|
||||
/* vl may not have a value yet */
|
||||
@ -340,14 +348,15 @@ evalexpr(Expr_state *es, unsigned int prec)
|
||||
|
||||
if (!ev)
|
||||
es->noassign++;
|
||||
exprtoken(es);
|
||||
vl = evalexpr(es, MAX_PREC);
|
||||
if (!ev)
|
||||
es->noassign--;
|
||||
if (es->tok != CTERN)
|
||||
evalerr(es, ET_STR, "missing :");
|
||||
exprtoken(es);
|
||||
if (ev)
|
||||
es->noassign++;
|
||||
exprtoken(es);
|
||||
vr = evalexpr(es, P_TERN);
|
||||
if (ev)
|
||||
es->noassign--;
|
||||
@ -502,6 +511,7 @@ evalexpr(Expr_state *es, unsigned int prec)
|
||||
case O_LAND:
|
||||
if (!t1)
|
||||
es->noassign++;
|
||||
exprtoken(es);
|
||||
vr = intvar(es, evalexpr(es, prec - 1));
|
||||
res = t1 && vr->val.u;
|
||||
if (!t1)
|
||||
@ -510,6 +520,7 @@ evalexpr(Expr_state *es, unsigned int prec)
|
||||
case O_LOR:
|
||||
if (t1)
|
||||
es->noassign++;
|
||||
exprtoken(es);
|
||||
vr = intvar(es, evalexpr(es, prec - 1));
|
||||
res = t1 || vr->val.u;
|
||||
if (t1)
|
||||
@ -861,7 +872,7 @@ ksh_access(const char *fn, int mode)
|
||||
}
|
||||
|
||||
#ifndef MIRBSD_BOOTFLOPPY
|
||||
/* From: X11/xc/programs/xterm/wcwidth.c,v 1.8 2014/06/24 19:53:53 tg Exp $ */
|
||||
/* From: X11/xc/programs/xterm/wcwidth.c,v 1.9 */
|
||||
|
||||
struct mb_ucsrange {
|
||||
unsigned short beg;
|
||||
@ -872,8 +883,8 @@ static int mb_ucsbsearch(const struct mb_ucsrange arr[], size_t elems,
|
||||
unsigned int val) MKSH_A_PURE;
|
||||
|
||||
/*
|
||||
* Generated by MirOS: contrib/code/Snippets/eawparse,v 1.2 2013/11/30 13:45:17 tg Exp $
|
||||
* from the Unicode Character Database, Version 7.0.0
|
||||
* Generated from the Unicode Character Database, Version 9.0.0, by
|
||||
* MirOS: contrib/code/Snippets/eawparse,v 1.3 2014/11/16 12:16:24 tg Exp $
|
||||
*/
|
||||
|
||||
static const struct mb_ucsrange mb_ucs_combining[] = {
|
||||
@ -903,7 +914,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
|
||||
{ 0x0825, 0x0827 },
|
||||
{ 0x0829, 0x082D },
|
||||
{ 0x0859, 0x085B },
|
||||
{ 0x08E4, 0x0902 },
|
||||
{ 0x08D4, 0x0902 },
|
||||
{ 0x093A, 0x093A },
|
||||
{ 0x093C, 0x093C },
|
||||
{ 0x0941, 0x0948 },
|
||||
@ -998,6 +1009,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
|
||||
{ 0x17C9, 0x17D3 },
|
||||
{ 0x17DD, 0x17DD },
|
||||
{ 0x180B, 0x180E },
|
||||
{ 0x1885, 0x1886 },
|
||||
{ 0x18A9, 0x18A9 },
|
||||
{ 0x1920, 0x1922 },
|
||||
{ 0x1927, 0x1928 },
|
||||
@ -1036,7 +1048,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
|
||||
{ 0x1CF4, 0x1CF4 },
|
||||
{ 0x1CF8, 0x1CF9 },
|
||||
{ 0x1DC0, 0x1DF5 },
|
||||
{ 0x1DFC, 0x1DFF },
|
||||
{ 0x1DFB, 0x1DFF },
|
||||
{ 0x200B, 0x200F },
|
||||
{ 0x202A, 0x202E },
|
||||
{ 0x2060, 0x2064 },
|
||||
@ -1049,13 +1061,13 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
|
||||
{ 0x3099, 0x309A },
|
||||
{ 0xA66F, 0xA672 },
|
||||
{ 0xA674, 0xA67D },
|
||||
{ 0xA69F, 0xA69F },
|
||||
{ 0xA69E, 0xA69F },
|
||||
{ 0xA6F0, 0xA6F1 },
|
||||
{ 0xA802, 0xA802 },
|
||||
{ 0xA806, 0xA806 },
|
||||
{ 0xA80B, 0xA80B },
|
||||
{ 0xA825, 0xA826 },
|
||||
{ 0xA8C4, 0xA8C4 },
|
||||
{ 0xA8C4, 0xA8C5 },
|
||||
{ 0xA8E0, 0xA8F1 },
|
||||
{ 0xA926, 0xA92D },
|
||||
{ 0xA947, 0xA951 },
|
||||
@ -1082,14 +1094,47 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
|
||||
{ 0xABED, 0xABED },
|
||||
{ 0xFB1E, 0xFB1E },
|
||||
{ 0xFE00, 0xFE0F },
|
||||
{ 0xFE20, 0xFE2D },
|
||||
{ 0xFE20, 0xFE2F },
|
||||
{ 0xFEFF, 0xFEFF },
|
||||
{ 0xFFF9, 0xFFFB }
|
||||
};
|
||||
|
||||
static const struct mb_ucsrange mb_ucs_fullwidth[] = {
|
||||
{ 0x1100, 0x115F },
|
||||
{ 0x231A, 0x231B },
|
||||
{ 0x2329, 0x232A },
|
||||
{ 0x23E9, 0x23EC },
|
||||
{ 0x23F0, 0x23F0 },
|
||||
{ 0x23F3, 0x23F3 },
|
||||
{ 0x25FD, 0x25FE },
|
||||
{ 0x2614, 0x2615 },
|
||||
{ 0x2648, 0x2653 },
|
||||
{ 0x267F, 0x267F },
|
||||
{ 0x2693, 0x2693 },
|
||||
{ 0x26A1, 0x26A1 },
|
||||
{ 0x26AA, 0x26AB },
|
||||
{ 0x26BD, 0x26BE },
|
||||
{ 0x26C4, 0x26C5 },
|
||||
{ 0x26CE, 0x26CE },
|
||||
{ 0x26D4, 0x26D4 },
|
||||
{ 0x26EA, 0x26EA },
|
||||
{ 0x26F2, 0x26F3 },
|
||||
{ 0x26F5, 0x26F5 },
|
||||
{ 0x26FA, 0x26FA },
|
||||
{ 0x26FD, 0x26FD },
|
||||
{ 0x2705, 0x2705 },
|
||||
{ 0x270A, 0x270B },
|
||||
{ 0x2728, 0x2728 },
|
||||
{ 0x274C, 0x274C },
|
||||
{ 0x274E, 0x274E },
|
||||
{ 0x2753, 0x2755 },
|
||||
{ 0x2757, 0x2757 },
|
||||
{ 0x2795, 0x2797 },
|
||||
{ 0x27B0, 0x27B0 },
|
||||
{ 0x27BF, 0x27BF },
|
||||
{ 0x2B1B, 0x2B1C },
|
||||
{ 0x2B50, 0x2B50 },
|
||||
{ 0x2B55, 0x2B55 },
|
||||
{ 0x2E80, 0x303E },
|
||||
{ 0x3040, 0xA4CF },
|
||||
{ 0xA960, 0xA97F },
|
||||
|
Reference in New Issue
Block a user