Modified from patch provided in https://github.com/horgh/irssi-tcl/issues/8 --- a/src/tcl_core.c +++ b/src/tcl_core.c @@ -5,6 +5,7 @@ #include #include +#include #include @@ -14,6 +15,8 @@ #include "tcl_core.h" +#define IRSSI_TCL_SYSTEM_PATH "/usr/share/irssi/tcl/irssi.tcl" + static Tcl_Interp* interp; /* @@ -186,6 +189,11 @@ Tcl_DString dsPtr; Tcl_DStringInit(&dsPtr); irssi_dir_ds(&dsPtr, "/tcl/irssi.tcl"); + if (access(Tcl_DStringValue(&dsPtr), R_OK) == -1) { + // no user provided irssi.tcl, try the system one + Tcl_DStringSetLength(&dsPtr, 0); + Tcl_DStringAppend(&dsPtr, IRSSI_TCL_SYSTEM_PATH, -1); + } int result = Tcl_EvalFile(interp, Tcl_DStringValue(&dsPtr)); Tcl_DStringFree(&dsPtr); return result; --- a/tcl/irssi.tcl +++ b/tcl/irssi.tcl @@ -135,4 +135,9 @@ source $script } -load_script scripts.conf +# only source script if it exists to prevent error while running /load tcl +if {[file exists [irssi_dir]${::SCRIPT_PATH}/scripts.conf]} { + load_script scripts.conf +} else { + irssi_print "no [irssi_dir]${::SCRIPT_PATH}/scripts.conf found" +}