summaryrefslogtreecommitdiff
path: root/cli/runtime-source.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2011-01-23 14:39:19 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2011-01-23 14:39:19 +0200
commit8027e319831f02538fe431b5870d90c0267b3b78 (patch)
tree3ffb2c9f47b188cc361febffb7a24f45cec5321b /cli/runtime-source.cxx
parent0267ede2d356abdef7b3e9af19d4725605a58947 (diff)
Allow the options file search function to ignore the file
Diffstat (limited to 'cli/runtime-source.cxx')
-rw-r--r--cli/runtime-source.cxx18
1 files changed, 14 insertions, 4 deletions
diff --git a/cli/runtime-source.cxx b/cli/runtime-source.cxx
index 4c6b2a2..7f87d1f 100644
--- a/cli/runtime-source.cxx
+++ b/cli/runtime-source.cxx
@@ -264,8 +264,13 @@ generate_runtime_source (context& ctx)
<< "if (!base::more ())" << endl
<< "throw missing_value (oi->option);"
<< endl
- << "if (oi->search_func != 0)" << endl
- << "load (oi->search_func (base::next (), oi->arg));"
+ << "if (oi->search_func != 0)"
+ << "{"
+ << "std::string f (oi->search_func (base::next (), oi->arg));"
+ << endl
+ << "if (!f.empty ())" << endl
+ << "load (f);"
+ << "}"
<< "else" << endl
<< "load (base::next ());"
<< endl
@@ -420,8 +425,13 @@ generate_runtime_source (context& ctx)
<< "if (s2.empty ())" << endl
<< "throw missing_value (oi->option);"
<< endl
- << "if (oi->search_func != 0)" << endl
- << "load (oi->search_func (s2.c_str (), oi->arg));"
+ << "if (oi->search_func != 0)"
+ << "{"
+ << "std::string f (oi->search_func (s2.c_str (), oi->arg));"
+ << endl
+ << "if (!f.empty ())" << endl
+ << "load (f);"
+ << "}"
<< "else" << endl
<< "load (s2);"
<< "}"