Mercurial > hg > octave-lyh
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 } |