mirror of
https://github.com/google/cdc-file-transfer.git
synced 2026-09-12 16:52:51 +03:00
1200b34316
Adds a function to filter ANSI escape sequences from a string. Executing SSH commands on Windows yields output that is full of ANSI escape sequences if the "-tt" (forced TTY) argument is used. One particular escape sequence sets the window title to "c:\windows\system32\cmd.exe". This string is null terminated and messes with parsing the actual output later in that string. The filter function removes those escape sequences. The outout is still a bit messed up, even after removing escape sequences. Some sequences delete rows and move the cursor. Without properly interpreting these sequences it doesn't seem possible to retrieve the proper output. In a future CL the -tt argument is removed on Windows, which removes the necessity to filter ANSI codes. However, sometimes the target architecture is not known (yet), so that it is still useful to filter ANSI codes in that case to print useful debug output.
38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
/*
|
|
* Copyright 2023 Google LLC
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#ifndef COMMON_ANSI_FILTER_H_
|
|
#define COMMON_ANSI_FILTER_H_
|
|
|
|
#include <string>
|
|
|
|
namespace cdc_ft {
|
|
namespace ansi_filter {
|
|
|
|
// Removes ANSI escape sequences from a string.
|
|
// |input| is a string that can contain ANSI escape sequences.
|
|
// Returns the filtered string with ANSI escape sequences removed.
|
|
// Example: The most common escape sequence sets a color, e.g.
|
|
// "This \x1b[1;32merror\x1b[0m is red."
|
|
// The filtered output is
|
|
// "This error is red."
|
|
std::string RemoveEscapeSequences(const std::string& input);
|
|
|
|
} // namespace ansi_filter
|
|
} // namespace cdc_ft
|
|
|
|
#endif // COMMON_ANSI_FILTER_H_
|