- Timestamp:
- Aug 13, 2020, 11:49:06 AM (5 years ago)
- Location:
- trunk/src/kash
- Files:
-
- 5 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kash/Makefile.kmk
r3110 r3409 104 104 shfile.c 105 105 kash_SOURCES.gnuhurd = \ 106 sys_signame.c \106 $(kash_0_OUTDIR)/sys_signame.c \ 107 107 strlcpy.c 108 108 kash_SOURCES.gnukfbsd = \ 109 sys_signame.c \109 $(kash_0_OUTDIR)/sys_signame.c \ 110 110 strlcpy.c 111 111 kash_SOURCES.gnuknbsd = \ 112 sys_signame.c \112 $(kash_0_OUTDIR)/sys_signame.c \ 113 113 strlcpy.c 114 114 kash_SOURCES.haiku = \ 115 sys_signame.c \115 $(kash_0_OUTDIR)/sys_signame.c \ 116 116 strlcpy.c 117 117 kash_SOURCES.linux = \ 118 sys_signame.c \118 $(kash_0_OUTDIR)/sys_signame.c \ 119 119 strlcpy.c 120 120 kash_SOURCES.solaris = \ 121 sys_signame.c \121 $(kash_0_OUTDIR)/sys_signame.c \ 122 122 strlcpy.c 123 123 kash_SOURCES.win = \ 124 sys_signame.c \ 124 $(kash_0_OUTDIR)/sys_signame.c \ 125 strsignal.c \ 125 126 strlcpy.c \ 126 127 shfork-win.c \ … … 145 146 #kash.man_TEMPLATE = usr.bin.man 146 147 #kash.man_SOURCES = sh.1=>kash.1 148 149 150 # 151 # The signal name list: 152 # 153 $$(kash_0_OUTDIR)/sys_signame.c: $$(bld_signames_1_TARGET) | $$(dir $$@) 154 $< $@ 155 156 BLDPROGS += bld_signames 157 bld_signames_TEMPLATE := BLD 158 bld_signames_DEFS := SHELL SMALL 159 bld_signames_SOURCES := bld_signames.c 147 160 148 161 -
trunk/src/kash/bld_signames.c
r3408 r3409 1 /*2 * Fake sys_signame.3 */4 1 5 2 #include "shinstance.h" /* for MSC */ … … 7 4 #include <stdio.h> 8 5 9 static char sys_signame_initialized = 0; 10 char sys_signame[NSIG][16]; 6 int main(int argc, char **argv) 7 { 8 char aszSigName[NSIG][16]; 9 FILE *pFile; 10 int i; 11 11 12 void init_sys_signame(void) 13 { 14 unsigned i; 15 if (sys_signame_initialized) 16 return; 17 for (i = 0; i < NSIG; ++i) 18 sprintf(sys_signame[i], "%d", i); 19 #define SET_SIG_STR(sig) strcpy(sys_signame[SIG##sig], #sig); 12 if (argc != 2 || *argv[1] == '\0') 13 { 14 fprintf(stderr, "syntax error: Expected exactly one parameter, the output-file!\n"); 15 return 2; 16 } 17 18 /* 19 * Populate the name array. 20 */ 21 strcpy(aszSigName[0], "Signal 0"); 22 for (i = 1; i < NSIG; ++i) 23 sprintf(aszSigName[i], "%i", i); 24 25 #define SET_SIG_STR(sig) strcpy(aszSigName[SIG##sig], #sig); 20 26 #ifdef SIGHUP 21 27 SET_SIG_STR(HUP); 22 28 #endif 23 29 #ifdef SIGINT 24 30 SET_SIG_STR(INT); 25 31 #endif 26 32 #ifdef SIGQUIT 27 33 SET_SIG_STR(QUIT); 28 34 #endif 29 35 #ifdef SIGILL 30 36 SET_SIG_STR(ILL); 31 37 #endif 32 38 #ifdef SIGTRAP 33 39 SET_SIG_STR(TRAP); 34 40 #endif 35 41 #ifdef SIGABRT 36 42 SET_SIG_STR(ABRT); 37 43 #endif 38 44 #ifdef SIGIOT 39 45 SET_SIG_STR(IOT); 40 46 #endif 41 47 #ifdef SIGBUS 42 48 SET_SIG_STR(BUS); 43 49 #endif 44 50 #ifdef SIGFPE 45 51 SET_SIG_STR(FPE); 46 52 #endif 47 53 #ifdef SIGKILL 48 54 SET_SIG_STR(KILL); 49 55 #endif 50 56 #ifdef SIGUSR1 51 57 SET_SIG_STR(USR1); 52 58 #endif 53 59 #ifdef SIGSEGV 54 60 SET_SIG_STR(SEGV); 55 61 #endif 56 62 #ifdef SIGUSR2 57 63 SET_SIG_STR(USR2); 58 64 #endif 59 65 #ifdef SIGPIPE 60 66 SET_SIG_STR(PIPE); 61 67 #endif 62 68 #ifdef SIGALRM 63 69 SET_SIG_STR(ALRM); 64 70 #endif 65 71 #ifdef SIGTERM 66 72 SET_SIG_STR(TERM); 67 73 #endif 68 74 #ifdef SIGSTKFLT 69 75 SET_SIG_STR(STKFLT); 70 76 #endif 71 77 #ifdef SIGCHLD 72 78 SET_SIG_STR(CHLD); 73 79 #endif 74 80 #ifdef SIGCONT 75 81 SET_SIG_STR(CONT); 76 82 #endif 77 83 #ifdef SIGSTOP 78 84 SET_SIG_STR(STOP); 79 85 #endif 80 86 #ifdef SIGTSTP 81 87 SET_SIG_STR(TSTP); 82 88 #endif 83 89 #ifdef SIGTTIN 84 90 SET_SIG_STR(TTIN); 85 91 #endif 86 92 #ifdef SIGTTOU 87 93 SET_SIG_STR(TTOU); 88 94 #endif 89 95 #ifdef SIGURG 90 96 SET_SIG_STR(URG); 91 97 #endif 92 98 #ifdef SIGXCPU 93 99 SET_SIG_STR(XCPU); 94 100 #endif 95 101 #ifdef SIGXFSZ 96 102 SET_SIG_STR(XFSZ); 97 103 #endif 98 104 #ifdef SIGVTALRM 99 105 SET_SIG_STR(VTALRM); 100 106 #endif 101 107 #ifdef SIGPROF 102 108 SET_SIG_STR(PROF); 103 109 #endif 104 110 #ifdef SIGWINCH 105 111 SET_SIG_STR(WINCH); 106 112 #endif 107 113 #ifdef SIGIO 108 114 SET_SIG_STR(IO); 109 115 #endif 110 116 #ifdef SIGPWR 111 117 SET_SIG_STR(PWR); 112 118 #endif 113 119 #ifdef SIGSYS 114 120 SET_SIG_STR(SYS); 115 121 #endif 116 122 #ifdef SIGBREAK 117 123 SET_SIG_STR(BREAK); 118 124 #endif 119 125 #undef SET_SIG_STR 120 sys_signame_initialized = 1; 126 127 /* 128 * Write out the list. 129 */ 130 pFile = fopen(argv[1], "w"); 131 if (!pFile) 132 { 133 fprintf(stderr, "error: failed to open '%s' for writing\n", argv[1]); 134 return 1; 135 } 136 fputs("/* autogenerate */\n" 137 "\n" 138 "#include \"shinstance.h\"\n" 139 "\n" 140 "const char * const sys_signame[NSIG] = \n" 141 "{\n" 142 , pFile); 143 for (i = 0; i < NSIG; i++) 144 fprintf(pFile, " \"%s\",\n", aszSigName[i]); 145 fputs("};\n", pFile); 146 147 if (fclose(pFile) != 0) 148 { 149 fprintf(stderr, "error: error writing/closing '%s' after writing it\n", argv[1]); 150 return 1; 151 } 152 return 0; 121 153 } 122 154 123 #if defined(_MSC_VER)124 const char *strsignal(int iSig)125 {126 if (!sys_signame_initialized)127 init_sys_signame();128 if (iSig < NSIG)129 return sys_signame(iSig);130 return NULL;131 }132 #endif133 -
trunk/src/kash/bltin/kill.c
r2312 r3409 52 52 #include "shinstance.h" 53 53 54 #ifndef HAVE_SYS_SIGNAME55 extern void init_sys_signame(void);56 extern char sys_signame[NSIG][16];57 #endif58 54 59 55 static int nosig(shinstance *, char *); … … 72 68 73 69 numsig = SIGTERM; 74 #ifndef HAVE_SYS_SIGNAME75 init_sys_signame();76 #endif77 70 78 71 argc--, argv++; -
trunk/src/kash/shinstance.c
r2809 r3409 43 43 # include <Windows.h> 44 44 extern pid_t shfork_do(shinstance *psh); /* shforkA-win.asm */ 45 #endif46 #if !defined(HAVE_SYS_SIGNAME) && defined(DEBUG)47 extern void init_sys_signame(void);48 45 #endif 49 46 … … 591 588 g_sig_state[signo].sa.sa_flags = psh->sigactions[signo].sh_flags & SA_RESTART; 592 589 593 #if !defined(HAVE_SYS_SIGNAME) && defined(DEBUG)594 init_sys_signame();595 #endif596 590 TRACE2((psh, "sh_sigaction: setting signo=%d:%s to {.sa_handler=%p, .sa_flags=%#x}\n", 597 591 signo, sys_signame[signo], g_sig_state[signo].sa.sa_handler, g_sig_state[signo].sa.sa_flags)); -
trunk/src/kash/shinstance.h
r3408 r3409 384 384 #endif /* _MSC_VER */ 385 385 #ifndef HAVE_SYS_SIGNAME 386 extern c har sys_signame[NSIG][16];386 extern const char * const sys_signame[NSIG]; 387 387 #endif 388 388 -
trunk/src/kash/strsignal.c
r3408 r3409 1 1 /* 2 * Fake s ys_signame.2 * Fake strsignal (for Windows/MSC). 3 3 */ 4 4 5 5 #include "shinstance.h" /* for MSC */ 6 6 #include <string.h> 7 #include <stdio.h>8 7 9 static char sys_signame_initialized = 0;10 char sys_signame[NSIG][16];11 12 void init_sys_signame(void)13 {14 unsigned i;15 if (sys_signame_initialized)16 return;17 for (i = 0; i < NSIG; ++i)18 sprintf(sys_signame[i], "%d", i);19 #define SET_SIG_STR(sig) strcpy(sys_signame[SIG##sig], #sig);20 #ifdef SIGHUP21 SET_SIG_STR(HUP);22 #endif23 #ifdef SIGINT24 SET_SIG_STR(INT);25 #endif26 #ifdef SIGQUIT27 SET_SIG_STR(QUIT);28 #endif29 #ifdef SIGILL30 SET_SIG_STR(ILL);31 #endif32 #ifdef SIGTRAP33 SET_SIG_STR(TRAP);34 #endif35 #ifdef SIGABRT36 SET_SIG_STR(ABRT);37 #endif38 #ifdef SIGIOT39 SET_SIG_STR(IOT);40 #endif41 #ifdef SIGBUS42 SET_SIG_STR(BUS);43 #endif44 #ifdef SIGFPE45 SET_SIG_STR(FPE);46 #endif47 #ifdef SIGKILL48 SET_SIG_STR(KILL);49 #endif50 #ifdef SIGUSR151 SET_SIG_STR(USR1);52 #endif53 #ifdef SIGSEGV54 SET_SIG_STR(SEGV);55 #endif56 #ifdef SIGUSR257 SET_SIG_STR(USR2);58 #endif59 #ifdef SIGPIPE60 SET_SIG_STR(PIPE);61 #endif62 #ifdef SIGALRM63 SET_SIG_STR(ALRM);64 #endif65 #ifdef SIGTERM66 SET_SIG_STR(TERM);67 #endif68 #ifdef SIGSTKFLT69 SET_SIG_STR(STKFLT);70 #endif71 #ifdef SIGCHLD72 SET_SIG_STR(CHLD);73 #endif74 #ifdef SIGCONT75 SET_SIG_STR(CONT);76 #endif77 #ifdef SIGSTOP78 SET_SIG_STR(STOP);79 #endif80 #ifdef SIGTSTP81 SET_SIG_STR(TSTP);82 #endif83 #ifdef SIGTTIN84 SET_SIG_STR(TTIN);85 #endif86 #ifdef SIGTTOU87 SET_SIG_STR(TTOU);88 #endif89 #ifdef SIGURG90 SET_SIG_STR(URG);91 #endif92 #ifdef SIGXCPU93 SET_SIG_STR(XCPU);94 #endif95 #ifdef SIGXFSZ96 SET_SIG_STR(XFSZ);97 #endif98 #ifdef SIGVTALRM99 SET_SIG_STR(VTALRM);100 #endif101 #ifdef SIGPROF102 SET_SIG_STR(PROF);103 #endif104 #ifdef SIGWINCH105 SET_SIG_STR(WINCH);106 #endif107 #ifdef SIGIO108 SET_SIG_STR(IO);109 #endif110 #ifdef SIGPWR111 SET_SIG_STR(PWR);112 #endif113 #ifdef SIGSYS114 SET_SIG_STR(SYS);115 #endif116 #ifdef SIGBREAK117 SET_SIG_STR(BREAK);118 #endif119 #undef SET_SIG_STR120 sys_signame_initialized = 1;121 }122 123 #if defined(_MSC_VER)124 8 const char *strsignal(int iSig) 125 9 { 126 if (!sys_signame_initialized)127 init_sys_signame();128 10 if (iSig < NSIG) 129 11 return sys_signame(iSig); 130 12 return NULL; 131 13 } 132 #endif133 14 -
trunk/src/kash/trap.c
r2298 r3409 59 59 #include "shinstance.h" 60 60 61 #ifndef HAVE_SYS_SIGNAME62 extern void init_sys_signame(void);63 extern char sys_signame[NSIG][16];64 #endif65 61 66 62 /* … … 103 99 p += 3; 104 100 105 #ifndef HAVE_SYS_SIGNAME106 init_sys_signame();107 #endif108 101 for (i = 0; i < NSIG; ++i) 109 102 if (strcasecmp(p, sys_signame[i]) == 0) … … 121 114 122 115 out1str(psh, "EXIT "); 123 #ifndef HAVE_SYS_SIGNAME124 init_sys_signame();125 #endif126 116 127 117 for (n = 1; n < NSIG; n++) { … … 144 134 char **ap; 145 135 int signo; 146 #ifndef HAVE_SYS_SIGNAME147 init_sys_signame();148 #endif149 136 150 137 if (argc <= 1) {
Note:
See TracChangeset
for help on using the changeset viewer.