Files
pip/pidir.cpp
2011-03-01 06:07:16 +03:00

77 lines
1.2 KiB
C++

#include "pidir.h"
PIDir::PIDir(const PIString & dir) {
path_ = dir.stdString();
dir_ = 0;
open();
}
bool PIDir::operator==(const PIDir & d) const {
return true;
}
bool PIDir::open() {
if (dir_ != 0)
if (!close())
return false;
dir_ = opendir(path_.c_str());
return (dir_ != 0);
}
bool PIDir::close() {
if (dir_ == 0) return true;
if (closedir(dir_) == 0) {
dir_ = 0;
return true;
}
return false;
}
PIString PIDir::absolutePath() {
//di;
return PIString();
}
PIDir PIDir::current() {
char rc[1024];
if (getcwd(rc, 1024) == 0) return PIString();
return PIDir(rc);
}
PIDir PIDir::home() {
return PIDir(getenv("HOME"));
}
PIDir PIDir::temporary() {
char * rc;
rc = tmpnam(0);
PIString s(rc);
return PIDir(s.left(s.findLast(PIDir::separator)));
}
bool PIDir::mkDir(const PIString & path) {
string s = path.stdString();
int ret = mkdir(s.c_str(), 16877);
if (ret == 0) return true;
printf("[PIDir] mkDir(\"%s\") error: %s\n", s.c_str(), strerror(errno));
return false;
}
bool PIDir::rmDir(const PIString & path) {
string s = path.stdString();
int ret = rmdir(s.c_str());
if (ret == 0) return true;
printf("[PIDir] rmDir(\"%s\") error: %s\n", s.c_str(), strerror(errno));
return false;
}