-rw-r--r-- | lib/sitecing_util.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/sitecing_util.cc b/lib/sitecing_util.cc index 9b6c54e..5466b28 100644 --- a/lib/sitecing_util.cc +++ b/lib/sitecing_util.cc | |||
@@ -251,25 +251,26 @@ namespace sitecing { | |||
251 | return "/"; | 251 | return "/"; |
252 | }else{ | 252 | }else{ |
253 | rv.erase(lsl+1); | 253 | rv.erase(lsl+1); |
254 | return rv; | 254 | return rv; |
255 | } | 255 | } |
256 | } | 256 | } |
257 | rv += '/'; | 257 | rv += '/'; |
258 | rv += r; | 258 | rv += r; |
259 | return rv; | 259 | return rv; |
260 | } | 260 | } |
261 | 261 | ||
262 | void auto_chdir::pushdir(const string& td,bool ap) { | 262 | void auto_chdir::pushdir(const string& td,bool ap) { |
263 | char *tmp = get_current_dir_name(); | 263 | /* TODO: make use of fchdir(2) instead */ |
264 | char *tmp = getcwd(0,0); | ||
264 | assert(tmp); | 265 | assert(tmp); |
265 | saved_pwd = tmp; | 266 | saved_pwd = tmp; |
266 | free(tmp); | 267 | free(tmp); |
267 | autopop=ap; | 268 | autopop=ap; |
268 | if(chdir(td.c_str())) | 269 | if(chdir(td.c_str())) |
269 | throw konforka::exception(CODEPOINT,"failed to chdir()"); | 270 | throw konforka::exception(CODEPOINT,"failed to chdir()"); |
270 | } | 271 | } |
271 | void auto_chdir::popdir() { | 272 | void auto_chdir::popdir() { |
272 | autopop=false; | 273 | autopop=false; |
273 | if(chdir(saved_pwd.c_str())) | 274 | if(chdir(saved_pwd.c_str())) |
274 | throw konforka::exception(CODEPOINT,"failed to chdir()"); | 275 | throw konforka::exception(CODEPOINT,"failed to chdir()"); |
275 | // XXX: or should it be thrown? after all we call it from destructor... | 276 | // XXX: or should it be thrown? after all we call it from destructor... |