# HG changeset patch # User jwe # Date 753341278 0 # Node ID 8379f38f80c3d2b77dff610c41471291fcf6a636 # Parent 82c050e70f7a6ce1826369719134c4857522cdcd [project @ 1993-11-15 05:27:58 by jwe] diff -r 82c050e70f7a -r 8379f38f80c3 src/utils.cc --- a/src/utils.cc Sun Nov 14 11:01:14 1993 +0000 +++ b/src/utils.cc Mon Nov 15 05:27:58 1993 +0000 @@ -407,6 +407,7 @@ char *oh = octave_home (); char *tmp = strconcat (oh, "/lib/octave/"); ol = strconcat (tmp, version_string); + delete [] tmp; return ol; } @@ -420,19 +421,52 @@ return oi; } +/* + * Handle OCTAVE_PATH from the environment like TeX handles TEXINPUTS. + * If the path starts with `:', prepend the standard path. If it ends + * with `:' append the standard path. If it begins and ends with + * `:', do both (which is useless, but the luser asked for it...). + * + * This function may eventually be called more than once, so be + * careful not to create memory leaks. + */ char * default_path (void) { static char *pathstring = (char *) NULL; delete [] pathstring; + + static char *std_path = (char *) NULL; + delete [] std_path; + + char *libdir = octave_lib_dir (); + + std_path = strconcat (".:", libdir); + char *oct_path = getenv ("OCTAVE_PATH"); + if (oct_path != (char *) NULL) - pathstring = strsave (oct_path); + { + pathstring = strsave (oct_path); + + if (pathstring[0] == ':') + { + char *tmp = pathstring; + pathstring = strconcat (std_path, pathstring); + delete [] tmp; + } + + int tmp_len = strlen (pathstring); + if (pathstring[tmp_len-1] == ':') + { + char *tmp = pathstring; + pathstring = strconcat (pathstring, std_path); + delete [] tmp; + } + } else - { - char *libdir = octave_lib_dir (); - pathstring = strconcat (".:", libdir); - } + pathstring = strsave (std_path); + return pathstring; }