Skip to content

Commit

Permalink
Using /dev/urandom instead of rand().
Browse files Browse the repository at this point in the history
  • Loading branch information
Fredrik Hultin committed Feb 17, 2016
1 parent 375be44 commit 82dea01
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 70 deletions.
1 change: 0 additions & 1 deletion src/files.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ Files::Files()

Files::~Files()
{
srand(time(0));
}

bool Files::fileFromStr(std::string fileName, std::string str)
Expand Down
75 changes: 36 additions & 39 deletions src/files.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,51 +26,48 @@ class FilesException : public std::runtime_error {
class Files
{
public:
// Pure virtual functions
// Pure virtual functions
virtual void genSourceFileList(std::string dir) = 0;

virtual time_t getDate(std::string file) = 0;
virtual bool fileExists(std::string file) = 0;

virtual int isDir(std::string path) = 0;

virtual bool createDir(std::string dir) = 0;
virtual bool removeDir(std::string dir) = 0;
virtual bool removeFile(const std::string& path) = 0;
virtual std::string getHomeDir() = 0;
virtual std::string getTmpDirStr() = 0;
virtual std::string getGlobalTmpDir() = 0;
virtual void wait() = 0;
virtual std::pair<std::string, std::string> pathSplit(std::string path) = 0;
virtual bool copy(std::string from, std::string to) = 0;

virtual void genSourceFileList(std::string dir) = 0;

virtual time_t getDate(std::string file) = 0;
virtual bool fileExists(std::string file) = 0;

virtual int isDir(std::string path) = 0;

virtual bool createDir(std::string dir) = 0;
virtual bool removeDir(std::string dir) = 0;
virtual bool removeFile(const std::string& path) = 0;
virtual std::string getHomeDir() = 0;
virtual std::string getTmpDirStr() = 0;
virtual std::string getGlobalTmpDir() = 0;
virtual void wait() = 0;
virtual std::pair<std::string, std::string> pathSplit(std::string path) = 0;
virtual bool copy(std::string from, std::string to) = 0;
virtual std::string dirName(std::string filename) = 0;
virtual std::string baseName(std::string filename) = 0;
virtual std::string combinePath(std::vector<std::string> p) = 0;
virtual std::string realpath(std::string filename) = 0;
virtual std::string getAbsoluteExecutablePath(std::string filename) = 0;
virtual int chdir(std::string dir) = 0;
virtual std::string genSystemTempFileName(const std::string& prefix) = 0;

// Actual functions
Files();
virtual ~Files();

virtual bool checkRecompile(std::string src, std::string obj);

virtual std::string dirName(std::string filename) = 0;
virtual std::string baseName(std::string filename) = 0;
virtual std::string combinePath(std::vector<std::string> p) = 0;
virtual std::string realpath(std::string filename) = 0;
virtual std::string getAbsoluteExecutablePath(std::string filename) = 0;
virtual int chdir(std::string dir) = 0;
virtual std::string genSystemTempFileName(const std::string& prefix) = 0;

// Actual functions
virtual void initializeTmpDir();
virtual std::string getTmpDir();
virtual bool erase(std::string fileName);

Files();
virtual ~Files();

virtual bool checkRecompile(std::string src, std::string obj);
virtual std::string strFromFile(std::string fileName);

virtual void initializeTmpDir();
virtual std::string getTmpDir();
virtual bool erase(std::string fileName);

virtual std::string strFromFile(std::string fileName);

virtual bool fileFromStr(std::string fileName, std::string str);
virtual bool fileFromStr(std::string fileName, std::string str);

private:
bool once;

bool once;
};

#endif
12 changes: 11 additions & 1 deletion src/filesunix.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,5 +253,15 @@ int FilesUnix::chdir(std::string dir)

std::string FilesUnix::genSystemTempFileName(const std::string& prefix)
{
return combinePath(Tools::makeStrVector("/tmp", Str(prefix << rand())));
int32_t rNum = 0;
std::ifstream f("/dev/urandom");

if(!f.good()){
throw FilesException("could not read from /dev/urandom");
}

f.read((char*)&rNum, 4);
f.close();

return combinePath(Tools::makeStrVector("/tmp", Str(prefix << rNum)));
}
57 changes: 28 additions & 29 deletions src/filesunix.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,37 +16,36 @@
class FilesUnix: public Files
{
public:

void genSourceFileList(std::string dir);

time_t getDate(std::string file);
bool fileExists(std::string file);

int isDir (std::string path);
bool createDir(std::string dir);
std::string getHomeDir();
std::string getTmpDirStr();
std::string getGlobalTmpDir();
bool removeDir(std::string dir);
bool copy(std::string from, std::string to);
bool removeFile(const std::string& path);

std::pair<std::string, std::string> pathSplit(std::string path);

void wait();

std::string dirName(std::string filename);
std::string baseName(std::string filename);

std::string combinePath(std::vector<std::string> p);
std::string realpath(std::string filename);
int chdir(std::string dir);

std::string getAbsoluteExecutablePath(std::string filename);
std::string genSystemTempFileName(const std::string& prefix);
void genSourceFileList(std::string dir);

time_t getDate(std::string file);
bool fileExists(std::string file);

int isDir (std::string path);
bool createDir(std::string dir);
std::string getHomeDir();
std::string getTmpDirStr();
std::string getGlobalTmpDir();
bool removeDir(std::string dir);
bool copy(std::string from, std::string to);
bool removeFile(const std::string& path);

std::pair<std::string, std::string> pathSplit(std::string path);

void wait();

std::string dirName(std::string filename);
std::string baseName(std::string filename);

std::string combinePath(std::vector<std::string> p);
std::string realpath(std::string filename);
int chdir(std::string dir);

std::string getAbsoluteExecutablePath(std::string filename);
std::string genSystemTempFileName(const std::string& prefix);

private:
bool find(std::string what, std::string where, std::string result);
bool find(std::string what, std::string where, std::string result);
};

#endif
Expand Down

0 comments on commit 82dea01

Please sign in to comment.