75 строки
1.9 KiB
Plaintext
75 строки
1.9 KiB
Plaintext
% -*- slang -*-
|
|
|
|
% This file gets loaded whenever slsh runs. Its primary purpose is to define
|
|
% some functions that are useful in scripts, and to set up some local paths
|
|
|
|
private define dir_exists (dir)
|
|
{
|
|
if (dir == NULL) return 0;
|
|
variable s = stat_file (dir);
|
|
if (s == NULL) return 0;
|
|
return stat_is ("dir", s.st_mode);
|
|
}
|
|
|
|
private define check_dirs (dirs)
|
|
{
|
|
if (dirs == NULL)
|
|
return NULL;
|
|
|
|
variable new_dirs = String_Type[0];
|
|
foreach (strchop (dirs, path_get_delimiter(), 0))
|
|
{
|
|
variable dir = ();
|
|
if (dir_exists (dir))
|
|
new_dirs = [new_dirs, dir];
|
|
}
|
|
if (length (new_dirs) == 0)
|
|
return NULL;
|
|
return strjoin (new_dirs, char (path_get_delimiter()));
|
|
}
|
|
|
|
%!%+
|
|
%\function{prepend_to_slang_load_path}
|
|
%\synopsis{Prepend a directory to the load-path}
|
|
%\usage{prepend_to_slang_load_path (String_Type dir)}
|
|
%\description
|
|
% This function adds a directory to the beginning of the interpreter's
|
|
% load-path.
|
|
%\seealso{append_to_slang_load_path, set_slang_load_path}
|
|
%!%-
|
|
public define prepend_to_slang_load_path (p)
|
|
{
|
|
p = check_dirs (p);
|
|
if (p != NULL)
|
|
set_slang_load_path (sprintf ("%s%c%s", p, path_get_delimiter (), get_slang_load_path ()));
|
|
}
|
|
|
|
%!%+
|
|
%\function{append_to_slang_load_path}
|
|
%\synopsis{Append a directory to the load-path}
|
|
%\usage{append_to_slang_load_path (String_Type dir)}
|
|
%\description
|
|
% This function adds a directory to the end of the interpreter's
|
|
% load-path.
|
|
%\seealso{prepend_to_slang_load_path, set_slang_load_path}
|
|
%!%-
|
|
public define append_to_slang_load_path (p)
|
|
{
|
|
p = check_dirs (p);
|
|
if (p != NULL)
|
|
set_slang_load_path (sprintf ("%s%c%s", get_slang_load_path (), path_get_delimiter (), p));
|
|
}
|
|
|
|
% This function gets called from slsh after loading this file
|
|
public define __slsh_startup_hook ()
|
|
{
|
|
() = evalfile ("autoload.sl");
|
|
#ifdef __INTERACTIVE__
|
|
() = evalfile ("slshrl.sl");
|
|
#endif
|
|
}
|
|
prepend_to_slang_load_path (getenv (SLSH_PATH_ENV));
|
|
|
|
% Add local additions here
|
|
|