summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohann Klähn <kljohann@gmail.com>2013-01-17 12:18:58 +0100
committerJohann Klähn <kljohann@gmail.com>2013-01-17 12:19:23 +0100
commit3fe2ef59566ef679d9de58e5f9454b7443d9153a (patch)
tree3690c573e3c02dad77874a3e76c32344f5eb0be6 /src
parentea249423d4ba00236c456080fade92f49d0622af (diff)
downloadfork-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.cc2
-rw-r--r--src/item.cc4
-rw-r--r--src/session.cc2
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.