Mercurial > hg > octave-nkf
changeset 2947:cf676ff8b702
[project @ 1997-05-09 13:32:46 by jwe]
author | jwe |
---|---|
date | Fri, 09 May 1997 13:32:52 +0000 |
parents | 6744ac301eef |
children | 56be458e237f |
files | liboctave/file-ops.cc liboctave/oct-env.cc |
diffstat | 2 files changed, 23 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/liboctave/file-ops.cc +++ b/liboctave/file-ops.cc @@ -213,7 +213,8 @@ if (beg != NPOS && name[beg] == '~') { - // If `~' or `~/', use $HOME if it exists, or `.' if it doesn't. + // If `~' or `~/', use the user's home directory. If that is + // empty, just use ".". // If `~user' or `~user/', look up user in the passwd database. @@ -237,21 +238,24 @@ size_t len = end; - if (len != NPOS) + if (end != NPOS) len -= beg + 1; string user = name.substr (beg+1, len); octave_passwd pw = octave_passwd::getpwnam (user); - // If no such user, just use `.'. + // If no such user, just return the original string. + + if (pw) + { + expansion = string (" ", beg) + pw.dir (); - string home = pw ? string (".") : pw.dir (); - - expansion = string (" ", beg) + home; - - if (end != NPOS) - expansion.append (name.substr (end)); + if (end != NPOS) + expansion.append (name.substr (end)); + } + else + expansion = name; } }
--- a/liboctave/oct-env.cc +++ b/liboctave/oct-env.cc @@ -54,6 +54,7 @@ #include "lo-utils.h" #include "oct-env.h" #include "oct-passwd.h" +#include "oct-syscalls.h" octave_env::octave_env (void) : follow_symbolic_links (true), verbatim_pwd (true), @@ -359,7 +360,14 @@ { string hd = do_getenv ("HOME"); - return hd.empty () ? string ("I have no home!") : hd; + if (hd.empty ()) + { + octave_passwd pw = octave_passwd::getpwuid (octave_syscalls::getuid ()); + + hd = pw ? pw.dir () : string ("I have no home!"); + } + + return hd; } string @@ -370,7 +378,7 @@ if (user_name.empty ()) { - octave_passwd pw = octave_passwd::getpwuid (getuid ()); + octave_passwd pw = octave_passwd::getpwuid (octave_syscalls::getuid ()); user_name = pw ? string ("I have no name!") : pw.name (); }