diff options
| author | Carl Hetherington <cth@carlh.net> | 2016-02-11 11:46:13 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2016-02-11 11:46:13 +0000 |
| commit | 8fd43fface7757bd0d7228ff0490a8c8ad074175 (patch) | |
| tree | 420c5f191afe48cfe1c5094838002e84739aea91 /src/util.cc | |
| parent | 4e4e5f750fea7bb011c5c12181a55b90b3202cb7 (diff) | |
Extract get_line_{file,stringstream} into standalone methods.
Diffstat (limited to 'src/util.cc')
| -rw-r--r-- | src/util.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/util.cc b/src/util.cc index 5f4cd39..5510d8e 100644 --- a/src/util.cc +++ b/src/util.cc @@ -18,8 +18,14 @@ */ #include "util.h" +#include <string> +#include <sstream> +#include <cstdio> using std::string; +using std::stringstream; +using std::getline; +using boost::optional; /** @param s A string. * @return true if the string contains only space, newline or tab characters, or is empty. @@ -35,3 +41,27 @@ sub::empty_or_white_space (string s) return true; } + +optional<string> +sub::get_line_stringstream (stringstream* str) +{ + string s; + getline (*str, s); + if (!str->good ()) { + return optional<string> (); + } + + return s; +} + +optional<string> +sub::get_line_file (FILE* f) +{ + char buffer[256]; + char* r = fgets (buffer, sizeof (buffer), f); + if (r == 0 || feof (f)) { + return optional<string> (); + } + + return string (buffer); +} |
