X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=augeas-c.c;h=09d3adddad9352ac68b1f6cc1e38c1091c96fdcc;hb=f9f15d554a605c25877dbc9cafd11e9fe811ca5e;hp=da11acc13a85a4e2eab38bde31d141a522542e4f;hpb=8bd979970a6a836463d7d80c79011813bbd5637e;p=ocaml-augeas.git diff --git a/augeas-c.c b/augeas-c.c index da11acc..09d3add 100644 --- a/augeas-c.c +++ b/augeas-c.c @@ -29,6 +29,30 @@ #include #include +#ifdef __GNUC__ + #define NORETURN __attribute__ ((noreturn)) +#else + #define NORETURN +#endif + +extern CAMLprim value ocaml_augeas_create (value rootv, value loadpathv, value flagsv); +extern CAMLprim value ocaml_augeas_close (value tv); +extern CAMLprim value ocaml_augeas_get (value tv, value pathv); +extern CAMLprim value ocaml_augeas_exists (value tv, value pathv); +extern CAMLprim value ocaml_augeas_insert (value tv, value beforev, value pathv, value labelv); +extern CAMLprim value ocaml_augeas_rm (value tv, value pathv); +extern CAMLprim value ocaml_augeas_match (value tv, value pathv); +extern CAMLprim value ocaml_augeas_count_matches (value tv, value pathv); +extern CAMLprim value ocaml_augeas_save (value tv); +extern CAMLprim value ocaml_augeas_load (value tv); +extern CAMLprim value ocaml_augeas_set (value tv, value pathv, value valuev); +extern CAMLprim value ocaml_augeas_transform (value tv, value lensv, value filev, value modev); +extern CAMLprim value ocaml_augeas_source (value tv, value pathv) +#ifndef HAVE_AUG_SOURCE + NORETURN +#endif +; + typedef augeas *augeas_t; /* Map C aug_errcode_t to OCaml error_code. */ @@ -127,7 +151,8 @@ static struct custom_operations custom_operations = { custom_compare_default, custom_hash_default, custom_serialize_default, - custom_deserialize_default + custom_deserialize_default, + custom_compare_ext_default, }; static value Val_augeas_t (augeas_t t) @@ -390,6 +415,7 @@ ocaml_augeas_transform (value tv, value lensv, value filev, value modev) CAMLprim value ocaml_augeas_source (value tv, value pathv) { +#ifdef HAVE_AUG_SOURCE CAMLparam2 (tv, pathv); CAMLlocal2 (optv, v); augeas_t t = Augeas_t_val (tv); @@ -411,4 +437,7 @@ ocaml_augeas_source (value tv, value pathv) raise_error (t, "Augeas.source"); CAMLreturn (optv); +#else + caml_failwith ("Augeas.source: function not implemented"); +#endif }