#include "storage.hpp" #include #include #include namespace nntpchan { ArticleStorage::ArticleStorage() { } ArticleStorage::ArticleStorage(const std::string & fpath) { SetPath(fpath); } ArticleStorage::~ArticleStorage() { } void ArticleStorage::SetPath(const std::string & fpath) { basedir = fpath; // quiet fail // TODO: check for errors mkdir(basedir.c_str(), 0700); } bool ArticleStorage::Accept(const MessageID & msgid) { if (!IsValidMessageID(msgid)) return false; std::stringstream ss; ss << basedir << GetPathSep() << msgid; auto s = ss.str(); FILE * f = fopen(s.c_str(), "r"); if ( f == nullptr) return errno == ENOENT; fclose(f); return false; } char ArticleStorage::GetPathSep() { return '/'; } }