X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/c932d6135ca3e508f7136810b9b0bf79725290b9..6cf3716c3166d6d41cdbeea45d018b1760184421:/src/system.h diff --git a/src/system.h b/src/system.h index 52b597b1..0d69e93e 100644 --- a/src/system.h +++ b/src/system.h @@ -39,6 +39,18 @@ #include #include +#define STREQ(L, R) (strcmp(L, R) == 0) +#define STRNEQ(L, R) (!STREQ(L, R)) + +/* Just like strncmp, but the second argument must be a literal string + and you don't specify the length. */ +#define STRNCMP_LIT(S, Literal) \ + strncmp (S, "" Literal "", sizeof (Literal) - 1) + +/* Whether Literal is a prefix of S. */ +#define STRPREFIX_LIT(Literal, S) \ + (STRNCMP_LIT (S, Literal) == 0) + #if HAVE_SYS_TYPES_H # include #endif @@ -52,6 +64,8 @@ typedef size_t uintptr_t; #endif +// Version mismatch. +#define EX_MISMATCH 63 /*---------. | Gnulib. | @@ -83,7 +97,7 @@ typedef size_t uintptr_t; #ifndef __attribute__ /* This feature is available in gcc versions 2.5 and later. */ # if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__) + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) # define __attribute__(Spec) /* empty */ # endif #endif @@ -161,32 +175,32 @@ typedef size_t uintptr_t; #define obstack_sgrow(Obs, Str) \ obstack_grow (Obs, Str, strlen (Str)) -#define obstack_fgrow1(Obs, Format, Arg1) \ -do { \ - char buf[4096]; \ - sprintf (buf, Format, Arg1); \ - obstack_grow (Obs, buf, strlen (buf)); \ +#define obstack_fgrow1(Obs, Format, Arg1) \ +do { \ + char buf[4096]; \ + sprintf (buf, Format, Arg1); \ + obstack_grow (Obs, buf, strlen (buf)); \ } while (0) -#define obstack_fgrow2(Obs, Format, Arg1, Arg2) \ -do { \ - char buf[4096]; \ - sprintf (buf, Format, Arg1, Arg2); \ - obstack_grow (Obs, buf, strlen (buf)); \ +#define obstack_fgrow2(Obs, Format, Arg1, Arg2) \ +do { \ + char buf[4096]; \ + sprintf (buf, Format, Arg1, Arg2); \ + obstack_grow (Obs, buf, strlen (buf)); \ } while (0) -#define obstack_fgrow3(Obs, Format, Arg1, Arg2, Arg3) \ -do { \ - char buf[4096]; \ - sprintf (buf, Format, Arg1, Arg2, Arg3); \ - obstack_grow (Obs, buf, strlen (buf)); \ +#define obstack_fgrow3(Obs, Format, Arg1, Arg2, Arg3) \ +do { \ + char buf[4096]; \ + sprintf (buf, Format, Arg1, Arg2, Arg3); \ + obstack_grow (Obs, buf, strlen (buf)); \ } while (0) -#define obstack_fgrow4(Obs, Format, Arg1, Arg2, Arg3, Arg4) \ -do { \ - char buf[4096]; \ - sprintf (buf, Format, Arg1, Arg2, Arg3, Arg4); \ - obstack_grow (Obs, buf, strlen (buf)); \ +#define obstack_fgrow4(Obs, Format, Arg1, Arg2, Arg3, Arg4) \ +do { \ + char buf[4096]; \ + sprintf (buf, Format, Arg1, Arg2, Arg3, Arg4); \ + obstack_grow (Obs, buf, strlen (buf)); \ } while (0) @@ -213,14 +227,14 @@ do { \ | Free a linked list. | `---------------------*/ -#define LIST_FREE(Type, List) \ -do { \ - Type *_node, *_next; \ - for (_node = List; _node; _node = _next) \ - { \ - _next = _node->next; \ - free (_node); \ - } \ +#define LIST_FREE(Type, List) \ +do { \ + Type *_node, *_next; \ + for (_node = List; _node; _node = _next) \ + { \ + _next = _node->next; \ + free (_node); \ + } \ } while (0)