aboutsummaryrefslogtreecommitdiffhomepage
path: root/bindings/ruby
diff options
context:
space:
mode:
authorGravatar Ali Polatel <alip@exherbo.org>2010-05-26 19:10:40 +0300
committerGravatar Ali Polatel <alip@exherbo.org>2010-06-06 09:17:57 +0300
commitd2a457a5d8238c54445a8a6066f79c112ebd3a04 (patch)
treed897de62144afc4eec2919a445661dfe2adb4bc6 /bindings/ruby
parentc7893408bbe6904ae7da97aa203587af4ec2fac7 (diff)
ruby: Use rb_scan_args()
Diffstat (limited to 'bindings/ruby')
-rw-r--r--bindings/ruby/database.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/bindings/ruby/database.c b/bindings/ruby/database.c
index e767819b..6824efdc 100644
--- a/bindings/ruby/database.c
+++ b/bindings/ruby/database.c
@@ -33,6 +33,7 @@ notmuch_rb_database_new(int argc, VALUE *argv, VALUE klass)
const char *path;
int create, mode;
notmuch_database_t *db;
+ VALUE pathv, hashv;
VALUE modev;
#if !defined(RSTRING_PTR)
@@ -40,16 +41,15 @@ notmuch_rb_database_new(int argc, VALUE *argv, VALUE klass)
#endif /* !defined(RSTRING_PTR) */
/* Check arguments */
- if (argc < 1 || argc > 2)
- rb_raise(rb_eTypeError, "Wrong number of arguments");
+ rb_scan_args(argc, argv, "11", &pathv, &hashv);
- SafeStringValue(argv[0]);
- path = RSTRING_PTR(argv[0]);
+ SafeStringValue(pathv);
+ path = RSTRING_PTR(pathv);
- if (argc == 2) {
- Check_Type(argv[1], T_HASH);
- create = RTEST(rb_hash_aref(argv[1], ID2SYM(ID_db_create)));
- modev = rb_hash_aref(argv[1], ID2SYM(ID_db_mode));
+ if (!NIL_P(hashv)) {
+ Check_Type(hashv, T_HASH);
+ create = RTEST(rb_hash_aref(hashv, ID2SYM(ID_db_create)));
+ modev = rb_hash_aref(hashv, ID2SYM(ID_db_mode));
if (NIL_P(modev))
mode = NOTMUCH_DATABASE_MODE_READ_ONLY;
else if (!FIXNUM_P(modev))
@@ -72,7 +72,7 @@ notmuch_rb_database_new(int argc, VALUE *argv, VALUE klass)
db = create ? notmuch_database_create(path) : notmuch_database_open(path, mode);
if (!db)
- rb_raise(notmuch_rb_eDatabaseError, "failed to open database");
+ rb_raise(notmuch_rb_eDatabaseError, "Failed to open database");
return Data_Wrap_Struct(klass, NULL, NULL, db);
}