summaryrefslogtreecommitdiff
path: root/rb/src/IceRuby/Properties.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2006-08-01 16:28:49 +0000
committerMark Spruiell <mes@zeroc.com>2006-08-01 16:28:49 +0000
commitff5f9d7729ef657e7da32dec79161a5f4090a0ed (patch)
tree94422a50c72213a922f04b0ad594bb709b297b74 /rb/src/IceRuby/Properties.cpp
parentworkaround for VC6 bug (diff)
downloadice-ff5f9d7729ef657e7da32dec79161a5f4090a0ed.tar.bz2
ice-ff5f9d7729ef657e7da32dec79161a5f4090a0ed.tar.xz
ice-ff5f9d7729ef657e7da32dec79161a5f4090a0ed.zip
insert program name into argument vector
Diffstat (limited to 'rb/src/IceRuby/Properties.cpp')
-rw-r--r--rb/src/IceRuby/Properties.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/rb/src/IceRuby/Properties.cpp b/rb/src/IceRuby/Properties.cpp
index c4168d94b47..1ffa5e8821d 100644
--- a/rb/src/IceRuby/Properties.cpp
+++ b/rb/src/IceRuby/Properties.cpp
@@ -47,6 +47,13 @@ IceRuby_createProperties(int argc, VALUE* argv, VALUE self)
defaults = getProperties(argv[1]);
}
+ //
+ // Insert the program name (stored in the Ruby global variable $0) as the first
+ // element of the sequence.
+ //
+ VALUE progName = callRuby(rb_gv_get, "$0");
+ seq.insert(seq.begin(), getString(progName));
+
Ice::PropertiesPtr obj = Ice::createProperties(seq, defaults);
//
@@ -56,9 +63,12 @@ IceRuby_createProperties(int argc, VALUE* argv, VALUE self)
{
callRuby(rb_ary_clear, argv[0]);
- for(Ice::StringSeq::iterator p = seq.begin(); p != seq.end(); ++p)
+ //
+ // We start at index 1 in order to skip the element that we inserted earlier.
+ //
+ for(Ice::StringSeq::size_type i = 1; i < seq.size(); ++i)
{
- VALUE str = createString(*p);
+ VALUE str = createString(seq[i]);
callRuby(rb_ary_push, argv[0], str);
}
}