summaryrefslogtreecommitdiff
path: root/bin/bbackupquery/BackupQueries.cpp
diff options
context:
space:
mode:
authorChris Wilson <chris+github@qwirx.com>2012-05-26 18:13:01 +0000
committerChris Wilson <chris+github@qwirx.com>2012-05-26 18:13:01 +0000
commit4cff1ff674125dc4b543a4d2f3565403580822cc (patch)
treecec20019247f0d8ac48912714b1b67522dff0e90 /bin/bbackupquery/BackupQueries.cpp
parent11608b5b3e6b23bd5aea683a987d7cfd2827a57e (diff)
bbackupquery readline improvements, thanks to Paolo Tosco:
Automatically quote filenames including spaces on the readline input. Ignore empty commands, don't generate a parse error message. Close cleanly and quietly when EOF is input (Ctrl+D). Simplify interactive mode code in bbackupquery.
Diffstat (limited to 'bin/bbackupquery/BackupQueries.cpp')
-rw-r--r--bin/bbackupquery/BackupQueries.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/bin/bbackupquery/BackupQueries.cpp b/bin/bbackupquery/BackupQueries.cpp
index f88a0761..1ab46be1 100644
--- a/bin/bbackupquery/BackupQueries.cpp
+++ b/bin/bbackupquery/BackupQueries.cpp
@@ -359,6 +359,11 @@ static std::string GetTimeString(BackupStoreDirectory::Entry& en,
void BackupQueries::List(int64_t DirID, const std::string &rListRoot,
const bool *opts, bool FirstLevel, std::ostream &out)
{
+#ifdef WIN32
+ DWORD n_chars;
+ HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
+#endif
+
// Generate exclude flags
int16_t excludeFlags = BackupProtocolListDirectory::Flags_EXCLUDE_NOTHING;
if(!opts[LIST_OPTION_ALLOWOLD]) excludeFlags |= BackupProtocolListDirectory::Flags_OldVersion;
@@ -476,7 +481,9 @@ void BackupQueries::List(int64_t DirID, const std::string &rListRoot,
std::string listRootDecoded;
if(!ConvertUtf8ToConsole(rListRoot.c_str(),
listRootDecoded)) return;
- out << listRootDecoded << "/";
+ listRootDecoded = listRootDecoded + "/";
+ WriteConsole(hOut, listRootDecoded.c_str(),
+ strlen(listRootDecoded.c_str()), &n_chars, NULL);
#else
out << rListRoot << "/";
#endif
@@ -500,7 +507,11 @@ void BackupQueries::List(int64_t DirID, const std::string &rListRoot,
}
#endif
+#ifdef WIN32
+ WriteConsole(hOut, fileName.c_str(), strlen(fileName.c_str()), &n_chars, NULL);
+#else
out << fileName;
+#endif
if(!en->GetName().IsEncrypted())
{