From e5fbb3e3b2a626b1b8a627e667f54fd46b611a4f Mon Sep 17 00:00:00 2001 From: HansH111 Date: Wed, 29 May 2024 16:42:39 +0200 Subject: [PATCH 1/3] make changes to sh_main to accept also kshcode which is in memory --- src/cmd/ksh93/sh/main.c | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/cmd/ksh93/sh/main.c b/src/cmd/ksh93/sh/main.c index 4bd97845d295..fda13b4fa1ac 100644 --- a/src/cmd/ksh93/sh/main.c +++ b/src/cmd/ksh93/sh/main.c @@ -107,7 +107,7 @@ static int sh_source(Sfio_t *iop, const char *file) #define REMOTE(m) !(m) #endif -int sh_main(int ac, char *av[], Shinit_f userinit) +int sh_mainex(int ac, char *av[], Shinit_f userinit,char *code,long codelen) { char *name; int fdin; @@ -231,6 +231,12 @@ int sh_main(int ac, char *av[], Shinit_f userinit) shell_c: iop = sfnew(NULL,sh.comdiv,strlen(sh.comdiv),0,SFIO_STRING|SFIO_READ); } + else if(code && codelen) { /* read kshcode from memory */ + sh.comdiv=code; + if (codelen == 1) codelen=strlen(code); + iop = sfnew(NULL,sh.comdiv,codelen,0,SF_STRING|SF_READ); + code=NULL; + } else { name = error_info.id; @@ -367,6 +373,26 @@ int sh_main(int ac, char *av[], Shinit_f userinit) sh_done(0); } +int sh_main(int ac, char *av[], Shinit_f userinit) +{ + return sh_mainex(ac, av, userinit, NULL , 0); +} + +int sh_maincode(int ac, char *av[], char *code) +{ + if (code) { + long len; + char *ptr; + len=strlen(code); + ptr=(char *)sh_malloc(len+8); + if (ptr) { + strcpy(ptr,code); + return sh_mainex(ac, av, NULL,ptr,len); + } + } + return 0; +} + /* * iop is not null when the input is a string * fdin is the input file descriptor From 0dd33ff4e6cee9ec17cb0325e14b0d6175e10830 Mon Sep 17 00:00:00 2001 From: HansH111 Date: Wed, 29 May 2024 16:44:31 +0200 Subject: [PATCH 2/3] removes errormsg when SCRIPTONLY=1 --- src/cmd/ksh93/include/defs.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/ksh93/include/defs.h b/src/cmd/ksh93/include/defs.h index 568d6aee7130..f4c733584bbb 100644 --- a/src/cmd/ksh93/include/defs.h +++ b/src/cmd/ksh93/include/defs.h @@ -175,7 +175,7 @@ extern char *sh_getcwd(void); #if SHOPT_SCRIPTONLY #define is_option(s,x) ((x)==SH_INTERACTIVE || (x)==SH_HISTORY ? 0 : ((s)->v[((x)&WMASK)/WBITS] & (1L << ((x) % WBITS))) ) -#define on_option(s,x) ( (x)==SH_INTERACTIVE || (x)==SH_HISTORY ? errormsg(SH_DICT,ERROR_exit(1),e_scriptonly) : ((s)->v[((x)&WMASK)/WBITS] |= (1L << ((x) % WBITS))) ) +#define on_option(s,x) ((x)==SH_INTERACTIVE || (x)==SH_HISTORY ? 0 : ((s)->v[((x)&WMASK)/WBITS] |= (1L << ((x) % WBITS))) ) #define off_option(s,x) ((x)==SH_INTERACTIVE || (x)==SH_HISTORY ? 0 : ((s)->v[((x)&WMASK)/WBITS] &= ~(1L << ((x) % WBITS))) ) #else #define is_option(s,x) ((s)->v[((x)&WMASK)/WBITS] & (1L << ((x) % WBITS))) From fedfcb81352f617607a32bcda0e227e539b7afb6 Mon Sep 17 00:00:00 2001 From: Hans Harder Date: Sat, 1 Jun 2024 11:30:36 +0200 Subject: [PATCH 3/3] change old SF_ with SFIO_ --- src/cmd/ksh93/sh/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/ksh93/sh/main.c b/src/cmd/ksh93/sh/main.c index fda13b4fa1ac..8ac7ff6614bf 100644 --- a/src/cmd/ksh93/sh/main.c +++ b/src/cmd/ksh93/sh/main.c @@ -234,7 +234,7 @@ int sh_mainex(int ac, char *av[], Shinit_f userinit,char *code,long codelen) else if(code && codelen) { /* read kshcode from memory */ sh.comdiv=code; if (codelen == 1) codelen=strlen(code); - iop = sfnew(NULL,sh.comdiv,codelen,0,SF_STRING|SF_READ); + iop = sfnew(NULL,sh.comdiv,codelen,0,SFIO_STRING|SFIO_READ); code=NULL; } else