31 char *home = getenv(
"HOME");
33 curlrcFile = std::string( home ) + std::string(
"/.curlrc" );
36 curlrcFile = filename;
44 MIL <<
"Going to parse " << curlrcFile << endl;
49 WAR <<
"Not allowed to parse '" << curlrcFile
50 <<
"': dir/file owner: " << h_info.
owner() <<
"/" << c_info.
owner()
51 <<
", process uid: " << getuid()
52 <<
" (" << (!getlogin_r(buf, 31) ? buf :
"") <<
")" << std::endl;
57 std::ifstream inp(curlrcFile.
c_str());
78 const char * beg = line.c_str();
79 const char * cur = beg;
82#define ISSEP(x) (((x)=='=') || ((x) == ':') || isspace(x))
85 while (*cur && *cur ==
'-')
90 while (*cur && !
ISSEP(*cur))
93 std::string option(beg, cur - beg);
96 while (*cur &&
ISSEP(*cur))
104 std::string value(beg, cur - beg);
106 DBG <<
"GOT: " << option << endl;
111 if (value[0] ==
'\"')
114 std::string::size_type pos = value.rfind(
'\"');
116 pos == value.size() - 1 && pos > 1 && value[pos-1] !=
'\\';
117 value = value.substr(1,
118 cut_last ? value.size() - 2 : value.size() - 1);
122 while ((pos = value.find(
'\\', pos)) != std::string::npos)
125 if (pos == value.size() - 1)
127 value = value.erase(pos, 1);
134 value = value.replace(pos, 2,
"\t");
137 value = value.replace(pos, 2,
"\n");
140 value = value.replace(pos, 2,
"\r");
143 value = value.replace(pos, 2,
"\v");
146 value = value.erase(pos++, 1);
149 value = value.erase(pos, 1);