static int add_sigwinch_handlers (void) { #ifdef SIGWINCH (void) SLang_add_interrupt_hook (screen_size_changed_hook, NULL); (void) SLsignal_intr (SIGWINCH, sig_winch_handler); #endif return 0; }
int SLang_init_slang (void) /*{{{*/ { char name[3]; unsigned int i; SLFUTURE_CONST char **s; static SLFUTURE_CONST char *sys_defines [] = { #if defined(__os2__) "OS2", #endif #if defined(__MSDOS__) "MSDOS", #endif #if defined(__WIN16__) "WIN16", #endif #if defined (__WIN32__) "WIN32", #endif #if defined(__NT__) "NT", #endif #if defined (VMS) "VMS", #endif #ifdef REAL_UNIX_SYSTEM "UNIX", #endif #if SLANG_HAS_FLOAT "SLANG_DOUBLE_TYPE", #endif NULL }; if (-1 == _pSLerr_init ()) return -1; if (-1 == _pSLregister_types ()) return -1; if ((-1 == SLadd_intrin_fun_table(SLang_Basic_Table, NULL)) || (-1 == SLadd_intrin_var_table (Intrin_Vars, NULL)) || (-1 == _pSLang_init_slstrops ()) || (-1 == _pSLang_init_sltime ()) || (-1 == _pSLang_init_sllist ()) || (-1 == _pSLstruct_init ()) #if SLANG_HAS_ASSOC_ARRAYS || (-1 == SLang_init_slassoc ()) #endif #if SLANG_HAS_BOSEOS || (-1 == _pSLang_init_boseos ()) #endif || (-1 == _pSLang_init_exceptions ()) ) return -1; /* More nonsense for the windoze loader */ if ((-1 == SLadd_intrinsic_variable ("_NARGS", &SLang_Num_Function_Args, SLANG_INT_TYPE, 1)) || (-1 == SLadd_intrinsic_variable ("_traceback", &SLang_Traceback, SLANG_INT_TYPE, 0)) || (-1 == SLadd_intrinsic_variable ("_slang_version", &SLang_Version, SLANG_INT_TYPE, 1)) || (-1 == SLadd_intrinsic_variable ("_slang_version_string", &SLang_Version_String, SLANG_STRING_TYPE, 1)) || (-1 == SLadd_intrinsic_variable ("_slang_doc_dir", &SLang_Doc_Dir, SLANG_STRING_TYPE, 1))) return -1; SLadd_global_variable (SLANG_SYSTEM_NAME); s = sys_defines; while (*s != NULL) { if (-1 == SLdefine_for_ifdef (*s)) return -1; s++; } /* give temp global variables $0 --> $9 */ name[2] = 0; name[0] = '$'; for (i = 0; i < 10; i++) { name[1] = (char) (i + '0'); SLadd_global_variable (name); } SLang_init_case_tables (); /* Now add a couple of macros */ SLang_load_string (".(_NARGS 1 - Sprintf error)verror"); SLang_load_string (".(_NARGS 1 - Sprintf message)vmessage"); #if SLANG_HAS_SIGNALS if (-1 == SLang_add_interrupt_hook (_pSLang_check_signals_hook, NULL)) return -1; #endif if ((SLang_Doc_Dir != NULL) && (*SLang_Doc_Dir != 0)) { char *docfile = SLpath_dircat (SLang_Doc_Dir, "slangfun.txt"); /* NULL ok */ (void) add_doc_file (docfile); SLfree (docfile); } if (_pSLang_Error) return -1; return 0; }
static void init_sigtstp (void) { (void) SLang_add_interrupt_hook (sigtstp_interrupt_hook, NULL); last_sig_sigtstp = SLsignal (SIGTSTP, sig_sigtstp); }