From ce352392d53fd2679ba2671349543528207a923e Mon Sep 17 00:00:00 2001
From: Thomas Winget <tewinget@gmail.com>
Date: Sun, 8 Jun 2014 18:12:38 -0400
Subject: [PATCH] DRY cin input_line (and test replacement of non-DRY usage)

---
 src/common/command_line.cpp       | 12 ++++++++++++
 src/common/command_line.h         |  3 +++
 src/simplewallet/simplewallet.cpp | 10 ++++------
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/common/command_line.cpp b/src/common/command_line.cpp
index 0b90345d9..d507f36a7 100644
--- a/src/common/command_line.cpp
+++ b/src/common/command_line.cpp
@@ -3,9 +3,21 @@
 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
 
 #include "command_line.h"
+#include "string_tools.h"
 
 namespace command_line
 {
+  std::string input_line(const std::string& prompt)
+  {
+    std::cout << prompt;
+
+    std::string buf;
+    std::getline(std::cin, buf);
+
+    return epee::string_tools::trim(buf);
+
+  }
+
   const arg_descriptor<bool> arg_help = {"help", "Produce help message"};
   const arg_descriptor<bool> arg_version = {"version", "Output version information"};
   const arg_descriptor<std::string> arg_data_dir = {"data-dir", "Specify data directory"};
diff --git a/src/common/command_line.h b/src/common/command_line.h
index 860653772..a6f78569c 100644
--- a/src/common/command_line.h
+++ b/src/common/command_line.h
@@ -14,6 +14,9 @@
 
 namespace command_line
 {
+
+  std::string input_line(const std::string& prompt);
+
   template<typename T, bool required = false>
   struct arg_descriptor;
 
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
index 55099199d..24ecb4504 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -212,12 +212,10 @@ bool simple_wallet::ask_wallet_create_if_needed()
 {
   std::string wallet_path;
 
-  std::cout << "Specify wallet file name (e.g., wallet.bin). If the wallet doesn't exist, it will be created.\n";
-  std::cout << "Wallet file name: ";
-
-  std::getline(std::cin, wallet_path);
-
-  wallet_path = string_tools::trim(wallet_path);
+  wallet_path = command_line::input_line(
+      "Specify wallet file name (e.g., wallet.bin). If the wallet doesn't exist, it will be created.\n"
+      "Wallet file name: "
+  );
 
   bool keys_file_exists;
   bool wallet_file_exists;