Index: base/command_line.h |
diff --git a/base/command_line.h b/base/command_line.h |
index 84bca28b93c0099e42fa677630ebc4c2ba325663..1829e63e1b5b8e5b87b04af6ecd67a6bd414bebc 100644 |
--- a/base/command_line.h |
+++ b/base/command_line.h |
@@ -98,12 +98,41 @@ class BASE_EXPORT CommandLine { |
// Constructs and returns the represented command line string. |
// CAUTION! This should be avoided on POSIX because quoting behavior is |
// unclear. |
- StringType GetCommandLineString() const; |
+ StringType GetCommandLineString() const { |
+ return GetCommandLineStringInternal(false); |
+ } |
+ |
+#if defined(OS_WIN) |
+ // Constructs and returns the represented command line string. Assumes the |
+ // command line contains placeholders (eg, %1) and quotes any program or |
+ // argument with a '%' in it. This should be avoided unless the placeholder is |
+ // required by an external interface (eg, the Windows registry), because it is |
+ // not generally safe to replace it with an arbitrary string. If possible, |
+ // placeholders should be replaced *before* converting the command line to a |
+ // string. |
+ StringType GetCommandLineStringWithPlaceholders() const { |
+ return GetCommandLineStringInternal(true); |
+ } |
+#endif |
// Constructs and returns the represented arguments string. |
// CAUTION! This should be avoided on POSIX because quoting behavior is |
// unclear. |
- StringType GetArgumentsString() const; |
+ StringType GetArgumentsString() const { |
+ return GetArgumentsStringInternal(false); |
+ } |
+ |
+#if defined(OS_WIN) |
+ // Constructs and returns the represented arguments string. Assumes the |
+ // command line contains placeholders (eg, %1) and quotes any argument with a |
+ // '%' in it. This should be avoided unless the placeholder is required by an |
+ // external interface (eg, the Windows registry), because it is not generally |
+ // safe to replace it with an arbitrary string. If possible, placeholders |
+ // should be replaced *before* converting the arguments to a string. |
+ StringType GetArgumentsStringWithPlaceholders() const { |
+ return GetArgumentsStringInternal(true); |
+ } |
+#endif |
// Returns the original command line string as a vector of strings. |
const StringVector& argv() const { return argv_; } |
@@ -174,6 +203,14 @@ class BASE_EXPORT CommandLine { |
// CommandLine cl(*CommandLine::ForCurrentProcess()); |
// cl.AppendSwitch(...); |
+ // Internal version of GetCommandLineString. If |quote_placeholders| is true, |
+ // also quotes parts with '%' in them. |
+ StringType GetCommandLineStringInternal(bool quote_placeholders) const; |
+ |
+ // Internal version of GetArgumentsString. If |quote_placeholders| is true, |
+ // also quotes parts with '%' in them. |
+ StringType GetArgumentsStringInternal(bool quote_placeholders) const; |
+ |
// The singleton CommandLine representing the current process's command line. |
static CommandLine* current_process_commandline_; |