diff options
author | Chris Wilson <chris+github@qwirx.com> | 2012-05-26 18:13:01 +0000 |
---|---|---|
committer | Chris Wilson <chris+github@qwirx.com> | 2012-05-26 18:13:01 +0000 |
commit | 4cff1ff674125dc4b543a4d2f3565403580822cc (patch) | |
tree | cec20019247f0d8ac48912714b1b67522dff0e90 /bin/bbackupquery/BackupQueries.cpp | |
parent | 11608b5b3e6b23bd5aea683a987d7cfd2827a57e (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.cpp | 13 |
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()) { |