comparison liboctave/file-ops.cc @ 2947:cf676ff8b702

[project @ 1997-05-09 13:32:46 by jwe]
author jwe
date Fri, 09 May 1997 13:32:52 +0000
parents 9d26524e2869
children 443851377f3f
comparison
equal deleted inserted replaced
2946:6744ac301eef 2947:cf676ff8b702
211 211
212 size_t beg = name.find_first_not_of (" \t"); 212 size_t beg = name.find_first_not_of (" \t");
213 213
214 if (beg != NPOS && name[beg] == '~') 214 if (beg != NPOS && name[beg] == '~')
215 { 215 {
216 // If `~' or `~/', use $HOME if it exists, or `.' if it doesn't. 216 // If `~' or `~/', use the user's home directory. If that is
217 // empty, just use ".".
217 218
218 // If `~user' or `~user/', look up user in the passwd database. 219 // If `~user' or `~user/', look up user in the passwd database.
219 220
220 size_t len = name.length (); 221 size_t len = name.length ();
221 222
235 { 236 {
236 size_t end = name.find (DIR_SEP_CHAR, beg); 237 size_t end = name.find (DIR_SEP_CHAR, beg);
237 238
238 size_t len = end; 239 size_t len = end;
239 240
240 if (len != NPOS) 241 if (end != NPOS)
241 len -= beg + 1; 242 len -= beg + 1;
242 243
243 string user = name.substr (beg+1, len); 244 string user = name.substr (beg+1, len);
244 245
245 octave_passwd pw = octave_passwd::getpwnam (user); 246 octave_passwd pw = octave_passwd::getpwnam (user);
246 247
247 // If no such user, just use `.'. 248 // If no such user, just return the original string.
248 249
249 string home = pw ? string (".") : pw.dir (); 250 if (pw)
250 251 {
251 expansion = string (" ", beg) + home; 252 expansion = string (" ", beg) + pw.dir ();
252 253
253 if (end != NPOS) 254 if (end != NPOS)
254 expansion.append (name.substr (end)); 255 expansion.append (name.substr (end));
256 }
257 else
258 expansion = name;
255 } 259 }
256 } 260 }
257 261
258 return expansion; 262 return expansion;
259 } 263 }