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") {
|
||||
sstr_output << item;
|
||||
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 (boost::filesystem::exists(jsonpath)) {
|
||||
try {
|
||||
json config;
|
||||
ifstream configstream(jsonpath);
|
||||
stringstream sstr_config;
|
||||
sstr_config << configstream.rdbuf();
|
||||
config = json::parse(sstr_config.str());
|
||||
if (symlink) {
|
||||
sstr_output << "- symlink to ";
|
||||
boost::filesystem::path realpath = boost::filesystem::canonical(fullitem);
|
||||
sstr_output << realpath.string();
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str("");
|
||||
} else {
|
||||
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"];
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str(""); // clear it for the next item
|
||||
}
|
||||
catch (const exception &exc) {
|
||||
sstr_output << "- bogus cellar.json file";
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str("");
|
||||
}
|
||||
}
|
||||
else {
|
||||
sstr_output << "- anonymous wine bottle";
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str("");
|
||||
}
|
||||
sstr_output << "- " << config["name"];
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str(""); // clear it for the next item
|
||||
}
|
||||
catch (const exception &exc) {
|
||||
sstr_output << "- bogus cellar.json file";
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str("");
|
||||
}
|
||||
}
|
||||
else {
|
||||
sstr_output << "- anonymous wine bottle";
|
||||
result.push_back(sstr_output.str());
|
||||
sstr_output.str("");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user