* remove redundancy
* integrate compat.h, version.h into sh.h (dependency trick didn't work anyway) * mention #ksh in mksh(1) since the founder (twkm) said it's on topic too (don't remove mention of #mksh despite it's usually empty because of control)
This commit is contained in:
parent
93ab969fdc
commit
4fac7ec24b
4
check.t
4
check.t
@ -1,4 +1,4 @@
|
|||||||
# $MirOS: src/bin/mksh/check.t,v 1.58 2006/08/18 13:41:09 tg Exp $
|
# $MirOS: src/bin/mksh/check.t,v 1.59 2006/08/22 22:49:33 tg Exp $
|
||||||
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
|
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
|
||||||
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
|
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
|
||||||
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
||||||
@ -3856,5 +3856,5 @@ category: pdksh
|
|||||||
stdin:
|
stdin:
|
||||||
echo $KSH_VERSION
|
echo $KSH_VERSION
|
||||||
expected-stdout:
|
expected-stdout:
|
||||||
@(#)MIRBSD KSH R28 2006/08/18
|
@(#)MIRBSD KSH R28 2006/08/22
|
||||||
---
|
---
|
||||||
|
70
compat.h
70
compat.h
@ -1,70 +0,0 @@
|
|||||||
#define MKSH_COMPAT_H_ID "$MirOS: src/bin/mksh/compat.h,v 1.4 2006/08/22 22:16:04 tg Exp $"
|
|
||||||
|
|
||||||
#ifdef NEED_COMPAT
|
|
||||||
/* Part I: extra headers */
|
|
||||||
|
|
||||||
#if defined(__sun__) || defined(__INTERIX)
|
|
||||||
#include <sys/mkdev.h>
|
|
||||||
#endif
|
|
||||||
#if !defined(__OpenBSD__) && !defined(__CYGWIN__)
|
|
||||||
#include <ulimit.h>
|
|
||||||
#endif
|
|
||||||
#if defined(__sun__) || defined(__gnu_linux__)
|
|
||||||
#include <values.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Part II: extra macros */
|
|
||||||
|
|
||||||
#ifndef timeradd
|
|
||||||
#define timeradd(tvp, uvp, vvp) \
|
|
||||||
do { \
|
|
||||||
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
|
|
||||||
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
|
|
||||||
if ((vvp)->tv_usec >= 1000000) { \
|
|
||||||
(vvp)->tv_sec++; \
|
|
||||||
(vvp)->tv_usec -= 1000000; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
#endif
|
|
||||||
#ifndef timersub
|
|
||||||
#define timersub(tvp, uvp, vvp) \
|
|
||||||
do { \
|
|
||||||
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
|
||||||
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
|
||||||
if ((vvp)->tv_usec < 0) { \
|
|
||||||
(vvp)->tv_sec--; \
|
|
||||||
(vvp)->tv_usec += 1000000; \
|
|
||||||
} \
|
|
||||||
} while (0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef S_ISTXT
|
|
||||||
#define S_ISTXT 0001000
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Part III: OS-dependent additions */
|
|
||||||
|
|
||||||
#if defined(__gnu_linux__)
|
|
||||||
size_t strlcat(char *, const char *, size_t);
|
|
||||||
size_t strlcpy(char *, const char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__sun__)
|
|
||||||
size_t confstr(int, char *, size_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__gnu_linux__) || defined(__sun__) || defined(__CYGWIN__)
|
|
||||||
#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
|
|
||||||
mode_t getmode(const void *, mode_t);
|
|
||||||
void *setmode(const char *);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __INTERIX
|
|
||||||
#define makedev(x,y) mkdev((x),(y))
|
|
||||||
extern int __cdecl seteuid(uid_t);
|
|
||||||
extern int __cdecl setegid(gid_t);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
8
edit.c
8
edit.c
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.36 2006/08/08 20:17:20 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.37 2006/08/22 22:49:34 tg Exp $");
|
||||||
|
|
||||||
/* tty driver characters we are interested in */
|
/* tty driver characters we are interested in */
|
||||||
typedef struct {
|
typedef struct {
|
||||||
@ -2674,7 +2674,7 @@ x_version(int c __attribute__((unused)))
|
|||||||
char *o_xbuf = xbuf, *o_xend = xend;
|
char *o_xbuf = xbuf, *o_xend = xend;
|
||||||
char *o_xbp = xbp, *o_xep = xep, *o_xcp = xcp;
|
char *o_xbp = xbp, *o_xep = xep, *o_xcp = xcp;
|
||||||
int lim = x_lastcp() - xbp;
|
int lim = x_lastcp() - xbp;
|
||||||
char *v = strdup(MKSH_VERSION + 4);
|
char *v = strdup(KSH_VERSION);
|
||||||
int vlen;
|
int vlen;
|
||||||
|
|
||||||
xbuf = xbp = xcp = v;
|
xbuf = xbp = xcp = v;
|
||||||
@ -3164,8 +3164,8 @@ vi_hook(int ch)
|
|||||||
save_cbuf();
|
save_cbuf();
|
||||||
es->cursor = 0;
|
es->cursor = 0;
|
||||||
es->linelen = 0;
|
es->linelen = 0;
|
||||||
putbuf(MKSH_VERSION + 4,
|
putbuf(KSH_VERSION,
|
||||||
strlen(MKSH_VERSION + 4), 0);
|
strlen(KSH_VERSION), 0);
|
||||||
refresh(0);
|
refresh(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
main.c
10
main.c
@ -3,22 +3,22 @@
|
|||||||
/* $OpenBSD: io.c,v 1.22 2006/03/17 16:30:13 millert Exp $ */
|
/* $OpenBSD: io.c,v 1.22 2006/03/17 16:30:13 millert Exp $ */
|
||||||
/* $OpenBSD: table.c,v 1.12 2005/12/11 20:31:21 otto Exp $ */
|
/* $OpenBSD: table.c,v 1.12 2005/12/11 20:31:21 otto Exp $ */
|
||||||
|
|
||||||
#define EXTERN /* define EXTERNs in sh.h */
|
#define EXTERN
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.46 2006/08/18 18:48:25 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.47 2006/08/22 22:49:35 tg Exp $");
|
||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
static void reclaim(void);
|
static void reclaim(void);
|
||||||
static void remove_temps(struct temp * tp);
|
static void remove_temps(struct temp *);
|
||||||
|
|
||||||
static const char initifs[] = "IFS= \t\n";
|
static const char initifs[] = "IFS= \t\n";
|
||||||
|
|
||||||
static const char initsubs[] = "${PS2=> } ${PS3=#? } ${PS4=+ }";
|
static const char initsubs[] = "${PS2=> } ${PS3=#? } ${PS4=+ }";
|
||||||
|
|
||||||
static const char *initcoms[] = {
|
static const char *initcoms[] = {
|
||||||
"typeset", "-r", "KSH_VERSION", NULL,
|
"typeset", "-r", initvsn, NULL,
|
||||||
"typeset", "-x", "SHELL", "PATH", "HOME", NULL,
|
"typeset", "-x", "SHELL", "PATH", "HOME", NULL,
|
||||||
"typeset", "-i", "PPID", "OPTIND=1", NULL,
|
"typeset", "-i", "PPID", "OPTIND=1", NULL,
|
||||||
"eval", "typeset -i RANDOM SECONDS=\"${SECONDS-0}\" TMOUT=\"${TMOUT-0}\"", NULL,
|
"eval", "typeset -i RANDOM SECONDS=\"${SECONDS-0}\" TMOUT=\"${TMOUT-0}\"", NULL,
|
||||||
@ -191,8 +191,6 @@ main(int argc, char *argv[])
|
|||||||
srand((*((long *)kshname)) ^ ((long)time(NULL) * kshpid * ppid));
|
srand((*((long *)kshname)) ^ ((long)time(NULL) * kshpid * ppid));
|
||||||
#endif
|
#endif
|
||||||
setint(global("PPID"), (long)ppid);
|
setint(global("PPID"), (long)ppid);
|
||||||
/* setstr can't fail here */
|
|
||||||
setstr(global("KSH_VERSION"), MKSH_VERSION, KSH_RETURN_ERROR);
|
|
||||||
|
|
||||||
/* execute initialisation statements */
|
/* execute initialisation statements */
|
||||||
for (wp = (char **)initcoms; *wp != NULL; wp++) {
|
for (wp = (char **)initcoms; *wp != NULL; wp++) {
|
||||||
|
5
misc.c
5
misc.c
@ -3,8 +3,8 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#include "sh.h"
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.14 2006/08/22 22:16:04 tg Exp $"
|
__RCSID("$MirOS: src/bin/mksh/misc.c,v 1.15 2006/08/22 22:49:36 tg Exp $\t"
|
||||||
"\t" MKSH_SH_H_ID "\t" MKSH_COMPAT_H_ID);
|
MKSH_SH_H_ID);
|
||||||
|
|
||||||
short chtypes[UCHAR_MAX+1]; /* type bits for unsigned char */
|
short chtypes[UCHAR_MAX+1]; /* type bits for unsigned char */
|
||||||
|
|
||||||
@ -12,7 +12,6 @@ static int do_gmatch(const unsigned char *, const unsigned char *,
|
|||||||
const unsigned char *, const unsigned char *);
|
const unsigned char *, const unsigned char *);
|
||||||
static const unsigned char *cclass(const unsigned char *, int);
|
static const unsigned char *cclass(const unsigned char *, int);
|
||||||
static int parse_T(char *);
|
static int parse_T(char *);
|
||||||
|
|
||||||
static char *do_phys_path(XString *, char *, const char *);
|
static char *do_phys_path(XString *, char *, const char *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
26
mksh.1
26
mksh.1
@ -1,8 +1,8 @@
|
|||||||
.\" $MirOS: src/bin/mksh/mksh.1,v 1.56 2006/08/14 20:41:21 tg Exp $
|
.\" $MirOS: src/bin/mksh/mksh.1,v 1.57 2006/08/22 22:49:36 tg Exp $
|
||||||
.\" $OpenBSD: ksh.1,v 1.116 2006/07/26 10:13:25 jmc Exp $
|
.\" $OpenBSD: ksh.1,v 1.116 2006/07/26 10:13:25 jmc Exp $
|
||||||
.\" $OpenBSD: sh.1tbl,v 1.53 2004/12/10 01:56:56 jaredy Exp $
|
.\" $OpenBSD: sh.1tbl,v 1.53 2004/12/10 01:56:56 jaredy Exp $
|
||||||
.\"
|
.\"
|
||||||
.Dd August 14, 2006
|
.Dd August 22, 2006
|
||||||
.Dt MKSH 1
|
.Dt MKSH 1
|
||||||
.Os MirBSD
|
.Os MirBSD
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -5301,25 +5301,23 @@ yet.
|
|||||||
.Pp
|
.Pp
|
||||||
Please report bugs in
|
Please report bugs in
|
||||||
.Nm
|
.Nm
|
||||||
or this manual page to the MirOS Project discussion mailing list at
|
to the
|
||||||
.Aq miros-discuss@mirbsd.org
|
.Aq miros-discuss@mirbsd.org
|
||||||
or in the
|
mailing list or in the
|
||||||
.Li \&#mksh
|
.Li \&#mksh
|
||||||
channel on the OPN IRC network at
|
or
|
||||||
.Pa irc.freenode.net
|
.Li \&#ksh
|
||||||
.Pq port 6667 .
|
IRC channel at
|
||||||
|
.Pa irc.freenode.net .
|
||||||
.Pp
|
.Pp
|
||||||
By the way, the most frequently reported bug is:
|
By the way, the most frequently reported bug is:
|
||||||
.Bd -literal -offset indent
|
.Bd -literal -offset indent
|
||||||
$ print hi \*(Ba read a; print $a # Does not show hi
|
$ print hi \*(Ba read a; print $a # Does not show hi
|
||||||
.Ed
|
.Ed
|
||||||
.Pp
|
.Pp
|
||||||
The
|
|
||||||
.Nm pdksh
|
|
||||||
author is aware of this and there is no need to report it.
|
|
||||||
This does not work because the last command of a pipe sequence
|
This does not work because the last command of a pipe sequence
|
||||||
is run in a subshell.
|
is executed in a subshell.
|
||||||
In
|
This is a
|
||||||
.Nm "" ,
|
.Nm
|
||||||
this is a feature which can be depended on by scripts.
|
feature which can be depended on by scripts.
|
||||||
Use co-routines to work around if necessary and possible.
|
Use co-routines to work around if necessary and possible.
|
||||||
|
75
sh.h
75
sh.h
@ -8,7 +8,8 @@
|
|||||||
/* $OpenBSD: c_test.h,v 1.4 2004/12/20 11:34:26 otto Exp $ */
|
/* $OpenBSD: c_test.h,v 1.4 2004/12/20 11:34:26 otto Exp $ */
|
||||||
/* $OpenBSD: tty.h,v 1.5 2004/12/20 11:34:26 otto Exp $ */
|
/* $OpenBSD: tty.h,v 1.5 2004/12/20 11:34:26 otto Exp $ */
|
||||||
|
|
||||||
#define MKSH_SH_H_ID "$MirOS: src/bin/mksh/sh.h,v 1.38 2006/08/22 22:22:07 tg Exp $"
|
#define MKSH_SH_H_ID "$MirOS: src/bin/mksh/sh.h,v 1.39 2006/08/22 22:49:37 tg Exp $"
|
||||||
|
#define MKSH_VERSION "R28 2006/08/22"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
|
|
||||||
@ -44,7 +45,72 @@
|
|||||||
#include <termios.h>
|
#include <termios.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "compat.h"
|
|
||||||
|
#ifdef NEED_COMPAT
|
||||||
|
/* extra headers */
|
||||||
|
|
||||||
|
#if defined(__sun__) || defined(__INTERIX)
|
||||||
|
#include <sys/mkdev.h>
|
||||||
|
#endif
|
||||||
|
#if !defined(__OpenBSD__) && !defined(__CYGWIN__)
|
||||||
|
#include <ulimit.h>
|
||||||
|
#endif
|
||||||
|
#if defined(__sun__) || defined(__gnu_linux__)
|
||||||
|
#include <values.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* extra macros */
|
||||||
|
|
||||||
|
#ifndef timeradd
|
||||||
|
#define timeradd(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec >= 1000000) { \
|
||||||
|
(vvp)->tv_sec++; \
|
||||||
|
(vvp)->tv_usec -= 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#endif
|
||||||
|
#ifndef timersub
|
||||||
|
#define timersub(tvp, uvp, vvp) \
|
||||||
|
do { \
|
||||||
|
(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; \
|
||||||
|
(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; \
|
||||||
|
if ((vvp)->tv_usec < 0) { \
|
||||||
|
(vvp)->tv_sec--; \
|
||||||
|
(vvp)->tv_usec += 1000000; \
|
||||||
|
} \
|
||||||
|
} while (0)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef S_ISTXT
|
||||||
|
#define S_ISTXT 0001000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* OS-dependent additions */
|
||||||
|
|
||||||
|
#if defined(__gnu_linux__)
|
||||||
|
size_t strlcat(char *, const char *, size_t);
|
||||||
|
size_t strlcpy(char *, const char *, size_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__sun__)
|
||||||
|
size_t confstr(int, char *, size_t);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__gnu_linux__) || defined(__sun__) || defined(__CYGWIN__)
|
||||||
|
#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
|
||||||
|
mode_t getmode(const void *, mode_t);
|
||||||
|
void *setmode(const char *);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __INTERIX
|
||||||
|
#define makedev(x,y) mkdev((x),(y))
|
||||||
|
extern int __cdecl seteuid(uid_t);
|
||||||
|
extern int __cdecl setegid(gid_t);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
/* some useful #defines */
|
/* some useful #defines */
|
||||||
#ifdef EXTERN
|
#ifdef EXTERN
|
||||||
@ -54,7 +120,6 @@
|
|||||||
# define EXTERN extern
|
# define EXTERN extern
|
||||||
# define EXTERN_DEFINED
|
# define EXTERN_DEFINED
|
||||||
#endif
|
#endif
|
||||||
#include "version.h"
|
|
||||||
|
|
||||||
#define EXECSHELL "/bin/mksh"
|
#define EXECSHELL "/bin/mksh"
|
||||||
#define EXECSHELL_STR "EXECSHELL"
|
#define EXECSHELL_STR "EXECSHELL"
|
||||||
@ -95,6 +160,10 @@ EXTERN gid_t kshgid; /* real gid of shell */
|
|||||||
EXTERN int exstat; /* exit status */
|
EXTERN int exstat; /* exit status */
|
||||||
EXTERN int subst_exstat; /* exit status of last $(..)/`..` */
|
EXTERN int subst_exstat; /* exit status of last $(..)/`..` */
|
||||||
EXTERN const char *safe_prompt; /* safe prompt if PS1 substitution fails */
|
EXTERN const char *safe_prompt; /* safe prompt if PS1 substitution fails */
|
||||||
|
#ifndef EXTERN_DEFINED
|
||||||
|
static const char initvsn[] = "KSH_VERSION=@(#)MIRBSD KSH " MKSH_VERSION;
|
||||||
|
#endif
|
||||||
|
EXTERN const char *KSH_VERSION I__(initvsn + 16);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Area-based allocation built on malloc/free
|
* Area-based allocation built on malloc/free
|
||||||
|
Loading…
x
Reference in New Issue
Block a user