static void cmd_script_load(const char *data) { PERL_SCRIPT_REC *script; char *fname, *path; void *free_arg; if (!cmd_get_params(data, &free_arg, 1, &path)) return; if (*path == '\0') cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); fname = perl_script_get_path(path); if (fname == NULL) { printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SCRIPT_NOT_FOUND, data); } else { script = perl_script_load_file(fname); if (script != NULL) { printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_SCRIPT_LOADED, script->name, script->path); } g_free(fname); } cmd_params_free(free_arg); }
static void perl_scripts_autorun(void) { DIR *dirp; struct dirent *dp; struct stat statbuf; char *path, *fname; /* run *.pl scripts from ~/.irssi/scripts/autorun/ */ path = g_strdup_printf("%s/scripts/autorun", get_irssi_dir()); dirp = opendir(path); if (dirp == NULL) { g_free(path); return; } while ((dp = readdir(dirp)) != NULL) { if (!IS_PERL_SCRIPT(dp->d_name)) continue; fname = g_strdup_printf("%s/%s", path, dp->d_name); if (stat(fname, &statbuf) == 0 && !S_ISDIR(statbuf.st_mode)) perl_script_load_file(fname); g_free(fname); } closedir(dirp); g_free(path); }