00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __WVPUSHDIR_H
00009 #define __WVPUSHDIR_H
00010
00011 #include "wverror.h"
00012
00013 #include <sys/types.h>
00014 #include <dirent.h>
00015 #include <errno.h>
00016
00017 #include <unistd.h>
00018
00019 class WvPushDir : public WvError
00020 {
00021 DIR *dir_handle;
00022 char *old_dir;
00023
00024 public:
00025 void* operator new(size_t)
00026 { abort(); }
00027
00028 WvPushDir(WvStringParm new_dir)
00029 {
00030 old_dir = get_current_dir_name();
00031 dir_handle = opendir(old_dir);
00032
00033 if (chdir(new_dir) == -1)
00034 errnum = errno;
00035 }
00036
00037 ~WvPushDir()
00038 {
00039 chdir(old_dir);
00040 closedir(dir_handle);
00041 free(old_dir);
00042 }
00043 };
00044
00045 #endif