now handles symlinks
This commit is contained in:
parent
f69095d7ab
commit
05eeca49c9
@ -25,31 +25,43 @@ vector<string> cellar::bottles::list() {
|
|||||||
if (item.substr(0,5) == ".wine") {
|
if (item.substr(0,5) == ".wine") {
|
||||||
sstr_output << item;
|
sstr_output << item;
|
||||||
sstr_output << " ";
|
sstr_output << " ";
|
||||||
|
|
||||||
|
string fullitem = homepath + "/" + item;
|
||||||
|
boost::filesystem::file_status fullitem_status = boost::filesystem::symlink_status(fullitem);
|
||||||
|
bool symlink = boost::filesystem::is_symlink(fullitem_status);
|
||||||
|
|
||||||
string jsonpath = homepath + "/" + item + "/cellar.json";
|
if (symlink) {
|
||||||
if (boost::filesystem::exists(jsonpath)) {
|
sstr_output << "- symlink to ";
|
||||||
try {
|
boost::filesystem::path realpath = boost::filesystem::canonical(fullitem);
|
||||||
json config;
|
sstr_output << realpath.string();
|
||||||
ifstream configstream(jsonpath);
|
result.push_back(sstr_output.str());
|
||||||
stringstream sstr_config;
|
sstr_output.str("");
|
||||||
sstr_config << configstream.rdbuf();
|
} else {
|
||||||
config = json::parse(sstr_config.str());
|
string jsonpath = fullitem + "/cellar.json";
|
||||||
|
if (boost::filesystem::exists(jsonpath)) {
|
||||||
|
try {
|
||||||
|
json config;
|
||||||
|
ifstream configstream(jsonpath);
|
||||||
|
stringstream sstr_config;
|
||||||
|
sstr_config << configstream.rdbuf();
|
||||||
|
config = json::parse(sstr_config.str());
|
||||||
|
|
||||||
sstr_output << "- " << config["name"];
|
sstr_output << "- " << config["name"];
|
||||||
result.push_back(sstr_output.str());
|
result.push_back(sstr_output.str());
|
||||||
sstr_output.str(""); // clear it for the next item
|
sstr_output.str(""); // clear it for the next item
|
||||||
}
|
}
|
||||||
catch (const exception &exc) {
|
catch (const exception &exc) {
|
||||||
sstr_output << "- bogus cellar.json file";
|
sstr_output << "- bogus cellar.json file";
|
||||||
result.push_back(sstr_output.str());
|
result.push_back(sstr_output.str());
|
||||||
sstr_output.str("");
|
sstr_output.str("");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sstr_output << "- anonymous wine bottle";
|
sstr_output << "- anonymous wine bottle";
|
||||||
result.push_back(sstr_output.str());
|
result.push_back(sstr_output.str());
|
||||||
sstr_output.str("");
|
sstr_output.str("");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user