test driver: use readfile instead of duplicating code
This commit is contained in:
parent
98caf723ec
commit
46d940e160
@ -585,56 +585,12 @@ int ConfTree::get(const std::string &name, string &value, const string &sk)
|
|||||||
|
|
||||||
#include "conftree.h"
|
#include "conftree.h"
|
||||||
#include "smallut.h"
|
#include "smallut.h"
|
||||||
|
#include "readfile.h"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
static char *thisprog;
|
static char *thisprog;
|
||||||
|
|
||||||
static void caterrno(string *reason)
|
|
||||||
{
|
|
||||||
#define ERRBUFSZ 200
|
|
||||||
char errbuf[ERRBUFSZ];
|
|
||||||
if (reason) {
|
|
||||||
#ifdef sun
|
|
||||||
// Note: sun strerror is noted mt-safe ??
|
|
||||||
*reason += string("file_to_string: open failed: ") + strerror(errno);
|
|
||||||
#else
|
|
||||||
strerror_r(errno, errbuf, ERRBUFSZ);
|
|
||||||
*reason += string("file_to_string: open failed: ") + errbuf;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
static bool file_to_string(const string &fn, string &data, string *reason)
|
|
||||||
{
|
|
||||||
bool ret = false;
|
|
||||||
int fd = open(fn.c_str(), O_RDONLY);
|
|
||||||
if (fd < 0) {
|
|
||||||
caterrno(reason);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
char buf[4096];
|
|
||||||
for (;;) {
|
|
||||||
int n = read(fd, buf, 4096);
|
|
||||||
if (n < 0) {
|
|
||||||
caterrno(reason);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
if (n == 0)
|
|
||||||
break;
|
|
||||||
try {
|
|
||||||
data.append(buf, n);
|
|
||||||
} catch (...) {
|
|
||||||
caterrno(reason);
|
|
||||||
goto out;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ret = true;
|
|
||||||
out:
|
|
||||||
if (fd >= 0)
|
|
||||||
close(fd);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool complex_updates(const string& fn)
|
bool complex_updates(const string& fn)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user