aboutsummaryrefslogtreecommitdiff
path: root/libctf/ctf-error.c
diff options
context:
space:
mode:
Diffstat (limited to 'libctf/ctf-error.c')
-rw-r--r--libctf/ctf-error.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/libctf/ctf-error.c b/libctf/ctf-error.c
index 9611e36..cb46a82 100644
--- a/libctf/ctf-error.c
+++ b/libctf/ctf-error.c
@@ -24,10 +24,13 @@
/* This construct is due to Bruno Haible: much thanks. */
/* Give each structure member a unique name. The name does not matter, so we
- use the line number in ctf-error.h to uniquify them. */
+ use the enum constant to uniquify them. */
-#define ERRSTRFIELD(line) ERRSTRFIELD1 (line)
-#define ERRSTRFIELD1(line) ctf_errstr##line
+#define ERRSTRFIELD(N) ctf_errstr##N
+
+/* In this file, we want to treat the first item of the ctf error
+ macro like subsequent items. */
+#define _CTF_FIRST(NAME, VALUE) _CTF_ITEM(NAME, VALUE)
/* The error message strings, each in a unique structure member precisely big
enough for that error, plus a str member to access them all as a string
@@ -37,17 +40,17 @@ static const union _ctf_errlist_t
{
__extension__ struct
{
-#define _CTF_STR(n, s) char ERRSTRFIELD (__LINE__) [sizeof (s)];
-#include "ctf-error.h"
-#undef _CTF_STR
+#define _CTF_ITEM(n, s) char ERRSTRFIELD (n) [sizeof (s)];
+_CTF_ERRORS
+#undef _CTF_ITEM
};
char str[1];
} _ctf_errlist =
{
{
-#define _CTF_STR(n, s) N_(s),
-#include "ctf-error.h"
-#undef _CTF_STR
+#define _CTF_ITEM(n, s) N_(s),
+_CTF_ERRORS
+#undef _CTF_ITEM
}
};
@@ -55,9 +58,9 @@ static const union _ctf_errlist_t
static const unsigned int _ctf_erridx[] =
{
-#define _CTF_STR(n, s) [n - ECTF_BASE] = offsetof (union _ctf_errlist_t, ERRSTRFIELD (__LINE__)),
-#include "ctf-error.h"
-#undef _CTF_STR
+#define _CTF_ITEM(n, s) [n - ECTF_BASE] = offsetof (union _ctf_errlist_t, ERRSTRFIELD (n)),
+_CTF_ERRORS
+#undef _CTF_ITEM
};
const char *