note that some longjmp don’t handle 0 properly
cf. <500C1B2E.9030602@zytor.com>
This commit is contained in:
3
main.c
3
main.c
@ -34,7 +34,7 @@
|
|||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.225 2012/07/01 15:38:06 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/main.c,v 1.226 2012/07/22 15:56:50 tg Exp $");
|
||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
@ -844,6 +844,7 @@ shell(Source * volatile s, volatile bool toplevel)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* return to closest error handler or shell(), exit if none found */
|
/* return to closest error handler or shell(), exit if none found */
|
||||||
|
/* note: i MUST NOT be 0 */
|
||||||
void
|
void
|
||||||
unwind(int i)
|
unwind(int i)
|
||||||
{
|
{
|
||||||
|
6
sh.h
6
sh.h
@ -157,7 +157,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef EXTERN
|
#ifdef EXTERN
|
||||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.573 2012/07/20 23:22:13 tg Exp $");
|
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.574 2012/07/22 15:56:51 tg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#define MKSH_VERSION "R40 2012/07/21"
|
#define MKSH_VERSION "R40 2012/07/21"
|
||||||
|
|
||||||
@ -631,6 +631,8 @@ enum sh_flag {
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* parsing & execution environment
|
* parsing & execution environment
|
||||||
|
*
|
||||||
|
* note that kshlongjmp MUST NOT be passed 0 as second argument!
|
||||||
*/
|
*/
|
||||||
#ifdef MKSH_NO_SIGSETJMP
|
#ifdef MKSH_NO_SIGSETJMP
|
||||||
#define kshjmp_buf jmp_buf
|
#define kshjmp_buf jmp_buf
|
||||||
@ -676,6 +678,7 @@ extern struct env {
|
|||||||
#define STOP_RETURN(t) ((t) == E_FUNC || (t) == E_INCL)
|
#define STOP_RETURN(t) ((t) == E_FUNC || (t) == E_INCL)
|
||||||
|
|
||||||
/* values for kshlongjmp(e->jbuf, i) */
|
/* values for kshlongjmp(e->jbuf, i) */
|
||||||
|
/* note that i MUST NOT be zero */
|
||||||
#define LRETURN 1 /* return statement */
|
#define LRETURN 1 /* return statement */
|
||||||
#define LEXIT 2 /* exit statement */
|
#define LEXIT 2 /* exit statement */
|
||||||
#define LERROR 3 /* errorf() called */
|
#define LERROR 3 /* errorf() called */
|
||||||
@ -1776,6 +1779,7 @@ int promptlen(const char *);
|
|||||||
int include(const char *, int, const char **, int);
|
int include(const char *, int, const char **, int);
|
||||||
int command(const char *, int);
|
int command(const char *, int);
|
||||||
int shell(Source * volatile, volatile bool);
|
int shell(Source * volatile, volatile bool);
|
||||||
|
/* argument MUST NOT be 0 */
|
||||||
void unwind(int) MKSH_A_NORETURN;
|
void unwind(int) MKSH_A_NORETURN;
|
||||||
void newenv(int);
|
void newenv(int);
|
||||||
void quitenv(struct shf *);
|
void quitenv(struct shf *);
|
||||||
|
Reference in New Issue
Block a user