Your message dated Sat, 1 Dec 2012 14:12:07 +0100 with message-id <20121201131207.GQ5634@radis.cristau.org> and subject line Re: Bug#689153: unblock: mksh/40.9.20120630-3 has caused the Debian Bug report #689153, regarding unblock: mksh/40.9.20120630-4 to be marked as done. This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact owner@bugs.debian.org immediately.) -- 689153: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=689153 Debian Bug Tracking System Contact owner@bugs.debian.org with problems
--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: unblock: mksh/40.9.20120630-3
- From: Thorsten Glaser <tg@mirbsd.de>
- Date: Sat, 29 Sep 2012 17:08:12 +0200
- Message-id: <20120929150812.28853.71605.reportbug@evolvis-51.tarent.de>
Package: release.debian.org Severity: normal User: release.debian.org@packages.debian.org Usertags: unblock Please unblock package mksh The upload 40.9.20120630-3 was specifically made to target wheezy; the changes have been tested for a while now, and the diff, split by the kind of change done, follows. The package fixes two problems, first, the following script did not work (regression against mksh 39) and now works again: echo $( echo \{ tr u x <<-'EOF' price is u denar EOF echo } ) This is LP#1030581. The part of the debdiff pertaining to that is one half of the diff to debian/patches/debian-changes (as I do that kind of stuff in CVS) and follows here as diff against the patched source instead, for easier review; changes to CVS keywords and the version number reported have also been omitted: --- mksh-40.9.20120630-2/tree.c 2012-06-28 22:18:27.000000000 +0200 +++ mksh-40.9.20120630-3/tree.c 2012-09-29 17:00:22.000000000 +0200 @@ -53,6 +53,25 @@ ptree(struct op *t, int indent, struct s return; switch (t->type) { case TCOM: + prevent_semicolon = false; + /* + * special-case 'var=<<EOF' (rough; see + * exec.c:execute() for full code) + */ + if ( + /* we have zero arguments, i.e. no programme to run */ + t->args[0] == NULL && + /* we have exactly one variable assignment */ + t->vars[0] != NULL && t->vars[1] == NULL && + /* we have exactly one I/O redirection */ + t->ioact != NULL && t->ioact[0] != NULL && + t->ioact[1] == NULL && + /* of type "here document" (or "here string") */ + (t->ioact[0]->flag & IOTYPE) == IOHERE) { + fptreef(shf, indent, "%S", t->vars[0]); + break; + } + if (t->vars) { w = (const char **)t->vars; while (*w) @@ -65,7 +84,6 @@ ptree(struct op *t, int indent, struct s fptreef(shf, indent, "%S ", *w++); } else shf_puts("#no-args# ", shf); - prevent_semicolon = false; break; case TEXEC: t = t->left; @@ -216,8 +234,10 @@ ptree(struct op *t, int indent, struct s * often leads to an extra blank line, but it's not * worth worrying about) */ - if (need_nl) + if (need_nl) { shf_putc('\n', shf); + prevent_semicolon = true; + } } } @@ -258,8 +278,8 @@ pioact(struct shf *shf, int indent, stru /* name/delim are NULL when printing syntax errors */ if (type == IOHERE) { if (iop->delim) - fptreef(shf, indent, "%S ", iop->delim); - else + wdvarput(shf, iop->delim, 0, WDS_TPUTS); + if (iop->flag & IOHERESTR) shf_putc(' ', shf); } else if (iop->name) fptreef(shf, indent, (iop->flag & IONAMEXP) ? "%s " : "%S ", This part also touches the testsuite (most of it remove a space at the end of the line): --- mksh-40.9.20120630-2/check.t 2012-09-29 17:00:14.000000000 +0200 +++ mksh-40.9.20120630-3/check.t 2012-09-29 17:00:22.000000000 +0200 @@ -2268,7 +2268,13 @@ stdin: =c $x \x40= EOF } - typeset -f foo + fnd=$(typeset -f foo) + print -r -- "$fnd" + function foo { + echo blub + } + foo + eval "$fnd" foo # rather nonsensical, but… vd=<<<"=d $x \x40=" @@ -2278,11 +2284,12 @@ stdin: print -r -- "| va={$va} vb={$vb} vc={$vc} vd={$vd} ve={$ve} vf={$vf} |" expected-stdout: function foo { - vc= <<-EOF + vc=<<-EOF =c $x \x40= EOF } + blub | va={=a u \x40= } vb={=b $x \x40= } vc={=c u \x40= @@ -2310,20 +2317,27 @@ stdin: =d $x \x40= } - typeset -f foo + fnd=$(typeset -f foo) + print -r -- "$fnd" + function foo { + echo blub + } + foo + eval "$fnd" foo print -r -- "| va={$va} vb={$vb} vc={$vc} vd={$vd} |" expected-stdout: function foo { - vc= <<- + vc=<<- =c $x \x40= << - vd= <<-"" + vd=<<-"" =d $x \x40= } + blub | va={=a u \x40= } vb={=b $x \x40= } vc={=c u \x40= @@ -8837,7 +8851,7 @@ expected-stdout: EOFN } inline_IOWRITE_IOCLOB_IOHERE_noIOSKIP() { - cat >|bar <<"EOFN" + cat >|bar <<"EOFN" foo EOFN @@ -8848,7 +8862,7 @@ expected-stdout: EOFN ); } function comsub_IOWRITE_IOCLOB_IOHERE_noIOSKIP { - x=$(cat >|bar <<"EOFN" + x=$(cat >|bar <<"EOFN" foo EOFN ) @@ -8859,7 +8873,7 @@ expected-stdout: EOFN )|tr u x); } function reread_IOWRITE_IOCLOB_IOHERE_noIOSKIP { - x=$(( cat >|bar <<"EOFN" + x=$(( cat >|bar <<"EOFN" foo EOFN ) | tr u x ) @@ -8870,7 +8884,7 @@ expected-stdout: EOFI } inline_IOWRITE_noIOCLOB_IOHERE_IOSKIP() { - cat >bar <<-EOFI + cat >bar <<-EOFI foo EOFI @@ -8881,7 +8895,7 @@ expected-stdout: EOFI ); } function comsub_IOWRITE_noIOCLOB_IOHERE_IOSKIP { - x=$(cat >bar <<-EOFI + x=$(cat >bar <<-EOFI foo EOFI ) @@ -8892,7 +8906,7 @@ expected-stdout: EOFI )|tr u x); } function reread_IOWRITE_noIOCLOB_IOHERE_IOSKIP { - x=$(( cat >bar <<-EOFI + x=$(( cat >bar <<-EOFI foo EOFI ) | tr u x ) @@ -8983,7 +8997,7 @@ expected-stdout: EOFN); echo $x } inline_heredoc_closed() { - x=$(cat <<EOFN + x=$(cat <<EOFN note there must be no space between EOFN and ) EOFN ) @@ -8995,7 +9009,7 @@ expected-stdout: EOFN); echo $x ); } function comsub_heredoc_closed { - x=$(x=$(cat <<EOFN + x=$(x=$(cat <<EOFN note there must be no space between EOFN and ) EOFN ) ; echo $x ) @@ -9006,7 +9020,7 @@ expected-stdout: EOFN); echo $x )|tr u x); } function reread_heredoc_closed { - x=$(( x=$(cat <<EOFN + x=$(( x=$(cat <<EOFN note there must be no space between EOFN and ) EOFN ) ; echo $x ) | tr u x ) @@ -9017,7 +9031,7 @@ expected-stdout: EOFN ); echo $x } inline_heredoc_space() { - x=$(cat <<EOFN\ + x=$(cat <<EOFN\ note the space between EOFN and ) is actually part of the here document marker EOFN ) @@ -9029,7 +9043,7 @@ expected-stdout: EOFN ); echo $x ); } function comsub_heredoc_space { - x=$(x=$(cat <<EOFN\ + x=$(x=$(cat <<EOFN\ note the space between EOFN and ) is actually part of the here document marker EOFN ) ; echo $x ) @@ -9040,7 +9054,7 @@ expected-stdout: EOFN ); echo $x )|tr u x); } function reread_heredoc_space { - x=$(( x=$(cat <<EOFN\ + x=$(( x=$(cat <<EOFN\ note the space between EOFN and ) is actually part of the here document marker EOFN ) ; echo $x ) | tr u x ) @@ -9063,7 +9077,7 @@ expected-stdout: } inline_patch_motd() { x=$(sysctl -n kern.version | sed 1q ) - [[ -s /etc/motd && "$([[ "$(head -1 /etc/motd )" != $x ]] && ed -s /etc/motd 2>&1 <<-EOF + [[ -s /etc/motd && "$([[ "$(head -1 /etc/motd )" != $x ]] && ed -s /etc/motd 2>&1 <<-EOF 1,/^\$/d 0a $x @@ -9095,7 +9109,7 @@ expected-stdout: fi ); } function comsub_patch_motd { - x=$(x=$(sysctl -n kern.version | sed 1q ) ; [[ -s /etc/motd && "$([[ "$(head -1 /etc/motd )" != $x ]] && ed -s /etc/motd 2>&1 <<-EOF + x=$(x=$(sysctl -n kern.version | sed 1q ) ; [[ -s /etc/motd && "$([[ "$(head -1 /etc/motd )" != $x ]] && ed -s /etc/motd 2>&1 <<-EOF 1,/^\$/d 0a $x @@ -9122,7 +9136,7 @@ expected-stdout: fi )|tr u x); } function reread_patch_motd { - x=$(( x=$(sysctl -n kern.version | sed 1q ) ; [[ -s /etc/motd && "$([[ "$(head -1 /etc/motd )" != $x ]] && ed -s /etc/motd 2>&1 <<-EOF + x=$(( x=$(sysctl -n kern.version | sed 1q ) ; [[ -s /etc/motd && "$([[ "$(head -1 /etc/motd )" != $x ]] && ed -s /etc/motd 2>&1 <<-EOF 1,/^\$/d 0a $x The second fix is related to the tabcompletion problems that led to uploading mksh/40.9.20120630-2 already, which removes further regressions for tabcompleting with a tilde present, related to LP#1025843, and plugs a memory leak in the tab completion code (afree(s, ATEMP);): --- mksh-40.9.20120630-2/edit.c 2012-09-29 17:00:14.000000000 +0200 +++ mksh-40.9.20120630-3/edit.c 2012-09-29 17:00:22.000000000 +0200 @@ -61,8 +61,7 @@ static X_chars edchars; #define XCF_FULLPATH BIT(2) /* command completion: store full path */ #define XCF_COMMAND_FILE (XCF_COMMAND | XCF_FILE) #define XCF_IS_COMMAND BIT(3) /* return flag: is command */ -#define XCF_IS_SUBGLOB BIT(4) /* return flag: is $FOO or ~foo substitution */ -#define XCF_IS_EXTGLOB BIT(5) /* return flag: is foo* expansion */ +#define XCF_IS_NOSPACE BIT(4) /* return flag: do not append a space */ static char editmode; static int xx_cols; /* for Emacs mode */ @@ -98,7 +97,7 @@ static int x_vi(char *, size_t); static int path_order_cmp(const void *aa, const void *bb); static void glob_table(const char *, XPtrV *, struct table *); static void glob_path(int flags, const char *, XPtrV *, const char *); -static int x_file_glob(int, char *, char ***); +static int x_file_glob(int *, char *, char ***); static int x_command_glob(int, char *, char ***); static int x_locate_word(const char *, int, int, int *, bool *); @@ -346,9 +345,9 @@ x_glob_hlp_rem_qchar(char *cp) * - returns number of matching strings */ static int -x_file_glob(int flags MKSH_A_UNUSED, char *toglob, char ***wordsp) +x_file_glob(int *flagsp, char *toglob, char ***wordsp) { - char **words; + char **words, *cp; int nwords; XPtrV w; struct source *s, *sold; @@ -369,8 +368,19 @@ x_file_glob(int flags MKSH_A_UNUSED, cha return (0); } source = sold; + afree(s, ATEMP); XPinit(w, 32); - expand(yylval.cp, &w, DOGLOB | DOTILDE | DOMARKDIRS); + cp = yylval.cp; + while (*cp == CHAR || *cp == QCHAR) + cp += 2; + nwords = DOGLOB | DOTILDE | DOMARKDIRS; + if (*cp != EOS) { + /* probably a $FOO expansion */ + *flagsp |= XCF_IS_NOSPACE; + /* this always results in at most one match */ + nwords = 0; + } + expand(yylval.cp, &w, nwords); XPput(w, NULL); words = (char **)XPclose(w); @@ -579,7 +589,6 @@ x_cf_glob(int *flagsp, const char *buf, if (len >= 0) { char *toglob, *s; - bool saw_dollar = false, saw_glob = false; /* * Given a string, copy it and possibly add a '*' to the end. @@ -590,52 +599,45 @@ x_cf_glob(int *flagsp, const char *buf, /* * If the pathname contains a wildcard (an unquoted '*', - * '?', or '[') or parameter expansion ('$'), or a ~username - * with no trailing slash, then it is globbed based on that - * value (i.e., without the appended '*'). + * '?', or '[') or an extglob, then it is globbed based + * on that value (i.e., without the appended '*'). Same + * for parameter substitutions (as in “cat $HOME/.ss↹”) + * without appending a trailing space (LP: #710539), as + * well as for “~foo” (but not “~foo/”). */ for (s = toglob; *s; s++) { if (*s == '\\' && s[1]) s++; - else if (*s == '$') { - /* - * Do not append a space after the value - * if expanding a parameter substitution - * as in: “cat $HOME/.ss↹” (LP: #710539) - */ - saw_dollar = true; - } else if (*s == '?' || *s == '*' || *s == '[' || + else if (*s == '?' || *s == '*' || *s == '[' || + *s == '$' || /* ?() *() +() @() !() but two already checked */ (s[1] == '(' /*)*/ && (*s == '+' || *s == '@' || *s == '!'))) { - /* just expand based on the extglob */ - saw_glob = true; + /* + * just expand based on the extglob + * or parameter + */ + goto dont_add_glob; } } - if (saw_glob) { - /* - * do not append a glob, we already have a - * glob or extglob; it works even if this is - * a parameter expansion as we have a glob - */ - *flagsp |= XCF_IS_EXTGLOB; - } else if (saw_dollar || - (*toglob == '~' && !vstrchr(toglob, '/'))) { - /* do not append a glob, nor later a space */ - *flagsp |= XCF_IS_SUBGLOB; - } else { - /* append a glob, this is not just a tilde */ - toglob[len] = '*'; - toglob[len + 1] = '\0'; + + if (*toglob == '~' && !vstrchr(toglob, '/')) { + /* neither for '~foo' (but '~foo/bar') */ + *flagsp |= XCF_IS_NOSPACE; + goto dont_add_glob; } + /* append a glob */ + toglob[len] = '*'; + toglob[len + 1] = '\0'; + dont_add_glob: /* * Expand (glob) it now. */ nwords = is_command ? x_command_glob(*flagsp, toglob, &words) : - x_file_glob(*flagsp, toglob, &words); + x_file_glob(flagsp, toglob, &words); afree(toglob, ATEMP); } if (nwords == 0) { @@ -2757,17 +2759,34 @@ do_complete( } olen = end - start; nlen = x_longest_prefix(nwords, words); - if (nwords == 1 || (flags & XCF_IS_SUBGLOB)) { + if (nwords == 1) { /* - * always complete the expansion of parameter and - * homedir substitution as well as single matches + * always complete single matches; + * any expansion of parameter substitution + * is always at most one result, too */ completed = true; } else { char *unescaped; - /* make a copy of the original string part and... */ + /* make a copy of the original string part */ strndupx(unescaped, xbuf + start, olen, ATEMP); + if (*unescaped == '~') { + /* + * do some tilde expansion; we know at this + * point (by means of having nwords > 1) that + * the string looks like "~foo/bar" and that + * the tilde resolves + */ + char *cp; + + cp = strchr(unescaped + 1, '/'); + *cp++ = 0; + cp = shf_smprintf("%s/%s", tilde(unescaped + 1), cp); + afree(unescaped, ATEMP); + unescaped = cp; + } + /* ... convert it from backslash-escaped via QCHAR-escaped... */ x_glob_hlp_add_qchar(unescaped); /* ... to unescaped, for comparison with the matches */ @@ -2803,7 +2822,7 @@ do_complete( * and not a parameter or homedir substitution */ if (nwords == 1 && words[0][nlen - 1] != '/' && - !(flags & XCF_IS_SUBGLOB)) { + !(flags & XCF_IS_NOSPACE)) { x_ins(" "); } @@ -5359,7 +5378,7 @@ complete_word(int cmd, int count) * and not a parameter or homedir substitution */ if (match_len > 0 && match[match_len - 1] != '/' && - !(flags & XCF_IS_SUBGLOB)) + !(flags & XCF_IS_NOSPACE)) rval = putbuf(" ", 1, 0); } x_free_words(nwords, words); --- mksh-40.9.20120630-2/eval.c 2012-06-28 22:04:08.000000000 +0200 +++ mksh-40.9.20120630-3/eval.c 2012-09-29 17:00:22.000000000 +0200 @@ -63,7 +63,6 @@ static char *trimsub(char *, char *, int static void glob(char *, XPtrV *, int); static void globit(XString *, char **, char *, XPtrV *, int); static const char *maybe_expand_tilde(const char *, XString *, char **, int); -static char *tilde(char *); #ifndef MKSH_NOPWNAM static char *homedir(char *); #endif @@ -1621,7 +1620,7 @@ maybe_expand_tilde(const char *p, XStrin * based on a version by Arnold Robbins */ -static char * +char * tilde(char *cp) { char *dp = null; --- mksh-40.9.20120630-2/sh.h 2012-09-29 17:00:14.000000000 +0200 +++ mksh-40.9.20120630-3/sh.h 2012-09-29 17:00:22.000000000 +0200 @@ -1629,6 +1629,7 @@ char *evalonestr(const char *cp, int); char *debunk(char *, const char *, size_t); void expand(const char *, XPtrV *, int); int glob_str(char *, XPtrV *, int); +char *tilde(char *); /* exec.c */ int execute(struct op * volatile, volatile int, volatile int * volatile); int shcomexec(const char **); This upload also updates the width calculation code to Unicode 6.1.0: --- mksh-40.9.20120630-2/expr.c 2012-06-28 22:18:24.000000000 +0200 +++ mksh-40.9.20120630-3/expr.c 2012-09-29 17:00:22.000000000 +0200 @@ -854,69 +854,71 @@ utf_wcwidth(unsigned int c) unsigned short first; unsigned short last; } comb[] = { - /* Unicode 6.0.0 BMP */ + /* Unicode 6.1.0 BMP */ { 0x0300, 0x036F }, { 0x0483, 0x0489 }, { 0x0591, 0x05BD }, { 0x05BF, 0x05BF }, { 0x05C1, 0x05C2 }, { 0x05C4, 0x05C5 }, - { 0x05C7, 0x05C7 }, { 0x0600, 0x0603 }, { 0x0610, 0x061A }, + { 0x05C7, 0x05C7 }, { 0x0600, 0x0604 }, { 0x0610, 0x061A }, { 0x064B, 0x065F }, { 0x0670, 0x0670 }, { 0x06D6, 0x06DD }, { 0x06DF, 0x06E4 }, { 0x06E7, 0x06E8 }, { 0x06EA, 0x06ED }, { 0x070F, 0x070F }, { 0x0711, 0x0711 }, { 0x0730, 0x074A }, { 0x07A6, 0x07B0 }, { 0x07EB, 0x07F3 }, { 0x0816, 0x0819 }, { 0x081B, 0x0823 }, { 0x0825, 0x0827 }, { 0x0829, 0x082D }, - { 0x0859, 0x085B }, { 0x0900, 0x0902 }, { 0x093A, 0x093A }, - { 0x093C, 0x093C }, { 0x0941, 0x0948 }, { 0x094D, 0x094D }, - { 0x0951, 0x0957 }, { 0x0962, 0x0963 }, { 0x0981, 0x0981 }, - { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, { 0x09CD, 0x09CD }, - { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, { 0x0A3C, 0x0A3C }, - { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, { 0x0A4B, 0x0A4D }, - { 0x0A51, 0x0A51 }, { 0x0A70, 0x0A71 }, { 0x0A75, 0x0A75 }, - { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, { 0x0AC1, 0x0AC5 }, - { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, { 0x0AE2, 0x0AE3 }, - { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C }, { 0x0B3F, 0x0B3F }, - { 0x0B41, 0x0B44 }, { 0x0B4D, 0x0B4D }, { 0x0B56, 0x0B56 }, - { 0x0B62, 0x0B63 }, { 0x0B82, 0x0B82 }, { 0x0BC0, 0x0BC0 }, - { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, { 0x0C46, 0x0C48 }, - { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, { 0x0C62, 0x0C63 }, - { 0x0CBC, 0x0CBC }, { 0x0CBF, 0x0CBF }, { 0x0CC6, 0x0CC6 }, - { 0x0CCC, 0x0CCD }, { 0x0CE2, 0x0CE3 }, { 0x0D41, 0x0D44 }, - { 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, { 0x0DCA, 0x0DCA }, - { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, { 0x0E31, 0x0E31 }, - { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, { 0x0EB1, 0x0EB1 }, - { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, { 0x0EC8, 0x0ECD }, - { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 }, - { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 }, - { 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, { 0x0F99, 0x0FBC }, - { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, { 0x1032, 0x1037 }, - { 0x1039, 0x103A }, { 0x103D, 0x103E }, { 0x1058, 0x1059 }, - { 0x105E, 0x1060 }, { 0x1071, 0x1074 }, { 0x1082, 0x1082 }, - { 0x1085, 0x1086 }, { 0x108D, 0x108D }, { 0x109D, 0x109D }, - { 0x1160, 0x11FF }, { 0x135D, 0x135F }, { 0x1712, 0x1714 }, - { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, { 0x1772, 0x1773 }, - { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, { 0x17C6, 0x17C6 }, - { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, { 0x180B, 0x180D }, - { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, { 0x1927, 0x1928 }, - { 0x1932, 0x1932 }, { 0x1939, 0x193B }, { 0x1A17, 0x1A18 }, - { 0x1A56, 0x1A56 }, { 0x1A58, 0x1A5E }, { 0x1A60, 0x1A60 }, - { 0x1A62, 0x1A62 }, { 0x1A65, 0x1A6C }, { 0x1A73, 0x1A7C }, - { 0x1A7F, 0x1A7F }, { 0x1B00, 0x1B03 }, { 0x1B34, 0x1B34 }, - { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, { 0x1B42, 0x1B42 }, - { 0x1B6B, 0x1B73 }, { 0x1B80, 0x1B81 }, { 0x1BA2, 0x1BA5 }, - { 0x1BA8, 0x1BA9 }, { 0x1BE6, 0x1BE6 }, { 0x1BE8, 0x1BE9 }, - { 0x1BED, 0x1BED }, { 0x1BEF, 0x1BF1 }, { 0x1C2C, 0x1C33 }, - { 0x1C36, 0x1C37 }, { 0x1CD0, 0x1CD2 }, { 0x1CD4, 0x1CE0 }, - { 0x1CE2, 0x1CE8 }, { 0x1CED, 0x1CED }, { 0x1DC0, 0x1DE6 }, + { 0x0859, 0x085B }, { 0x08E4, 0x08FE }, { 0x0900, 0x0902 }, + { 0x093A, 0x093A }, { 0x093C, 0x093C }, { 0x0941, 0x0948 }, + { 0x094D, 0x094D }, { 0x0951, 0x0957 }, { 0x0962, 0x0963 }, + { 0x0981, 0x0981 }, { 0x09BC, 0x09BC }, { 0x09C1, 0x09C4 }, + { 0x09CD, 0x09CD }, { 0x09E2, 0x09E3 }, { 0x0A01, 0x0A02 }, + { 0x0A3C, 0x0A3C }, { 0x0A41, 0x0A42 }, { 0x0A47, 0x0A48 }, + { 0x0A4B, 0x0A4D }, { 0x0A51, 0x0A51 }, { 0x0A70, 0x0A71 }, + { 0x0A75, 0x0A75 }, { 0x0A81, 0x0A82 }, { 0x0ABC, 0x0ABC }, + { 0x0AC1, 0x0AC5 }, { 0x0AC7, 0x0AC8 }, { 0x0ACD, 0x0ACD }, + { 0x0AE2, 0x0AE3 }, { 0x0B01, 0x0B01 }, { 0x0B3C, 0x0B3C }, + { 0x0B3F, 0x0B3F }, { 0x0B41, 0x0B44 }, { 0x0B4D, 0x0B4D }, + { 0x0B56, 0x0B56 }, { 0x0B62, 0x0B63 }, { 0x0B82, 0x0B82 }, + { 0x0BC0, 0x0BC0 }, { 0x0BCD, 0x0BCD }, { 0x0C3E, 0x0C40 }, + { 0x0C46, 0x0C48 }, { 0x0C4A, 0x0C4D }, { 0x0C55, 0x0C56 }, + { 0x0C62, 0x0C63 }, { 0x0CBC, 0x0CBC }, { 0x0CBF, 0x0CBF }, + { 0x0CC6, 0x0CC6 }, { 0x0CCC, 0x0CCD }, { 0x0CE2, 0x0CE3 }, + { 0x0D41, 0x0D44 }, { 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, + { 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 }, + { 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E }, + { 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EB9 }, { 0x0EBB, 0x0EBC }, + { 0x0EC8, 0x0ECD }, { 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, + { 0x0F37, 0x0F37 }, { 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, + { 0x0F80, 0x0F84 }, { 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, + { 0x0F99, 0x0FBC }, { 0x0FC6, 0x0FC6 }, { 0x102D, 0x1030 }, + { 0x1032, 0x1037 }, { 0x1039, 0x103A }, { 0x103D, 0x103E }, + { 0x1058, 0x1059 }, { 0x105E, 0x1060 }, { 0x1071, 0x1074 }, + { 0x1082, 0x1082 }, { 0x1085, 0x1086 }, { 0x108D, 0x108D }, + { 0x109D, 0x109D }, { 0x1160, 0x11FF }, { 0x135D, 0x135F }, + { 0x1712, 0x1714 }, { 0x1732, 0x1734 }, { 0x1752, 0x1753 }, + { 0x1772, 0x1773 }, { 0x17B4, 0x17B5 }, { 0x17B7, 0x17BD }, + { 0x17C6, 0x17C6 }, { 0x17C9, 0x17D3 }, { 0x17DD, 0x17DD }, + { 0x180B, 0x180D }, { 0x18A9, 0x18A9 }, { 0x1920, 0x1922 }, + { 0x1927, 0x1928 }, { 0x1932, 0x1932 }, { 0x1939, 0x193B }, + { 0x1A17, 0x1A18 }, { 0x1A56, 0x1A56 }, { 0x1A58, 0x1A5E }, + { 0x1A60, 0x1A60 }, { 0x1A62, 0x1A62 }, { 0x1A65, 0x1A6C }, + { 0x1A73, 0x1A7C }, { 0x1A7F, 0x1A7F }, { 0x1B00, 0x1B03 }, + { 0x1B34, 0x1B34 }, { 0x1B36, 0x1B3A }, { 0x1B3C, 0x1B3C }, + { 0x1B42, 0x1B42 }, { 0x1B6B, 0x1B73 }, { 0x1B80, 0x1B81 }, + { 0x1BA2, 0x1BA5 }, { 0x1BA8, 0x1BA9 }, { 0x1BAB, 0x1BAB }, + { 0x1BE6, 0x1BE6 }, { 0x1BE8, 0x1BE9 }, { 0x1BED, 0x1BED }, + { 0x1BEF, 0x1BF1 }, { 0x1C2C, 0x1C33 }, { 0x1C36, 0x1C37 }, + { 0x1CD0, 0x1CD2 }, { 0x1CD4, 0x1CE0 }, { 0x1CE2, 0x1CE8 }, + { 0x1CED, 0x1CED }, { 0x1CF4, 0x1CF4 }, { 0x1DC0, 0x1DE6 }, { 0x1DFC, 0x1DFF }, { 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2064 }, { 0x206A, 0x206F }, { 0x20D0, 0x20F0 }, { 0x2CEF, 0x2CF1 }, { 0x2D7F, 0x2D7F }, { 0x2DE0, 0x2DFF }, - { 0x302A, 0x302F }, { 0x3099, 0x309A }, { 0xA66F, 0xA672 }, - { 0xA67C, 0xA67D }, { 0xA6F0, 0xA6F1 }, { 0xA802, 0xA802 }, - { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, { 0xA825, 0xA826 }, - { 0xA8C4, 0xA8C4 }, { 0xA8E0, 0xA8F1 }, { 0xA926, 0xA92D }, - { 0xA947, 0xA951 }, { 0xA980, 0xA982 }, { 0xA9B3, 0xA9B3 }, - { 0xA9B6, 0xA9B9 }, { 0xA9BC, 0xA9BC }, { 0xAA29, 0xAA2E }, - { 0xAA31, 0xAA32 }, { 0xAA35, 0xAA36 }, { 0xAA43, 0xAA43 }, - { 0xAA4C, 0xAA4C }, { 0xAAB0, 0xAAB0 }, { 0xAAB2, 0xAAB4 }, - { 0xAAB7, 0xAAB8 }, { 0xAABE, 0xAABF }, { 0xAAC1, 0xAAC1 }, + { 0x302A, 0x302D }, { 0x3099, 0x309A }, { 0xA66F, 0xA672 }, + { 0xA674, 0xA67D }, { 0xA69F, 0xA69F }, { 0xA6F0, 0xA6F1 }, + { 0xA802, 0xA802 }, { 0xA806, 0xA806 }, { 0xA80B, 0xA80B }, + { 0xA825, 0xA826 }, { 0xA8C4, 0xA8C4 }, { 0xA8E0, 0xA8F1 }, + { 0xA926, 0xA92D }, { 0xA947, 0xA951 }, { 0xA980, 0xA982 }, + { 0xA9B3, 0xA9B3 }, { 0xA9B6, 0xA9B9 }, { 0xA9BC, 0xA9BC }, + { 0xAA29, 0xAA2E }, { 0xAA31, 0xAA32 }, { 0xAA35, 0xAA36 }, + { 0xAA43, 0xAA43 }, { 0xAA4C, 0xAA4C }, { 0xAAB0, 0xAAB0 }, + { 0xAAB2, 0xAAB4 }, { 0xAAB7, 0xAAB8 }, { 0xAABE, 0xAABF }, + { 0xAAC1, 0xAAC1 }, { 0xAAEC, 0xAAED }, { 0xAAF6, 0xAAF6 }, { 0xABE5, 0xABE5 }, { 0xABE8, 0xABE8 }, { 0xABED, 0xABED }, { 0xFB1E, 0xFB1E }, { 0xFE00, 0xFE0F }, { 0xFE20, 0xFE26 }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB } unblock mksh/40.9.20120630-3 -- System Information: Debian Release: wheezy/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: i386 (i686) Kernel: Linux 3.2.0-3-686-pae (SMP w/1 CPU core) Locale: LANG=C, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/mksh-static
--- End Message ---
--- Begin Message ---
- To: Thorsten Glaser <tg@mirbsd.de>, 689153-done@bugs.debian.org
- Subject: Re: Bug#689153: unblock: mksh/40.9.20120630-3
- From: Julien Cristau <jcristau@debian.org>
- Date: Sat, 1 Dec 2012 14:12:07 +0100
- Message-id: <20121201131207.GQ5634@radis.cristau.org>
- In-reply-to: <20120929150812.28853.71605.reportbug@evolvis-51.tarent.de>
- References: <20120929150812.28853.71605.reportbug@evolvis-51.tarent.de>
On Sat, Sep 29, 2012 at 17:08:12 +0200, Thorsten Glaser wrote: > Package: release.debian.org > Severity: normal > User: release.debian.org@packages.debian.org > Usertags: unblock > > Please unblock package mksh > Done. Cheers, JulienAttachment: signature.asc
Description: Digital signature
--- End Message ---