debian/0000775000000000000000000000000012256173017007174 5ustar debian/mtest.t0000664000000000000000000000252211742335466010525 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mtest.t,v 1.7 2012/04/14 17:59:58 tg Exp $ #- # Catch the most basic failures to run (broken ABI, signals, dietlibc bug, # select not implemented) # Failures to pass these leads to the binary being thrown away, if run name: mtest-builtin description: Minitest: can run a builtin time-limit: 3 stdin: echo foo expected-stdout: foo --- name: mtest-external description: Minitest: can run an external utility and return time-limit: 3 stdin: echo baz | /usr/bin/tr z r echo baz expected-stdout: bar baz --- name: mtest-ascii1 description: Part of dollar-quoted-strings time-limit: 3 stdin: printf '<\1\n'|while read x;do while [[ -n $x ]];do typeset -i16 hv=1#${x::1};x=${x:1};echo -n "$hv ";done;done;echo . expected-stdout: 16#3c 16#1 . --- name: mtest-brkcontin description: Check that break and continue work; used by test.sh itself and broken at least once on *buntu time-limit: 3 stdin: for x in "echo 1" false "echo 2"; do $x && continue; echo 3; break; done; echo 4 expected-stdout: 1 3 4 --- name: mtest-select-works description: Check that we correctly detect our host system has select(2) and that it is actually implemented, exported from libc and working time-limit: 3 stdin: print foo | while read -t 1 bar; do print ${bar}bar; done sleep 1 print baz expected-stdout: foobar baz --- debian/printf.c0000664000000000000000000003032112065431010010625 0ustar /* $OpenBSD: printf.c,v 1.17 2009/10/27 23:59:41 deraadt Exp $ */ /*- * Copyright (c) 1989 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. */ #ifdef MKSH_PRINTF_BUILTIN /* MirBSD Korn Shell */ #include "sh.h" #else /* stand-alone executable */ #include #include #include #include #include #include #include #include #include #define vstrchr strchr #endif __RCSID("$MirOS: contrib/hosted/tg/deb/mksh/debian/printf.c,v 1.20 2012/12/22 22:19:27 tg Exp $"); static int print_escape_str(const char *); static int print_escape(const char *); static int getchr(void); #ifndef MKSH_PRINTF_BUILTIN static double getdouble(void); #endif static int getinteger(void); static long getlong(void); static unsigned long getulong(void); static const char *getstr(void); static char *mklong(const char *, int); static void check_conversion(const char *, const char *); static int usage(void); static int real_main(char *, const char *[]); static int rval; static const char **gargv; #ifdef MKSH_PRINTF_BUILTIN static int s_get(void); static void s_put(int); static void s_prt(int); static const char *s_ptr; #define isxdigit(c) (((c) >= '0' && (c) <= '9') || ((c) >= 'a' && (c) <= 'f') || ((c) >= 'A' && (c) <= 'F')) #endif #define isodigit(c) ((c) >= '0' && (c) <= '7') #define octtobin(c) ((c) - '0') #define hextobin(c) ((c) >= 'A' && (c) <= 'F' ? c - 'A' + 10 : (c) >= 'a' && (c) <= 'f' ? c - 'a' + 10 : c - '0') #define PF(f, func) do { \ if (fieldwidth) \ if (precision) \ uprintf(f, fieldwidth, precision, func); \ else \ uprintf(f, fieldwidth, func); \ else if (precision) \ uprintf(f, precision, func); \ else \ uprintf(f, func); \ } while (/* CONSTCOND */ 0) #ifndef vstrchr #define vstrchr strchr #endif #ifndef cstrerror #define cstrerror(e) ((const char *)strerror(e)) #endif #ifdef MKSH_PRINTF_BUILTIN #define ufprintf shf_fprintf #define uprintf shprintf #define uputc(c) shf_putchar((c), shl_stdout) #define ustderr shl_out #define uwarnx warningf #define UWARNX false, int c_printf(const char **wp) { int rv; const char *old_kshname; char *fmt; uint8_t old_utfmode; old_kshname = kshname; kshname = wp[0]; ++wp; if (wp[0] && !strcmp(wp[0], "--")) ++wp; if (wp[0]) { strdupx(fmt, wp[0], ATEMP); old_utfmode = UTFMODE; UTFMODE = 0; rv = real_main(fmt, wp); UTFMODE = old_utfmode; afree(fmt, ATEMP); } else rv = usage(); kshname = old_kshname; return (rv); } #else #define ufprintf fprintf #define uprintf printf #define uputc putchar #define ustderr stderr #define uwarnx warnx #define UWARNX /* nothing */ int main(int argc, char *argv[]) { setlocale(LC_ALL, ""); if (argc > 1 && !strcmp(argv[1], "--")) { --argc; ++argv; } ++argv; return (argc < 2 ? usage() : real_main(argv[0], (const char **)argv)); } #endif static int real_main(char *format, const char *argv[]) { char *fmt, *start; int fieldwidth, precision; char convch, nextch; gargv = ++argv; #define SKIP1 "#-+ 0" #define SKIP2 "0123456789" do { /* * Basic algorithm is to scan the format string for conversion * specifications -- once one is found, find out if the field * width or precision is a '*'; if it is, gather up value. * Note, format strings are reused as necessary to use up the * provided arguments, arguments of zero/null string are * provided to use up the format string. */ /* find next format specification */ for (fmt = format; *fmt; fmt++) { switch (*fmt) { case '%': start = fmt++; if (*fmt == '%') { uputc('%'); break; } else if (*fmt == 'b') { const char *p = getstr(); if (print_escape_str(p)) { return (rval); } break; } else if (!*fmt) { goto synerr; } /* skip to field width */ for (; vstrchr(SKIP1, *fmt); ++fmt) ; if (*fmt == '*') { ++fmt; fieldwidth = getinteger(); } else if (!*fmt) { goto synerr; } else fieldwidth = 0; /* skip to field precision */ for (; vstrchr(SKIP2, *fmt); ++fmt) ; precision = 0; if (*fmt == '.') { ++fmt; if (*fmt == '*') { ++fmt; precision = getinteger(); } if (!*fmt) goto synerr; for (; vstrchr(SKIP2, *fmt); ++fmt) ; } if (!*fmt) { synerr: uwarnx(UWARNX "missing format character"); return (1); } convch = *fmt; nextch = *(fmt + 1); *(fmt + 1) = '\0'; switch(convch) { case 'c': { char p = getchr(); PF(start, p); break; } case 's': { const char *p = getstr(); PF(start, p); break; } case 'd': case 'i': { long p; char *f = mklong(start, convch); if (!f) { uwarnx(UWARNX "out of memory"); return (1); } p = getlong(); PF(f, p); break; } case 'o': case 'u': case 'x': case 'X': { unsigned long p; char *f = mklong(start, convch); if (!f) { uwarnx(UWARNX "out of memory"); return (1); } p = getulong(); PF(f, p); break; } #ifndef MKSH_PRINTF_BUILTIN #if 0 case 'a': case 'A': #endif case 'e': case 'E': case 'f': case 'F': case 'g': case 'G': { double p = getdouble(); PF(start, p); break; } #endif default: uwarnx(UWARNX "%s: invalid directive", start); return (1); } *(fmt + 1) = nextch; break; case '\\': fmt += print_escape(fmt); break; default: uputc(*fmt); break; } } } while (gargv > argv && *gargv); return (rval); } /* * Print SysV echo(1) style escape string * Halts processing string and returns 1 if a \c escape is encountered. */ static int print_escape_str(const char *str) { #ifndef MKSH_PRINTF_BUILTIN int value; #endif int c; while (*str) { if (*str == '\\') { #ifdef MKSH_PRINTF_BUILTIN s_ptr = str + 1; c = unbksl(false, s_get, s_put); str = s_ptr; if (c == -1) { if ((c = *str++) == 'c') return (1); else if (!c) --str; uputc(c); uwarnx(UWARNX "unknown escape sequence `\\%c'", c); rval = 1; } else s_prt(c); continue; #else str++; /* * %b string octal constants are not like those in C. * They start with a \0, and are followed by 0, 1, 2, * or 3 octal digits. */ if (*str == '0') { str++; for (c = 3, value = 0; c-- && isodigit(*str); str++) { value <<= 3; value += octtobin(*str); } uputc(value); str--; } else if (*str == 'c') { return (1); } else { str--; str += print_escape(str); } #endif } else { uputc(*str); } str++; } return (0); } /* * Print "standard" escape characters */ static int print_escape(const char *str) { #ifdef MKSH_PRINTF_BUILTIN int c; s_ptr = str + 1; c = unbksl(true, s_get, s_put); if (c == -1) { s_ptr = str + 1; switch ((c = *s_ptr++)) { case '\\': case '\'': case '"': break; case '\0': --s_ptr; /* FALLTHROUGH */ default: uwarnx(UWARNX "unknown escape sequence `\\%c'", c); rval = 1; } } s_prt(c); return (s_ptr - str - 1); #else const char *start = str; int value; int c; str++; switch (*str) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': for (c = 3, value = 0; c-- && isodigit(*str); str++) { value <<= 3; value += octtobin(*str); } uputc(value); return (str - start - 1); /* NOTREACHED */ case 'x': str++; for (value = 0; isxdigit(*str); str++) { value <<= 4; value += hextobin(*str); } if (value > UCHAR_MAX) { uwarnx(UWARNX "escape sequence out of range for character"); rval = 1; } uputc(value); return (str - start - 1); /* NOTREACHED */ case '\\': /* backslash */ uputc('\\'); break; case '\'': /* single quote */ uputc('\''); break; case '"': /* double quote */ uputc('"'); break; case 'a': /* alert */ uputc('\a'); break; case 'b': /* backspace */ uputc('\b'); break; case 'e': /* escape */ uputc(033); break; case 'f': /* form-feed */ uputc('\f'); break; case 'n': /* newline */ uputc('\n'); break; case 'r': /* carriage-return */ uputc('\r'); break; case 't': /* tab */ uputc('\t'); break; case 'v': /* vertical-tab */ uputc('\v'); break; default: uputc(*str); uwarnx(UWARNX "unknown escape sequence `\\%c'", *str); rval = 1; } return (1); #endif } static char * mklong(const char *str, int ch) { static char *copy; static size_t copysize; size_t len; len = strlen(str) + 2; if (copysize < len) { char *newcopy; copysize = len + 256; newcopy = realloc(copy, copysize); if (newcopy == NULL) { copysize = 0; free(copy); copy = NULL; return (NULL); } copy = newcopy; } (void) memmove(copy, str, len - 3); copy[len - 3] = 'l'; copy[len - 2] = ch; copy[len - 1] = '\0'; return (copy); } static int getchr(void) { if (!*gargv) return ((int)'\0'); return ((int)**gargv++); } static const char * getstr(void) { if (!*gargv) return (""); return (*gargv++); } static const char *number = "+-.0123456789"; static int getinteger(void) { if (!*gargv) return (0); if (**gargv && vstrchr(number, **gargv)) return (atoi(*gargv++)); return (0); } static long getlong(void) { long val; char *ep; if (!*gargv) return (0L); if (**gargv == '\"' || **gargv == '\'') return ((long)*((*gargv++)+1)); errno = 0; val = strtol(*gargv, &ep, 0); check_conversion(*gargv++, ep); return (val); } static unsigned long getulong(void) { unsigned long val; char *ep; if (!*gargv) return (0UL); if (**gargv == '\"' || **gargv == '\'') return ((unsigned long) *((*gargv++)+1)); errno = 0; val = strtoul(*gargv, &ep, 0); check_conversion(*gargv++, ep); return (val); } #ifndef MKSH_PRINTF_BUILTIN static double getdouble(void) { double val; char *ep; if (!*gargv) return (0.0); if (**gargv == '\"' || **gargv == '\'') return ((double)*((*gargv++)+1)); errno = 0; val = strtod(*gargv, &ep); check_conversion(*gargv++, ep); return (val); } #endif static void check_conversion(const char *s, const char *ep) { if (*ep) { if (ep == s) uwarnx(UWARNX "%s: expected numeric value", s); else uwarnx(UWARNX "%s: not completely converted", s); rval = 1; } else if (errno == ERANGE) { uwarnx(UWARNX "%s: %s", s, cstrerror(ERANGE)); rval = 1; } } static int usage(void) { ufprintf(ustderr, "usage: printf format [arg ...]\n"); return (1); } #ifdef MKSH_PRINTF_BUILTIN static int s_get(void) { return (*s_ptr++); } static void s_put(int c MKSH_A_UNUSED) { --s_ptr; } static void s_prt(int c) { char ts[4]; if ((unsigned int)c < 0x100) { ts[0] = c; c = 1; } else c = (int)utf_wctomb(ts, c - 0x100); shf_write(ts, c, shl_stdout); } #endif debian/mksh.postinst0000664000000000000000000000356212054735221011746 0ustar #!/bin/sh # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.postinst,v 1.10 2012/11/26 18:52:40 tg Exp $ set -e # This maintainer script can be called the following ways: # # * new-postinst "configure" [$most_recently_configured_version] # The package is unpacked; all dependencies are unpacked and, when there # are no circular dependencies, configured. # # * old-postinst "abort-upgrade" $new_version # * conflictors-postinst "abort-remove" "in-favour" $package # $new_version # * postinst "abort-remove" # * deconfigureds-postinst "abort-deconfigure" "in-favour" # $failed_install_package $fip_version ["removing" # $conflicting_package $cp_version] # The package is unpacked; all dependencies are at least Half-Installed, # previously been configured, and not removed. In some error situations, # dependencies may not be even fully unpacked. # # * postinst "triggered" "${triggers[*]}" # For trigger-only calls, i.e. if "configure" is not called. # remove debconf data from old versions of this package if test -e /bin/mksh.dropdebconf; then set +e echo purge | debconf-communicate mksh >/dev/null 2>&1 rm -f /bin/mksh.dropdebconf set -e fi case $1 in configure) update-alternatives --install /bin/ksh ksh /bin/mksh 12 \ --slave /usr/bin/ksh usr.bin.ksh /bin/mksh \ --slave /usr/share/man/man1/ksh.1.gz ksh.1.gz \ /usr/share/man/man1/mksh.1.gz update-alternatives --install /bin/ksh ksh /bin/mksh-static 11 \ --slave /usr/bin/ksh usr.bin.ksh /bin/mksh-static \ --slave /usr/share/man/man1/ksh.1.gz ksh.1.gz \ /usr/share/man/man1/mksh.1.gz add-shell /bin/mksh add-shell /bin/mksh-static ;; abort-upgrade|abort-remove|abort-deconfigure) ;; triggered) ;; *) echo >&2 "postinst called with unknown subcommand '$1'" exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/mksh.menu0000664000000000000000000000100311235100235011002 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.menu,v 1.4 2009/08/01 17:51:01 tg Exp $ #- # mksh16lg.xpm provides an alternative icon based on the mksh logo # mksh16.xpm is a bitmap creation especially for this size # mksh32.xpm is the mksh logo tweaked and scaled down to be useful # ?package(mksh):needs="text" \ section="Applications/Shells" \ title="mksh" longtitle="MirBSD Korn Shell" \ icon16x16="/usr/share/pixmaps/mksh16.xpm" \ icon32x32="/usr/share/pixmaps/mksh32.xpm" \ command="/bin/mksh -l" debian/mksh.install0000664000000000000000000000031712147210774011530 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.install,v 1.15 2013/05/22 18:43:47 tg Exp $ #- builddir/full/mksh bin/ builddir/legacy/lksh bin/ debian/.mkshrc etc/skel/ debian/mksh*.xpm usr/share/pixmaps/ debian/copyright0000664000000000000000000001047412140570527011134 0ustar This package was debianised by Thorsten Glaser on Sat, 28 May 2005 22:02:17 +0000. $MirOS: contrib/hosted/tg/deb/mksh/debian/copyright,v 1.34 2013/05/02 23:05:34 tg Exp $ It was downloaded from: https://www.mirbsd.org/MirOS/dist/mir/mksh/mksh-R46.tgz Licence: The MirBSD Korn Shell is covered by the MirOS Licence, which is OSI approved, as reproduced below. Binaries of the MirBSD Korn Shell on systems whose libc does not provide a strlcpy function, as well as mksh-static, will additionally contain an implementation under the ISC Licence which is OSI approved and also reproduced below. All Debian binaries of mksh R39 and up also pull in the UCB code SLOB printf.c to have a printf(1) builtin (also OSI approved). mksh16.xpm is hand-drawn; mksh16lg.xpm and mksh32.xpm are exports of https://www.mirbsd.org/pics/mksh.svg (the mksh logo). The MirBSD Korn Shell (mksh) is Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Thorsten “mirabilos” Glaser All rights reserved. The mksh logo is Copyright © 2008, 2009 Lukas U. Copyright © 2008, 2009 Thorsten “mirabilos” Glaser Provided that these terms and disclaimer and all copyright notices are retained or reproduced in an accompanying document, permission is granted to deal in this work without restriction, including un‐ limited rights to use, publicly perform, distribute, sell, modify, merge, give away, or sublicence. This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to the utmost extent permitted by applicable law, neither express nor implied; without malicious intent or gross negligence. In no event may a licensor, author or contributor be held liable for indirect, direct, other damage, loss, or other issues arising in any way out of dealing in the work, even if advised of the possibility of such damage or existence of a defect, except proven that it results out of said person’s immediate fault when using the work as intended. strlcpy.c is Copyright (c) 2006, 2008, 2009 Thorsten Glaser Copyright (c) 1998 Todd C. Miller Permission to use, copy, modify, and distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. printf.c is Copyright (c) 1989 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. debian/uhr0000664000000000000000000001762312110737613007723 0ustar #!/bin/mksh # $MirOS: contrib/hosted/tg/deb/mksh/debian/uhr,v 1.14 2013/02/19 18:07:46 tg Exp $ #- # Copyright © 2012, 2013 # Thorsten Glaser # # Provided that these terms and disclaimer and all copyright notices # are retained or reproduced in an accompanying document, permission # is granted to deal in this work without restriction, including un‐ # limited rights to use, publicly perform, distribute, sell, modify, # merge, give away, or sublicence. # # This work is provided “AS IS” and WITHOUT WARRANTY of any kind, to # the utmost extent permitted by applicable law, neither express nor # implied; without malicious intent or gross negligence. In no event # may a licensor, author or contributor be held liable for indirect, # direct, other damage, loss, or other issues arising in any way out # of dealing in the work, even if advised of the possibility of such # damage or existence of a defect, except proven that it results out # of said person’s immediate fault when using the work as intended. #- # Analoguhr mit Digitalanzeige. Grundlegende Annahme: schnelles Ter‐ # minal, d.h. keine Voroptimierung der Darstellung durch das Skript; # Font im Seitenverhältnis 1:2 (z.B. 9x18 aus XFree86® fixed-misc). if [[ $KSH_VERSION != @(\@\(#\)MIRBSD KSH R)@(4[1-9]|[5-9][0-9]|[1-9][0-9]+([0-9]))\ +([0-9])/+([0-9])/+([0-9])?(\ *) ]]; then print -u2 Uhr requires mksh R41 or newer. exit 1 fi typeset -Z6 tosleep # stupid GNU idiots breaking everything by default… grml… bcopt= bc --help >/dev/null 2>&1 && bcopt=-q function graceful { print -n '\033[;H\033[J' exit 0 } trap graceful INT TERM HUP trap got_sigwinch=1 WINCH while :; do got_sigwinch=0 print "\e[0m\nPregenerating arrays, please wait..." (( r = LINES * 2 )) (( r = (r > COLUMNS ? COLUMNS : r) / 2 - 1)) (( n = 2 * r + 1 )) set -A fb integer fb integer F_NO=0x00 M_NO=0x1F integer F_BG=0x01 M_BG=0x1E integer F_CC=0x02 M_CC=0x1D integer F_HP=0x04 M_HP=0x1B integer F_MP=0x08 M_MP=0x17 integer F_SP=0x10 M_SP=0x0F integer B_BG=0x01 B_BLK=0x02 B_NB=0x0C B_DOT=0x10 set -U # - BLK BG NB DOT NB|DOT set -A m2c \ 0x20 1#▀ 1#* 1#▀ 1#· 1#░ \ 1#▄ 1#█ 1#█ 1#█ 1#▆ 1#█ \ 1#* 1#█ 1## 1#◘ 1#⁂ 1#◙ \ 1#▄ 1#█ 1#▆ 1#█ 1#▒ 1#▓ \ 1#. 1#▛ 1#☿ 1#▛ 1#: 1#▒ \ 1#▄ 1#█ 1#◙ 1#█ 1#▆ 1#▓ typeset -i1 m2c[*] set -A m2m integer m2m integer i=-1 j while (( ++i <= 0x1F )); do (( m2m[i] = !i ? 0 : (i & B_BLK) ? 1 : (i & B_NB) ? ((i & B_DOT) ? 5 : 3) : (i & B_DOT) ? 4 : 2 )) done function refresh { local -i10 i j z s c local t for i in "$@"; do (( z = (i / n) & 0xFFFE )) (( s = i % n )) (( i = m2m[fb[z * n + s]] )) (( j = m2m[fb[(z + 1) * n + s]] )) print -n "\e[$((z / 2 + 1));$((s + 1))H${m2c[j * 6 + i]#1#}" done print -n "\e[$((r / 2 + 1));$((r + 1))H\e[7mⓄ\e[0m" } # put arrayname x y function put { local _x=$(($2)) _y=$(($3)) _i nameref _c=$4 _px=$1 (( _i = (r - _y) * n + _x + r )) _px+=($_i) } # retrace arrayname maskname colourname set -A px function retrace { nameref _px=$1 _m=$2 _c=$3 local _i for _i in "${_px[@]}"; do (( fb[_i] = (fb[_i] & _m) | _c )) done px+=("${_px[@]}") } # precalculate all lines’ endpoints with bc and paths with Bresenham integer x y dx sx dy sy e f bc -l $bcopt |& print -p scale=20 print -p r=$r print -p o=r print -p 'define p(t) { auto d d = 90 - t if (d < 0) d = 360 + d return (d * 3.1415926535897932 / 180) }' # minutes and seconds – full length, 60 items i=-1 while (( ++i < 60 )); do eval set -A lms$i print -p "r * c(p($i * 6))" read -p S; [[ $S = ?(-).* ]] && S=0 x=${S%%.*} print -p "r * s(p($i * 6))" read -p S; [[ $S = ?(-).* ]] && S=0 y=${S%%.*} (( dx = x < 0 ? -x : x )) (( sx = x < 0 ? 1 : -1 )) (( dy = y < 0 ? y : -y )) (( sy = y < 0 ? 1 : -1 )) (( e = dx + dy )) while :; do put lms$i x y (( !x && !y )) && break (( f = 2 * e )) if (( f > dy )); then (( e += dy )) (( x += sx )) fi if (( f < dx )); then (( e += dx )) (( y += sy )) fi done done # hours – 2/3 length, 60 items (5 per hour) print -p 'r = o * 2 / 3' i=-1 while (( ++i < 60 )); do eval set -A lh$i print -p "r * c(p($i * 6))" read -p S; [[ $S = ?(-).* ]] && S=0 x=${S%%.*} print -p "r * s(p($i * 6))" read -p S; [[ $S = ?(-).* ]] && S=0 y=${S%%.*} (( dx = x < 0 ? -x : x )) (( sx = x < 0 ? 1 : -1 )) (( dy = y < 0 ? y : -y )) (( sy = y < 0 ? 1 : -1 )) (( e = dx + dy )) while :; do put lh$i x y (( !x && !y )) && break (( f = 2 * e )) if (( f > dy )); then (( e += dy )) (( x += sx )) fi if (( f < dx )); then (( e += dx )) (( y += sy )) fi done done # hour markers – 80% length, 12 items print -p 'r = o * 8 / 10' i=-1 set -A mkx set -A mky while (( ++i < 12 )); do print -p "r * c(p($i * 30))" read -p S; [[ $S = ?(-).* ]] && S=0 mkx[i]=${S%%.*} print -p "r * s(p($i * 30))" read -p S; [[ $S = ?(-).* ]] && S=0 mky[i]=${S%%.*} done exec 3>&p; exec 3>&- (( L = LINES >= (COLUMNS / 2) ? (COLUMNS / 2) : LINES )) # fine-tuning of roman numeral position via screen size (( ++mkx[7] )) (( ++mkx[8] )) case $L { (22|23) (( ++mkx[6] )) ;| (23) (( mky[1] += 2 )) (( mky[2] += 2 )) (( mky[10] += 2 )) (( mky[11] += 2 )) ;; (24|25|29|30|31|34) (( mky[4] += 2 )) (( mky[8] += 2 )) ;| (27|28|29) (( ++mkx[10] )) (( mky[8] += 2 )) (( mky[9] += 2 )) (( mky[10] += 2 )) ;| (27|29|31) (( mky[0] -= 2 )) ;| (27) (( --mkx[4] )) (( --mkx[5] )) (( ++mkx[6] )) (( mkx[7] += 2 )) (( ++mkx[8] )) (( ++mkx[10] )) ;; (29) (( mky[5] += 2 )) (( mky[7] += 2 )) ;; (30) (( mky[11] -= 2 )) ;; } (( mky[0] += 2 * (L & 1) )) # clear framebuffer and screen set -A fb integer fb print -n -- '\e[H\e[J' # draw hour markers set -A lb integer e f=-1 k (( L > 21 )) && while (( ++f < 12 )); do (( i=mkx[f] )) (( j = mky[f] & ~1 )) case $f { (0) e=7 S='# # # # # # ## # # #' ;; (1) e=1 S='###' ;; (2) e=3 S='# ## ## #' ;; (3) e=5 S='# # ## # ## # #' ;; (4) e=5 S='# # ## # ## # ' ;; (5) e=3 S='# ## # # ' ;; (6) e=5 S='# # ## # # # #' ;; (7) e=7 S='# # # ## # # # # # #' ;; (8) e=9 S='# # # # ## # # # # # # # #' ;; (9) e=5 S='# # ## # # # #' ;; (10) e=3 S='# # # # #' ;; (11) e=5 S='# # # # ## # #' ;; } Y='0 1 2' if (( L > 26 )); then d='###########' S="${d::e+2} ${S::e} ${S: e:e} ${S:2*e} ${d::e+2}" (( e += 2 )) Y+=' 3 4' (( j += 2 )) fi (( i -= e / 2 )) k=0 for y in $Y; do (( y = j - y * 2 + 1 + (r & 1) )) (( dy = y + 1 )) (( x = i - 1 )) while (( ++x < (i + e) )); do [[ ${S: k++:1} = ' ' ]] && continue put lb x y put lb x dy done done done retrace lb M_BG F_BG # draw outer circle with Bresenham set -A lc integer x=r y=-1 f=r dx dy while (( y < x )); do (( dy = y++ * 2 + 1 )) if (( y )); then (( f -= dy )) if (( f < 0 )); then (( dx = 1 - x-- * 2 )) (( f -= dx )) fi fi put lc x y put lc -x y put lc -x -y put lc x -y put lc y x put lc -y x put lc -y -x put lc y -x done retrace lc M_CC F_CC refresh "${px[@]}"; set -A px set -A do -- -1 -1 -1 isfirst=1 while (( !got_sigwinch )); do if (( isfirst )); then isfirst=0 else (( tosleep = 1000000 - ${EPOCHREALTIME#*.} )) if (( tosleep > 999999 )); then sleep 0.2 (( tosleep = 1000000 - ${EPOCHREALTIME#*.} )) fi if (( tosleep > 999999 )); then # huh… maybe no gettimeofday(2) here while :; do d=$(date +'%H %M %S,%d %b %Y') set -A dt $d (( dt[2] == do[2] )) || break sleep 0.1 done else sleep 0.$tosleep fi fi d=$(date +'%H %M %S,%d %b %Y') S=${d#*,} d=${d%,*} set -A dt $d (( dt[0] = (dt[0] % 12) * 5 + (dt[1] / 12) )) if (( do[2] != -1 )); then retrace lms$((do[2])) M_SP F_NO (( do[1] == dt[1] )) || retrace lms$((do[1])) M_MP F_NO (( do[0] == dt[0] )) || retrace lh$((do[0])) M_HP F_NO fi (( do[0] == dt[0] )) || retrace lh$((dt[0])) M_HP F_HP (( do[1] == dt[1] )) || retrace lms$((dt[1])) M_MP F_MP retrace lms$((dt[2])) M_SP F_SP refresh "${px[@]}"; set -A px set -A do -- "${dt[@]}" print -n "\e[1;$((n - ${%S} + 1))H$S\e[1;1H${d// /:}" done done debian/pdksh.links0000664000000000000000000000032312054730777011355 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/pdksh.links,v 1.1 2012/11/26 18:16:06 tg Exp $ #- bin/lksh bin/pdksh usr/share/doc/mksh usr/share/doc/pdksh usr/share/man/man1/lksh.1.gz usr/share/man/man1/pdksh.1.gz debian/pdksh.preinst0000664000000000000000000000342612054732754011725 0ustar #!/bin/sh # $MirOS: contrib/hosted/tg/deb/mksh/debian/pdksh.preinst,v 1.5 2012/11/26 18:32:51 tg Exp $ set -e # This maintainer script can be called the following ways: # # * new-preinst "install" [$old_version] # * new-preinst "upgrade" [$old_version] # * old-preinst "abort-upgrade" $new_version # Essential packages and Pre-Depends are available. Pre-Depends have # been configured once, but may be unpacked or Half-Configured only, # or, for "abort-upgrade", Half-Installed if their upgrade failed. case $1 in install|upgrade) (update-alternatives --remove ksh /bin/pdksh || :) (remove-shell /bin/pdksh || :) ;; abort-upgrade) ;; *) echo >&2 "preinst called with unknown subcommand '$1'" exit 1 ;; esac # # Due to switching the source package from pdksh to mksh, we cannot # use apt-listchanges with a NEWS.Debian file here; neither can we # use debconf as that would be considered abuse/nagging. # test $1 = upgrade && test -n "$2" && \ dpkg --compare-versions "$2" lt '40.9.20120628-1~' && \ echo ' +===============================================================+ | Note for the pdksh -> mksh transition | +---------------------------------------------------------------+ | If you have any user accounts with /bin/pdksh as login shell, | | change these to /bin/mksh because pdksh will be replaced by a | | symlink to lksh, a variant of mksh used to run legacy scripts | | but not suitable for interactive use. For sane defaults, also | | have users copy /etc/skel/.mkshrc into their home directories | | and unset ENV. This warning will only be shown this once. | +===============================================================+ ' # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/mksh.prerm0000664000000000000000000000215012054732753011207 0ustar #!/bin/sh # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.prerm,v 1.10 2012/11/26 18:32:50 tg Exp $ set -e # This maintainer script can be called the following ways: # # * prerm "remove" # * old-prerm "upgrade" $new_version # * conflictors-prerm "remove" "in-favour" $package $new_version # * deconfigureds-prerm "deconfigure" "in-favour" # $package_being_installed $pbi_version ["removing" # $conflicting_package $cp_version] # The package and dependencies are at least Half-Installed; dependencies # have previously been configured and not removed. # # * new-prerm "failed-upgrade" $old_version # Called when 'old-prerm "upgrade"' fails; new package not unpacked, all # other constraints the same as above. case $1 in remove|deconfigure) update-alternatives --remove ksh /bin/mksh update-alternatives --remove ksh /bin/mksh-static remove-shell /bin/mksh remove-shell /bin/mksh-static ;; upgrade|failed-upgrade) ;; *) echo >&2 "prerm called with unknown subcommand '$1'" exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/mksh.examples0000664000000000000000000000016612070653205011675 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.examples,v 1.6 2013/01/01 21:34:36 tg Exp $ #- debian/uhr dot.mkshrc debian/source/0000775000000000000000000000000012147216014010466 5ustar debian/source/format0000664000000000000000000000001412106177022011674 0ustar 3.0 (quilt) debian/.mkshrc0000664000000000000000000000212312044040337010453 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/.mkshrc,v 1.7 2012/10/30 21:04:06 tg Exp $ #- # Skeleton ~/.mkshrc file adding a level of indirection # check if this is really mksh # {(( case $KSH_VERSION in *MIRBSD\ KSH*) ;; *) return 0 ;; esac # } # source the system-wide mkshrc file [[ -s /etc/mkshrc ]] && . /etc/mkshrc # prepend $debian_chroot support to PS1 p=$'\001' if [[ ${PS1:1:1} = $'\r' ]]; then p=${PS1:0:1} PS1=${PS1:2} else p=$'\001' fi [[ -z ${debian_chroot:-} && -r /etc/debian_chroot ]] && \ debian_chroot=$(> 1 )) ((# uari = -5 >> 1 )) print -r -- $((x++)):$sari=$uari. #8 (( sari = -2 )) ((# uari = sari )) print -r -- $((x++)):$sari=$uari. #9 debian/changelog0000664000000000000000000043605012256173017011056 0ustar mksh (46-2ubuntu3) trusty; urgency=medium * Enable klibc-based build on arm64 as well. -- Adam Conrad Mon, 23 Dec 2013 19:48:34 -0700 mksh (46-2ubuntu2) trusty; urgency=low * Enable klibc-based build on ppc64el as well. -- Adam Conrad Sun, 15 Dec 2013 22:41:02 -0700 mksh (46-2ubuntu1) saucy; urgency=low * Merge from Debian, Remaining changes: - Do not build-depend on dietlibc, which is not in main. -- Dmitrijs Ledkovs Mon, 03 Jun 2013 16:38:39 +0100 mksh (46-2) unstable; urgency=low * The “Universal OS – freedom of choice” upload * Update to latest upstream CVS HEAD; changes: - [tg] Do not accidentally remove lksh.1 for in-srcdir builds - [tg] Fix post-build non-‘-Q’ output for lksh - [tg] Silence some configure-time warnings for clang-3.2 and GCC * Prepare lksh for being used as /bin/sh (with printf builtin); put into NEWS.Debian instruction to change the symlink * Drop printf builtin from mksh and mksh-static (they can still be used as /bin/sh but that brings back #532324; cf. #539158) * Update README.Debian and package Description accordingly * Write a message to buildd admins, to keep the chroot up-to-date (and remind them of the /dev/tty and /dev/ptmx necessities), to the build log * Make the localedef failure warning message more clear -- Thorsten Glaser Wed, 22 May 2013 19:25:38 +0000 mksh (46-1) unstable; urgency=low * The “Omas” upload * Update to latest upstream stable release; changes: - [tg] dot.mkshrc: prevent lksh from running it - [tg] Add the lksh manual page to the mksh distribution - [tg] Make both lksh and mksh interpret numbers with a leading digit zero (‘0’) as octal precisely iff “set -o posix” is active - [tg] Point out the octal digit and the integer arithmetic differences from POSuX verbosely in the manual pages (point people who need octals to “set -o posix” and who need longs to lksh) and elaborate on the horrors of ISO C Undefined Behaviour which is allowed to delete all your data - [tg] Unbreak “set -o” (list flags) in lksh on LP64 machines - [tg] Implement Emacs mode PgUp as Vi insert mode Cur↑ for Yofuh - [tg] Allow setting both “set -o sh” and “set -o posix”, if done in the same command; shuffle around compatibility levels (mksh/lksh, with -o sh, with -o posix) again; permit a /bin/sh to set either or both - [tg] Sync lksh manual page with the exact code ifdefs - [tg] Change more use of signed integer to use unsigned instead - [tg] Implement “set -o pipefail” like AT&T ksh93 and GNU bash do - [tg] dot.mkshrc: provide hd(1) in Pure mksh™ for fallback - [tg] Implement VALSUBs (value substitutions): ${|REPLY=foo;} * Let /bin/sh use both -o posix and -o sh for better standards compliance * Improve README.Debian -- Thorsten Glaser Thu, 02 May 2013 23:01:38 +0000 mksh (45-1) unstable; urgency=low * New upstream stable release; changes: - [tg] Make “set -x” print the commands run in escaped form - [tg] PS4 in dot.mkshrc is now timestamped - [tg] The &> GNU bash I/O redir is no longer parsed in -o posix, -o sh modes, lksh (breaks valid scripts) - [tg] Implement ${ …;} more efficiently (deleted-open files) - [tg] For shf, %#s (if you can get it past GCC’s printf format attribute) calls print_value_quoted, ignoring field width and precision - [tg] Catch “typeset =” (regression) with better error message - [tg, Tonnerre Lombard] add “doch” alias to dot.mkshrc which just repeats the last input line with sudo(8) - [tg] Use unsigned integers for all calculations, to avoid ISO C “Undefined Behaviour” (and implementation-defined behaviour) throughout (most of) the code; emulate signed integer arithmetics using unsigned; not-lksh only - [tg] Emulate signed modulo naïvely, for correct sign of the result - [tg] Add <<< and >>> for ROL and ROR (rotate left and right, respectively) operations, <<<= and >>> assignments; bitwise AND the RHS of a shift/rotate op with 31 (not for lksh) - [tg] Remove a warning by working around a workaround found in dietlibc which works around a bug in broken software such as GNU tar (really!) - [tg] Correct and simplify list and categorisation of built-in commands as POSIX special and “everything else” plus a flag to keep assignments - [tg] Handle ((foo)) as “let]” internally to avoid a conflict with user- defined functions called let (LP#1156707) - [tg] Clean up the code * Upload to unstable -- Thorsten Glaser Fri, 26 Apr 2013 22:23:42 +0000 mksh (44-1) experimental; urgency=low * New upstream stable release; changes: - [tg] "$@" always generates words; bug spotted by engla in IRC - [tg] Optimise print_columns display to use the screen space better -- Thorsten Glaser Tue, 05 Mar 2013 17:07:37 +0000 mksh (43-1) experimental; urgency=medium * New upstream stable release; changes: - [tg] Do not permit $'…' and $"…" in anything that looks like a string, as old scripts, like ncurses’, depend on behaviour not guaranteed by POSIX regarding unescaped dollar signs there - [dalias] Make detection of function prototypes more reliable - [tg] Quote setenv arguments for eval properly in dot.mkshrc - [tg] Validate parameter names for typeset, export, etc. - [tg] Provide a classic BSD echo builtin for /bin/sh on MidnightBSD - [tg] When generating Makefrag.inc put list of check_categories inside - [tg] Actually test all echo(1) flavours and MidnightBSD /bin/sh hacks * Updated “Uhr” example script -- Thorsten Glaser Tue, 19 Feb 2013 19:11:41 +0000 mksh (42b-1) experimental; urgency=medium * The “Acetylsalicylsäure++” upload * Drop B-D on pax, not really needed since I was forced to switch to full debhelper for 40.9.20121124-2 again * Add linux-libc-dev to B-U for klibc as it uses kernel headers (don’t do something similar for kFreeBSD or Hurd: unnecessary) * Merge changelog for upload: mksh (40.9.20120630-7) unstable * Use upstream .orig.tar.gz files unchanged - printf.c lives in debian/ now, symlinked in the CVS packaging repo ⇒ change meat to copy over for building * Simplify rules and watch files accordingly * New upstream must-have bugfixes stable release: - LP#1104543 fix was too strict (Closes: #700526) - Correctly initialise memory (Closes: #700604) * Add linux-libc-dev to “dependencies” output, too (see above) -- Thorsten Glaser Fri, 15 Feb 2013 23:37:12 +0000 mksh (41.9.20130210) experimental; urgency=low * The “remedies for frustration – bzr lessons-learned” upload * Debian-relevant changes from R41-stable branch: - Fix getn and some cases of possible array bounds trespasses - Fix “command shift”, reported by «ormaaj:#!/bin/mksh» - Fix regression wrt lists in functions and “set -e” (LP#1104543) * Update to mksh CVS HEAD; Debian-relevant changes: - Fix ${ precmd;} in dot.mkshrc to retain the errorlevel - Prefer const-clean sys_errlist[] to strerror(3) - Permit $"…" and $'…' everywhere except in the body of here documents that are not here strings - Use full recursive parser for double-quoted here strings, and reuse code between here strings and here documents - #ifdef DEBUG_LEAKS free all fds and memory on exit (LP#1106116) - Don’t close stdout/stderr with redirections, dup /dev/null instead, always, both in dot.mkshrc and the testsuite, it does break! - Handle ${ …;} like functions in that local and return DWIW; use it for the big chunk in $PS1 to avoid fork(2)ing (at cost of tempfiles; dot.mkshrc is a sample, adjust to your needs) * Merge changelog for upload: mksh (40.9.20120630-5) unstable -- Thorsten Glaser Mon, 11 Feb 2013 14:41:10 +0100 mksh (41.1-6) experimental; urgency=low * Brown paperbag upload * Fix traps for “set +e”, too (Really Closes: #696823) -- Thorsten Glaser Tue, 01 Jan 2013 22:25:40 +0000 mksh (41.1-5) experimental; urgency=low * The “huh an m68k buildd is more fun than manual scheduling” upload * Update to otherwise unpatched head of mksh R41-stable branch: - [tg, RT] Bunch of portability and build system fixes - [tg] Fix running the ERR and EXIT traps in situations with set -e and possibly eval (Closes: #696823) * Update dot.mkshrc to CVS HEAD to have ${ precmd;} again * Add my Uhr as contributed example of what to do with mksh ;-) -- Thorsten Glaser Tue, 01 Jan 2013 21:31:41 +0000 mksh (41.1-4) experimental; urgency=low * The “maybe amd64 buildd chroot got upgraded by now…” upload * Update to head of mksh R41-stable branch: - fix mistake in hash collision resolution implementation -- Thorsten Glaser Sat, 08 Dec 2012 19:05:46 +0000 mksh (41.1-3) experimental; urgency=low * The “waiting for clang-3.2 to pass NEW” upload * Update to head of mksh R41-stable branch: - we use -fno-asynchronous-unwind-tables for GCC now - some warning fixes, mostly -Wsign-compare -- Thorsten Glaser Wed, 05 Dec 2012 20:06:09 +0000 mksh (41.1-2) experimental; urgency=low * The “Geier” upload (keep in experimental for now) * New upstream formal stable release; changes: - [tg] Fix an input command line editing display redrawing issue - [tg] Track the tty to keep $COLUMNS and $LINES up-to-date after a SIGWINCH even in scripts * Update to mksh R41-stable branch: - buildsystem warning fixes - fixes for issues discovered by LLVM+Clang scan-build * Update debian/watch file: distfiles are .tgz now * debian/meat: Fix $CC invocation for B-U generation and be more robust -- Thorsten Glaser Tue, 04 Dec 2012 01:38:13 +0000 mksh (40.9.20121124-2) experimental; urgency=low * The “other littlest” upload * Redo packaging to use debhelper again (Closes: #690381) -- Thorsten Glaser Mon, 26 Nov 2012 18:11:39 +0000 mksh (40.9.20121124-1) experimental; urgency=low * The “Marek” upload, to experimental, people please test test test! * New CVS snapshot: - [tg] Make dot.mkshrc usable with “set -o nounset” / “set -u” - [tg, Clint Adams] Clean up and optimise the error handling code - [tg] Fix and add some checks in the testsuite - [tg] Sort list of variables in the source code when possible - [tg] Add $BASHPID (for ormaaj) and $MKSH_UNIXTIME - [tg] Improve documentation, #ksh IRC channel homepage - [tg, RT] Minix 2 also doesn’t have gettimeofday(2) ⇒ check for it * Fix mailing list reference in lksh(1) manpage * Policy 3.9.4: introduce Built-Using header -- Thorsten Glaser Sat, 24 Nov 2012 13:20:41 +0000 mksh (40.9.20121030-1) experimental; urgency=low * The “cnuke” upload, to experimental (for testing the changes by users) - TODO: bump S-V and introduce Built-Using header, now that it is (finally) standardised * New CVS snapshot: - [tg] Apply speed improvements and add MKSH_SMALL_BUT_FAST - [tg] Make quoted output of “typeset -p” AT&T ksh93 compatible - [tg] Implement ${foo@Q} like ${foo:Q} in make(1) - [tg] Remove some unused code; more int → bool conversion - [tg] Fix ulimit builtin usage to match what limits we actually know - [tg] Allow overriding /etc location, experts only (LP: #1039713) - [tg, Todd Miller] Avoid changing ps(1) output by accident - [tg, ft, Christian Neukirchen] Detect zsh 2.5.02/NeXTstep for Build.sh - [tg] Detect musl-gcc wrapper, define _BSD_SOURCE there, which is totally bogus, but musl, just like dietlibc, gets it wrong - [tg] Improve compile-time assertions - [tg] Repair select builtin without any choices given - [tg] Add -DMKSH_GCC55009 hack to avoid some compile-time assertions and introduce arith-mandatory in check.t to substitute for missing that compile-time check; will change (related to LP#1058035) - [tg] Rewrite lots of code to not rely on -fwrapv so much - [tg] Build.sh: Fix flock(2) detection on GNU/Linux - [Andrew Kudryashov] Manpage: fix default for HISTSIZE - [tg] Add debugging aid (split-screen mechanism using GNU screen) - [Andrew Kudryashov] Manpage, Website: point out correct mailing list - [tg, Andrew Kudryashov] Fix ~/nonexistant tab completion - [tg] Optimise sh -c “[^]\t\n"-$&-*;-?[\\|]*” to exec, inspired by Jilles Tjoelker (-DMKSH_DISABLE_EXPERIMENTAL to ostracise) - [tg] Fix $? inside eval (RedHat BZ#865121) - [tg] Implement ksh93 feature ${ foo;} (second attempt, exclude with -DMKSH_DISABLE_EXPERIMENTAL, using tempfiles this time), but do not use it in dot.mkshrc yet (until stable) - [tg] Run SIGINT check more reliably in the cat builtin (LP#1058815) - [tg] Handle ^C in here documents, COMSUB, arith (Closes: #691116) * Bump versioned B-D on libklibc-dev [armhf] to known-fixed * In .mkshrc, read /etc/debian_chroot if necessary, like GNU bash -- Thorsten Glaser Tue, 30 Oct 2012 21:15:13 +0000 mksh (40.9.20120630-7) unstable; urgency=low * The “customer service” upload * Correct the fix for LP#1104543 (Closes: #700526) * Fix uninitialised memory access (Closes: #700604) -- Thorsten Glaser Fri, 15 Feb 2013 19:00:40 +0000 mksh (40.9.20120630-6) unstable; urgency=low * Revert the fix for LP#1104543 as it causes Debian #700526 (not closing as it’s not a proper fix) -- Thorsten Glaser Fri, 15 Feb 2013 17:44:20 +0000 mksh (40.9.20120630-5) unstable; urgency=low * Bump versioned B-D on libklibc-dev [armhf] to known-fixed * Fix input command line editing display redrawing issue * Backport fixes to the regression testsuite and some new tests * Add bugfixes for error handling related issues: - behaviour of $? in eval (RedHat BZ#865121) - running the EXIT and ERR traps (Closes: #696823) - set -e vs. use of &&/|| in a function (LP#1104543) * Add appropriate regression tests for these fixes * Update the mailing list address in lksh.1 manpage * In /etc/skel/.mkshrc handle /etc/debian_chroot like bashrc does * Update copyright year -- Thorsten Glaser Mon, 11 Feb 2013 14:14:37 +0100 mksh (40.9.20120630-4) unstable; urgency=low * The “Cookie” upload * Revert Ubuntu-specific change to drop dietlibc B-D * Bump versioned B-D on dietlibc-dev [armhf] to known-fixed -- Thorsten Glaser Sat, 13 Oct 2012 14:56:50 +0000 mksh (40.9.20120630-3ubuntu1) quantal; urgency=low * The “GNU Chagrin Collection” upload * Merge from Debian unstable. Remaining changes: - Remove dietlibc-dev build-deps, unnecessary for Ubuntu. * Move some compile-time checks to run-time (LP#1058035) -- Thorsten Glaser Sat, 29 Sep 2012 22:00:14 +0000 mksh (40.9.20120630-3) unstable; urgency=low * The “PHP Securiwhat?” upload * Apply cherry-picked fixes from mksh CVS (branch mksh-wheezy): - Upgrade to Unicode 6.1.0 - Plug memory leak in tab completion code - Fix tab completion for tilde, related to LP#1025843 - Fix reentry of here documents (LP#1030581) -- Thorsten Glaser Mon, 03 Sep 2012 19:28:19 +0000 mksh (40.9.20120630-2) unstable; urgency=low * The “kutweer” upload * Apply cherry-picked fixes from mksh CVS (branch mksh-wheezy): - [tg] Fix CONSERVATIVE_FDS use-before-definition bug - [tg] Correct a regression when tab-completing (LP#1025843) and fix bugs in the same code wrt. completion display and other expansions * Document use of CONSERVATIVE_FDS in lksh manpage -- Thorsten Glaser Fri, 20 Jul 2012 23:32:37 +0000 mksh (40.9.20120630-1) unstable; urgency=low * The “GC2TDN7” upload * Update to mksh CVS HEAD for manpage string improvements * Point to IRC and mailing list in the lksh manual page * Drop redundant -DMKSH_NO_LIMITS in klibc builds * Mention /etc/skel/.mkshrc in the pdksh upgrade message * Bump pdksh versioned dep on mksh, to have complete changelog * Rework some more texts and hints * Say hello to *buntu main, pdksh is gone -- Thorsten Glaser Sat, 30 Jun 2012 17:30:11 +0000 mksh (40.9.20120628-1) unstable; urgency=low * The “meet a deadline” upload * Update to mksh-HEAD: - [tg] Legacy mksh: use “long”, not “int32_t”, for arithmetics - [tg] Legacy mksh: allow dummy set ±o emacs, gmacs, vi, … - [tg] fix trimming with positional parameters (Closes: #48453) - [tg] ensure that case end tokens are not mixed up (Closes: #220272) - [tg] make alias definitions in mksh -c work (Closes: #517009), hack * Show note about login shell transition in postinst (Closes: #679322) -- Thorsten Glaser Thu, 28 Jun 2012 22:44:00 +0200 mksh (40.9.20120626-2) unstable; urgency=low * The “So long, and thanks for all the fish!” upload * Transition /usr/share/doc/pdksh to a symlink manually, as dpkg won’t do that for us (thanks Robert Luberda) * Disabling ProPolice/SSP for klibc’s a bit tricky, fix -- Thorsten Glaser Wed, 27 Jun 2012 07:16:03 +0000 mksh (40.9.20120626-1) unstable; urgency=low * The “popcorn!” upload * Forgot in 40.9.20120518-2 to set $CC correctly when cross-building * By request of pdksh maintainer take over the pdksh binary package and make it transitional * Update to mksh-HEAD: - [tg] Fix some issues found by Coverity and some found while fixing - [tg] Build.sh options: -t target-filename (instead of mksh); -L to build a legacy mksh, current changes: > different $KSH_VERSION “LEGACY KSH” instead of “MIRBSD KSH” > purely for running ksh88 and pdksh scripts; no command line editing > use traditional “set -- $(getopt …); echo $?” mode always > do not keep file descriptors private > parse leading-zero-digit numbers as octal > no mksh extension -T * Write an lksh(1) manual page * Make build process better error-resistent -- Thorsten Glaser Tue, 26 Jun 2012 21:12:43 +0000 mksh (40.9.20120518-2) unstable; urgency=low * The “what’s a bit or hurd hacking compared to m68k reviving” upload * Enable dietlibc and klibc on as many targets as possible, even any version not positively known to break the mtests, in debian/control and switch debian/meat to paranoia (shy of freeze) mode to use only eglibc unless the testsuite is allowed to be run * Also rebuild against the new klibc release 2.0 * Use debhelper-less package build system * TODO: Add Built-Using header once that is documented -- Thorsten Glaser Thu, 07 Jun 2012 00:26:49 +0000 mksh (40.9.20120518-1) unstable; urgency=low * The “lots of bugfixing” upload * Update to mksh-HEAD: - [tg] Fix some bugs in Build.sh - [tg, ciruZ] Switch from NZAT to NZAAT hash for better range coverage; turns out that the never-zero property of NZAT was not in fact needed for hash tables as implemented in mksh (also, align, and 75% are enough) - [tg] Add MKSH_NO_CMDLINE_EDITING, MKSH_DISABLE_TTY_WARNING - [RT] Port to Coherent UNIX - [tg] Enable some options by default for some ports, for instance, since BeOS can never have a controlling tty, the option disabling that warning - [tg] Some bugfixes, prompted by RT and Valgrind - [RT] Disable sigsuspend(2) on Syllable Desktop - [tg] Fix several issues with typeset -p (LP: #993847) - [tg, RT] Detect lcc, klibc - [tg] Check for klibc sigsuspend fix - [RT] Apply inline fix for lcc, e.g. with libc5 * Require klibc again (sigsuspend availability is now checked) -- Thorsten Glaser Fri, 18 May 2012 16:53:35 +0000 mksh (40.9.20120414-3) unstable; urgency=high * The “I could probably use pause() instead” upload * Disable klibc except for a positive-list of architectures that are using RT signals already, due to non-RT sigsuspend brokenness * Drop m68k specific klibc workaround (it’s the above) * Urgency high as mksh-static is subtly broken on many platforms -- Thorsten Glaser Sat, 05 May 2012 21:42:09 +0000 mksh (40.9.20120414-2) unstable; urgency=low * The “still more buggy than I had hoped” upload * When running mtests, time-limit every test to prevent hanging builds * Add back ppc64, packages.d.o brokenness had me fooled * m68k specific klibc workaround: -g but no -O are needed (gcc bug?) -- Thorsten Glaser Sat, 14 Apr 2012 18:48:37 +0000 mksh (40.9.20120414-1) unstable; urgency=low * The “ziek zijn zuigt” upload * d/source/format 3.0 (quilt), with local single-debian-patch * Honour DevRef §6.7.8.2.(4) wrt. top-level directory name * Base on mksh-current HEAD of today: - [tg] New Build.sh environment configurable: LDSTATIC (empty) - [tg] Improve LTO effect by always adding our copies of distributed utility function sources when linking statically (i.e. LDSTATIC is not empty) - [tg] Drop deprecated hack for lines beginning with an exclamation mark - [tg] No longer interpret numbers beginning with a 0 digit as octal - [tg] Attempt to use -fwrapv on more compilers - [tg, RT] Better portability to 386BSD - [tg] No longer use mkstemp(3) or tempnam(3) functions, do our own - [tg] Fix some bugs in the manual page * Try klibc and fix missing optimisation for size with it * Note klibc and dietlibc both disable ProPolice SSP -- Thorsten Glaser Sat, 14 Apr 2012 16:58:58 +0000 mksh (40.5-3) unstable; urgency=low * The “Basti” intermediate upload * Add a minitest that select(2) works (fails on dietlibc/ppc64) * Patch up to mksh-current HEAD of today: - [tg, RT] Implement fcntl(2)-based advisory locking as an alternative iff flock(2) is not found (LP: #912691); keep trying to lock in the face of EINTR on OSes that throw it - [tg] Improve testsuite, build-time checks and debugging output - [tg, RT, winstonw] Improve portability to BeOS (broken), Cygwin (good), SCO OpenServer (good), SCO UnixWare (good), USL C, Plan 9 (broken), … - [tg] rlim_t is supposed to be unsigned - [tg] Some code and warning cleanup * Revert the 40.5-2 dietlibc test change as promised -- Thorsten Glaser Thu, 29 Mar 2012 19:35:09 +0000 mksh (40.5-2) unstable; urgency=low * The “meow korn shell” upload * We build on DEB_BUILD_ARCH for DEB_HOST_ARCH, not the other way round, take this in mind when deciding based on the target system (DEB_HOST) * Add hotfix for regression in 40.5 wrt. tty initialisation handling - [tg] Fix severe regression wrt. initialising tty(4) states * Build-Depend on newer dietlibc upload for testing that (will be removed in the next upload when 40.6 is out); if needed, we can always block the 40.5-1 upload from entering testing * Build with --as-needed -- Thorsten Glaser Sun, 25 Mar 2012 20:34:46 +0000 mksh (40.5-1) unstable; urgency=low * The “amused” upload * Patch up to mksh R40-stable branch of today: - [tg, RT, lewellyn] Better support for SkyOS, Minix 3, Ninix 3, QNX and various BSD/OS versions - [tg] Fix regression in mirtoconf output wrt. cached values (introduced with check if divmod fixup was needed) - [tg] Drop some Android-specific unused code (lsmod builtin) - [tg] More code cleanup and new developer-only debugging functions - [tg, Andrew Kudryashov] Fix some tab completion related escaping bugs - [tg, draenog] Honour COLUMNS and LINES from the environment in scripts - [tg, winstonw] The sleep built-in utility now blocks more signals - [tg] Warn when using another deprecated function that will be removed * New upstream distfile from the above * Patch up to mksh-current HEAD of today: - [tg] Drop “set ±o arc4random” (deprecated in R40) - [tg] Drop old Build.sh -long-options (deprecated in R40) - [tg] Change the internal hash algorithm from Bob Jenkins’ one-at-a-time to its NUL-counting, always-changing, never-zero, better-avalanching MirOS variant NZAT - [tg] Use $'…' for non-ASCII parameters for re-entry printing - [tg] Use sane spelling of “read-only” consistently - [tg] Improve tree -DDEBUG functions (internal/developer use) - [tg] Reduce stack usage a bit; speed up hash tables at size cost - [tg] MKSH_SMALL no longer implies -fno-inline - [tg] Support optional seed in ${parameter@#seed} for security * Consider yourself warned about the following things: - once klibc ships mkstemp() we will build mksh-static against it - soon, probably before the wheezy freeze even, we will disable deprecated code (which users of are warned about, at the moment) * Policy 3.9.3 (no relevant changes) -- Thorsten Glaser Sat, 24 Mar 2012 23:30:11 +0000 mksh (40.4-3) unstable; urgency=low * The “sleepy” upload * Several fixes for klibc support: - dpkg-buildflags adds -fstack-protector, klibc doesn’t like it - on m68k, klibc builds need -g or they croak - unbreak overriding which toolchains are used for mksh-static * Patch up to mksh R40-stable branch of today: - [tg, RT] Move mirtoconf checks and INCLUDES_ONLY parts of sh.h around to ensure prerequisites are always available - [tg, RT, ir0nh34d] Pass mksh.exe to testsuite, if such thing is generated, and deal with Cygwin passing just “mksh” in argv[0] in such cases - [tg] Imply -DMKSH_ASSUME_UTF8=0 on MSYS; optimise checks - [tg, Jb_boin] Fix regression introduced in R35b by jaredy’s security patch where TTIME trashed a non-TCOM string argument (e.g. in TFOR) - [tg] Better support for tcc; fix GCCism that accidentally crept in - [tg] Deal with UTF-8 when reporting jobs’ commands * Omit dietlibc and don’t depend on lsb-release on hppa, to give it some chances to catch up (and mark for revisiting) * Note that mksh-static has some features disabled in the package description (unless DEB_BUILD_OPTIONS contains nomksh-small) ‣ do we want to have a dynamically generated binary package desc? * Copyright year is now 2012 -- Thorsten Glaser Sat, 11 Feb 2012 16:59:31 +0000 mksh (40.4-2) unstable; urgency=high * The “busy” upload * Patch up to mksh R40-stable branch of today: - [tg, Jilles Tjoelker] skip readonly check in unevaluated ternary twig - [tg, anonymous] fix all remaining ifs.sh testcases - [tg] No longer try to build with GCC and C99 extensions - [tg, Jilles Tjoelker] Do not expand aliases in COMSUB twice - [tg] Honour UTF-8 multi-byte character boundaries when doing partial tab-completion insertions (LP: #909025) to fix RedHat BZ#745702 - [tg] Fix R40 (BZ#496791) regression with IOACT in TIF (LP: #907224) - [tg, ft] Darn persistent history code worst offenders (LP: #906914) - [tg] Fix some gc-sections, GCC and Clang/scan-build warnings/issues - [tg, 28C3] dot.mkshrc hash functions: partially address LP: #909818 - [tg] Only compile divmod(0x80000000, -1) code in when not unneeded * Merge from the squeeze and lenny-hardy backport packages: - The “dreaming of aufsbuilder” upload + Document that, even in all backports, the debconf questions for /bin/sh handling are now gone - The “motivated” upload + d/control: lsb-release is only needed on hppa at the moment + d/README.Debian: rework note on /bin/sh use for backports * Urgency high due to the severity of the assorted bugfixes -- Thorsten Glaser Sat, 31 Dec 2011 02:53:56 +0000 mksh (40.4-1) unstable; urgency=low * The “not-so-little-any-more brother” upload * Update to mksh R40d (release): - [tg, Jilles Tjoelker] test(1) built-in behaves exactly as POSIX says - [tg] Move compile-time assertions to Build.sh from misc.c#ifdef DEBUG - [tg] Invocation documentation is at the bottom of Build.sh - [tg] test.sh: verbosely look for perl(1) interpreter to use - [tg] New tests for integers (base 1‥36, base unspecified, base OOB) - [tg] Correct error paths for typeset -n global state - [tg] Deprecate interpreting "010" as octal number, will go - [tg] Improvements re. integer handling; more explicit manpage text - [tg] Do not use caddr_t on Linux, so dietlibc stops bitching - [tg, Jilles Tjoelker] Catch division/modulo overflow 0x80000000/-1 - [tg] Emacs mode ^O regression fix when the fetched lines are edited * Add missing upstream code change explanations to the changelog entries 40.3-1, 40.2-5, 40.2-4 (in lieu of upstream-changelog) * Fix two oversights that might (finally) get us line-buffered I/O * Disable use of to avoid needing to B-C libbsd-dev * Use hardening=+all in DEB_BUILD_MAINT_OPTIONS querying buildflags * mtest.t: new brkcontin to catch breakage failing test.sh operation * Also, scan the test log and fail the build if the testsuite appears not having run at all (Closes: #651615) -- Thorsten Glaser Sun, 11 Dec 2011 18:51:39 +0000 mksh (40.3-1) unstable; urgency=medium * The “Missing” upload * Update to “mksh R40c+”, snapshot of R40-stable branch: - [tg] Fix R40 regression misparsing $(case x in (x) :; esac) - [tg] New test.sh ‘-f’ option (same as ‘-C fastbox’) - [tg] Drop using set -o noglob inside pushd/popd/dirs - [tg] Use += more in dot.mkshrc and keep strings shorter - [tg] Correct interworking between local and set -A - [tg] Fix out-of-bounds memory access on strings of 32 KiB length - [tg] MKSH_DISABLE_DEPRECATED (for integrators) * debian/.mkshrc: proper ksh88-hack char extraction and reuse * debian/rules: use dh_prep ipv “dh_clean -k” iff it exists, ONLY to please the new build log checker not taking backport‐ friendliness of packages into account * Use more loose dietlibc-dev build dependencies again, except on known-bad cases (armel armhf s390) and need-verification cases (no build logs available yet: hppa sparc64) and new arches (s390x) but not on those where _some_ intermediate versions were bad but both old and new versions work and the testsuite falls back to eglibc if broken (powerpc sparc) * Update package description - pdksh is orphaned, suggests mksh * Log toolchain versions in buildinfo -- Thorsten Glaser Sat, 26 Nov 2011 19:28:57 +0000 mksh (40.2-5) unstable; urgency=low * The “Fernet-Branca” upload * debian/rules: cleanup (remove dh_installdirs) * debian/.mkshrc: use $'…' for PS1, like dot.mkshrc now does * Use new-style template for maintainer scripts (good comments) * Update to mksh R40-stable from today, which is close to R40c - [RT, Chris “ir0nh34d” Sutcliffe] Port to MSYS - [tg, Markus Duft, Bruno Haible] Interix select(2) bug workaround - [tg] Manpage fixes - [tg] Deprecate the “command line begins with ‘!’ for fc -e -” hack - [tg] Promote x=(a b); x+=(c d) to a core mksh(1) feature - [tg] Testsuite fixes for Hurd, MSYS; warning fixes for dietlibc * Build-Depend on today’s dietlibc to test-drive it, again -- Thorsten Glaser Sat, 19 Nov 2011 22:48:44 +0000 mksh (40.2-4) unstable; urgency=low * The “visit us at OpenRheinRuhr” upload (AllBSD *and* Debian/m68k!) * Pull in mksh packaging CVS HEAD, to test-drive packaging changes (also gives us back PIE, relative to the last experimental upload, and tries dietlibc on both MORE and ALL architectures possible) * To also test dietlibc, version its B-D (this upload is not intended to be released with wheezy, there _will_ be another one before it, but it is needed to get dietlibc into shape for the wheezy and precise releases, and it delivers a fix) * Pull mksh CVS commit 1004EB9A7F80119200E, which fixes setting the base of several built-in integer parameters to 10 instead of retaining the one from the first assignment (regression) - [tg] Fix accidental behavioural change wrt some built-in parameters * Upload to unstable, despite the test status (also, this will not migrate to testing anyway, due to #633479) -- Thorsten Glaser Fri, 11 Nov 2011 22:50:09 +0000 mksh (40.2-3exp1) experimental; urgency=low * Expand dietlibc-dev B-D to armhf hppa and depend on experimental version, to test-drive that * Disable PIE hardening for now, until compiler bugs are addressed -- Thorsten Glaser Wed, 09 Nov 2011 11:21:51 +0100 mksh (40.2-3) unstable; urgency=low * The “What a wonderful… day (or week?)” upload * Avoid warnings during build information logging * Update to R40-stable branch from 2011-10-25 23:00 for: - [jonthn, Snader_LB] Fix spelling mistakes - [cnuke] Fix bugs spotted during porting to OPENSTEP - [tg, jg71] Unbreak building stristr with MKSH_ASSUME_UTF8 defined - [tg] Fix most of the issues Jerker Bäck encountered on Interix - [tg] Wrap access(2) as it may return false positive for X_OK on root - [OpenBSD] Upper bound Emacs mode command repeat by input line length - [tg] Improve CPPFLAGS mangling in Build.sh - [Snader_LB] Several comment, documentation and website fixes/updates - [tg] Avoid identifiers and cpp(1) macros with two underscores in a row and those with a trailing underscore; they are reserved for the OS * Add “hardening=+pie,+bindnow” when calling dpkg-buildflags; reminded by RichiH (release goal); drop PIE for mksh-static (non-PIC obviously) -- Thorsten Glaser Tue, 25 Oct 2011 23:25:17 +0000 mksh (40.2-2) unstable; urgency=medium * The “Someone bring me Kruškovac❣” upload * Update to R40-stable branch from 2011-07-26 17:30 for: - [tg, Wouter Verhelst] Fix ${foo%\?} in -o sh * This makes mksh as /bin/sh not break on building d-i on m68k * Mention that mksh-small makes a faster /bin/sh on slow arches * Drop the mksh-as-/bin/sh debconf code and questions from the package in preparation for Goswin’s fix for that dash bug; drop our /bin/sh diversion, always -- Thorsten Glaser Tue, 26 Jul 2011 21:41:01 +0000 mksh (40.2-1) unstable; urgency=low * debian/meat: Fix running the testsuite on Hurd * Do not call "update-alternatives --remove" on upgrade (cf. #568299) * New upstream stable version “Frankenheim Alt”: - [tg] Don’t busy-loop on nameref ARY=ARY (LHS = RHS) - [tg, yofuh] Tabcomplete ~foo like $FOO (LP: #710539) - [tg] Code cleanup, style, and minor assorted fixes - [tg] Tabcomplete ~foo/M↹ (with slash) economically - [tg] Add new [DEL: experimental :DEL] global builtin, doing the same as local (typeset, really – but that doesn’t deserve its name) does, except localising all parameters it touches - [tg] Better error messages with non-integral environment imports - [tg] $RANDOM environment import accepts any string now - [tg, Lucas Holt] Add setenv cshism to dot.mkshrc - [tg, Johannes] Allow ^C to interrupt the built-in cat(1) - [tg, Arkadiusz Miśkiewicz, Kacper Kornet] Fix mksh taking down the entire terminal, hard, when scripts use $COLUMNS and fork off utilities; regression introduced in mksh R37 (sorry, no regression test possible) - [tg, Arkadiusz Miśkiewicz] Properly mark need-ctty regression tests - [tg] MKSH_NO_EXTERNAL_CAT – Quell the external cat(1) calls magic - [tg, Arkadiusz Miśkiewicz] Yes, “echo” is not portable, document - [tg] Improve content and look of the manual page - [tg] Move /etc/{,suid_}profile to /system/etc/ on Android - [tg] Prevent more compiler warnings; catch build errors earlier * Build from R40-stable branch: get a fix for dot.mkshrc -- Thorsten Glaser Mon, 25 Jul 2011 16:38:45 +0000 mksh (40.1-1) unstable; urgency=medium * README.Debian: Log check_categories to use with the testsuite * debian/meat: Restore skipping of catmanpage build * This is “Frankenheim” mksh R40: - [tg] Let code samples in check.t and dot.mkshrc take care of the new features; fix some longstanding bugs in them - [tg] Add missing flush in rewritten read builtin for prompting - [tg] Minix builds now automatically disable the ulimit builtin * Medium urgency due to the missing flush call (problematic UI) -- Thorsten Glaser Sun, 12 Jun 2011 17:52:42 +0000 mksh (40~0.20110605-2) unstable; urgency=low * Upgrade to mksh R40 Release Candidate 3 - [tg] [hash table limit]; work around bug in GCC 4.1 on Debian Etch - [tg] New -c lto option to use Link Time Optimisation (GCC) with automatic fallback to -c combine if unavailable - [tg] Improvements for -c dragonegg, -c llvm (with gcc+dragonegg, or llvm-gcc and clang, respectively), and TenDRA * Enable LTO, for real, this time -- Thorsten Glaser Sun, 05 Jun 2011 20:47:53 +0000 mksh (40~0.20110604-1) unstable; urgency=low * Do not use libbsd any longer, mksh is self-contained * Update README.Debian, copyright * Upgrade to mksh R40 Release Candidate 2 - [tg, hondza] Fix regression in tab completion result display - [tg, Frank Terbeck] Fix parsing x=(…) expressions - [tg, Jb_boin] Increase hash table limit; don’t crash when reaching it - Comment sync with OpenBSD ksh - Update testsuite tags (for Cygwin and other weird platforms) * Catch early build failures better -- Thorsten Glaser Sat, 04 Jun 2011 20:15:03 +0200 mksh (40~0.20110529-1) unstable; urgency=low * Update to mksh R40 Release Candidate from CVS: - [tg, Kacper Kornet] Implement a new regression test attribute need-pass: {yes|no} and exit 1 if unexpected fails occur - [tg] Add ;& and ;| for case - [tg] Rewrite the read builtin and its documentation; adding -A (read IFS words into array), -a (read octets/wide characters into array), -N/-n (read only / up to z bytes), -t (read with timeout) - [tg] Add -e option to cd -P (POSIX 2011) - [tg] Update dot.mkshrc to use the new features - [tg] Fix gsf’s ifs.sh tests of the read builtin - [tg, cnuke] Improve support for AIX, Cygwin, IBM XL C - [tg] Add tests for x+=(y z) and ;;& extensions * Please help testing this, so the release can rock❣ -- Thorsten Glaser Sun, 29 May 2011 18:51:43 +0200 mksh (39.3.20110506-1) unstable; urgency=low * New CVS snapshot with more regression and bug fixes: - [tg] Correct skipping the UTF-8 BOM when identifying a file - [tg] Do not use any longer - [tg] Use double-underscore-framed __attribute__s - [tg] Always catch SIGALRM (for the sleep builtin) - [tg, wbx] Functions now inherit a global set -x - [tg] Do not explicitly initialise static globals to 0/NULL - [tg] Eliminate some dead code (functions, globals) - [tg] Correct more tree handling bugs and merge similar code - [tg] Add “+=” to concatenate scalars and append to arrays - [tg] Support empty here document delimiters - [Robert Luberda] Fix the four-argument form of test(1) (Closes: #465250) – patch and testcases taken from pdksh.deb - [tg] Drop the pre-POSIX ability to “test -t” without specifying “fd” - [tg] Defer dropping an alias in favour of a POSIX function to when the function is actually defined and check for the closing parenthesis too * Drop armhf dietlibc dependency, it’s broken * Drop hppa dietlibc dependency, there’s no known good version * Shorten debian/rules; update package description (mksh HEAD is at OpenBSD 4.9-current level) * Policy 3.9.2 with no changed relevant to us -- Thorsten Glaser Sat, 07 May 2011 01:16:22 +0000 mksh (39.3.20110328-2) unstable; urgency=high * Turns out running history-subst-4 on the buildds is a bad idea… revert, and just live with the bug on hppa for now * Urgency as this fixes FTBFS from 39.3.20110328-1 which was high -- Thorsten Glaser Mon, 28 Mar 2011 23:26:13 +0000 mksh (39.3.20110328-1) unstable; urgency=high * Back out dietlibc [hppa] dependency on experimental package to be able to upload to unstable * New CVS snapshot fixing all known regressions from the recent experimental changes, as well as some more fallout: - [tg] Fix mis-detection of gcc format attribute (false negative) - [tg] Include some Android specific hacks (no change on other OEs) - [tg, Jb_boin] In ${foo/bar/baz} expressions, when adjourning empty patterns to avoid running into a busy-wait loop, remember to skip the anchor characters (‘#’ or ‘%’) at the beginning, yet keep the special meaning replacing a string begin or end with a string has - [tg] Write a pattern optimiser that is run internally before calls to the pattern matching code always (currently, replaces a@(b@(c)d)e with abcde but keeps @(a|a), then (in a second pass) collapses adjacent asterisk (‘*’) wildcards into a single one; this fixes some of the symptoms of severe performance issues our pattern matching code has to the extent that it can prevent busy-looping (found by Jb_boin) - [tg, Chris “ironhead” Sutcliffe, Chet Ramey, Eric Blake, David Korn] Handle pathnames with exactly two leading slashes well (SUSv4 3.266) - [tg, Wayne Pollock, Bart Schaefer] Fix here documents, add testcases - [tg] Fix corner case ${##1}, add tests for that and ${##} and ${#?} - [tg] Bring back “test -H” ifdef S_ISCDF (for HP-UX) from pdksh - [tg] Align read-only variable behaviour with (future) POSIX - [tg] Permit ${foo%(*} on FSH (Debian Closes: #619947) - [tg, rsc] Allow skipping testcases that need a controlling tty * High urgency because the fix for ${foo%(*} is required since without it, keyboard-configuration=1.68+squeeze2 can fail to configure * Copy history-subst-4 to mtest.t to ensure hppa mksh-static is usable * Tweak build process to prevent more redundant checks * On unattended Hurd builds, skip testcases that need a controlling tty -- Thorsten Glaser Mon, 28 Mar 2011 22:26:25 +0000 mksh (39.3.20110313-1) experimental; urgency=medium * New CVS snapshot: - [tg] Use the existing state machine, a recursive parser and retracing the input stream for correct x=(…$((…$(…)…))…) parsing - [tg, Jb_boin] complain about ${x:1:2:3} instead of crashing - [tg, Jb_boin] make optional printf(1) builtin __CRAZY=Yes clean and prevent it from crashing by reading past end of (invalid) format strings - [tg] abort(3) on rogue pointers #ifdef DEBUG - [tg] Correct some documentation, code commentary, etc. - [tg] Handle the UTF-8 Byte Order Mark in $(…) expressions - [tg] Speed up reading input by checking for the BOM only once * Urgency due to crash (SIGSEGV, glibc-malloc corruption) fixes -- Thorsten Glaser Sun, 13 Mar 2011 17:06:35 +0000 mksh (39.3.20110308-2) experimental; urgency=low * Update architecture list for dietlibc (in experimental) * Depend on fixed hppa dietlibc (from experimental) -- Thorsten Glaser Tue, 08 Mar 2011 21:03:53 +0000 mksh (39.3.20110308-1) experimental; urgency=low * Fix build warnings * Add mtest-ascii1 to catch an unclear dietlibc bug on mips, powerpc * New CVS snapshot: - [tg] Port to MiNT / FreeMiNT (Atari m68k operating system) - [tg] Do not close filedescriptor #3 (controlling tty) on UWIN - [tg] Make the tree printing code safe for re-entrancy of output - [tg] Implement recursive parser for $(…) to fix RedHat BZ#496791 - Note that MKSH_NOPROSPECTOFWORK disables |& (co-processes) * Upload to experimental (happy birthday, you three) -- Thorsten Glaser Tue, 08 Mar 2011 19:37:05 +0000 mksh (39.3.20110218-3) unstable; urgency=medium * Fix build when GNU bash in /bin/sh (still no idea _why_ though) -- Thorsten Glaser Fri, 04 Mar 2011 11:54:20 +0000 mksh (39.3.20110218-2) unstable; urgency=medium * When cross-compiling (DEB_{BUILD,HOST}_GNU_TYPE not the same) set mksh-firstbuilt to avoid “testing” non-native executables * mksh can do Multi-Arch: foreign as requested by vorlon * Install build information (actual compiler, flags, regression testsuite results, etc.) and regression testsuite as documen‐ tation files (append build info to README.Debian) * Fix bug which resulted in always trying to build with combine * README.Debian: /bin/mksh-static can be /bin/sh too * README.Debian: Add notes about expected testsuite failures -- Thorsten Glaser Thu, 03 Mar 2011 20:38:48 +0000 mksh (39.3.20110218-1) unstable; urgency=low * New CVS snapshot: - [tg] Limit history file size to 1 GiB for sanity - [tg] Add smores, a more(1)-like pager, as shell function to dot.mkshrc (not control character safe but tty aware) - [tg, David Korn] Make builtins directly callable; utf8-mode is determined by LC_ALL/LC_CTYPE/LANG environment variables in that case - [tg] If the interactive shell uses setlocale(3)/nl_langinfo(3) to divine utf8-mode, fall back to environment variables unless success - [tg] When called as a builtin, echo(1) behaves POSIXish - [tg] Replace some MirBSD utilities with links to mksh(1) and ensure some integration to keep compatibility - [tg] Add a microsecond capable sleep(1) builtin - [tg] Add selftest-direct-builtin-call regression test - [tg] If the built-in cat is invoked from a direct builtin call, it now properly handles the POSIXly demanded ‘-u’ option (as a no-op) - [tg] Support the PIPESTATUS array (like GNU bash) * Rewrite packaging to automatically test for usable libraries (klibc (not yet) or dietlibc, fallback to eglibc) for mksh-static and better test whether the binaries built against them is usable * Try dietlibc on PowerPC, S/390, sparc again (we test the binary) * Bring back basic klibc support (can be enabled by DEB_BUILD_OPTIONS) -- Thorsten Glaser Sat, 19 Feb 2011 17:36:19 +0000 mksh (39.3.20110209-1) unstable; urgency=low * New CVS snapshot: - [tg, Jörg-Volker Peetz] Emacs prev-hist-word resets the counter if other editing commands were run in between; repeat calling works, even together with arguments, now; arguments are 0-based (Debian Closes: #603801) – now for real ☻☺ - [tg] Fix mis-sign comparison and potential truncation error * Support $debian_chroot in /etc/skel/.mkshrc (template) -- Thorsten Glaser Wed, 09 Feb 2011 13:30:29 +0000 mksh (39.3.20110203-1) unstable; urgency=low * New CVS snapshot: - [tg] More int → bool conversion, whitespace and related code cleanup, error messages and typo correction - [tg] Don’t alias suspend on Android either (goes together with stop) - [tg] dot.mkshrc no longer exports $PS1, as recommended by Frank Terbeck, to avoid confusing other shells - [tg] The character width table is now in sync with Unicode 6.0.0 - [tg] MKSH_SMALL doesn’t imply HAVE_REVOKE=0 any longer - [tg] Ignore a ‘$’ preceding ‘"…"’ (like bash, ksh93) - [tg] Make “foo=< unless it exists - [tg] dot.mkshrc: When we set a UTF-8 locale (e.g. for the GNU OS), we must also set -o utf8-mode to match it - [tg] Don’t append a space after tab-completing a parameter substi- tution that doesn’t contain a glob/extglob (LP: #710539) * add RCS IDs into more files * d/README.Debian: be more explicit about mksh-as-/bin/sh and mention we wait on klibc, to use it with mksh-static * d/control: add note on dietlibc B-D, which can be dropped e.g. if porting to Derivates that don’t have it, like UCS * d/control: update long description * d/copyright, d/rules: we use debian/rules get-orig-source" now * d/copyright: sync, 2011 * d/rules: restructure a bit; add build-{indep,arch} targets * d/rules, d/x_getflag: use dpkg-buildflags if existent * d/po/it.po: update translation, grazie TetsuyO! * run debconf-updatepo -- Thorsten Glaser Thu, 03 Feb 2011 18:38:45 +0000 mksh (39.3.20101101-1) unstable; urgency=low * New CVS snapshot: - [tg] In setres{u,g}id/setuid EAGAIN case, error out immediately - [OpenBSD] Some small manpage fixes - [tg] Clean up mirtoconf and build warnings with some compilers - [tg] Fix \c? vs. \c~ mis-documentation in mksh(1) - [tg] Remove the somewhat-portable setmode.c from the mksh source distribution and demote mknod(8) to an optional builtin, disabled by default, manually re-enabled in the installer only on MirBSD - [tg] Regenerate wcwidth table from Unicode 6.0.0 - [tg] Change behaviour of argument-less exit in traps to match SUSv4, original patch from Jonathan Nieder (Debian Closes: #599484) * Integrate Vietnamese translation update, thanks Clytie Siddall (Closes: #601925) * Use lsb-release instead of dpkg-vendor for better reliability -- Thorsten Glaser Tue, 16 Nov 2010 13:42:18 +0000 mksh (39.3.20100915-1) UNRELEASED; urgency=high * New CVS snapshot: - [Jeff Hamilton] Don’t alias stop on Android (system specific conflict) - [tg] Add size optimisations, ifdef’d, mostly for Android - [tg] Address what few concerns Chris Palmer (Android security team) had: check all multiplications and some additions for integer overflows, mostly in allocation context, and check setres{u,g}id/setuid for EAGAIN iff the target OS is known to be returning it (Linux only, right now) - correct a regression: 「read i?'foo:'」 was not working -- Thorsten Glaser Thu, 16 Sep 2010 22:03:08 +0000 mksh (39.3.20100905-1) UNRELEASED; urgency=low * New CVS snapshot: - [tg] More int → bool conversion, whitespace and related code cleanup - [tg] Improve mksh(1) manpage coverage, remove mentions of not-mksh - [tg] Use wcwidth() from system on MirBSD - [tg] u_int32_t is no longer needed (only for OpenBSD’s pre-ISO-C99 arc4random API, which we no longer call), so don’t provide it from Build.sh any longer - [tg, tonnerre] Scan for uint8_t and provide if not found - [tg] Fix realpath builtin for “/file/” arguments wrt. POSIX - [tg] Do not generate from Build.sh as file any more if it is missing; rather let sh.h define the types appropriately and fix related compiler warnings - [tg] Add “cat” builtin (defers to external if options are given) - [tg] Reduce size by improved string pooling - [tg] Document 「x=$(eval $(cat)) <<'EOF'」 workaround for the $(…) parsing bug in the mksh(1) manual page and on the Red Hat Bugzilla - [tg] Add support for handling a “--” argument to more builtins - [tg] Correct some error messages * Move extra/printf.c.1.nn to debian/extra/printf.c for improved compatibility with source/format 3.0 and reduced build warnings * Build with -Wall -Wextra in all modes * Mention where strict aliasing warnings in dietlibc mode come from -- Thorsten Glaser Sun, 05 Sep 2010 21:04:15 +0000 mksh (39.3.20100725-1) unstable; urgency=high * The “Portability?” release * Another new CVS snapshot: - [tg] More int → bool conversion - [tg] Fix window size not being checked during runtime of external programmes by not relying on SIGWINCH so much but instead checking before every interactive editing of a command line * High urgency because 39.3.20100721-1 isn’t yet in testing * Policy 3.9.1.0, no changes needed -- Thorsten Glaser Thu, 29 Jul 2010 08:54:25 +0000 mksh (39.3.20100721-1) unstable; urgency=high * The “WTF is up with all these bugs spotted?” release * Another new CVS snapshot: - [tg] Fix NULL pointer dereference during iteration loop when checking for alias recursion; discovered by Michal Hlavinka * High urgency due to SIGSEGV crashes -- Thorsten Glaser Wed, 21 Jul 2010 11:48:24 +0000 mksh (39.3.20100719-1) unstable; urgency=high * New CVS snapshot; summary of changes relevant to Debian: - [tg] Correct shf buffer I/O routines to avoid a memory corruption bug discovered by Waldemar Brodkorb and other bad effects (bug inherited from pdksh, anno 1999) * High urgency due to memory corruption and “set -x” fix -- Thorsten Glaser Mon, 19 Jul 2010 22:51:03 +0000 mksh (39.3.20100717-1) unstable; urgency=low * The “「Don't drink and dupload ;-)」? I use dput anyway!” release * debian/rules: revert change disabling -combined on dietlibc, since it appears to be of no practical relevance * debian/rules: disable dietlibc on sparc due to weird problems * debian/rules: adapt build log scanner contraband to newer gcc * Switch from patch system to applying patches directly to the extracted source in “1.0” style (in the future, “3.0 (quilt)” can ease this) by using repackaged orig.tar.gz * Install upstream’s dot.mkshrc as /etc/mkshrc and source this from a new, minimal, /etc/skel/.mkshrc (debian/.mkshrc); idea by Michal Hlavinka (RHEL package maintainer) * Use repackaged upstream snapshot; changelog: - [tg] Remove arc4random(3) functionality; seed an LCG depending on the OS doing Address Space Layout Randomisation; speed up - [tg] Fix spelling in dot.mkshrc - [tg] Implement “live” window resize for the Emacs editing mode - [tg] More fixes for bugs found by Valgrind and LLVM+Clang scan-build - [tg] For script compatibility support “set ±o arc4random” during a transition period until R40 is out (but issue a warning to stderr) - [oksh] Add (, ), (( to reserved words in the manual page and fix some formatting errors with GNU groff’s mdoc - [tg] Make printf.c.1.15 use mksh’s shf_* routines instead of stdio - [tg] Fix -Wc++-compat except implicit casts from/to "void *" * Update printf.c file added; the new version actually uses mksh’s shf functions instead of libc stdio, saves about 11K in mksh-static * Adapt debian/* to new versions * Bump Standards-Version to 3.9.0.0 (no changes required) * Remove experimental, commented-out, klibc support for readability * Run debconf-updatepo; put something into Language: header lines * Lintian P: mksh: maintainer-script-without-set-e config -- Thorsten Glaser Sat, 17 Jul 2010 23:27:41 +0000 mksh (39.3-4) unstable; urgency=low * debian/control, debian/rules, debian/mksh.install{,.in}: improve klibc builds (still disabled) and, for testing purposes, do full, dynamic, builds if klibc is enabled * debian/diffs/backport-fixes.diff: replace with upstream CVS diff between 39.3 and 20100522 and adjust manpage version number; changes: - [tg] Make default temporary directory configurable at compile time - [tg] Fix performance deficiencies in the built-in realpath function - [tg] Deprecate Build.sh -longoptions in favour of short ones: -valgrind becomes -g (like debug), -combine and -llvm become -c {combine,llvm} and the LLVM optimiser flags are passed via -O = -o -std-compile-opts - [tg] New Build.sh options -c dragonegg (for using the LLVM plugin to GCC 4.5 with inter-module optimisation), -v (version) - [tg] Document another way to get a coloured PS1 in the manpage - [tg] Disallow some more kinds to trim a vector; Closes: #581867 - [oksh] Simplify some code; RCSID and comment sync with OpenBSD ksh - [oksh] Apply diff from manuel giraud to keep track of LINENO in a trap * Silence some build log checkers wrt. false positives triggered from mirtoconf output (affects both Debian and Ubuntu, at least) * Put upstream changes for 39.3-2 and 39.3-3 into debian/changelog entries retroactively for proper documentation * debian/rules (if Ubuntu): Exclude dietlibc on powerpc/ppc64 and sparc * debian/rules: the “diet” wrapper also eats most of our CFLAGS when passing them to cc, so disable combine mode there to avoid some of the problems, such as strict aliasing violations that are none * debian/control: prefer pax over cpio -- Thorsten Glaser Mon, 24 May 2010 15:09:22 +0000 mksh (39.3-3) unstable; urgency=medium * debian/diffs/backport-fixes.diff: replace with upstream CVS diff between 39.3 and 20100420 and adjust manpage version number; this fix unbreaks word splitting "${foo#a}" for foo="a b c", which, for example, is used by kwalletcli - [tg] Fix "${x#?}" expansion when quoted, for real this time -- Thorsten Glaser Tue, 20 Apr 2010 09:21:39 +0000 mksh (39.3-2) unstable; urgency=low * README.Debian: mention /etc/skel/.mkshrc * debian/diffs/backport-fixes.diff: replace with upstream CVS diff between 39.3 and 20100409 and adjust manpage version number; changes: - [tg] Correct small mistakes in manpage and build script - [ahoka, tg, stippi, bonefish] Port to Haiku (and probably, implicitly, BeOS; this is not tested though) - [tg, stippi] Add Haiku specific RLIMIT_NOVMON as ‘V’ to ulimit builtin - [tg] Let Build.sh cope with dirname(1) unavailability - [tg] In the Emacs editing mode, hi-bit7 octets are now considered “motion characters” for word boundaries – Esc+b, Esc+f, ^W, … - [tg] Make EXECSHELL default configurable at compile time (embedded) - [tg] If MKSH_SMALL do not compile in “set -o bgnice” by default - [tg] Rework how RLIMIT_{AS,RSS,VMEM} map to ‘m’ and ‘v’ ulimits - [tg] Add some more OS specific limits seen in zsh - [tg] SUSv4 ${v=a\ b} and "${v=a\ b}" and ${v-a\ b} compliance, tests - [tg] Make "~/.mkshrc" path configurable at compile time (embedded) - [tg] Fix SUNWcc 12.1 error message scan in build phase=u - [tg, Johannes Sixt, Geoff Clare] Fix variable assignment scope during command execution (expansion vs. assignment execution environment); [Herbert Xu, Geoff Clare] Add more regression tests for this - [tg] Fix single quotes in "${foo#bar}" (differs from "${foo-bar}") - [oksh] Fix mknod(8) usage message: b|c are not optional - [tg, oksh] Fix "${x#?}" expansion when quoted (quotes, space) * debian/control: make locales optional on avr32 * debian/rules: disable locale support on avr32 -- Thorsten Glaser Fri, 09 Apr 2010 20:08:16 +0000 mksh (39.3-1) unstable; urgency=low * New upstream version R39c; shortened ChangeLog since R39: - [tg] Build system, code, docs and testsuite cleanup, also style(9) - [tg] Parse and evaluate ${parameter op word} correctly - [tg] Fix possible SIGSEGV in interactive mode bind builtin due to mis-optimisation of gcc combined with a bogus prototype; discovered by Grml.org's Frank Terbeck (ft), thanks! - [tg] Clean up some more strict *roff or compiler warnings: dashes, undefined macros; casting errors (constness, signedness, type width/class) and catch possibly unaligned pointer dereferences early; remove code/rodata redundancies, plug memory leaks - [smultron] Tweak the manual page: point out the word “colour” - [tg] Optimise dot.mkshrc DJB’s CDB hash implementations; add Bob Jenkins’ one-at-a-time hash (standard and leading-bit initialised); fix signedness in expressions; let the hashes use stdin if "$*" is empty, like Lb64{en,de}code; use “[[ -o utf8-mode ]]” ipv “[[ $- = *U* ]]” - [tg] Build.sh portability fixes: missing prerequisite headers; ensure $CC is never called without $CFLAGS; fix test.sh, et al. - [tg] Optimise internal variable representation; use one-at-a-time hash; cache hash values for faster resizing at zero memory cost; clean up hash table (keytab) code; switch hash table collision resolution algorithm to Python’s; prepare for later changes - [tg] Fix type errors in the source code (int → bool, size_t, mksh_uari_t) - [tg] Fix “${foo:bar:$baz}” not working (missing substitute() call) - [tg] Implement “typeset ±a” as nop - [tg] Support ksh93-like “${!foo[@]}” listing the keys (indicēs) of all set array elements - [tg] Support bash/ksh93-like “array=([key]=value …)” and (additionally) “set ±A array -- [key]=value …” to directly specify indicēs to use - [tg] Document the optional, unsupported, printf(1) builtin in TFM - [tg] Replace realpath(3) dependency and internally used get_phys_path() pdksh code with own implementation; always offer the realpath builtin - [tg] Implement nameref='typeset -n' (bounded variables) like AT&T ksh93 but with mksh-style nested/dynamic scoping and on-use resolving; they cannot currently be stored in an array though - [tg] Add “chdir” builtin doing the same as “cd” special builtin - [tg, David Korn] Document more differences between mksh (and pdksh) and AT&T ksh (or, more specific, ksh88, ksh93) in the manual page - [tg] Support “'a'” as an alternative to “1#a”, like ksh93 does - [tg] Add ksh’s “test -o ?foo”: true if “foo” is a valid shell option, where “foo” can be “xtrace” or “-x” or “+x” (these three are equivalent) - [tg] Support “$'…'” backslash-expanding single-quoted strings, as requested by David Korn, with almost the same syntax and semantics - [tg] Unify backslash expansion code (C style vs. print builtin) - [tg] Support “function stop () {” bashism - [tg] For several items in the source code that require order to be kept, provide from multiply-included header files; sort correctly - [tg] Get rid of unneeded FMONITOR (-m) for shells without job control; sync list of flags, comments and manpage with reality - [tg] If MKSH_SMALL, reduce size by removing editor functionality - [tg] Support VT100 emulator style {Ctrl,Alt}-CurLeft/Right keycode sequences with new vt100-hack emacs bind function (LP: #355883) - [cnuke, tg] Remove more, like GNU bash extensions, from MKSH_SMALL - [tg] Remove more functionality, such as Emacs command line editing mode bind key macros, and other extensions, from MKSH_SMALL to help floppies - [tg] Make forking and subshells less expensive wrt. random state - [tg] Build and source code fixes for / caught by SUNWcc, HP aCC, pcc, DEC ucode cc (MIPS), GCC, LLVM clang - [tg] Make undef/def MKSH_NOVI into 0/1 MKSH_S_NOVI build flag - [tg] Get rid of "U getenv" in nm output, we already import environ - [tg] Simplify $RANDOM handling: reads are now either arc4random(3) (if available: set +o arc4random is no longer possible) or an LCG; writes are arc4random_pushb(3) if available for explicit writes, arc4random_addrandom(3) otherwise, or another one-at-a-time hash feeding the LCG; furthermore, RANDOM is now always exported to and imported from (implicit read: no push to kernel done) the environment vector on startup and spawning - [tg] Document mksh does not exactly use OPTU-8/OPTU-16 in the manpage, as well as when characters, octets, or screen columns are used - [tg] Fix exit 127 on "mksh /tmp/horsies" ipv of 1 on ENOENT, #548744 - [Clint Adams] Fix typos in the testsuite - [tg, Clint Adams] Begin a shared testsuite for mksh and posh - [tg] Make 「((foo) || bar)」 and 「((foo) | (bar))」 work - [tg] Fix lazy evaluation of assignments by ternary operator, #445651 - [tg] Work around Cygwin bugs (quirks) hindering the testsuite - [tg] In FSH mode, “echo [-n] 'foo\x40bar'” shall not be expanded - [tg] Let set -- $(false); echo $? return 0 (POSIXly correct) in FSH mode, 1 (needed for getopt(1) support) otherwise - [tg] Changes of variables inside Bourne style POSIX functions indeed affect the current execution environment (of the function caller) - [tg] Fix getopts behaviour (sync with AT&T ksh93 not ksh88) - [tg] “eval $(false)” shall return 0 (Debian Closes: #550717) - [tg] Ensure that /* apo'strophes in comments */ work - [tg] Overhaul and simplify handling of (special) variables - [tg] Further reduce memory (code/data) and import footprint - [tg] Use functions without PATH_MAX limit on GNU/Hurd - [tg] Fix tab completing pathnames containing ‘:’, ‘=’, ‘$’ or ‘`’ - [tg] Support ‘-T ’ even if MKSH_SMALL and fix it - [tg] Remove "which" alias "whence -p" to allow "which -a" in dot.mkshrc and add more examples, some commented out - [tg] Fix print_columns() issue with displaying items where characters had differing number of octets and columns, and the off-by-one which had hidden this problem with 2-octet 1-column and 3-octet 2-column chars - [tg] Beautify the manpage in both AT&T nroff and GNU groff - [tg] Fix null-expansion of “${x%?}” if $x is unset - [tg] Make some globbing (${x%?}) operate on characters instead of octets; update manual page to reflect that others still do and remove wording that let people think we’d ever support POSuX character classes - [tg] New ${%foo} returning width of $foo in screen columns, or -1 if $foo contains an ASCII/latin1/Unicode C0/C1 control character - [tg] Fix subtle possible portability problem wrt. CHILD_MAX - [tg] Honour ±U on command line of an interactive shell - [tg] Fix dead stores and other bugs pointed out by the Clang static analyser; put assertions in places it has false positives - [tg] Plug uninitialised memory access and possible out-of-bounds read of a buffer caught by Valgrind; change one memcpy(3) to memmove(3) where srcbuf and dstbuf overlap; place (-DDEBUG) workaround for false positive - [tg] Rework __attribute__ compiler capability check - [tg] Apply errno save/restore related fix from (sync with) oksh - [tg] Build.sh: output message when switching from autoconfiguration to building / output generation (requested by Matt “lewellyn” Lewandowsky); use “conftest.c” ipv “scn.c” (to please ccache); ... - [tg] Allow “unset foo[*]” (keep attributes) and “typeset foo[*]” (for forward-compatibility; R39b it’s the same as “typeset foo”) - [tg] When persistent history is enabled (but not MKSH_SMALL) and used, intertwine the shells concurrently accessing $HISTFILE better ⇒ sync on empty or duplicate line as well (requested by Maximilian “mxey” Gaß) - [tg] Split off “set ±o posix” and “set ±o sh” again, to be somewhat more compatible to various old or vendor versions of pdksh and mksh: + MKSH_BINSHREDUCED sets FSH but not FPOSIX + MKSH_MIDNIGHTBSD01ASH_COMPAT depends on FSH but not FPOSIX + The echo built-in behaves the same for FPOSIX and FSH + File descriptors > 2 are not closed for both FPOSIX and FSH + Both “set -o posix” and “set -o sh” call “set +o braceexpand” + In contrast to R39 and below, the errorlevel of “set -- $(getopt ab:c "$@")” is now the same in ksh and FPOSIX mode (0) and only FSH will use the errorlevel of getopt (used to be the other way round) - [tg] Document some more shortcomings in the mksh(1) manual page - Contributed printf.c fixes: + [tg] Make printf(1) builtin use “$'…'” mode, like ksh93 + [tg] Fix const-cleanliness * Remove patches now integrated in upstream or no longer needed * Bump Standards-Version, no relevant change * Apply patches inside the top-level directory * debian/source/format: Enforce "1.0" manually, for now * debian/README.source: New, by zack's suggestion, to document some particulars of the source package and why I'm not using 3.0 yet * debian/README.Debian, debian/mksh.docs: New, document dash bug * debian/control: I'm sure we don't need to B-D on locales-all [m68k] * debian/control: tweak package short description to well-known text and sync long description with upstream's * debian/copyright: Update, sync with upstream * Rename build/ into builddir/ to avoid phony target vs pathname conflict in Makefile (debian/rules) * debian/rules: Ensure we use the C locale during build (especially for patch application collation order) * debian/mksh.examples, debian/rules: Split out dh_installexamples args * debian/rules: Update for R39c, printf.c.1.14 particulars * debian/rules: When building, try with -combine first but retry if it fails, like my OpenSuSE Buildservice packages do (cf. LP: #375604) * debian/control: Remove DMUA, I'm a DD now * debian/diffs/backport-fixes.diff: New, fixes not yet in R39c -- Thorsten Glaser Sun, 28 Feb 2010 14:09:39 +0000 mksh (39.1-4) unstable; urgency=low * Update danish translation, Tak tazz * debian/diffs/backport-echo-noescapes.diff: new, backport fix for "echo [-n] 'foo\x40bar'" expanding even in sh mode * debian/diffs/*: refresh and bump version number * debian/control: Update and correct package description -- Thorsten Glaser Sat, 10 Oct 2009 22:00:37 +0000 mksh (39.1-3) unstable; urgency=low * Add support for using pax instead of cpio for extraction * Backport fix for return code bug (Closes: #548744) -- Thorsten Glaser Tue, 29 Sep 2009 12:46:07 +0000 mksh (39.1-2) unstable; urgency=low * debian/rules: build mksh-small without floating point support also, because it’s ⓐ huge and ⓑ buggy in dietlibc * debian/diffs/backport-function-parens.diff: new, support the "function stop () {" bashism sometimes popular in sh scripts * debian/diffs/zz-version.diff: fix an oversight and use the actual 39.1-* version number instead of 38.9.yyyymmdd-* from when this patch was first being created in an experimental version; refresh diff against original files; use -U1 instead of -up for sh.h diff to not get fuzz at the RCS ID -- Thorsten Glaser Sat, 26 Sep 2009 21:18:54 +0000 mksh (39.1-1) unstable; urgency=low * New upstream version R39 (despite #540512, I got fed up waiting for Guillem/Gerrit to contact me), Closes: #541617; complete ChangeLog: - [tg] Shut up a bogus gcc warning during configuration process - [tg] Spell AT&T consistently in the source code - [tg] Tweak mksh(1) manual page, from wbx@ and «lewellyn:#ksh» - [tg] dot.mkshrc: fix $@ vs. $* mix-up - [tg] dot.mkshrc: add DJB cdb hash function - [tg] Sync with oksh: fix Vi editing mode word erase handling, again - [tg] Skip whitespace between POSIX style shell function name and its definition parenthesēs during detection if an alias of the same name already exists to be more robust (Debian Closes: #535970) - [tg] Build system improvements for ACK and nwcc, both on Debian sid - [tg] Fix spelling error in changelog discovered by Lintian - [tg] Aligh “set -o nounset” / “set -u” behaviour with future POSIX standard, as discussed with GNU bash maintainers, David Korn from AT&T ksh93, and The Open Group; prompted by use in Debian; Closes: #539538 - [tg] add an unsupported way to make printf(1) a builtin - [tg] Build system and regression test code and comment improvements: better and more comments matching reality better; more reliability w.r.t. passed CPPFLAGS; more of the MKSH_SMALL changes may be overridden, all of them are now enumerated on the webpage; fixed some breakage; portability - [tg] MKSH_NOPWNAM and MKSH_SMALL will now both disable the ~fac/ (homedir) expansion code wholly if defined, not just getpwnam(3) calls - [tg] shells without job control no longer define the standard “stop” and “suspend” aliases (they are pointless anyway); regression tests know - [tg] use system RCS ID macros on MirBSD if decent enough - [tg] shut up bogus gcc 4.5/trunk warnings caused by over-optimisation - [tg] restore ANSI C compilability broken in R38 (speed up, even) - [tg] use memcpy(3) ipv strlcpy(3) if possible and safe and secure * Integrate czech translation update, Dêkuji; Closes: #534788 * Switch to debhelper 5, by suggestion of Patrick “aptituz” Schönfeld * Add (commented out) framework for building with klibc, pending bugfixes and enhancements I submitted to the Debian BTS; can be customised for with/without MKSH_SMALL and dynamic/static linkage * debian/copyright: remove setmode.c remark, it is never used: mksh-full has it provided by libbsd; mksh-diet, mksh-small, and mksh-klibc have the mknod builtin disabled and do not need it; strlcpy.c is provided by libbsd, dietlibc and klibc, so neither mksh-full nor mksh-diet (nor mksh-klibc) need it, only mksh-small in the glibc version (on platforms where dietlibc is unavailable) * debian/rules: Append -e to sub-make command line, to force it to use the correct build environment (mostly CFLAGS) * Apply policy compliance (-o posix if run as sh) to mksh-small * Disable duplication of -Wall on the compiler command line * debian/rules: improve comments * mksh-klibc: debian/rules can now build an MKSH_SMALL flavour * Let mksh have all builtins dash has; Closes: #532343 ‣ New diffs/add-builtin-chdir.diff: add “chdir” builtin (= “cd”) ‣ New diffs/add-builtin-printf.diff: add “printf” builtin (manpage) ‣ debian/copyright, debian/rules: new source file printf.c (code), install and use it; make sure klibc has strtod(3) disabled ‣ New diffs/add-builtin_common.diff: common part of the diff * New diffs/zz-version.diff: use Debian specific ksh version number * debian/rules: reorder some assignments to make it better readable and add and improve comments * debian/watch: add RCS ID and comments * debian/mksh.menu: don’t create an entry for Diet mksh any more * debian/mksh.menu, debian/mksh*.xpm: add icons, long description * Update spanish translation; from asarch via IRC, ¡gracias! * Fix a spelling error and repetitiveness in the German translation * Use portuguese debconf translation for the missing parts of the brasilian-portuguese translations and mark them fuzzy * Translate the missing dutch parts myself (as good as I can) * Convert all debconf translation files to UTF-8 * Remove VCS-CVS field override; the Lintian maintainers have agreed to adjust it so that anoncvs-over-ssh is not criticised * Switch to Debian Policy 3.8.3, no relevant changes -- Thorsten Glaser Wed, 16 Sep 2009 11:08:08 +0000 mksh (38.3-1) unstable; urgency=low * New upstream version R38c; complete ChangeLog: - [tg] Fix regression tests on OSes insisting on a shebang (Cygwin) - [Sean Boudreau] QNX 6.4.2 ed(1) is said to have the bugs fixed - [tg] Build.sh bugfixes: -DMKSH_BINSHREDUCED can also be given without -DMKSH_SMALL; allow HAVE_REALPATH=x and HAVE_REVOKE=x in the environment to re-enable these even if -DMKSH_SMALL disables them by default, like mknod already did - [tg] -DMKSH_ASSUME_UTF8=0 skips the environment checks, like -DMKSH_ASSUME_UTF8=1, but disables the utf8-mode - [tg] Apply some more KNF – style(9) – to the source; clean it up and further optimise for small size - [OpenBSD] Fix segfaults caused by missing check for end of input in the tokeniser on “let --” and other input - [OpenBSD] Make Vi editing mode ^W behave like Emacs mode’s - [tg] If no killpg(3) is available, use kill(2) and hope it works - [tg] -DMKSH_NO_LIMITS skips trying to build the ulimit code * debian/rules: use DEB_BUILD_ARCH, not DEB_HOST_ARCH, to determine if dietlibc should be excluded on certain architectures where it is known to fail -- Thorsten Glaser Wed, 10 Jun 2009 19:45:10 +0000 mksh (38.2-1) unstable; urgency=low * debian/rules: fix typo in buildd admin instructions for openpty() * New upstream version R38b; complete ChangeLog: - [André Wösten] Add __NO_EXT_QNX to avoid picking up the wrong waitfor() from in (while porting to) QNX 6.4 - [tg] Plug memory corruption issue introduced in R38 - [tg] Amend dot.mkshrc with a base64 en-/decoder in shell - [tg] Import a manpage fix via OpenBSD from Alan R. S. Bueno -- Thorsten Glaser Sun, 31 May 2009 17:45:42 +0000 mksh (38.1-1) unstable; urgency=low * debian/control: depend on locales-all on m68k because its locales and glibc packages are not up to date / installable * debian/rules: ignore localedef failure (uncritical to build) * New upstream version R38; complete ChangeLog: - [tg] Improve regression test output debugging - [tg] Fix prerequisites on MidnightBSD in mirtoconf - [tg] Mention that RedHat BZ#496791 cannot currently be fixed in the manpage by discouraging use of apostrophes in comments in comsubs; add appropriate (expected-fail) regression tests - [tg] Sync with OpenBSD ksh (mostly a no-op) - [James Butler] Add search-history-up and search-history-down keybindings (tcsh-like) to the Emacs command line editing mode - [tg] Bind new search-history-{up,down} to ANSI PgUp and PgDn keys - [tg] Document ANSI default keybindings (↑↓←→ Home End Del PgUp PgDn) in the mksh(1) manual page as well - [tg] Optimise internal UTF-8 handling code for size and reusability - [tg] Incompatible change: ${foo:1:2} and ${#foo} now operate on characters, not on bytes. Characters are octets (set +U) or (utf8-mode) MirOS OPTU-8 multibyte characters (set -U) - [tg] Improve regression tests relating to ${foo:1:2} and ${#foo} and let wc=1#x and utf8-mode - [tg] Use per-file copyright notices, move global text to manpage - [tg] Expose new MKSH_MIDNIGHTBSD01ASH_COMPAT ifdef; change it to only trigger if FPOSIX (or MKSH_BINSHREDUCED and /bin/sh) - [tg] Remove already-dead “#if 0” style debugging code - [tg] Change some code into a more portable fashion, optimise - [tg] Allow [[ $foo ]] (ksh93 extension) mentioned by pgas - [tg] Clean up mksh and the contributed arc4random.c for some conversion, enum and other warnings for gcc-snapshot trunk r147610 - [tg] Ensure no function uses more than 768 bytes of stack either - [tg, wbx] Add extension to make “!string” lines work like in GNU bash * debian/rules, debian/copyright: adjust to upstream changes, provide separate copyright file for Debian * Remove package-uses-deprecated-debhelper-compat-version lintian override to show up in statistics, we want to retain the old debhelper version to facilitate backports -- Thorsten Glaser Wed, 27 May 2009 21:27:50 +0000 mksh (37.3-2) unstable; urgency=low * Provide a way to not use dietlibc for /bin/mksh-static on certain architectures; use it for s390 (Closes: #523088) * debian/control: run ispell over it -- Thorsten Glaser Wed, 08 Apr 2009 18:07:55 +0000 mksh (37.3-1) unstable; urgency=low * New upstream version R37c; complete ChangeLog: - [tg] Improve præprocessor detection/work in Build.sh - [tg] Decouple MKSH_CONSERVATIVE_FDS from MKSH_SMALL - [tg] Enable MKSH_CONSERVATIVE_FDS by default on Minix 3 - [tg] Work around the (in-)famous ACK "const" bug - [tg] Optimise structure alignment and padding; Closes: #522778 - [tg] Retain LOCPATH (for glibc locale) in check.pl - [tg] Document, simplify and clean up the code better - [tg] Use mirbsd.org eMail addresses consistently * debian/rules: try to at least execute the built binaries in !nocheck cases, to prevent totally unusable packages from being published; Closes: #522779 * Use LOCPATH and a temporarily generated UTF-8 locale for the regres- sion test suite (from Steve “vorlon” Langasek); depend on localedef Closes: #522777 * debian/control: add comment where the dietlibc list comes from * Sync package description, etc. with R37c release and upstream * debian/control: mention VCS-CVS syntax and place of upstream source -- Thorsten Glaser Tue, 07 Apr 2009 23:24:48 +0200 mksh (37.2-1) unstable; urgency=low * New upstream version R37b; complete ChangeLog: - [tg] Clean up build system and dot.mkshrc some more - [tg] Add getrusage(2) implementation using times(3) if none found - [tg] Add jobless mode (for Minix 3, Plan 9, …) - [tg] Detect the Amsterdam Compiler Kit in the build system - [tg] If no RLIM_INFINITY don’t try to do ulimit - [tg] Work around gcc4 strict warnings vs. broken system headers - [tg] Work around systems with mmap(2) but no munmap(2) - [tg] Fix (disallow) bind key macro recursion (instead of beeping and going into an endless loop), allow multi-line bind key macros (mostly from Alexander Hall), remove dead code (the beeping) and optimise - [tg] Add (commented out, undesired, standards compliance breaking) compatibility code to MidnightBSD 0.1 /bin/sh for ctriv - [tg] Clarify the mksh(1) manual page even more - [tg] Port to Minix 3 + GCC * New upstream version R37; complete ChangeLog: - [tg] Rename -o utf8-hack to -o utf8-mode - [tg] Fix spacing mode error (pasto) in the mdoc(7) format manpage - [tg] Implement $((#…)) unsigned arithmetic calculation, needed for arc4random_uniform(3)-in-korn-shell implementation - [tg] Really preserve LD_LIBRARY_PATH in check.pl - [tg] New Build.sh option ‘-combine’ for building mksh(1) at once with “-fwhole-program --combine” (gcc4, llvm-gcc4) if available - [tg] Always set COLUMNS and LINES trying as hard as we can, using TIOCGWINSZ even if used without FTALKING, and with the sane 80x24 default if the ioctl(2) fails - [tg] Handle _POSIX_VDISABLE being undefined (e.g. Linux/klibc) - [tg] is only required for flock(2) - [tg] Fix multi-column output routine for the corner case if the screen is less wide than one output column; 10x Gábor Gergely - [tg] Fix ${foo/@(%)/\\x} in UTF-8 mode (utf_widthadj for control characters U+0080‥U+009F is slightly broken; this fix shifts the brokenness into the command line editing mode only) - [tg] Introduce mksh_ari_t and mksh_uari_t internal types to limit arithmetics to 32 bit on all systems; currently depending on the already-used standard int32_t and uint32_t types. Future expansion to 64 bit possible. Document that shell integer variables use this type. - [tg] The variables PGRP, PPID, RANDOM and USER_ID are now unsigned - [tg] Fix two off-by-ones breaking PS1 ending with a newline; bug reported by Matthias Diener - [tg] Just pass through C1 control characters for now - [tg] Code and internal interfaces cleanup - [tg] Regression test fixes for Cygwin env(1) being unsorted - [tg] Replace the memory allocator by something equally simple and homegrown but optimised for use with mksh and free checking - [tg] Import a couple of minor fixes (e.g. spelling) from oksh - [tg] Fix problems with "set -e" for real; from oksh, Closes: #518359 - [tg] In "set -o posix" mode, have limited echo(1) to improve standards compliance; the exact feature set is open for discussion, e.g. with pkgsrc® people; for now, only -n as first arg - [tg] Make test builtin operator precedence consistent; from oksh - [tg] Revamp and fold and enhance the regression tests - [tg] Document somewhat surprising behaviour in mksh(1) better; here: [ x -eq y ]; for gps23 from #ksh - [tg] Reduce memory consumption by allocator simplification - [tg] Fix bugs spotted by DEC ucode cc (ULTRIX) and gcc 1.42 (BSD/OS) - [laffer1] Make mksh the default /bin/sh in MidnightBSD * debian/rules: add support for applying patches to the source code * debian/rules: build with new ‘-combine’ option for better optimisation * Fix debconf checks if dash is uninstalled; Closes: #518355 * Use 「--package mksh」 consistently with dpkg-divert * debian/control: update package description * Upgrade Standards-Version to 3.8.1 - debian/rules: support nocheck in DEB_BUILD_OPTIONS - debian/control: add RCS Id as comment field * debian/source.lintian-overrides: add (things not deemed fixable) - package-uses-deprecated-debhelper-compat-version (who cares) - vcs-field-uses-not-recommended-uri-format (source is available via AnonCVS, but pserver must die!) * debian/control: prepend :ext: anoncvs protocol to VCS-CVS field -- Thorsten Glaser Sun, 05 Apr 2009 15:48:16 +0000 mksh (36.2-1) unstable; urgency=low * Reword package description, avoid things not of interest to a Debian user; Closes: #505882 * Switch from patching copyright to merely prepending information * Remove all patches, as they have been integrated upstream; add ‘-DMKSH_BINSHREDUCED’ to CPPFLAGS to enable the functionality * New upstream version; complete ChangeLog: - [tg] Add check for naming the output file “scn” instead of “a.out” or “a.exe” when compiling scn.c, for Haiku, from Adam “replaced” Hoka - [tg] Rewrite utf_backch macro and x_bs2 function into a combined x_bs3 function for the Emacs editing mode, to optimise them and get rid of the use of __typeof__ (suggested by Anders “ragge” Magnusson after the problem was spot by replaced) and one of the uses of the statements-as-expressions feature - [ahoka] Add mirtoconf check for nice(3), missing on Haiku - [tg] Remove all uses of the statements-as-expressions feature by rewriting the source code accordingly and optimising some parts - [tg] Recognise nwcc (Nils Weller’s C compiler) in Build.sh - [tg] If exists, pull it in for strcasecmp(3) - [tg] Welcome QNX/Neutrino; work around broken /bin/ed - [tg] Simplify, shorten, speed up PS1 in dot.mkshrc - [tg] Remove some dead code courtesy of scan-build native runs - [tg] Add some casts to prevent LLVM+Clang warnings - [tg] Work around llvm-gcc-4.2.1 -Wformat pickyness - [tg] Add new Build.sh option ‘-llvm’ (clang, llvm-gcc) - [tg] Speed up mirtoconf if ‘-DMKSH_ASSUME_UTF8’ is set - [tg] Add the workaround for Debian #492377 into the main mirtoconf function (hiding gcc errors during the configure phase) because Gentoo has similar scanner issues; reported by Hanno Böck - [tg] If an MKSH_SMALL has arc4random(3), skip the rand(3)/srand(3) fall-back altogether to shrink size, also removed need for time(3) - [tg] Fix alias expansion recursion check if the word to be expanded is immediately followed by end of input, add test case; spotted by Michael Hlavinka in pdksh and mksh; RedHat #474115 - [tg] Fix string/wdstring confusion preventing bashiop (&>foo) to work inside a function, add regression test, limit to 99 fds - [tg] change regression tests to ‘set -U’ or ‘set +U̲ instead of ‘set -o utf8-hack’, as well as query using ‘$-’ ipv ‘$(set +o)’ (easier and more reliable) - [tg] Add comment to regression tests which can fail on slow machines or Cygwin environments due to timing issues - [tg] Remove a lot of superfluous casts, improve type cleanliness - [tg] Insert a couple of /* CONSTCOND */ for lint * New source package and build structure: - distfile is now packaged *inside* the orig tarball instead of repak- kaged, similar to PostgreSQL - debian/rules “patch” target takes care of it, as per Policy Manual - debian-specific things (debian/ directory and all patches) are kept in a publically accessible CVS repository - VCS-CVS and VCS-Browser fields have been added to debian/control - source is extracted to ./mksh and built, using relative paths to the source code, in ./build/full and ./build/small; both are .cvsignore’d - most files now carry an RCS ID - paths in mksh.install, mksh.manpages, rules have been adjusted * word-wrap debian/control lines to 80c * add build dependency on cpio (for distfile extraction) * for non-pbuilder testsuite runs (needed on gnubber), rename the ./manual file tested for to ./attended to clarify its purpose * debian/rules: share code instead of duplicating it * debian/rules: fix testsuite use of $? and $x (gmake wants $$? and $$x) * debian/rules: use sensible stamp files and new paths, coming along with the new “patch” target * remove the ‘-Q’ option from Build.sh invocation, which is gone -- Thorsten Glaser Sun, 14 Dec 2008 20:38:42 +0000 mksh (35.2-3) unstable; urgency=low * Apply upstream changeset 10048D15ABE2EA76C75: - Bring back automatic -o posix setting if the shell is invoked as “sh” or “-sh” (unless compiled with MKSH_SMALL), add regression test - If -o posix is set, do not keep file descriptors created via I/O redirection, as Korn Shells do, private; add regression test; Debian Closes: #499139; reported by Markus Schaber and Agustin Martin Domingo * Change mksh-internal version number to document aberration from pristine source * Add DM-Upload-Allowed control field to prepare for future updates * Add workaround to “posix-mode-2” regression test to cope for GNU getopt idiocy to not stop argument parsing upon encountering the first non-flag argument: “ln -s mksh -sh” tries to parse -s and -h -- Thorsten Glaser Fri, 19 Sep 2008 10:12:59 +0000 mksh (35.2-2) unstable; urgency=low * Workaround for false positives on IA64, Closes: #492377 (by circumventing the regex matcher for code not actually used) * The mksh-static binary on non-dietlibc arches was not statically linked * MKSH_STATIC implies MKSH_NO_PWNAM, remove duplicate definition * Add build dependency on en_US.UTF-8 locale data for the regression tests * Fix lintian -vIi warning debian-copyright-line-too-long by wrapping -- Thorsten Glaser Mon, 28 Jul 2008 20:54:17 +0000 mksh (35.2-1) unstable; urgency=low * Update to BSD-advertising-clause-free new upstream release; changelog: - Simplify and refactor the ulimit builtin, partially from oksh - Some style cleanup; use appropriate integer types - Fix a bug in table (e.g. kill -l, tab completion) display: the width of non-ASCII characters is now honoured in the utf8-hack mode - Improve handling of invalid UTF-8 in certain areas, and multibyte (UTF-8 / CESU-8) in general - When using “typeset -Z«n»” on an integer variable with a base other than ten, zero-pad the value instead of the base – pdksh, oksh, zsh, and AT&T ksh93 are wrong here; GNU bash doesn’t even have typeset - Improve parsing of “set +o” output where done (dot.mkshrc, check.t) - Improve regression tests - Support for base-1 numbers: in non-utf8-hack mode, ‘1#x’ means the same as the ASCII code for ‘x’ (e.g. 78hex), where ‘x’ is any single octet (byte); in utf8-hack mode, ‘x’ is either a valid and minimali- stically encoded UTF-8 multibyte character in the range 0000‥FFFD, or a single octet with no trailing octets (bytes), which will then be converted as if it were an ASCII value, or, if bit7 is set, be mapped into the PUA range of EF80‥EFFF assigned by CSUR for this purpose; this mapping is, in both cases, bidirectional; the planned base-0 number support is not possible with the code, so use base-1 (with utf8-hack disabled, or & 0xFF) instead (while it is recommended to parse only single octets, there is a regression test showing correct and safe multibyte parsing, which however is error-prone to implement and thusly not recommended) – “genial” replaced@TNG, “this sounds fun” ggergely, agreed bsiegert@ and others - Pull in more current versions of supplied files; use Unicode 5.0 - Clean up unused definitions in build system; document MKSH_CLS_STRING - Remove advertising clause from copyright file; while we’d be pleased to be mentioned if something contains our code, tg@ will no longer enforce the requirement to advertise with that specific formula, and we’d prefer if people remember the OpenHAL vs ath5k incident and that they cannot simply change licencing of existing code; patches sent to the MirOS Project for inclusion shall be accepted if they’re agreed to match this licence - Simplify dot.mkshrc sample file: licence is merged into the main copyright file; AT&T ksh93 compatibility was improved - Fix a display problem regarding fullwidth characters (e.g. CJK) - Set the “C” locale in Build.sh for tool execution; otherwise, cer- tain OEs behave strange; thanks to Adam “replaced” Hoka for spotting - Use en_US.utf8 as UTF-8 locale for the testsuite for now - If setlocale(LC_CTYPE, "") is not available, look at the environment variables ourselves – brings UTF-8 support to poor OSes - Remove some now-dead code; speed up configuration process; shrink - Default to no setlocale(3) due to stubbed or missing locale support on GNU/Cygwin, OpenBSD, OSF/1 in Build.sh; a few more that are quite unlikely to have a UTF-8 locale: BSD/OS, Interix, Minix, PW32, Ultrix, AT&T UWIN; default to always UTF-8 on Plan 9 - Fix for testsuite unexpected failure if running as root in one case - Initialise all shell integer variables (OPTIND, PPID, RANDOM, SECONDS, TMOUT) to base 10 - Reintroduce from mksh pre-R24 shell integer variable PGRP set to the PID of the process group leader via getpgrp(2) - New shell integer variable USER_ID set to the geteuid(2) and used by dot.mkshrc to speed up logins, saves a spawn of id(1), mentioned by and realisation planned with Andreas "gecko2" Gockel - Fix dot.mkshrc tilde replacement in both $PS1 and the pushd/popd/dirs implementation when the home directory is empty, the root directory, or ends with a slash (disable replacement in that case) - Support dietlibc, force it into providing a BSDish caddr_t - Do not use LDFLAGS and LIBS while compiling with -c - Add realpath(3) builtin, to further speed up logins and chdirs - Optimise the code somewhat by making use of possible assumptions - Set the “C” locale in test.sh as well to quell warnings - Split the regression tests that use locale between en_US.utf8 and en_US.UTF-8, since not all OSes support either one, and make only HP-UX and GNU use the latter - Fix kill, mknod(8) builtin usage msg, from Igor Sobrado via oksh - Use proper ptrdiff_t casts for pointer arithmetics, inspired by an oksh commit from Federico Schwindt - Remove check category “pdksh” from check.t and test script - Improve Darwin, OSF/1, HP aCC, SUNpro version reporting - Support GNU bash “&>” extension, even better than they do, suggested by Lukas “smultron” from MidnightBSD - Basic support for LLVM+clang in the build system with experimental “ccc” compiler driver; llvm-gcc worked as-is before already - Better support for contributed arc4random.c file - Do not spin if unlink(2) fails on $HISTFILE, from Decklin Foster - Dump the perl(1) $^O variable in test.sh to logs - Pull in latest changes from oksh - Allow white space between a here string indicator and the string, accidentally discovered by twkm (#ksh, freenode) - Allow fd specifications outside the 0‥9 range for I/O redirections, and bounds check them to be lower than the FDBASE definition, currently still 10 if MKSH_SMALL, 24 otherwise (unportable) - Improve the regression test suite: for one test, we had a bizarre constraint telling it won’t work on UWIN, which was based upon false assumptions, but Tru64 would fail it since its cat(1) unexpectedly outputs some error messages (fix by closing stderr for cat); another test would unexpectedly print no error message on Solaris (fix by making the error message optional in the perlre(1) used) - Switch back to en_US.UTF-8 for glibc, Debian can do both, Mandriva fails on en_US.utf8 (XXX no libc5 auto-detection to disable it) - IRIX also has no UTF-8 locale at all, confirmed by Elias Pipping - Fix regression test suite for MKSH_SMALL - Bring in latest changes from oksh (OpenBSD ksh, not DeliLinux crap) - Fix abuse and unsafe use of str_save() and str_nsave() - Optimise the implementations of str_save() and str_nsave() - If MKSH_AFREE_DEBUG is defined, guard against afree()ing a pointer which has not been allocated from the given pool, from Todd C. Miller - Fix attempt to free a pointer to stack (function-local) storage when redefining a function containing a call to the “time” built-in, discovered by Elias Pipping, patch by Jared Yanovich, help from Todd C. Miller - Protect a little against people not running “./test.sh -v” but calling it with, for instance, GNU bash (as homsn did…) - Honour $PERL environment variable in test.sh, improve scanning for Perl, do not use potentially undefined $^O, print Perl version - Add as requirement (dietlibc) - Work around bug in BSD/OS 3.1 /bin/ksh (PD KSH v5.2.8 96/08/19) - Add regression tests from OpenBSD’s suite - Use better CPPFLAGS for AIX, Minix 3 (from pdksh) - Expose the “s ≠ NULL” str_[n]save_() API and use it where the string can never be NULL (local stack storage), from gcc-4.2 warnings - Clean up pointer-to-integer-cast warnings in the mirtoconf process * New debian-policy version: 3.8.0.1 - DEB_BUILD_OPTIONS: add -Wall to default CFLAGS, fix “noopt” handling, add “nostrip” handling, ignore “parallel=«n»” as we cannot specify a maximum value to Build.sh - Convenience copies: switch from a contributed arc4random.c file to using the new libbsd Debian package, 10x Hector, Guillem et Aurelien! * debian/control: sync Description field with upstream suggestion * Rename menu entry from "MirBSD ksh" to "MirBSD Korn Shell" for clarity * Add a mksh-static binary, for initrd, initramfs, installer, rescue * Integrate translation updates, ありがとう; Closes: #483506 * Integrate translation updates, tack; Closes: #491950 -- Thorsten Glaser Tue, 22 Jul 2008 20:42:23 +0000 mksh (33.4-1) unstable; urgency=low * New upstream release; changelog: - Move a portability define from sh.h to the setmode.c helper, as it’s only needed there, and we want to use the latter from MirMake as well - SECURITY: when spawning mksh on a new terminal, for example with “sudo mksh -lT/dev/ttyC7”, flush all of that tty’s I/O first - dot.mkshrc: ensure “ls” is no alias, don’t hardcode its path * As dash won’t be the default /bin/sh without the current alternative handling / debconf mechanism in lenny (as per the mail from Martin Zobel-Helas), there is no need to act regarding our debconf scripts and /bin/sh ability, so I think this Closes: #469675 -- Thorsten Glaser Fri, 11 Apr 2008 17:38:02 +0000 mksh (33.3-1) unstable; urgency=low * New upstream release; changelog: - Handle Ultrix mmap(2) having a different prototype (returning a caddr_t instead of a void * and not defining MAP_FAILED; making Ultrix 4.5 a fully supported platform - Decrease code size and optimise (using puts-style functions instead of printf-style functions for fixed strings; bool instead of int) - Correct behaviour of “export”, “export -p”, “readonly”, “readonly -p”, “typeset”, “typeset -p”, “typeset” and their respective descriptions in the manual page; problem reported by Danijel Tasov - Work around dup2(2) problem (preserving the close-on-exec flag) on Ultrix using code from mirbsdksh-1.11, lost in oksh - Clean up Build.sh a little more - Correct quotes and some other stuff in the regression tests; fix for running with old Perl (5.002 or so, Linux 2.0, BSD/OS) - Export the new “__progname” and “__perlname” environment variables to the suite run from check.t in check.pl - Do not mistake IBM xlC and VisualAge for different things, thanks to Pascal “loki” Bleser from OpenSuSE for information on them -- Thorsten Glaser Wed, 02 Apr 2008 21:45:54 +0200 mksh (33.2-1) unstable; urgency=low * New upstream release; changelog: - Fix some minor code issues remarked by MIPSpro - Port to SGI IRIX 6.5 (uname: IRIX64) using gcc and MIPSpro - Scan for a lot more compilers; add support for MIPSpro - Ignore if the OS doesn’t define MAP_FILE for mmap(2) - Use sys/types.h as sys/mkdev.h dependency - Enable OSF/1 V2.0 /bin/sh to run Build.sh - Add strcasecmp(3) proto for Ultrix 4.5 only (imake style) - Add S_ISLNK if the OS doesn’t define it - Use tempnam(3) if mkstemp(3) not found – not recommended - Reduce dependency on certain OE facilities: printf(1), fgrep(1) being able to scan for two patterns at the same time, perl5 being named perl - New -T- option for dæmonisation, cf. man page - Port to BSDi BSD/OS 3.1 (gcc 1.42 and gcc 2.7.2.1 supported) - Simplify the dot.mkshrc file and make it more robust - Report OE and $CC version in Build.sh, for logs - Fix look’n’feel of the mksh(1) manual page, so that it still looks best in AT&T nroff(1), looks much better in GNU groff (the PDF version we place on the website), and looks some better and gains the ability to copy’n’paste from it for GNU gnroff -Tutf8, originally prompted by Patrick “aptituz” Schoenfeld and “lintian -viI mksh*.changes”, but then improved (and nroff hacked) by tg@ a lot - Shut up some gcc warnings (explicit braces; cast MAP_FAILED) - Try to get rid of the test “if the compiler fails correctly” by using the errorlevel of the $CC process (except with Microsoft Visual C++ which returns non-zero even on success sometimes), thus supporting DEC C on OSF/1 (and, quite possibly, gcc3 on Mac OSX Leopard) - If revoke(2) and flock(2) are found, check if they’re declared - Promote Tru64 to a fully supported operating environment, even though it needs a plethora of _*_SOURCE defines and has SIGMAX instead of NSIG; OSF/1 V4.0 and Tru64 (OSF/1 V5.1) are supported with both gcc and HP/Compaq/DEC C in various versions - Generalise the workaround for incompatible sig_t across the platforms that need it (currently, OSF/1 and PW32) - Shut up annoying warning about gcc 2.7.2.3, 2.8.1, 2.95.x not knowing the “-std=gnu99” and “-std=c99” options without setting proper errorlevel * Remove debdiffs for things included in upstream: - manpage diff - displaying of OS and compiler versions before build * Update arc4random.c file from MirBSD contrib repository for now, until we have libbsd in Debian !kfreebsd sid (coming soon I hope) - fixes “warning: ignoring return value of ‘read’, declared with attribute warn_unused_result” occuring on e.g. Fedora GNU/Linux * Integrate translation updates, merci; Closes: #471009 -- Thorsten Glaser Fri, 28 Mar 2008 20:34:00 +0000 mksh (33.1-2) unstable; urgency=low * Help backporters by specifying explicitly versioned debconf/cdebconf dependencies, thanks Patrick “aptituz” Schoenfeld for mentioning * Integrate manpage diffs from mksh-current to fix “lintian -viI”, also from aptituz, and a couple of other issues (' vs ’ vs ´, ' vs ‘ vs `, - vs ‐ vs − vs – vs —, ^ and ~ in the Postscript version) * Add a debian/watch file, idea from aptituz too, hints from uscan(1) -- Thorsten Glaser Tue, 04 Mar 2008 00:31:08 +0000 mksh (33.1-1) unstable; urgency=low * New upstream release; summary of changes: - Sync with OpenBSD ksh (no real functional changes) - Enhance the print builtin with two new escape sequences: \xAB parses the next up to two hexadecimal digits AB and outputs a raw octet (byte) whose ordinary value is AB; \uABCD parses up to four hexadecimal digits and outputs the UTF-8 (CESU-8) re- presentation of the unicode codepoint U+ABCD from the BMP (Basic Multilingual Plane), not depending on the locale - The . (“dot”) command (and its counterpart source) needs an argument (the script to source); from Debian pdksh package - In the lexer, do not expand aliases if there is an opening parenthesis just after the token (from Debian pdksh). This fixes the namespace issue that caused a POSIX function de- finition stop() { … } to fail due to “stop” being a built- in Korn shell alias. Now, aliases are removed when a POSIX function with the same name is defined; Korn functions are still different: their definition does not fail, but the alias retains its precendence (unchanged behaviour) - Accordingly, do not disable built-in aliases in POSIX mode any more - Since POSIX mode now only turns off braceexpand mode (which can then be turned back on), do not handle being called as -sh or sh specially any longer - Clean up the source code: make some constants private to the only file using it; optimise; comment some code; improve portability with regards to stupid tools in /usr/bin (or /usr/xpg4/bin) and foreign compilers - Implement “here strings” (like ksh93 or zsh; GNU bash col- lapses white space if the string is not double-quoted): you can now replace “print -r -- "$foo" | command” with “command <<<"$foo"” with the very same semantics as “command < Sun, 02 Mar 2008 16:12:59 +0000 mksh (32.1-1) unstable; urgency=low * New upstream release; summary of changes: - Checks for symbol declarations are compile time checks, not link time checks; fixes (optional) arc4random on AIX - Widen the range for array indicēs to the entire unsigned 32-bit integer range (enough for ino_t on BSD); wrap numbers outside of that range into it for simplicity (e.g. foo[-1] = foo[4294967295]) - Fix an internal error when using a pipeline as co-process - Relax requirement on compilation environment to provide certain types - Optimise some more for size (struct padding; functions → macros, …) * Integrate galician translation, Closes: #447947 -- Thorsten Glaser Thu, 25 Oct 2007 18:36:27 +0000 mksh (31.4-1) unstable; urgency=low * New upstream release; summary of changes: - Support pcc (the ragge version of the Portable C Compiler) - Add pushd/popd/dirs functions (csh) and precmd/chpwd hooks (zsh) to dot.mkshrc which now requires readlink(1) with -f; requested by many (e.g. some Gentoo users; XTaran of symlink.ch) - Enable colour escapes in dot.mkshrc since almost nobody groks how to do it right from the manual - Remove -DMKSH_NEED_MKNOD checks from Build.sh, people should use the HAVE_MKNOD environment variable - Implement parallel make in Build.sh (not used by Debian) - Fix another busy-loop spinning problem introduced by an icc warning, thanks to spaetzle@freewrt.org for keeping to bug me to look for it, as it affected GNU/Linux most, followed by Solaris, rarely BSD - Improve standard integer type detection in Build.sh - Cleanups in code, build script and manual page - Clean up Build.sh and “test … -o …” doesn’t exist in Bourne - Detect if the non-standard u_int32_t type, which was unfortunately used by the OpenBSD project in designing the standard arc4random(3) API, is present (which it isn’t on Solaris), and, if not, emulate it using the standard uint32_t (ISO C99) from , which we fake as needed (if the standard integer types are not present, e.g. on PW32 and OSF/1); change mksh as well as the arc4random.c contribution to not use these non-standard types - Remove unused types from the faked file * Integrate updated translation into portugués, Closes: #444218 * debian/rules: wait for script(1) to return, in case it runs asynchronously; we have seen weird results on Debian and Fedora -- Thorsten Glaser Mon, 15 Oct 2007 18:23:01 +0000 mksh (31.2-1) unstable; urgency=low * New upstream minor release (R31b); summary of changes: - Fix a syntax error in Build.sh checking for TenDRA - Fix typo (blsk → bksl) in check.t test naming - Autoscan for uint32_t, u_int etc. presence - Fix some memory leaks, mostly by NetBSD® via OpenBSD - The “unset” builtin always returns zero, even if the variable was already unset, as per SUSv3 (reported by Arkadiusz Miskiewicz via pld-linux and oksh) - In tab-completion, escape the question mark, reminded by cbiere@tnf - Fix a busy-loop problem, Debian #296446 via oksh - Fix a few display output problems in the build script - Shut up some gcc warnings on Fedora; beautify some code - Support OSF/1 with gcc2.8, thanks to Jupp Schugt - Fix gcc4 detection of __attribute__() on non-SSP targets * debian/control: sync description with that of packages for other OSes * debian/menu: Apps → Applications, as per Lintian * debian/rules: do not run the testsuite with script on Debian GNU/HURD, because some translators seem to be unable to cope with the chroot * arc4random.c: use uint_t consistently, helps compiling on OSF/1 -- Thorsten Glaser Tue, 11 Sep 2007 14:00:20 +0000 mksh (31.1-1) unstable; urgency=low * New upstream release (R31); summary of changes: - Support the TenDRA compiler (possibly also Ten15, not tried) - Begin supporting Fabrice Bellard’s Tiny C Compiler (tcc on Debian cannot link due to duplicate symbols in GNU libc, thus unfinished) - Improve some mirtoconf checks (most notably, mknod(2) and macros) - Add new emacs editing command “clear-screen” (ESC ^L) as requested by D. Adam Karim - Support building for MidnightBSD - Add new shell alias “source”, semantics like the GNU bash builtin - Add new shell option “set -o arc4random”, controlling whether rand(3) or arc4random(3) is used for the $RANDOM value, use arc4random_pushb(3) if it exists - Add new builtin “rename” (just calls rename(2) on its arguments), for rescue purposes (like renaming ld.so) - Fix the inofficial OpenBSD port, from D. Adam “Archite” Karim, 10x - Disable the less(1) history file by default (privacy issues) in the sample dot.mkshrc file; mention other things in etc_profile (the additional sample mentioned on the mksh website) * Put the arc4random.c file under version control * Clean up the copyright file (rm commented stuff from Debian experimental) * Mention /dev/tty is also needed in debian/rules pre-build echo -- Thorsten Glaser Fri, 07 Sep 2007 19:34:25 +0000 mksh (30.1-1) unstable; urgency=low * New upstream major release (R30); summary of changes: - Build on and for Solaris, Linux and MirBSD with Sun's C compiler - No longer build a statically linked shell by default; do not try, do not provide any means; user has to use LDFLAGS instead. - Remove some probably dead mirtoconf checks - Remove commented out -fwhole-program --combine check and still active -fno-tree-vrp bug workaround thing, the latter because the bug seems to only appear for functions that also exist as a builtin (which was declared with the nonnull attribute) - Fix a long-standing typo, 10x moritz@obsd - Prefer more common signal names (SIGCHLD) over uncommon ones (SIGCLD) - Quieten gcc and support SUNpro 5.8 on Solaris 10 on sparc64 - Optimise signal handling and detection; enable compilers whose præprocessor doesn't have -dD to generate list of signals - Optimise mirtoconf meta-checks for persistent history etc. - Fix a bug preventing manual page generation on Solaris - Add support for the Intel® C Compiler and quieten it a little; fix a few minor buglets (mostly type conversion) its too verbose warnings show, as well as some errno ab-/mis-use - Remove support for honouring the CPP environment variable; $CC -E - is simply used instead in the places where $CPP was used previously, because that was used in other places already, and to prevent it from behaving differently from the $CC used - If a file called arc4random.c is lying around in the source directory at mirtoconf time, scan for and use the file if arc4random(3) isn't found otherwise. From Debian GNU/kFreeBSD. - If the basename of argv[0] starts with “sh”, activate FPOSIX early, preventing some typical ksh aliases from being defined - If FPOSIX, don't pre-define aliases (except integer and local) to benefit operating environments that never heard of the great Korn Shell… - #if defined(MKSH_SMALL) || defined(MKSH_NOVI) disable the vi editing mode - Don't try to execute ELF, a.out, COFF, gzip or MZ binaries - Can be built on HP-UX (PA-RISC and IA64) with gcc or HP C/aC++ - Support x=(a b c) bash-like array initialisation - Support ${foo:2:3} bash-like substring expansion - Many mirtoconf improvements, fixes; speed-up; better portability - Enable compilation using Microsoft C/C++ Standard Compiler - Add UWIN build target using various compilers with the cc wrapper - Fix struct padding mistakes uncovered by the Microsoft compiler - Fix double initialisation / unused value assignment errors unveiled by Borland C++ Builder 5.5 - Fix superfluous code detected by gcc 4.2 - Fix large file support for OSes that require CPPFLAGS contains -D_FILE_OFFSET_BITS=64 – it was detected but not actually used in the build; thanks to hondza for the problem report! - Give the lexer a bigger state stack if !MKSH_SMALL - Prepare for addition of make(1)-style search/replace operations; correct the code for other substitution expansion operations - Default $CC to cc not gcc, this is no non-unix-ware ☺ - Support AIX with gcc and xlC; clean up code to warning-free - Prefer well-known signal names to alphabetically earlier ones - Fix a bug delivering ERR and EXIT pseudo-signals to traps combined with “set -e”, thanks Clint Pachl and Otto Moerbeek for the hint * Update German translation, Closes: #428590 (still pending resolution of the dash-as-/bin/sh and debconf common field issue described in http://thread.gmane.org/gmane.linux.debian.devel.release/17423 so please do not submit new translations until that issue is resolved) * Reflect changes in the description in debian/control -- Thorsten Glaser Thu, 26 Jul 2007 20:25:02 +0000 mksh (29.6-2) unstable; urgency=low * Re-run debconf-updatepo which was missed after we changed note into error * Fix arc4random on HURD by integrating it into the Build.sh script and scanning for prerequisite headers -- Thorsten Glaser Sun, 10 Jun 2007 07:51:06 +0000 mksh (29.6-1) unstable; urgency=low * New upstream formal release; summary of relevant changes: - Remove some redundant or unused functions - Fix several horizontal scrolling, display, scrollbar, etc. bugs unveiled by David Ramsey - Fix a few bugs found by Coverity Scan - Optimise dot.mkshrc sample file; add a speed alias - Fix a few shortcomings in the build system * Pull in arc4random support * Make it possible to install mksh as /bin/sh the same way as dash does, copy the necessary files from dash (my apologies to the translators, I simply search'n'replaced the term dash by mksh) * Install dot.mkshrc as /etc/skel/.mkshrc conffile -- Thorsten Glaser Mon, 28 May 2007 18:12:23 +0000 mksh (29.3-1) unstable; urgency=low * New upstream formal release; summary of changes: - portability fixes (darwin, hp-ux, solaris, new port to aix) - size optimisation if utf-8 mode is assumed by default (not in Debian) - small manual page fixes - Do not scan for and use "-fwhole-program --combine" because it's the cause of at least http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=408850 and breakage with FORTIFY_SOURCE on SuSE; thanks to Pascal Bleser (yaloki), Marcus Rueckert (darix), Martin Zobel-Helas, Steve Langasek (vorlon) for tracking this bug down in two different places; Closes: #421518 * remove the possible workaround mentioned in the changes for 28.9.20070309 because the problem has been solved upstream -- Thorsten Glaser Mon, 30 Apr 2007 21:53:12 +0000 mksh (29.2-1) unstable; urgency=low * New upstream formal release; summary of changes: + a plethora of UTF-8 fixes: - display control characters U+0080..U+009F the same as U+0000..U+001F, i.e. a caret followed by the character corresponding to the control character XOR 0x0040, treat their width as 2 subsequently - fix crash (cpu hog in spinning loop) on meta-tab + backspace - strip off UTF-8 byte order mark at beginning of input - if a BOM is encountered, switch on utf-8 command line editing mode + in utf-8 command line editing mode, handle invalid input more strictly: - if in x_literal(), i.e. the ^V mode (bind to quote), allow it as before - if it's the start of an invalid multibyte sequence, reject with a beep (e.g. if trying to input latin1 chars) - if it's an invalid or partial multibyte sequence, reject silently -> this makes command line editing much more robust + other bug fixes: - in a rare condition (error path), the wrong function was used to copy a string that could contain embedded NULs (encoded format), leading to memory access past malloc'd area - in the same path, fix an out-of-bounds access inherited from openbsd ksh -> discovered on Debian GNU/Linux experimental ia64, glibc 2.5-beta + new functionality: - if execve() fails, before passing the file to $EXECSHELL, open it and try to parse a shebang line; if we find one, do it ourselves (the good part of this is that it even works when there is a UTF-8 BOM before the shebang magic sequence) - for shebang processing, not only NUL or LF but also CR terminate the line - enhancements to the "dot.mkshrc" sample file (which is now regularily used upstream as well) - if the internal function exchild() fails, don't just tell the user that it failed, tell him WHAT failed (unless -DMKSH_SMALL) + code cleanup changes: - remove unused functions, macros - fix typos, errors, etc. - shut up gcc 4.1.2 warnings - Build.sh cygwin vs unix cleanup/simplification - shrink manual page to 39 DIN A4 pages when output as postscript + reliability changes: - if $CC supports -fstack-protector-all, add it to $CFLAGS - if $CC supports -fno-tree-vrp, add it to $CFLAGS if $CC is subject to the bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30785 - add mirtoconf check for "large file support", requested by bsiegert@, needed for some *nix, idea and implementation hints from GNU autoconf - add zsh workaround to Build.sh, just in case (untested) * disable the possible workaround mentioned in the changes for 28.9.20070309 because I was unable to verify/test it; maybe it only applies to the glibc in experimental anyway, we'll see to that later * add a comment about the regression test needing openpty() to debian/rules * remove non-ASCII (i.e. high-bit7) characters from diff/changelog * slightly enhance package description * properly indent homepage link in description, thanks KiBi (kfreebsd team) -- Thorsten Glaser Wed, 25 Apr 2007 11:36:42 +0000 mksh (28.9.20070309) experimental; urgency=low * Add possible workaround for #408850 by disabling -std=gnu99 (untested) so that this package at least compiles on Alpha until the bug can be fixed * Restore Debian prefix in copyright file accidentally lost in 28.9.20070304 * Do not build-depends-on-essential-package-without-using-version, remove explicit dependency on bsdutils -- Thorsten Glaser Sat, 10 Mar 2007 01:12:20 +0000 mksh (28.9.20070304) experimental; urgency=low * Due to failures like this one: ``cat: /build/buildd/mksh-28.9.20070218/builddir/screenlog.0: No such file or directory'' in http://experimental.ftbfs.de/fetch.php?&pkg=mksh&ver=28.9.20070218&arch=powerpc&stamp=1171913314&file=log&as=raw - remove the use of GNU screen to run the testsuite again - use 'script' from the Debian bsdutils package) to run the regression test suite within a controlling tty (this is experimental) * New upstream release candidate; summary of changes: - Work around Solaris /usr/ucb/tr, Solaris /usr/xpg4/bin/tr, Minix 3 /usr/bin/tr, and SUSv3 deficiencies - Fix compilation on more platforms (Interix, Cygwin, Linux 2.0 libc5, Debian GNU/kFreeBSD, Debian GNU/HURD, ...) - Use autoconfiguration for persistent history stuff - Fix the code (add "const" in like 1001 places) to be able to build without -Wno-cast-qual (hope it's safe now) - Optionally use const-debugging versions of strchr(3), strstr(3), to work around deficiencies in ANSI C - The above directly led to our own strcasestr(3) implementation for OSes which don't have it - Optimise dot.mkshrc macros - Remove shadowing warnings for more OSes - Support old ash(1) versions in Build.sh - Support use of _NSIG for NSIG - Optimise ctags(1) generation * Honour ${CC} -- Thorsten Glaser Tue, 6 Mar 2007 03:44:58 +0000 mksh (28.9.20070218) experimental; urgency=low * New upstream development snapshot; summary of changes: - fix 'hd' alias in dot.mkshrc example to not run off an ANSI standard 80 column screen; simplify - integrate MKSH_NEED_MKNOD and MKSH_ASSUME_UTF8 with Build.sh -- Thorsten Glaser Sun, 18 Feb 2007 20:34:48 +0000 mksh (28.9.20070216) experimental; urgency=low * New upstream development snapshot; summary of changes: - if MKSH_SMALL, don't include -T support and don't scan for revoke() function - new #ifdef MKSH_NEED_MKNOD to embed mknod(8) even if MKSH_SMALL is enabled - do not scan for revoke() on GNU/Linux since it always fails - simplify GNU/Linux CPPFLAGS and use them for GNU/HURD and GNU/kFreeBSD (tested on Debian experimental, thanks to the ftbfs.de autobuilder and Michael "azeem" Banck) - fix the 'bind' (no args) builtin output - new #ifdef MKSH_ASSUME_UTF8 to not check setlocale() and nl_langinfo(CODESET) if we want to always enable the utf-8 command line editing mode - tabcomplete a newline to singlequote+newline+singlequote instead of backslash+newline which is eaten; thanks to Thomas E. "TGEN" Spanjaard for noticing - remove shebang line from check.pl which isn't +x anyway * control: add ed(1) as suggested package, for history editing * control, rules: add GNU screen as build dependency; use it to provide a tty to the regression test suite so it can succeed in the Debian autobuilding mechanism; tested on i386-linux, i386-hurd * control: only the emacs editing mode is utf-8 safe (fix description) -- Thorsten Glaser Fri, 16 Feb 2007 20:32:52 +0000 mksh (28.9.20070118) experimental; urgency=low * New upstream development snapshot; summary of changes: - autoconfify compiler flags, c preprocessor - add option to avoid pulling in getpwnam(3) in !MKSH_SMALL - scan for certain headers, types; improve portability - speed up autoconfiguration process in failure case - finally fix static vs dynamic linking issues - fix manpage (.Nm macro) glitch with GNU nroff 1.15 - improve auto-detection of which regression tests are valid - mention failure to revoke(2) is possibly insecure * As a result of upstream changes, simplify debian/rules * Testsuite failues are not fatal for Debian * Please note: this is a development snapshot from CVS, but this one is deemed "gamma stadium" (i.e. more stable than beta, and ready for public consumption by a broad mass of testers). -- Thorsten Glaser Thu, 18 Jan 2007 20:57:40 +0000 mksh (28.9.20070117) experimental; urgency=low * Add -fwrapv to Debian CFLAGS to prevent unexpected code behaviour * New upstream development snapshot; summary of changes: - Don't expand ~foo/ if MKSH_SMALL, spares getpwnam(3) call - Fix and autoconfify signal list generation - Build.sh now uses $TARGET_OS as "uname -s" output for cross builds - Set flag for regression tests that can't succeed if MKSH_SMALL - Don't even check for setlocale(3) if MKSH_SMALL, unless overridden by user / build environment - Scan for C Preprocessor, use $CPP if $CC -E fails - Fix possible nil pointer dereferences and signal name mismatches - Scan for __attribute__((...)) and -std=gnu99 (req'd on Solaris 10) - Correct $LDSTATIC logic, unbreak -d, don't let the user override (or need to) $SRCS, $sigseen - Simplify TIOCGWINSZ handling, no need to catch SIGWINCH any more; window size changes are processed after input line editing ends (i.e. the lines are entered or ESC # (emacs mode) is pressed) and at startup; ^L (redraw) can't change window size on the fly - Add -fwrapv to standard CFLAGS, just to be safe, like with when I added -fno-strict-aliasing; this is pending a bug fix in gcc, see GCC PR#30477 * Please note: this is a development snapshot from CVS as well; it may be included into Debian experimental, but is not recom- mended for Debian testing. -- Thorsten Glaser Sat, 17 Jan 2007 09:32:11 +0000 mksh (28.9.20070106) experimental; urgency=low * New upstream development snapshot; summary of changes: - Fix UTF-8 locale detection and segfaults - Use RLIMIT_AS if RLIMIT_VMEM is not available * Please note: this is a development snapshot from CVS as well; it may be included into Debian experimental, but is not recom- mended for Debian testing. -- Thorsten Glaser Sat, 06 Jan 2007 18:55:09 +0000 mksh (28.9.20061211) experimental; urgency=low * New upstream development snapshot; summary of changes: - Spelling and wording fixes in the manual page and copyright file; keep the latter in sync with the latest MirOS licence template - One correct cast for the ulimit builtin - Portability #warning for developers (not seen on BSD, but yields a TODO for Debian) * Please note: this is a development snapshot from CVS as well; it may be included into Debian experimental, but is not recom- mended for Debian testing. If you already have 28.9.20061121, like the SuSE guru repository of loki, you do not need this minor update. -- Thorsten Glaser Mon, 11 Dec 2006 21:53:42 +0000 mksh (28.9.20061121) experimental; urgency=low * Add -fno-strict-aliasing to default CFLAGS, as per upstream suggestion * New upstream development snapshot; summary of changes: - Fix portability of regression tests using fgrep(1), twice - Fix description of $RANDOM in manual page - Fix build under OpenSolaris Build 47 (reported in IRC) - Use easier __RCSID() stuff from MirOS #9-current - Don't shebang with spaces in test.sh creation - Remove -fno-strength-reduce from default CFLAGS, the compiler bug was fixed between gcc 2.7.2 and gcc 2.7.2.1... - Avoid unaligned memory access causing SIGBUS on IA-64 on Debian - Convert to autoconf-style check for function and header file existence of , arc4random(3), arc4random_push(3), setlocale(3) and LC_CTYPE, nl_langinfo(3) and CODESET, getmode(3) and setmode(3), strcasestr(3), and strlcpy(3) - Add set -o utf8-hack aka mksh -U which changes the Emacs editing mode to an experimental CESU-8 aware multibyte mode (not implemented using wide chars unless internally needed; does not require OS support); check setlocale(LC_CTYPE, "") and nl_langinfo(CODESET) if found to auto-enable utf-8 mode in interactive shells - Simplify and clean up code; try to remove or replace function calls by smaller equivalents; spot a few non-fatal off-by-one errors - If Build.sh is called with -DMKSH_SMALL in the CPPFLAGS environment variable, the built-in mknod(8) will not be included, and other functionality and verbose usage messages will be excluded; some macros will be turned into functions to save space and to check if the utf8-hack should be enabled, nl_langinfo(3) is not called. The -T option to mksh(1) and persistent history are not supported. - Hand-optimise the code to be small, even in the normal build - Unbreak the -d option to Build.sh - Check for cc options -Wno-error, -fwhole-program --combine, and (if MKSH_SMALL) -fno-inline and use them if they don't fail - The autoconf-style ("mirtoconf") checks have been enhanced, improved and be made more verbose by default - Rewrite a few functions both to save space and to simplify/unify the code; also spotted a few bugs in existing (inherited) code - Fix format string mistakes and wrong function and data prototypes - Correct zero-padding for right-justified strings; add regression test - EXECSHELL is now ${EXECSHELL:-/bin/sh} again - Remove duplicate code if feasible; rewrite remaining code to solve all use cases, or use standard library functions such as qsort(3); rework the ctypes and chtypes stuff, get rid of libc/ctype.h - Change the eaccess() code to not use setreuid(2) and friends, like OpenBSD ksh and apparently pdksh. I'm not too sure about the implications, except that they only affect setuid shell scripts. - Use setresuid(2) and friends, and setgroups(3) and instead of seteuid(2), setuid(2) etc. on operating systems that support them - Work around (i.e. remove) all but two -Wcast-qual issues - Work around a bug in the GNU implementation of the Berkeley mdoc macros which comes with GNU groff (only visible in MirOS with groff -mgdoc, but shows on other operating systems), discovered by crib in IRC - $RANDOM is always an unsigned 15-bit decimal integer, for all Korn shell derivates; idea from twkm in IRC - Improve/correct description of typeset command in manpage, and implementation of typeset -p in mksh - Remove the non-standard emacs-usemeta and vi-show8 shell options, assume the user either has a 7-bit environment, an 8-bit clean terminal, or a UTF-8 environment (preferred), and the dummy sh option - Build.sh fix for conservative (old) versions of gcc; help Debian * Mention UTF-8 support in the Debian control file's Description field * PLEASE NOTE: this is not intended to be uploaded into testing, because it is based upon a CVS checkout of mksh-current, and not of a formal release. The "mksh 28.9.yyyymmdd" series is based upon CVS snapshots of mksh-current (mksh R29-beta), and subject to changes. This part of the changelog might differ in the following mksh-29.0-1 upload to Debian. This code is *not* well-tested and may have been broken on various other operating systems and maybe architectures; it may have introduced further memory leaks. It is recommended to only use it to evaluate mksh's recent development and help finding bugs and fixing them. No warranty, as usual. -- Thorsten Glaser Tue, 21 Nov 2006 21:49:44 +0000 mksh (28.0-2) unstable; urgency=low * Fix unaligned memory access on IA-64 (same fix was applied upstream for the next full release) -- Thorsten Glaser Sat, 30 Sep 2006 19:59:10 +0000 mksh (28.0-1) unstable; urgency=low * sample file (dot.mkshrc) is now in upstream * New upstream release; summary of (Debian user relevant) changes: - Fix some more -Wchar-subscripts - Adjust manual page to the fact that mksh can be used as /bin/sh although it's not specifically designed to - Correct and enhance book citation list in the manual page - Bring back the "version" editing command in both emacs and vi modes, at ESC ^V like AT&T ksh93r+ - Fix typo which resulted in the wrong names for signals being printed (error codes were used instead) on GNU/Linux, Solaris and GNU/Cygwin. Ease changing signame/siglist sources. - Some more code, manual page, build system and regression test changes, cleanup and redundancy removal - Merge a few OpenBSD changes, yielding better multiline prompt support and textual improvements in the manual page - Adjust $PS1 sizing, printing, and redrawal routines for mksh behaviour and single- and multiline prompts - For the AT&T $PS1 hack (second char = CR), do not output the delimiting characters any more, even if they are printable - fixes platforms without non-printable characters (Interix, Cygwin) and prompt size calculation - Calculate length of prompt in lines and columns-of-last-line instead of using some tricks to skip the beginning of the prompt, resulting in correct redrawing of prompts with ANSI colour codes - Correct displaying of prompts spanning more than one line and/or with embedded newlines or carriage returns; correct documentation of $PS1 and the redraw editing command - Change one of the testsuite "expected failure" tests from bug to feature - it might actually be required by BSD make - Enable to bind key sequences which consist of the usual optional one or two praefices and the control character, as well as an optional trailing tilde (if the trailing character is not a tilde, it's processed as usual, but processing of the editing command is postponed until after the trailing character has been read) - Bind the NetBSD(R) wscons (vt220 / wsvt25), GNU screen and XFree86(R) (xterm-xfree86) "home", "end" and "delete" keys to ^A, ^E and ^D, respectively, except that "delete" does not act as logoff switch - Make sure ^T is bound to 'transpose' as documented (bug spotted by hondza) - Remove the 'stuff' and 'stuff-reset' editing commands - Correct the manual page regarding the 'abort' command, its interaction with 'search-history' and how to exit the latter - Bring back "set -o posix" turning off 'braceexpand' - Mention IRC support channel and mailing list in manual page - Make the "last command of a pipeline is executed in a subshell" issue a dependable mksh feature - Improve regression test comments and a few tests - If $RANDOM is generated from arc4random(3), display at most 31 bits of it like nbsh(1), instead of only 15 bits. -- Thorsten Glaser Sat, 9 Sep 2006 11:49:07 +0000 mksh (27.4-2) unstable; urgency=low * Fix build if zsh is used as build shell by forcing /bin/sh -- Thorsten Glaser Fri, 7 Jul 2006 19:25:32 +0000 mksh (27.4-1) unstable; urgency=low * New upstream release; summary of changes: - build system fixes (honour CPPFLAGS, ...) - documentation fixes (manual page date/version) - only source ${ENV:-~/.mkshrc} for interactive (FTALKING) shells (change in behaviour towards principle of least surprise) - fix "char subscripts" warnings * Be more verbose on build, to aid debugging the buildd logs * Install a sample ~/.mkshrc file showing how flexible mksh is and providing a bash-like $PS1 to the user * Add persistent (official) homepage to package description -- Thorsten Glaser Tue, 4 Jul 2006 15:42:23 +0000 mksh (27.2-1) unstable; urgency=low * New Debian Standards-Version, no changes for us * New upstream release; summary of changes: - emacs-usemeta now behaves like vi-show8 to facilitate e.g. japanese UTF-8 input on the command line (such as filenames); be careful with 0x80-0x9F - portability cleanup and speed-up - GNU groff compatible manual page - add ~/.mkshrc processing, requested by Jari Aalto for the Debian-based Stem Desktop; see manual page for details - illustrate a few tricks (e.g. setting $PS1) in manual page - enhance testsuite - incorporate some more code cleanup by OpenBSD - reference the O'Reilly books in the manual page * As a result, remove some patches now in upstream * Add ed(1) as build dependency, needed for regression tests -- Thorsten Glaser Wed, 31 May 2006 18:58:16 +0000 mksh (26.2-2) unstable; urgency=low * There was another .St -susv3 in the manual page; replace it by the expanded version. * No comma in front of "which" in English (copyright file) -- Thorsten Glaser Thu, 2 Feb 2006 18:08:34 +0000 mksh (26.2-1) unstable; urgency=low * New upstream release; summary of relevant changes: - Change quoting policy (regarding backslash-doublequote) in here documents to conform to SUSv3 (to migrate, change all occurences of backslash-doublequote to just doublequote) - Update documentation - Clean up code - Fix some more GCC 4 warnings * Remove no longer needed workaround -- Thorsten Glaser Mon, 30 Jan 2006 12:03:02 +0000 mksh (25.0-1) unstable; urgency=low * New upstream release; summary of changes: - add a builtin: mknod (can do pipes and devices) - remove 'version' editor binding and remap emacs ^V to quote-meta ('literal') - fix redraw and window resize problems; COLUMNS and LINES are now updated as soon as the new size is set - allow < and > for test and [, not only [[ - if an array index is out of bounds, tell which one - document quoting policy in here documents - correct some mistakes in the manual page - fixes for GCC 4 warnings - code and build system simplifications * As a result, simplify debian/rules accordingly * Copy all "non-standard" licences into the copyright file * Work around GNU groff not having .St -susv3 -- Thorsten Glaser Wed, 26 Oct 2005 09:27:39 +0000 mksh (24.0-1) unstable; urgency=low * New upstream release; relevant changes are: - no longer look at argv[0] to determine if restricted shell - changes to $EDITOR and $VISUAL no longer affect the current editing mode - emacs on, emacs-usemeta off is now the default editing mode - the special "posix" and "sh" modes are gone - code, test suites and documentation have been cleaned up a little - Korn's bizarre /dev/fd hack is now no longer supported - undo fix for Debian PR #71256 which turned to be bogus and break BSD make - fix compilation and invocation of test suite with whitespace in the pathnames for real, this time * Fix typo in description; Closes: #317785 * Note that this is no superset of pdksh any more in description * New debian-policy version -- Thorsten Glaser Tue, 12 Jul 2005 12:25:11 +0000 mksh (23.0-1) unstable; urgency=low * New upstream version * Clarify licence -- Thorsten Glaser Wed, 22 Jun 2005 14:40:56 +0000 mksh (22.3-1) unstable; urgency=low * Update upstream source to mksh R22d * Remove some superfluous whitespace -- Thorsten Glaser Sun, 5 Jun 2005 16:45:42 +0000 mksh (22.2-2) unstable; urgency=low * Rename postinst, prerm, menu to mksh.{postinst,prerm,menu} * Always run testsuite * Install the binary with 755 permissions * Remove superfluous grep in rules (All of the above based upon suggestions by sponsor Bastian Blank) * Use dh_install instead of homegrown calls (patch by Bastian Blank) * Regenerate .orig.tar.gz with MirBSD cpio since GNU cpio generates invalid ustar archives (broken mtime) -- Thorsten Glaser Thu, 2 Jun 2005 07:47:33 +0000 mksh (22.2-1) unstable; urgency=low * Initial Release -- Thorsten Glaser Sat, 28 May 2005 22:02:17 +0000 debian/compat0000664000000000000000000000000212054730777010402 0ustar 5 debian/rules0000775000000000000000000000421612147210774010260 0ustar #!/usr/bin/make -f # $MirOS: contrib/hosted/tg/deb/mksh/debian/rules,v 1.111 2013/05/22 18:43:47 tg Exp $ LC_ALL:=C export LC_ALL # shut up build log checkers that don’t know what they are doing # Debian #492377, #572252; as well *buntu _shutup:= 2>&1 | sed \ -e 's!conftest.c:\([0-9]*\(:[0-9]*\)*\): error:!cE(\1) -!g' \ -e 's!conftest.c:\([0-9]*\(:[0-9]*\)*\): warning:!cW(\1) -!g' \ build-indep: build-arch: debian/.build_stamp debian/.build_stamp: dh_testdir -rm -f $@ (sh debian/meat && :>$@) ${_shutup} test -e $@ clean: dh_testdir dh_clean -rm -rf builddir -rm -rf debian/.*_stamp binary-indep: build-indep dh_testdir if test -x "$$(which dh_prep)"; then dh_prep -i; else dh_clean -i -k; fi dh_installchangelogs -i dh_install -i # will be replaced by links to mksh rm -rf debian/pdksh/usr/share/doc/pdksh mkdir -p debian/pdksh/usr/share/lintian/overrides cp -a debian/pdksh.lintian \ debian/pdksh/usr/share/lintian/overrides/pdksh dh_link -i dh_fixperms -i dh_installdeb -i dh_gencontrol -i dh_md5sums -i dh_builddeb -i binary-arch: build-arch dh_testdir if test -x "$$(which dh_prep)"; then dh_prep -a; else dh_clean -a -k; fi cat builddir/substvars >>debian/mksh.substvars dh_installchangelogs -a dh_installdocs -a # we install this already, except with more information rm -f debian/mksh/usr/share/doc/mksh/README.Debian cp builddir/README.Debian.gz debian/mksh/usr/share/doc/mksh/ dh_installexamples -a dh_install -a cp builddir/static/mksh debian/mksh/bin/mksh-static cp -a dot.mkshrc debian/mksh/etc/mkshrc dh_installmenu -a dh_installman -a mkdir -p debian/mksh/usr/share/lintian/overrides cp -a debian/mksh.lintian \ debian/mksh/usr/share/lintian/overrides/mksh dh_link -a dh_strip -a dh_compress -a ln -sf mksh.1.gz debian/mksh/usr/share/man/man1/mksh-static.1.gz dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a #- gzip -d /bin/mksh.dropdebconf fi ;; abort-upgrade) ;; *) echo >&2 "preinst called with unknown subcommand '$1'" exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/control0000664000000000000000000001006312256172776010612 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/control,v 1.88 2013/05/22 18:43:47 tg Exp $ # Source: mksh Section: shells Priority: optional Maintainer: Ubuntu Developers XSBC-Original-Maintainer: Thorsten Glaser Homepage: http://mirbsd.de/mksh # We build-depend on dietlibc-dev and libklibc-dev for mksh-static and link # it against eglibc if neither is usable for a given architecture. The meat # checks actual shell usability based on the architecture, whether we are in # paranoid (just before the freeze/release) mode, and whether the testsuite # is run to determine bad builds. Really, do run the testsuite! (Even then, # versioned B-D may be used to remove known bogus versions.) Build-Depends: bsdmainutils, debhelper (>= 5), ed, libklibc-dev [alpha amd64 armel armhf arm64 hppa i386 ia64 m68k mips mipsel powerpc powerpcspe ppc64 ppc64el s390 s390x sh4 sparc sparc64], # dietlibc-dev (>= 0.33~cvs20111108-5~) [hppa] | dietlibc-doc [hppa], # dietlibc-dev [alpha amd64 arm armeb armel armhf i386 ia64 mips mipsel powerpc powerpcspe ppc64 s390 s390x sparc sparc64], # # also for the testsuite (could switch to C.UTF-8 nowadays, though) locales [!avr32] | belocs-locales-bin [!avr32] # # hard to test against bug Build-Conflicts: dietlibc-dev (<< 0.33~cvs20111108-5~) [hppa] Standards-Version: 3.9.4 # First word is the $CVSROOT (-d arg) string, second word the module. # Upstream is on the same server, in the "mksh" module. Vcs-CVS: :ext:_anoncvs@anoncvs.mirbsd.org:/cvs contrib/hosted/tg/deb/mksh Vcs-Browser: http://cvs.mirbsd.de/contrib/hosted/tg/deb/mksh/ Package: mksh Architecture: any Multi-Arch: foreign Built-Using: ${mksh:B-U} Depends: ${misc:Depends}, ${shlibs:Depends} Suggests: ed Description: MirBSD Korn Shell mksh is the successor of the Public Domain Korn shell (pdksh), a Bourne/POSIX compatible shell which is largely similar to the original AT&T Korn Shell (ksh88/ksh93). It includes bug fixes and feature improvements, in order to produce a modern, robust shell good for interactive and especially script use. mksh has UTF-8 support (in string operations and the Emacs editing mode). The code has been cleaned up and simplified, bugs fixed, standards compliance added, and several enhancements (for extended compatibility to other modern shells, as well as a couple of its own) are available. This shell is Debian Policy 10.4 compliant and may be used as /bin/sh on Debian systems (if udev is installed, /bin/lksh should be used; otherwise, both /bin/mksh-static and /bin/mksh flavours also work), and as rescue and initrd shell (/bin/mksh-static especially). . The mksh-static binary is a version of mksh, linked against klibc or dietlibc (if they exist for that Debian architecture and are usable) and optimised for small code size, for example for use on initrd or initramfs images, installation or rescue systems, or /bin/sh on slow architectures. It omits some leaf features to be even smaller. . The lksh binary is a script shell based on mksh intended to run old ksh88 and pdksh scripts, but not for interactive use. . A sample ~/.mkshrc is included in /usr/share/doc/mksh/examples and provided as /etc/mkshrc conffile, which is sourced by another file /etc/skel/.mkshrc users are recommended to copy into their home. Package: pdksh Section: oldlibs Priority: extra Architecture: all Multi-Arch: foreign Depends: ${misc:Depends}, mksh (>= 40.9.20120630) Description: transitional dummy package to migrate from pdksh to mksh The Public Domain Korn Shell "pdksh" is a mostly complete AT&T ksh look-alike, but has been superseded by mksh. This transitional dummy package exists to fulfil the needs of existing users, dependencies and build-dependencies by providing pdksh symlinks to the legacy flavour of mksh. You can safely remove it once you have no remaining users or scripts depending on pdksh any more (do make sure to check users' login shells). . Note: the mksh legacy flavour is not intended for interactive use. Please change your login shell to /bin/mksh and copy /etc/skel/.mkshrc to your home directory. debian/pdksh.postinst0000664000000000000000000000347312054732753012125 0ustar #!/bin/sh # $MirOS: contrib/hosted/tg/deb/mksh/debian/pdksh.postinst,v 1.3 2012/11/26 18:32:50 tg Exp $ set -e # This maintainer script can be called the following ways: # # * new-postinst "configure" [$most_recently_configured_version] # The package is unpacked; all dependencies are unpacked and, when there # are no circular dependencies, configured. # # * old-postinst "abort-upgrade" $new_version # * conflictors-postinst "abort-remove" "in-favour" $package # $new_version # * postinst "abort-remove" # * deconfigureds-postinst "abort-deconfigure" "in-favour" # $failed_install_package $fip_version ["removing" # $conflicting_package $cp_version] # The package is unpacked; all dependencies are at least Half-Installed, # previously been configured, and not removed. In some error situations, # dependencies may not be even fully unpacked. # # * postinst "triggered" "${triggers[*]}" # For trigger-only calls, i.e. if "configure" is not called. docdir=/usr/share/doc/pdksh move_docdir() { test -d /usr/share/doc/. || return 0 test -d $docdir && rmdir --ignore-fail-on-non-empty $docdir if test -e $docdir; then echo >&2 "The old $docdir was locally modified." echo >&2 "Saved as $docdir.dpkg-old" (mv $docdir $docdir.dpkg-old || :) fi if test -e $docdir; then echo >&2 "FAILED! Remove $docdir manually," echo >&2 "then retry (dpkg -a --configure)." exit 1 fi ln -sf mksh $docdir } case $1 in configure) # convert old docdir into a symlink, dpkg won’t do that for us test -h $docdir || move_docdir test -x /usr/bin/update-menus && update-menus ;; abort-upgrade|abort-remove|abort-deconfigure) ;; triggered) ;; *) echo >&2 "postinst called with unknown subcommand '$1'" exit 1 ;; esac # dh_installdeb will replace this with shell code automatically # generated by other debhelper scripts. #DEBHELPER# exit 0 debian/mksh.docs0000664000000000000000000000017412054730777011022 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.docs,v 1.6 2012/11/26 18:16:06 tg Exp $ #- check.pl check.t debian/mtest.t debian/mksh16lg.xpm0000664000000000000000000000660411235100045011347 0ustar /* XPM */ static char *mksh16lg[] = { /* $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh16lg.xpm,v 1.1 2009/08/01 17:49:01 smultron Exp $ */ "16 16 169 2", /* colours */ " c None", " . c #2A221C", " X c #615448", " o c #636261", " O c #A5A5A5", " + c #654E38", " @ c #5D5C5B", " # c #2D2622", " $ c #2B2420", " % c #1A120C", " & c #201815", " * c #858382", " = c #1F1814", " - c #1D1612", " ; c #C08545", " : c #131312", " > c #8D8D8D", " , c #17100C", " < c #8B8B8B", " 1 c #150E0A", " 2 c #140E09", " 3 c #686562", " 4 c #858585", " 5 c #65615F", " 6 c #A97742", " 7 c #836341", " 8 c #1D1815", " 9 c #818181", " 0 c #130E0B", " q c #777777", " w c #666563", " e c #737373", " r c #A37849", " t c #4C3D2F", " y c #A6A6A5", " u c #6F6F6F", " i c #6C5A4B", " p c #5D472F", " a c #9C9C9B", " s c #332D2A", " d c #CD8D47", " f c #616161", " g c #959494", " h c #A47543", " j c #171615", " k c #A37342", " l c #161414", " z c #151413", " x c #1B130F", " c c #7B5D3F", " v c #131211", " b c #7E7C7A", " n c #11100F", " m c #170F0B", " M c #7A7876", " N c #898888", " B c #535353", " V c #757271", " C c #593E24", " Z c #838282", " A c #BA854B", " S c #5A4A3C", " D c #644C32", " F c #7B7A7A", " G c #75593C", " H c #946C40", " J c #B47F45", " K c #B27D43", " L c #433C39", " P c #413A37", " I c #6F6E6E", " U c #3F3835", " Y c #181512", " T c #1D140D", " R c #6B6A6A", " E c #665544", " W c #483A2D", " Q c #131110", " ! c #CD8E49", " ~ c #201A16", " ^ c #16100C", " / c #140E0A", " ( c #130C09", " ) c #1B1614", " _ c #B4B4B4", " ` c #181411", " ' c #684724", " ] c #A2A2A2", " [ c #2C2521", " { c #261F1B", " } c #1D1C1C", " | c #211916", ". c #969696", ".. c #1F1714", ".X c #1E1713", ".o c #171616", ".O c #1C1511", ".+ c #8E8E8E", ".@ c #150F0A", ".# c #0F0E0E", ".$ c #140F09", ".% c #140D09", ".& c #868686", ".* c #767473", ".= c #462F19", ".- c #534C4A", ".; c #735C45", ".: c #262321", ".> c #7A7A7A", "., c #C68947", ".< c #BE8649", ".1 c #785D43", ".2 c #6C6C6C", ".3 c #161311", ".4 c #5B5A58", ".5 c #B5834A", ".6 c #9A6F40", ".7 c #686868", ".8 c #312011", ".9 c #916A41", ".0 c #261E1A", ".q c #646464", ".w c #241C18", ".e c #231C17", ".r c #221A16", ".t c #7C634A", ".y c #181716", ".u c #5C5C5C", ".i c #1C1410", ".p c #2B2622", ".a c #908F8F", ".s c #5A5A5A", ".d c #1A120E", ".f c #986D41", ".g c #17100B", ".h c #100F0E", ".j c #140E08", ".k c #9E754A", ".l c #664D34", ".z c #5F5B58", ".x c #DF984B", ".c c #5D5956", ".v c #946B40", ".b c #211E1B", ".n c #110C08", ".m c #443D3A", ".M c #7A6044", ".N c #2F2722", ".B c #1E150E", ".V c #646363", ".C c #2E2924", ".Z c #171614", ".A c #7D5F40", ".S c #1C150F", ".D c #141211", ".F c #131210", ".G c #19110C", ".H c #878685", ".J c #CBCBCB", ".K c #C28848", ".L c #716E6C", ".P c #865F38", ".I c #C08646", ".U c #6D6A68", ".Y c #140D0A", ".T c #7F6348", ".R c #20160F", ".E c #6F6E6D", ".W c #3B3430", /* pixels */ " ", " _.+ 9 q.2.q.u B B.s f.7 u q < _", ".& j.# n v z.Z.y.o.Z l :.F.h } >", " e Q.: P P.m.v P P P.m.v P.b.D 4", " R.3 W.f.9 E.I c S.6.1., H.C.3.>", ".V Y D K J.k.x.5.T.< i d k p ` I", " @ ).l 6 6 r !.K X.A A ;.P C 0 o", ".4 8 t G G.t 7.;.M h + '.=.8.n o", " w ~ s P L.-.W U #.w $.w.O ( 2.E", ".*.e.p [.0 = -.r x.O.O x.r.Y.g F", " Z.S.$ m { &.i.i.X | |.. m 1 % N", " g T , ^.d 2.%.j.Y /.Y 1.@.G.B. ", " O ..R.R.R.R.R.R.R.R.R.R.R.R.N ]", ".J a.H b V.U 5.c.z 3.L M *.a y.J", " ", " "}; debian/mksh32.xpm0000664000000000000000000001446011235077274011042 0ustar /* XPM */ static char *mksh32[] = { /* $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh32.xpm,v 1.1 2009/08/01 17:43:00 smultron Exp $ */ "32 32 256 2", /* colours */ " c None", ". c #0E0705", "+ c #0F0907", "@ c #100A08", "# c #110B0A", "$ c #120D0B", "% c #150E05", "& c #130E0C", "* c #160F06", "= c #140F0E", "- c #171008", "; c #15100F", "> c #181109", ", c #161110", "' c #111310", ") c #18120A", "! c #161211", "~ c #1D110C", "{ c #171312", "] c #1D120D", "^ c #141513", "/ c #1A140D", "( c #1E130E", "_ c #191514", ": c #1F140F", "< c #151714", "[ c #191615", "} c #1F1510", "| c #1C1610", "1 c #1E170B", "2 c #1D1711", "3 c #22160D", "4 c #211612", "5 c #1B1817", "6 c #1D1812", "7 c #181917", "8 c #221713", "9 c #20190F", "0 c #1D1918", "a c #1F1914", "b c #1D1A19", "c c #201A15", "d c #201B16", "e c #241A16", "f c #1F1C1B", "g c #1C1D1B", "h c #211C17", "i c #221C17", "j c #231D18", "k c #1E1F1D", "l c #221E1D", "m c #241E19", "n c #261F15", "o c #231F1E", "p c #20211F", "q c #24201F", "r c #26211B", "s c #252120", "t c #252120", "u c #28221D", "v c #222421", "w c #232422", "x c #2B241A", "y c #282423", "z c #2A241E", "A c #2A241F", "B c #292524", "C c #2B2520", "D c #252724", "E c #2C2621", "F c #272826", "G c #2B2726", "H c #2D2722", "I c #2F281E", "J c #2E2822", "K c #2F2924", "L c #352820", "M c #302A25", "N c #2F2A29", "O c #2A2C29", "P c #2F2B2A", "Q c #332D28", "R c #2E2F2D", "S c #322E2D", "T c #332F2E", "U c #352F2A", "V c #34302F", "W c #30322F", "X c #37312B", "Y c #363231", "Z c #38322C", "` c #383433", " . c #3A342E", ".. c #3B342F", "+. c #343633", "@. c #353734", "#. c #3B3736", "$. c #3D3731", "%. c #373936", "&. c #383937", "*. c #3C3837", "=. c #3F3933", "-. c #3E3A39", ";. c #403A34", ">. c #413A35", ",. c #403B3A", "'. c #423B36", "). c #3B3D3A", "!. c #413C3B", "~. c #433C36", "{. c #3D3E3C", "]. c #4A3D39", "^. c #433F3E", "/. c #453F39", "(. c #40413F", "_. c #484035", ":. c #4D3F36", "<. c #454140", "[. c #414341", "}. c #48423C", "|. c #474241", "1. c #504239", "2. c #434542", "3. c #494443", "4. c #4B443E", "5. c #51433A", "6. c #52433A", "7. c #544436", "8. c #53453C", "9. c #4C4746", "0. c #4E4741", "a. c #484947", "b. c #4E4948", "c. c #59493B", "d. c #4A4C4A", "e. c #4F4B4A", "f. c #514B45", "g. c #584A41", "h. c #504C4A", "i. c #524D4C", "j. c #5E4C39", "k. c #534E4D", "l. c #4E504D", "m. c #5F4D3A", "n. c #4F514E", "o. c #614F3B", "p. c #58514B", "q. c #515350", "r. c #64523E", "s. c #635244", "t. c #545553", "u. c #5D5449", "v. c #6D533C", "w. c #5B5756", "x. c #705438", "y. c #6F543E", "z. c #695743", "A. c #5D5957", "B. c #69584A", "C. c #5B5D5A", "D. c #6B5A4C", "E. c #5D5F5C", "F. c #795C3A", "G. c #65605F", "H. c #7B5E3C", "I. c #7D5F3E", "J. c #686362", "K. c #7C614A", "L. c #666765", "M. c #7E634B", "N. c #88623D", "O. c #816448", "P. c #686967", "Q. c #8A643F", "R. c #696B68", "S. c #856745", "T. c #8C6641", "U. c #85684B", "V. c #8E6842", "W. c #6C6E6B", "X. c #896A48", "Y. c #936C40", "Z. c #717370", "`. c #966E3C", " + c #787372", ".+ c #956F49", "++ c #976F44", "@+ c #98703E", "#+ c #A07141", "$+ c #9B7347", "%+ c #777976", "&+ c #A4743E", "*+ c #797B78", "=+ c #9E764A", "-+ c #7A7C79", ";+ c #817C7B", ">+ c #A77747", ",+ c #A37948", "'+ c #A87848", ")+ c #AC7A45", "!+ c #AE7B3F", "~+ c #858784", "{+ c #B97F45", "]+ c #B58145", "^+ c #B4814B", "/+ c #8B8D8A", "(+ c #C28646", "_+ c #C98C45", ":+ c #CC8E47", "<+ c #D18D48", "[+ c #989A97", "}+ c #D1934C", "|+ c #D79246", "1+ c #D99348", "2+ c #9D9F9C", "3+ c #DB954A", "4+ c #9EA09D", "5+ c #DF9745", "6+ c #A1A3A0", "7+ c #E19947", "8+ c #E29A48", "9+ c #A3A5A1", "0+ c #E39C49", "a+ c #A4A6A3", "b+ c #EA9B4B", "c+ c #E69E4B", "d+ c #A6A8A5", "e+ c #ED9D46", "f+ c #A7A9A6", "g+ c #E9A046", "h+ c #A9ABA8", "i+ c #F0A048", "j+ c #EBA248", "k+ c #AAACA9", "l+ c #ACAEAB", "m+ c #F5A445", "n+ c #F4A44C", "o+ c #AEB0AD", "p+ c #F6A546", "q+ c #F8A647", "r+ c #B0B2AE", "s+ c #B1B3AF", "t+ c #B2B4B1", "u+ c #B4B6B3", "v+ c #B6B8B4", "w+ c #B7B9B6", "x+ c #B8BAB7", "y+ c #B9BBB8", "z+ c #BCBEBB", "A+ c #C0C2BE", "B+ c #C1C3BF", "C+ c #C2C4C1", "D+ c #C4C6C3", "E+ c #C6C8C5", "F+ c #C7C9C6", "G+ c #CACCC9", /* pixels */ " ", " ", " ", " t+t+t+t+t+t+o+h+a+6+6+d+k+r+t+t+t+t+t+t+t+ ", " f+-+P.E.t.d.2.).+.R F w p k 7 7 g k v D O W @.{.[.a.q.C.-+9+ ", " Z.0 $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ F %+ ", " A.& & & ' _ 0 0 f l q s y B G B y y s q o l f f 0 , & & _ W. ", "v+n.= = = ` >.N.>.>.>.~.>.>.>.]+].>.>.>.~.!.7.!+>.>.S = = , L. ", "w+3., , , ~.@+7+#+>.0.!.>.>.>.m+:.>.>.>.~.4.m.b+>.>.` = , , C. ", "y+{., , _ F._+{+F.c.7+b+_+1+>.m+o.3+o.)+5+1+z.j+1+(+*., , , l.y+", "x+%., , 0 j.g+1+y.g.c+=+'+1+8.q+7+I.~.j+.+u.B.m+6.q+_.^ , , 3.x+", "s++._ _ f >.1.:+e+z.8+=+,+1+D.q+}+>+0.U.}+8+r.b+>.n+6.< _ _ (.o+", "k+V _ _ o H.&+<+e+j.8+=+,+1+s.q+B.e+s.$+O.e+v.b+>.n+6.0 _ , &.f+", "d+T _ _ q 1.T.:+m.:.++K.M.V.1.,+p.S.x.++^+X.6.Y.>.`.L = , @ ` 6+", "6+N 2 2 q >.>.Q.>.>.b.i.b.>.~.i.i.|.>.4.i.f.>.$.z > > + @ @ T 2+", "4+N 2 2 q >.>.>.>.>.i.i.4.>.^.i.i.~.>.0.h.#.i > > > > . # # V 6+", "9+Y a a q >.>.>.>.!.i.i.}.>.|.i.i.$.K U J i > > > > > + $ $ ` a+", "h+#.c c l >.>.>.>./.i.i.^.$.,.=.Q > > H H z E z j > > @ % % *.h+", "r+,.i i m >.>.>.;.~.,.K | > u u 4 > > H E m ( > j 8 > @ * * ,.o+", "w+|.i i c Q z e > > > > / | 8 / > > > ( > > > > r 2 > @ > > !.u+", "A+9.i e , > > > / / j z r j j r z z u r j i i z i > > # > > |.y+", "D+h.~ ~ $ = > > z C 8 > > > > > > > > ( | 4 4 > > > = $ ~ ~ 3.C+", "E+C.~ ~ > & > 4 r 8 > > > > > > > > > > > > > > > > # > ~ ~ w.E+", " Z.: : : $ $ # # # # # @ # # # # # # # # # # $ # # = : : : R.F+", " ~+9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 n *+ ", " [+M 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 $./+ ", " B+;+G.w.k.9.|.>.$. .X Q M I x z H M Q U Z ..>.|.b.w.J. +/+z+ ", " G+G+G+G+G+E+A+y+v+s+l+h+h+o+u+y+B+F+G+G+G+G+G+G+ ", " ", " ", " ", " "}; debian/meat0000664000000000000000000003553112147213744010055 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/meat,v 1.61 2013/05/22 19:08:59 tg Exp $ #- # Design: this thing is intended to build two mksh binaries, # mksh-full and mksh-static (with the latter being statical- # ly linked), and lksh, according to DEB_BUILD_OPTIONS set: # - nocheck: do not run mksh's regression test suite # - noopt: build mksh with -O0, for eglibc builds only # - nodbg: do not build with debugging info # - nostrip: handled by dh_strip, so ignored here # - parallel=n: currently ignored, maybe -flto=jobserver could use it # - mksh-firstbuilt: do not run a simple test for operational # functionality, but use the first built binary (e.g. cross-builds) # - mksh-static=x: use library x (comma-separated list) for this and lksh, # values for x are: klibc dietlibc eglibc # - nomksh-small: do not build mksh-static with -DMKSH_SMALL # # Default values for mksh-static are: # - if mksh-firstbuilt is set: eglibc # - possibly different, depending on state and arch, see below # - otherwise: klibc,dietlibc,eglibc # # If we are cross-building, mksh-firstbuilt will be set. echo ' ┌─┤ Dear buildd maintainers, ├───────────────────────┐ │ │ │ this package uses the Built-Using header as per │ │ Debian Policy 3.9.4 and later. This means that, │ │ while compilation will succeed even if your buildd │ │ chroot is not up to date, uploading may fail, and │ │ you will get a REJECT mail. In this case, please │ │ update your unstable buildd chroot to the latest │ │ sid versions of packages, or, for infrastructure │ │ (eglibc, linux-libc-dev), versions that are known │ │ to be held in the archive anyway, such as these │ │ from stable, shortly after a release; later on, │ │ up-to-date sid ones are really recommended. │ │ │ │ Also remember /dev/tty and /dev/ptmx are needed. │ └────────────────────────────────────────────────────┘ ' # --- functions --- buildok=0 normalise() { varname=$1 eval varvalue=\$$varname newvalue= unset newvalue for tmpvalue in $varvalue; do newvalue=$newvalue${newvalue+ }$tmpvalue done eval $varname=\$newvalue } logbuildinfo() { where=$1 { echo "Build information for $where mksh" fgrep 'set -A check_categories' builddir/$where/test.sh echo "From: $startdate" $CC --version 2>&1 | grep ^gcc echo "Result: $buildinfo (broken&1 | sed 's/^/| /' echo "Date: $(date -u)" } >builddir/buildinfo.$where } trybuild() { where=$1 normalise CC normalise CFLAGS normalise CPPFLAGS normalise LDFLAGS # do not normalise LDSTATIC normalise LIBS cd builddir/$where echo "Attempting compilation of mksh in $where with CC='$CC'" echo "CFLAGS='$CFLAGS' CPPFLAGS='$CPPFLAGS'" echo "LDFLAGS='$LDFLAGS' LDSTATIC='$LDSTATIC' LIBS='$LIBS'" buildok=0 arg='-r -c lto' testwrap=0 if test x"$where" = x"legacy"; then arg="$arg -L" tfn=lksh else tfn=mksh if test 0 = "$iscross"; then testwrap=1 fi fi buildinfo=broken gotbin=0 startdate=$(date -u) set -x CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" \ LDSTATIC="$LDSTATIC" LIBS="$LIBS" sh ../../Build.sh $arg && \ test -f $tfn && gotbin=1 set +x test -f Rebuild.sh && test x"$HAVE_CAN_COMBINE" != x"0" && \ if test $gotbin = 0; then echo 'Build with combine *FAILED*, retrying without.' echo '=== note: for better optimisation, fix your gcc! ===' sh Rebuild.sh && test -f $tfn && gotbin=1 fi if test $gotbin = 0; then echo "Build attempt failed." cd ../.. return fi if test $testwrap = 1; then echo "Got a binary, doing run-time checks." set -- $(md5sum ../../debian/rtchecks) test bd51f320dcb3970f0119db72f7ae6be4 = "$1" || { echo "Testsuite corrupt." exit 2 } if ./$tfn ../../debian/rtchecks >rtchecks.out; then set -- $(md5sum rtchecks.out) test d5345290b8f3a343f6446710007d4e5a = "$1" || { echo "Input:" cat ../../debian/rtchecks echo "Output:" cat rtchecks.out echo "Checks failed." cd ../.. return } else echo "Output:" cat rtchecks.out echo "Checks returned an error." cd ../.. return fi fi if test $firstbuilt = 1; then echo "Got a binary, using first built." buildinfo=firstbuilt cd ../.. buildok=1 logbuildinfo $where return fi echo "Running simple checks on the binary." perl ../../check.pl -s ../../debian/mtest.t -p ./$tfn -v 2>&1 | \ tee mtest.log if grep '^Total failed: 0$' mtest.log >/dev/null; then echo "Simple tests okay." else echo "Simple tests failed." cd ../.. return fi buildinfo=checked if test $nocheck = 0; then echo "Running mksh regression test suite." if test x"$(uname -s)" = x"GNU"; then # script(1) fails on Debian GNU/Hurd in pbuilder if test -e ../../../attended; then ./test.sh -v else ./test.sh -v -C regress:no-ctty fi 2>&1 | tee utest.log else echo "This needs /dev/tty and /dev/ptmx in the chroot." echo >test.wait script -qc './test.sh -v 2>&1 | tee utest.log; x=$?; rm -f test.wait; exit $x' maxwait=0 while test -e test.wait; do sleep 1 maxwait=$(expr $maxwait + 1) test $maxwait -lt 900 || break done fi if grep '^pass .*:KSH_VERSION' utest.log >/dev/null 2>&1; then echo "Regression test suite run." else echo "Regression tests apparently not run." echo "Failing this build." cd ../.. return fi buildinfo=regressed resultest=$(grep -a '^[FPT]' utest.log 2>&1 | fgrep -a -v \ -e 'Testing mksh for conformance' \ -e 'This shell is actually') fi cd ../.. buildok=1 logbuildinfo $where } # --- main code --- LC_ALL=C; export LC_ALL topdir=$(pwd) # get maximum of hardening flags DEB_BUILD_MAINT_OPTIONS="hardening=+all" export DEB_BUILD_MAINT_OPTIONS # pull environment configuration eval $(dpkg-architecture -s) rm -rf builddir mkdir builddir builddir/full builddir/static builddir/legacy for where in legacy; do cp debian/printf.c builddir/$where/ done echo "Building the package 'mksh' on '$DEB_BUILD_ARCH' for '$DEB_HOST_ARCH'" \ "with DEB_BUILD_OPTIONS '$DEB_BUILD_OPTIONS'" echo "Values (not used) from environment: CFLAGS='$CFLAGS' CPPFLAGS='$CPPFLAGS' LDFLAGS='$LDFLAGS'" # parse options nocheck=0 noopt=0 nodbg=0 firstbuilt=0 static=unset small=1 if test x"$DEB_HOST_ARCH" = x"$DEB_BUILD_ARCH"; then firstbuilt=0 iscross=0 else echo Using first built binary because we are cross-compiling echo "from $DEB_BUILD_GNU_TYPE to $DEB_HOST_GNU_TYPE here." firstbuilt=1 iscross=1 fi for i in $DEB_BUILD_OPTIONS; do case $i in (nocheck) nocheck=1 ;; (noopt) noopt=1 ;; (nodbg) nodbg=1 ;; (mksh-firstbuilt) firstbuilt=1 ;; (mksh-static=*) static=${i#*=} ;; (nomksh-small) small=0 ;; esac done # set default values for CC, CFLAGS, CPPFLAGS, LDFLAGS case $iscross$CC in 0) dCC=gcc ;; 1) dCC=${DEB_HOST_GNU_TYPE}-gcc ;; *) dCC=$CC ;; esac echo "Using compiler: '$dCC'" if test $noopt = 1; then x=-O0 else x=-O2 fi test $nodbg = 1 || x="$x -g" dCFLAGS=$(dpkg-buildflags --get CFLAGS 2>/dev/null) || dCFLAGS=$x dCPPFLAGS=$(dpkg-buildflags --get CPPFLAGS 2>/dev/null) dLDFLAGS=$(dpkg-buildflags --get LDFLAGS 2>/dev/null) echo "Values from dpkg-buildflags: CFLAGS='$dCFLAGS' CPPFLAGS='$dCPPFLAGS' LDFLAGS='$dLDFLAGS'" dCFLAGS="$dCFLAGS -Wall -Wextra" dLDFLAGS="$dLDFLAGS -Wl,--as-needed" # Prevent the build system from adding this, as we provide it already HAVE_CAN_WALL=0; export HAVE_CAN_WALL # Debian #499139 dCPPFLAGS="$dCPPFLAGS -DMKSH_BINSHPOSIX -DMKSH_BINSHREDUCED" # avoid needing a Build-Conflicts on libbsd-dev HAVE_LIBUTIL_H=0; export HAVE_LIBUTIL_H # avr32 currently has no locales if test x"$DEB_HOST_ARCH" = x"avr32"; then HAVE_SETLOCALE_CTYPE=0; export HAVE_SETLOCALE_CTYPE fi # set mksh-static default values if none given if test x"$static" = x"unset"; then static=eglibc case $firstbuilt$static:$DEB_HOST_ARCH in (1*) ;; (0*) static=klibc,dietlibc,eglibc ;; esac fi # validate mksh-static arguments static=$(echo x,"$static" | sed 's/^x,//' | tr , ' ') for x in $static; do case $x in (klibc|dietlibc|eglibc) ;; (*) echo "Error: invalid library '$x' in DEB_BUILD_OPTIONS" exit 1 ;; esac done # create a locale if we are to run the testsuite test x"$HAVE_SETLOCALE_CTYPE" != x"0" && if test $nocheck = 0; then echo Creating locale for the regression tests mkdir builddir/tloc # cf. Debian #522776 localedef -i en_US -c -f UTF-8 builddir/tloc/en_US.UTF-8 || \ echo Warning: additional testsuite failures may be shown LOCPATH=$topdir/builddir/tloc; export LOCPATH fi # build mksh-full CC=$dCC CFLAGS=$dCFLAGS CPPFLAGS=$dCPPFLAGS LDFLAGS=$dLDFLAGS unset LDSTATIC LIBS= echo Building mksh-full... trybuild full if test $buildok = 0; then echo Build of mksh-full failed. exit 1 fi bupkgs= # no locale support in mksh-static or mksh-legacy needed HAVE_SETLOCALE_CTYPE=0; export HAVE_SETLOCALE_CTYPE # build mksh-static sCC=$dCC sCFLAGS= # drop optimisation, debugging and PIC flags for mksh-static for x in $dCFLAGS; do case $x in (-O*|-g*|-fPIE) ;; (*) sCFLAGS="$sCFLAGS $x" ;; esac done sCPPFLAGS=$dCPPFLAGS sLDFLAGS= for x in $dLDFLAGS; do case $x in (-pie|-fPIE) ;; (*) sLDFLAGS="$sLDFLAGS $x" ;; esac done sLIBS= test $small = 0 || sCPPFLAGS="$sCPPFLAGS -DMKSH_SMALL" buildok=0 for x in $static; do echo Building mksh-static with $x; case $x in (klibc) if test -z "$(which klcc 2>/dev/null)"; then echo ... skipping, klcc not found continue fi CC=klcc CFLAGS="$sCFLAGS -fno-stack-protector -Os" test $nodbg = 1 || CFLAGS="$CFLAGS -g" CPPFLAGS="$sCPPFLAGS" LDFLAGS="$sLDFLAGS" LDSTATIC="-static" LIBS=$sLIBS HAVE_CAN_COMBINE=0; export HAVE_CAN_COMBINE trybuild static unset HAVE_CAN_COMBINE # Collect gcc and klibc packages for Built-Using if test $buildok = 1; then x=$(dpkg -S "$(readlink -f "$($CC -print-libgcc-file-name)")") bupkgs="$bupkgs ${x%%: *} libklibc-dev linux-libc-dev" fi ;; (dietlibc) if test -z "$(which diet 2>/dev/null)"; then echo ... skipping, diet not found continue fi CC="diet -v -Os $sCC" CFLAGS=$sCFLAGS # debug builds are too fragile here, IIRC CPPFLAGS=$sCPPFLAGS LDFLAGS=$sLDFLAGS LDSTATIC=" " LIBS=$sLIBS echo "Note: all warning: dereferencing pointer 'p' does break" \ "strict-aliasing rules come from dietlibc, not mksh!" trybuild static # Collect gcc and dietlibc packages for Built-Using if test $buildok = 1; then x=$(dpkg -S "$(readlink -f "$($CC -print-libgcc-file-name)")") bupkgs="$bupkgs ${x%%: *} dietlibc-dev" fi ;; (eglibc) CC=$sCC CFLAGS="-Os $sCFLAGS" test $nodbg = 1 || CFLAGS="$CFLAGS -g" CPPFLAGS=$sCPPFLAGS LDFLAGS="$sLDFLAGS" LDSTATIC="-static" LIBS=$sLIBS trybuild static # Collect gcc and eglibc packages for Built-Using if test $buildok = 1; then x=$(dpkg -S "$(readlink -f "$($CC -print-file-name=libgcc.a)")") bupkgs="$bupkgs ${x%%: *}" x=$(dpkg -S "$(readlink -f "$($CC -print-file-name=libc.a)")") bupkgs="$bupkgs ${x%%: *}" fi ;; esac; test $buildok = 0 || break; done if test $buildok = 0; then echo Build of mksh-static failed. exit 1 fi # build mksh-legacy lCC=$dCC lCFLAGS=$dCFLAGS lCPPFLAGS=$dCPPFLAGS lLDFLAGS=$dLDFLAGS lLIBS= # Debian #532343, #539158 USE_PRINTF_BUILTIN=1; export USE_PRINTF_BUILTIN buildok=0 for x in $static; do echo Building mksh-legacy with $x; case $x in (klibc) if test -z "$(which klcc 2>/dev/null)"; then echo ... skipping, klcc not found continue fi CC=klcc CFLAGS= for x in $lCFLAGS; do case $x in (-O*|-g*|-fPIE) ;; (*) CFLAGS="$CFLAGS $x" ;; esac done CFLAGS="$CFLAGS -fno-stack-protector -Os" test $nodbg = 1 || CFLAGS="$CFLAGS -g" CPPFLAGS="$lCPPFLAGS" LDFLAGS= for x in $lLDFLAGS; do case $x in (-pie|-fPIE) ;; (*) LDFLAGS="$LDFLAGS $x" ;; esac done LDSTATIC="-static" LIBS=$lLIBS HAVE_CAN_COMBINE=0; export HAVE_CAN_COMBINE trybuild legacy unset HAVE_CAN_COMBINE # Collect gcc and klibc packages for Built-Using if test $buildok = 1; then x=$(dpkg -S "$(readlink -f "$($CC -print-libgcc-file-name)")") bupkgs="$bupkgs ${x%%: *} libklibc-dev linux-libc-dev" fi ;; (dietlibc) if test -z "$(which diet 2>/dev/null)"; then echo ... skipping, diet not found continue fi CC="diet -v -Os $lCC" CFLAGS= for x in $lCFLAGS; do case $x in (-O*|-g*|-fPIE) ;; (*) CFLAGS="$CFLAGS $x" ;; esac done # debug builds are too fragile here, IIRC CPPFLAGS=$lCPPFLAGS LDFLAGS= for x in $lLDFLAGS; do case $x in (-pie|-fPIE) ;; (*) LDFLAGS="$LDFLAGS $x" ;; esac done LDSTATIC=" " LIBS=$lLIBS echo "Note: all warning: dereferencing pointer 'p' does break" \ "strict-aliasing rules come from dietlibc, not mksh!" trybuild legacy # Collect gcc and dietlibc packages for Built-Using if test $buildok = 1; then x=$(dpkg -S "$(readlink -f "$($CC -print-libgcc-file-name)")") bupkgs="$bupkgs ${x%%: *} dietlibc-dev" fi ;; (eglibc) CC=$lCC CFLAGS=$lCFLAGS CPPFLAGS=$lCPPFLAGS LDFLAGS=$lLDFLAGS LDSTATIC= LIBS=$lLIBS trybuild legacy ;; esac; test $buildok = 0 || break; done if test $buildok = 0; then echo Build of mksh-legacy failed. exit 1 fi echo Logging build information... for x in $bupkgs; do dpkg-query -Wf '${source:Package} (= ${source:Version})\n' "$x" done | sort -u | { buspkgs= while IFS= read -r x; do test -n "$x" || continue test x"$x" = x" (= )" && continue echo "Built Using: $x" test -z "$buspkgs" || buspkgs="$buspkgs, " buspkgs=$buspkgs$x done echo "mksh:B-U=$buspkgs" >builddir/substvars } pkgvsn=$(dpkg-parsechangelog -n1 | sed -n '/^Version: */s///p') { cat debian/README.Debian echo Build information for mksh R${pkgvsn%-*}: for v in DEB_BUILD_GNU_TYPE DEB_HOST_GNU_TYPE DEB_BUILD_OPTIONS; do eval x=\$$v echo "| $v='$x'" done echo Dependencies: dpkg-query -W $(for wasn in ./usr/lib/libc.so ./usr/lib/*/libc.so \ linux-libc-dev locales .=diet .=klcc .=as .=ld .=strip; do case $wasn in (.=*) wasn=.$(which ${wasn#.=} 2>/dev/null) ;; esac case $wasn in (./*) for wasn in ${wasn#.}; do test -e $wasn && dpkg -S $wasn | sed \ -e '/^diversion by/d' -e 's/: .*$//' \ -e 's/, /,/g' -e 'y/,/\n/' done ;; (.*) ;; (*) echo $wasn ;; esac done | sort -u) | column -t | sed 's/^/| /' echo ---- cat builddir/buildinfo.full echo ---- cat builddir/buildinfo.static echo ---- cat builddir/buildinfo.legacy echo ---- echo Version: $pkgvsn date -R } | gzip -n9 >builddir/README.Debian.gz echo All builds complete. exit 0 debian/mksh.manpages0000664000000000000000000000015612140570530011646 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.manpages,v 1.7 2013/05/02 23:05:35 tg Exp $ #- lksh.1 mksh.1 debian/mksh.lintian0000664000000000000000000000045312106177021011511 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/mksh.lintian,v 1.3 2013/02/11 14:19:36 tg Exp $ # deliberate, and detailed in README.Debian, and same as mksh-static mksh: statically-linked-binary bin/lksh # true but not an oversight, there is none bundled with the sources mksh: no-upstream-changelog debian/watch0000664000000000000000000000024512107542016010220 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/watch,v 1.4 2013/02/15 23:25:41 tg Exp $ version=3 http://www.mirbsd.org/MirOS/dist/mir/mksh/ mksh-R([0-9]+[b-h]?)\.tgz debian/pdksh.lintian0000664000000000000000000000030111772423244011661 0ustar # $MirOS: contrib/hosted/tg/deb/mksh/debian/pdksh.lintian,v 1.1 2012/06/26 21:15:56 tg Exp $ # deliberate, to get pdksh removed from the menus pdksh: postinst-has-useless-call-to-update-menus debian/README.Debian0000664000000000000000000001041412147210772011234 0ustar $MirOS: contrib/hosted/tg/deb/mksh/debian/README.Debian,v 1.27 2013/05/22 18:43:45 tg Exp $ ___________________________________________________________________________________________ Additional documentation and examples ===================================== Please read the links on https://www.mirbsd.org/ksh-chan.htm and peek at: https://evolvis.org/plugins/scmgit/cgi-bin/gitweb.cgi?p=shellsnippets/shellsnippets.git Reporting bugs ============== Please report only packaging bugs in the Debian BTS. Report code bugs, but *especially* feature requests, upstream, either via IRC or mailing list or, if it must be, at Launchpad: * #!/bin/mksh (or #ksh) IRC channel at irc.freenode.net (Port 6697 SSL, 6667 unencrypted) * mksh mailing list (does not require subscription to post) archived at http://news.gmane.org/gmane.os.miros.mksh and others * https://launchpad.net/mksh Notes for the mksh binary package ================================= * After installation, it is strongly recommended to copy the file /etc/skel/.mkshrc into your home directory to get a nicer prompt, pushd/popd/dirs functionality, some aliases, etc. (you can then customise it; reading the manual page also often helps). Note that /etc/skel/.mkshrc sources /etc/mkshrc (which is the upstream-provided file) by default and contains some (commented out) examples to set the locale and editor. Change the file once copied into the home if you do not want this. * The MirBSD Korn Shell provides a workable /bin/sh for Debian; installation however is not automatic due to Debian #540512 (a bug in dash). It is strongly recommended to use its “legacy” flavour for this, as it uses the host “long” C type for integer arithmetics, following POSIX. Use these commands: $ sudo ln -sf lksh /bin/sh $ sudo ln -sf mksh.1.gz /usr/share/man/man1/sh.1.gz This will install the mksh manpage for sh(1) since it explains better what the shell is actually about; lksh(1) contains only a short summary of differences. Please note that lksh, as opposed to mksh, is not suited for interactive use (but no regression from dash which also isn’t). * The /bin/lksh binary is used to run legacy ksh88 and pdksh scripts only. It was not suitable as /bin/sh before Debian mksh 46-2, nor is it intended for interactive use. It only has a printf(1) builtin starting with mksh 46-2 in Debian. It however is used to provide pdksh as transitional package. It will not be registered with the menu system or set up as login shell. Also, do not use the pdksh compatibility symlink as login shell. * /bin/mksh is built with the following options: - extra hardening flags: +all - eglibc (dynamically linked) - calling as sh or -sh invokes "set -o posix -o sh" * /bin/mksh-static is built with the following options: - extra hardening flags: +all but no PIE (position independent code), as this is a static executable - eglibc, if cross-built or running the testsuite is disabled; otherwise klibc if available and working, otherwise dietlibc if available and working, otherwise eglibc - note that the stack protector is disabled on dietlibc, klibc due to limitations in those operating environments - calling as sh or -sh invokes "set -o posix -o sh" - -DMKSH_SMALL - no locale support; uses getenv on LANG/LC_CTYPE/LC_ALL * /bin/lksh is built with the following options: - extra hardening flags: +all (no PIE if dietlibc or klibc is used) - dietlibc or klibc (under similar conditions as /bin/mksh-static) or, otherwise, eglibc (dynamically linked) - the printf builtin - calling as sh or -sh invokes "set -o posix -o sh" - no locale support; uses getenv on LANG/LC_CTYPE/LC_ALL * The following testsuite failures, especially on the autobuilder network, are harmless and can be ignored: - utf8bom-2 (mksh-full only) - heredoc-tmpfile-8 (on slow machines) Failures in dollar-quoted-strings or history-subst-4 (#523086) are errors in dietlibc on the respective architectures. These have been fixed past Debian squeeze and *buntu oneiric but may still occur on backports; except history-subst-4 [hppa], they are tested for, and on failure rebuilt against eglibc, on non- cross non-nocheck builds. Details (generated during package build) can be found below: debian/patches/0000775000000000000000000000000012147216045010621 5ustar debian/patches/debian-changes0000664000000000000000000001563212147216045013403 0ustar Please review changes against upstream code using SCM, see the Vcs-* tags in debian/control for its location. --- mksh-46.orig/sh.h +++ mksh-46/sh.h @@ -164,7 +164,7 @@ #endif #ifdef EXTERN -__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.654 2013/05/02 21:59:52 tg Exp $"); +__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.655 2013/05/08 11:16:19 tg Exp $"); #endif #define MKSH_VERSION "R46 2013/05/02" @@ -522,6 +522,7 @@ char *ucstrstr(char *, const char *); #if (!defined(MKSH_BUILDMAKEFILE4BSD) && !defined(MKSH_BUILDSH)) || (MKSH_BUILD_R != 461) #error Must run Build.sh to compile this. +extern void thiswillneverbedefinedIhope(void); int im_sorry_dave(void) { --- mksh-46.orig/Build.sh +++ mksh-46/Build.sh @@ -1,5 +1,5 @@ #!/bin/sh -srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.630 2013/05/02 21:59:44 tg Exp $' +srcversion='$MirOS: src/bin/mksh/Build.sh,v 1.635 2013/05/22 19:24:32 tg Exp $' #- # Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011, 2012, 2013 @@ -28,6 +28,9 @@ srcversion='$MirOS: src/bin/mksh/Build.s LC_ALL=C export LC_ALL +echo "For the build logs, demonstrate that /dev/null and /dev/tty exist:" +ls -l /dev/null /dev/tty + case $ZSH_VERSION:$VERSION in :zsh*) ZSH_VERSION=2 ;; esac @@ -63,7 +66,7 @@ vq() { rmf() { for _f in "$@"; do case $_f in - Build.sh|check.pl|check.t|dot.mkshrc|*.c|*.h|mksh.1) ;; + Build.sh|check.pl|check.t|dot.mkshrc|*.c|*.h|lksh.1|mksh.1) ;; *) rm -f "$_f" ;; esac done @@ -190,6 +193,7 @@ ac_testn() { ac_ifcpp() { expr=$1; shift ac_testn "$@" <<-EOF + extern int thiswillneverbedefinedIhope(void); int main(void) { return ( #$expr 0 @@ -458,7 +462,7 @@ oswarn= ccpc=-Wc, ccpl=-Wl, tsts= -ccpr='|| for _f in ${tcfn}*; do case $_f in Build.sh|check.pl|check.t|dot.mkshrc|*.c|*.h|mksh.1) ;; *) rm -f "$_f" ;; esac; done' +ccpr='|| for _f in ${tcfn}*; do case $_f in Build.sh|check.pl|check.t|dot.mkshrc|*.c|*.h|lksh.1|mksh.1) ;; *) rm -f "$_f" ;; esac; done' # Evil hack if test x"$TARGET_OS" = x"Android"; then @@ -1177,6 +1181,7 @@ i=0 if test $ct = gcc; then # The following tests run with -Werror (gcc only) if possible NOWARN=$DOWARN; phase=u + ac_flags 1 wnodeprecateddecls -Wno-deprecated-declarations # mksh is not written in CFrustFrust! ac_flags 1 no_eh_frame -fno-asynchronous-unwind-tables ac_flags 1 fnostrictaliasing -fno-strict-aliasing @@ -1290,6 +1295,7 @@ test $ct = pcc && phase=u # ac_test attribute_bounded '' 'for __attribute__((__bounded__))' <<-'EOF' #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) + extern int thiswillneverbedefinedIhope(void); /* force a failure: TenDRA and gcc 1.42 have false positive here */ int main(void) { return (thiswillneverbedefinedIhope()); } #else @@ -1310,6 +1316,7 @@ ac_test attribute_bounded '' 'for __attr EOF ac_test attribute_format '' 'for __attribute__((__format__))' <<-'EOF' #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) + extern int thiswillneverbedefinedIhope(void); /* force a failure: TenDRA and gcc 1.42 have false positive here */ int main(void) { return (thiswillneverbedefinedIhope()); } #else @@ -1324,6 +1331,7 @@ ac_test attribute_format '' 'for __attri EOF ac_test attribute_noreturn '' 'for __attribute__((__noreturn__))' <<-'EOF' #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) + extern int thiswillneverbedefinedIhope(void); /* force a failure: TenDRA and gcc 1.42 have false positive here */ int main(void) { return (thiswillneverbedefinedIhope()); } #else @@ -1336,6 +1344,7 @@ ac_test attribute_noreturn '' 'for __att EOF ac_test attribute_unused '' 'for __attribute__((__unused__))' <<-'EOF' #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) + extern int thiswillneverbedefinedIhope(void); /* force a failure: TenDRA and gcc 1.42 have false positive here */ int main(void) { return (thiswillneverbedefinedIhope()); } #else @@ -1345,6 +1354,7 @@ ac_test attribute_unused '' 'for __attri EOF ac_test attribute_used '' 'for __attribute__((__used__))' <<-'EOF' #if defined(__TenDRA__) || (defined(__GNUC__) && (__GNUC__ < 2)) + extern int thiswillneverbedefinedIhope(void); /* force a failure: TenDRA and gcc 1.42 have false positive here */ int main(void) { return (thiswillneverbedefinedIhope()); } #else @@ -1531,7 +1541,7 @@ else #define EXTERN #define MKSH_INCLUDES_ONLY #include "sh.h" - __RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.630 2013/05/02 21:59:44 tg Exp $"); + __RCSID("$MirOS: src/bin/mksh/Build.sh,v 1.635 2013/05/22 19:24:32 tg Exp $"); int main(void) { printf("Hello, World!\n"); return (0); } EOF case $cm in @@ -1747,7 +1757,7 @@ EOF ac_test setresugid <<-'EOF' #include #include - int main(void) { setresuid(0,0,0); return (setresgid(0,0,0)); } + int main(void) { return (setresuid(0,0,0) + setresgid(0,0,0)); } EOF ac_test setgroups setresugid 0 <<-'EOF' @@ -2268,8 +2278,10 @@ test 1 = $eq && e=: $e $e Installing the shell: $e "# $i -c -s -o root -g bin -m 555 $tfn /bin/$tfn" -$e "# grep -x /bin/$tfn /etc/shells >/dev/null || echo /bin/$tfn >>/etc/shells" -$e "# $i -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/" +if test $legacy = 0; then + $e "# grep -x /bin/$tfn /etc/shells >/dev/null || echo /bin/$tfn >>/etc/shells" + $e "# $i -c -o root -g bin -m 444 dot.mkshrc /usr/share/doc/mksh/examples/" +fi $e $e Installing the manual: if test -f $tfn.cat1; then @@ -2277,7 +2289,7 @@ if test -f $tfn.cat1; then "/usr/share/man/cat1/$tfn.0" $e or fi -$e "# $i -c -o root -g bin -m 444 mksh.1 /usr/share/man/man1/$tfn.1" +$e "# $i -c -o root -g bin -m 444 $tfn.1 /usr/share/man/man1/$tfn.1" $e $e Run the regression test suite: ./test.sh $e Please also read the sample file dot.mkshrc and the fine manual. --- mksh-46.orig/lksh.1 +++ mksh-46/lksh.1 @@ -1,4 +1,4 @@ -.\" $MirOS: src/bin/mksh/lksh.1,v 1.4 2013/05/02 20:21:43 tg Exp $ +.\" $MirOS: src/bin/mksh/lksh.1,v 1.5 2013/05/22 18:18:06 tg Exp $ .\"- .\" Copyright (c) 2008, 2009, 2010, 2012, 2013 .\" Thorsten “mirabilos” Glaser @@ -72,7 +72,7 @@ .\" with -mandoc, it might implement .Mx itself, but we want to .\" use our own definition. And .Dd must come *first*, always. .\" -.Dd $Mdocdate: May 2 2013 $ +.Dd $Mdocdate: May 22 2013 $ .\" .\" Check which macro package we use, and do other -mdoc setup. .\" @@ -179,10 +179,6 @@ has the following differences from .Nm mksh : .Bl -bullet .It -.Nm -is not suitable for use as -.Pa /bin/sh . -.It There is no explicit support for interactive use, nor any command line editing or history code. Hence, @@ -262,6 +258,14 @@ does not keep file descriptors \*(Gt 2 p .Pp .Pa https://www.mirbsd.org/ksh\-chan.htm .Sh CAVEATS +To use +.Nm +as +.Pa /bin/sh , +compilation to enable +.Ic set -o posix +by default is highly recommended for better standards compliance. +.Pp .Nm tries to make a cross between a legacy bourne/posix compatibl-ish shell and a legacy pdksh-alike but debian/patches/series0000664000000000000000000000001712147216045012034 0ustar debian-changes debian/mksh.NEWS0000664000000000000000000000276112147215755010647 0ustar mksh (46-2) unstable; urgency=low The mksh and mksh-static binaries no longer come with the limited printf(1) builtin which was only added to please a maintainer who likes to use printf while not having /usr/bin in their script PATH. It was added to lksh, which uses more POSIX-like arithmetics but lacks interactive command line editing features (dash does so, too). For this reason it’s recommended to use lksh instead of mksh or mksh-static as /bin/sh (unless you don’t install udev) and keep mksh around for interactive tasks (initrd should still use mksh-static exclusively and just provide printf(1) in /bin instead); lksh is statically linked on platforms providing a libc that supports this use case well and is not glibc/eglibc. $ sudo ln -sf lksh /bin/sh is the correct command to use for applying this change. -- Thorsten Glaser Wed, 22 May 2013 19:25:38 +0000 mksh (40.4-1~bpo50+1) lenny-backports-sloppy; urgency=medium The debconf magic for automatically installing /bin/mksh as /bin/sh is gone. If you want to do that, set the symlink in /bin/sh and /usr/share/man/man1/sh.1.gz yourself, as root. Be aware that only the latest mksh versions can safely be used as /bin/sh since in the past after many uploads issues regarding bugs or assumptuous maintainer or init scripts of other packages have been found which need to be addressed by updates of the mksh package. -- Thorsten Glaser Sat, 17 Dec 2011 21:45:04 +0000