diff options
author | Johann Klähn <kljohann@gmail.com> | 2013-01-17 12:18:58 +0100 |
---|---|---|
committer | Johann Klähn <kljohann@gmail.com> | 2013-01-17 12:19:23 +0100 |
commit | 3fe2ef59566ef679d9de58e5f9454b7443d9153a (patch) | |
tree | 3690c573e3c02dad77874a3e76c32344f5eb0be6 /src | |
parent | ea249423d4ba00236c456080fade92f49d0622af (diff) | |
download | fork-ledger-3fe2ef59566ef679d9de58e5f9454b7443d9153a.tar.gz fork-ledger-3fe2ef59566ef679d9de58e5f9454b7443d9153a.tar.bz2 fork-ledger-3fe2ef59566ef679d9de58e5f9454b7443d9153a.zip |
change handling of standard input
For `-f /dev/stdin`, the `pathname` of the parsing context will be empty
as for any other streamed input.
`instance_t::include_directive` did not work as expected for `-f /dev/stdin`
and relative file names. One would expect them to be relative to the current
directory rather than `/dev`.
This will lead to `While parsing file ""` messages. This could be
adjusted to read `While parsing standard input`, but maybe it's not
worth the special cases.
This commit also fixes bug 788: behaviour of source_context for '-f -'
Diffstat (limited to 'src')
-rw-r--r-- | src/error.cc | 2 | ||||
-rw-r--r-- | src/item.cc | 4 | ||||
-rw-r--r-- | src/session.cc | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/src/error.cc b/src/error.cc index 58339db7..8aa1d3d6 100644 --- a/src/error.cc +++ b/src/error.cc @@ -84,7 +84,7 @@ string source_context(const path& file, const string& prefix) { const std::streamoff len = end_pos - pos; - if (! len || file == path("/dev/stdin")) + if (! len || file.empty()) return _("<no source context>"); assert(len > 0); diff --git a/src/item.cc b/src/item.cc index 362fac7f..4e2a487c 100644 --- a/src/item.cc +++ b/src/item.cc @@ -582,8 +582,8 @@ string item_context(const item_t& item, const string& desc) std::ostringstream out; - if (item.pos->pathname == path("/dev/stdin")) { - out << desc << _(" from standard input:"); + if (item.pos->pathname.empty()) { + out << desc << _(" from streamed input:"); return out.str(); } diff --git a/src/session.cc b/src/session.cc index b6153203..f047a540 100644 --- a/src/session.cc +++ b/src/session.cc @@ -143,7 +143,7 @@ std::size_t session_t::read_data(const string& master_account) } foreach (const path& pathname, HANDLER(file_).data_files) { - if (pathname == "-") { + if (pathname == "-" || pathname == "/dev/stdin") { // To avoid problems with stdin and pipes, etc., we read the entire // file in beforehand into a memory buffer, and then parcel it out // from there. |