Mark ocaml_augeas_source w/o aug_source as noreturn
authorPino Toscano <ptoscano@redhat.com>
Mon, 9 Oct 2017 10:52:57 +0000 (12:52 +0200)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 9 Oct 2017 15:08:26 +0000 (16:08 +0100)
If aug_source is not available, the implementation of
ocaml_augeas_source just raises Failure: the caml_failwith function used
for that is marked as noreturn, and thus with more strict compiler flags
it can fail to build.

As solution, mark it as noreturn when aug_source is not available.

augeas-c.c

index 64fe99b..09d3add 100644 (file)
 #include <caml/callback.h>
 #include <caml/custom.h>
 
+#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);
@@ -41,7 +47,11 @@ 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);
+extern CAMLprim value ocaml_augeas_source (value tv, value pathv)
+#ifndef HAVE_AUG_SOURCE
+  NORETURN
+#endif
+;
 
 typedef augeas *augeas_t;