aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2012-04-20 16:32:06 +0400
committerIgor Pashev <pashev.igor@gmail.com>2012-04-20 16:32:06 +0400
commita54a4201e0c8e24eebc4d7a0f6d11522cdb314f7 (patch)
tree722ae2d9139a311c2b598c70fd8a63b2fb216168
parent0cb0cdcad8917bd37ac0e14396afbb8f6cf242f5 (diff)
downloadnode-augeas-a54a4201e0c8e24eebc4d7a0f6d11522cdb314f7.tar.gz
Added wrapper of aug_error() - get the error code from the last API call
-rw-r--r--libaugeas.cc37
1 files changed, 37 insertions, 0 deletions
diff --git a/libaugeas.cc b/libaugeas.cc
index 66aefdb..12208e1 100644
--- a/libaugeas.cc
+++ b/libaugeas.cc
@@ -47,6 +47,7 @@ protected:
static Handle<Value> loadFile (const Arguments& args);
static Handle<Value> saveFile (const Arguments& args);
static Handle<Value> insert (const Arguments& args);
+ static Handle<Value> error (const Arguments& args);
};
void LibAugeas::Init(Handle<Object> target)
@@ -55,6 +56,7 @@ void LibAugeas::Init(Handle<Object> target)
tpl->SetClassName(String::NewSymbol("Augeas"));
tpl->InstanceTemplate()->SetInternalFieldCount(1);
+ // flags for aug_init():
NODE_DEFINE_CONSTANT(target, AUG_NONE);
NODE_DEFINE_CONSTANT(target, AUG_SAVE_BACKUP);
NODE_DEFINE_CONSTANT(target, AUG_SAVE_NEWFILE);
@@ -66,6 +68,22 @@ void LibAugeas::Init(Handle<Object> target)
NODE_DEFINE_CONSTANT(target, AUG_ENABLE_SPAN);
NODE_DEFINE_CONSTANT(target, AUG_NO_ERR_CLOSE);
+ // error codes:
+ NODE_DEFINE_CONSTANT(target, AUG_NOERROR);
+ NODE_DEFINE_CONSTANT(target, AUG_ENOMEM);
+ NODE_DEFINE_CONSTANT(target, AUG_EINTERNAL);
+ NODE_DEFINE_CONSTANT(target, AUG_EPATHX);
+ NODE_DEFINE_CONSTANT(target, AUG_ENOMATCH);
+ NODE_DEFINE_CONSTANT(target, AUG_EMMATCH);
+ NODE_DEFINE_CONSTANT(target, AUG_ESYNTAX);
+ NODE_DEFINE_CONSTANT(target, AUG_ENOLENS);
+ NODE_DEFINE_CONSTANT(target, AUG_EMXFM);
+ NODE_DEFINE_CONSTANT(target, AUG_ENOSPAN);
+ NODE_DEFINE_CONSTANT(target, AUG_EMVDESC);
+ NODE_DEFINE_CONSTANT(target, AUG_ECMDRUN);
+ NODE_DEFINE_CONSTANT(target, AUG_EBADARG);
+
+
// I do not want copy-n-paste errors here:
#define _NEW_METHOD(m) NODE_SET_PROTOTYPE_METHOD(tpl, #m, m)
_NEW_METHOD(get);
@@ -79,6 +97,7 @@ void LibAugeas::Init(Handle<Object> target)
_NEW_METHOD(loadFile);
_NEW_METHOD(saveFile);
_NEW_METHOD(insert);
+ _NEW_METHOD(error);
//TODO:
// _NEW_METHOD(match);
@@ -328,6 +347,24 @@ Handle<Value> LibAugeas::insert(const Arguments& args)
}
}
+/*
+ * Wrapper of aug_error()
+ * Return the error code from the last API call
+ */
+Handle<Value> LibAugeas::error(const Arguments& args)
+{
+ HandleScope scope;
+
+ if (args.Length() != 0) {
+ ThrowException(Exception::TypeError(String::New("Function does not accept arguments")));
+ return scope.Close(Undefined());
+ }
+
+ LibAugeas *obj = ObjectWrap::Unwrap<LibAugeas>(args.This());
+
+ int rc = aug_error(obj->m_aug);
+ return scope.Close(Int32::New(rc));
+}
/*
* Wrapper of aug_save() - save changed files