Module Name: othersrc
Committed By: agc
Date: Wed Feb 22 01:01:40 UTC 2023
Modified Files:
othersrc/external/bsd/elex/dist: agcre.c agcre.h elex.c elex.h main.c
othersrc/external/bsd/elex/dist/tests: 28.expected
Log Message:
Update to elex version 20230221
20230221
========
+ protect elex embedded name space in a more extensible way
+ properly protect elex_make_new_rule
+ don't filter on symbol visibility, use LIB_NAMESPACE definition
+ sync agcre with bug fixes and reverse searching and other functionality
updates
+ when searching elex start state names, use a hash value
+ bump version to 20230221
To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 othersrc/external/bsd/elex/dist/agcre.c \
othersrc/external/bsd/elex/dist/agcre.h \
othersrc/external/bsd/elex/dist/elex.c \
othersrc/external/bsd/elex/dist/elex.h \
othersrc/external/bsd/elex/dist/main.c
cvs rdiff -u -r1.1 -r1.2 othersrc/external/bsd/elex/dist/tests/28.expected
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: othersrc/external/bsd/elex/dist/agcre.c
diff -u othersrc/external/bsd/elex/dist/agcre.c:1.1 othersrc/external/bsd/elex/dist/agcre.c:1.2
--- othersrc/external/bsd/elex/dist/agcre.c:1.1 Thu Dec 9 04:15:26 2021
+++ othersrc/external/bsd/elex/dist/agcre.c Wed Feb 22 01:01:39 2023
@@ -36,6 +36,7 @@
#include <string.h>
#include <unistd.h>
+#define LIB_NAMESPACE elex_
#include "agcre.h"
/* callback struct */
@@ -223,6 +224,7 @@ static int unicode_isOther_Uppercase(uin
static int unicode_isPattern_White_Space(uint32_t /*ch*/);
static int unicode_isalnum(uint32_t /*ch*/);
static int unicode_isalpha(uint32_t /*ch*/);
+static int unicode_ispunct2(uint32_t /*ch*/);
static int unicode_isblank(uint32_t /*ch*/);
static int unicode_iscntrl(uint32_t /*ch*/);
static int unicode_isdigit(uint32_t /*ch*/);
@@ -233,7 +235,7 @@ static int unicode_ispunct(uint32_t /*ch
static int unicode_isspace(uint32_t /*ch*/);
static int unicode_isupper(uint32_t /*ch*/);
static int unicode_isxdigit(uint32_t /*ch*/);
-static int unicode_isident(uint32_t /*ch*/);
+static int unicode_isword(uint32_t /*ch*/);
static uint32_t unicode_tolower(uint32_t /*ch*/);
static uint32_t unicode_toupper(uint32_t /*ch*/);
@@ -417,7 +419,7 @@ emit(re_t *re, retoken_t *tok)
(tok->ch == 'd' || tok->ch == 'D') ? unicode_isdigit :
(tok->ch == 'p' || tok->ch == 'P') ? unicode_isprint :
(tok->ch == 's' || tok->ch == 'S') ? unicode_isspace :
- unicode_isident,
+ unicode_isword,
unicode_isupper(tok->ch));
re->pc++;
return 1;
@@ -1169,16 +1171,16 @@ isendline(re_t *re, input_t *in)
static inline int
isbegword(re_t *re, input_t *in)
{
- return (isbegline(re, in) || !unicode_isident(in->prevch)) &&
- unicode_isident(in->ch);
+ return (isbegline(re, in) || !unicode_isword(in->prevch)) &&
+ unicode_isword(in->ch);
}
/* return 1 at end of words */
static inline int
isendword(re_t *re, input_t *in)
{
- return (isendline(re, in) || (in->c > in->so && unicode_isident(in->prevch))) &&
- (!unicode_isident(in->ch));
+ return (isendline(re, in) || (in->c > in->so && unicode_isword(in->prevch))) &&
+ (!unicode_isword(in->ch));
}
/* do the chars match? */
@@ -1577,10 +1579,6 @@ rec_posix_class(input_t *in, set_t *set)
set_add_callback(set, unicode_isgraph, 0);
in->c += 8;
return 1;
- case /* ":ident:]" */ 0x8a1572f1:
- set_add_callback(set, unicode_isident, 0);
- in->c += 8;
- return 1;
case /* ":lower:]" */ 0x8bfc6af8:
set_add_callback(set, unicode_islower, 0);
in->c += 8;
@@ -1593,6 +1591,10 @@ rec_posix_class(input_t *in, set_t *set)
set_add_callback(set, unicode_ispunct, 0);
in->c += 8;
return 1;
+ case /* ":punct2:]" */ 0xf09af6aa:
+ set_add_callback(set, unicode_ispunct2, 0);
+ in->c += 9;
+ return 1;
case /* ":space:]" */ 0xa876bcf2:
set_add_callback(set, unicode_isspace, 0);
in->c += 8;
@@ -1605,6 +1607,10 @@ rec_posix_class(input_t *in, set_t *set)
set_add_callback(set, unicode_isxdigit, 0);
in->c += 9;
return 1;
+ case /* ":word:]" */ 0x96b11914:
+ set_add_callback(set, unicode_isword, 0);
+ in->c += 7;
+ return 1;
default:
return 0;
}
@@ -1661,7 +1667,7 @@ rec_set(input_t *in)
(token->ch == 'd' || token->ch == 'D') ? unicode_isdigit :
(token->ch == 'p' || token->ch == 'P') ? unicode_isprint :
(token->ch == 's' || token->ch == 'S') ? unicode_isspace :
- unicode_isident,
+ unicode_isword,
unicode_isupper((uint8_t)token->ch));
break;
}
@@ -2612,11 +2618,20 @@ unicode_isxdigit(uint32_t ch)
}
static int
-unicode_isident(uint32_t ch)
+unicode_isword(uint32_t ch)
{
return unicode_isalnum(ch) || ch == '_';
}
+static int
+unicode_ispunct2(uint32_t ch)
+{
+ if (!unicode_isprint(ch) || unicode_isspace(ch) || unicode_isword(ch)) {
+ return 0;
+ }
+ return 1;
+}
+
static uint32_t
unicode_tolower(uint32_t ch)
{
@@ -2658,14 +2673,14 @@ growspace(char **buf, size_t *size, size
/***********************************************************/
/* allocate a new structure and return it */
-AGCRE_EXPORT agcre_regex_t *
+agcre_regex_t *
agcre_new(void)
{
return calloc(1, sizeof(agcre_regex_t));
}
/* compile regular expression */
-AGCRE_EXPORT int
+int
agcre_regcomp(agcre_regex_t *agcre, const void *vs, uint32_t flags)
{
retoken_t *tok;
@@ -2737,7 +2752,7 @@ agcre_regcomp(agcre_regex_t *agcre, cons
#endif
/* format the error nicely */
-AGCRE_EXPORT size_t
+size_t
agcre_regerror(int errcode, const agcre_regex_t *agcre, char *errbuf, size_t size)
{
re_t *re;
@@ -2751,7 +2766,7 @@ agcre_regerror(int errcode, const agcre_
}
/* execute the regular expression */
-AGCRE_EXPORT int
+int
agcre_regexec(agcre_regex_t *agcre, const void *vs, size_t matchc, agcre_regmatch_t *m, uint32_t flags)
{
threadlist_t *current;
@@ -2917,14 +2932,16 @@ break_for:
}
/* execute the regular expression backwards */
-AGCRE_EXPORT int
+int
agcre_rev_regexec(agcre_regex_t *agcre, const void *vs, size_t matchc, agcre_regmatch_t *m, uint32_t flags)
{
- int64_t from;
- int64_t to;
- int64_t i;
- int found;
- int this;
+ uint32_t revflags;
+ uint32_t bolflags;
+ int64_t from;
+ int64_t to;
+ int64_t i;
+ int found;
+ int lastmatch;
if (flags & AGCRE_REG_STARTEND) {
from = m[0].rm_so;
@@ -2933,23 +2950,36 @@ agcre_rev_regexec(agcre_regex_t *agcre,
from = 0;
to = strlen(vs);
}
- flags |= (AGCRE_REG_STARTEND | AGCRE_REG_ANCHOR);
+ /* initialise here or final regexec doesn't work for "^$" */
+ lastmatch = 0;
+ m[0].rm_so = from;
+ m[0].rm_eo = to;
+ /* quick check to see if we have anything */
+ if (agcre_regexec(agcre, vs, matchc, m, flags | AGCRE_REG_STARTEND) != 0) {
+ lastmatch = m[0].rm_so;
+ return AGCRE_REG_FAILURE;
+ }
+ revflags = (AGCRE_REG_STARTEND | AGCRE_REG_ANCHOR);
for (found = 0, i = to - 1 ; i >= from ; --i) {
m[0].rm_so = i;
m[0].rm_eo = to;
- if ((this = agcre_regexec(agcre, vs, matchc, m, flags)) == 0) {
+ bolflags = (i > 0) ? AGCRE_REG_NOTBOL : 0;
+ if (agcre_regexec(agcre, vs, matchc, m, flags | revflags | bolflags) == 0) {
found += 1;
+ lastmatch = i;
} else if (found > 0) {
- m[0].rm_so = i + 1;
- m[0].rm_eo = to;
- return agcre_regexec(agcre, vs, matchc, m, flags);
+ break;
}
}
- return AGCRE_REG_FAILURE;
+ /* just do 1 final forward search to load m array */
+ m[0].rm_so = lastmatch;
+ m[0].rm_eo = to;
+ bolflags = (lastmatch > 0) ? AGCRE_REG_NOTBOL : 0;
+ return agcre_regexec(agcre, vs, matchc, m, flags | revflags | bolflags);
}
/* free the regular expression */
-AGCRE_EXPORT void
+void
agcre_regfree(agcre_regex_t *agcre)
{
uint32_t i;
@@ -2969,7 +2999,7 @@ agcre_regfree(agcre_regex_t *agcre)
}
/* do regexp sed-style substitution */
-AGCRE_EXPORT ssize_t
+ssize_t
agcre_regnsub(char *buf, size_t size, const char *repl, const agcre_regmatch_t *rm, const char *str)
{
const char *i;
@@ -3022,7 +3052,7 @@ agcre_regnsub(char *buf, size_t size, co
}
/* do regexp sed-style substitution */
-AGCRE_EXPORT ssize_t
+ssize_t
agcre_regasub(char **buf, const char *repl, const agcre_regmatch_t *rm, const char *str)
{
const char *i;
Index: othersrc/external/bsd/elex/dist/agcre.h
diff -u othersrc/external/bsd/elex/dist/agcre.h:1.1 othersrc/external/bsd/elex/dist/agcre.h:1.2
--- othersrc/external/bsd/elex/dist/agcre.h:1.1 Thu Dec 9 04:15:26 2021
+++ othersrc/external/bsd/elex/dist/agcre.h Wed Feb 22 01:01:39 2023
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013,2017,2020,2021 Alistair Crooks. All Rights reserved.
+ * Copyright (c) 2013,2017,2020,2021,2022,2023 Alistair Crooks. All Rights reserved.
* Copyright (c) 2007-2009 Russ Cox, Google Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -95,6 +95,22 @@
#define AGCRE_MAX_SUBEXPR 100
#define AGCRE_MAX_EXPR_LENGTH 1024
+#ifdef LIB_NAMESPACE
+#define AGCRE_CONCAT(x, y) x##y
+#define AGCRE_NAMESPACE(x, y) AGCRE_CONCAT(x, y)
+#define agcre_regex_t AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regex_t)
+#define agcre_regoff_t AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regoff_t)
+#define agcre_regmatch_t AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regmatch_t)
+#define agcre_regex_new AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regex_new)
+#define agcre_regcomp AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regcomp)
+#define agcre_regexec AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regexec)
+#define agcre_rev_regexec AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_rev_regexec)
+#define agcre_regfree AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regfree)
+#define agcre_regerror AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regerror)
+#define agcre_regnsub AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regnsub)
+#define agcre_regasub AGCRE_NAMESPACE(LIB_NAMESPACE, agcre_regasub)
+#endif
+
typedef int64_t agcre_regoff_t;
/* a match structure */
@@ -111,37 +127,6 @@ typedef struct agcre_regex_t {
void *re_g; /* internals */
} agcre_regex_t;
-#ifndef USE_VISIBILITY
-# if defined(__GNUC__)
-# if __GNUC__ >= 4
-# define USE_VISIBILITY 1
-# else
-# define USE_VISIBILITY 0
-# endif
-# else
-# define USE_VISIBILITY 0
-# endif
-#endif
-
-#if USE_VISIBILITY
-# define DLL_PUBLIC __attribute__ ((visibility ("default")))
-# define DLL_LOCAL __attribute__ ((visibility ("hidden")))
-#else
-# define DLL_PUBLIC
-# define DLL_LOCAL
-#endif
-
-/* by default, don't hide external symbols */
-#ifndef HIDE_AGCRE
-#define HIDE_AGCRE 0
-#endif
-
-#if HIDE_AGCRE
-#define AGCRE_EXPORT DLL_LOCAL
-#else
-#define AGCRE_EXPORT DLL_PUBLIC
-#endif
-
#ifndef __BEGIN_DECLS
# if defined(__cplusplus)
# define __BEGIN_DECLS extern "C" {
@@ -154,18 +139,18 @@ typedef struct agcre_regex_t {
__BEGIN_DECLS
-AGCRE_EXPORT agcre_regex_t *agcre_new(void);
-AGCRE_EXPORT int agcre_regcomp(agcre_regex_t */*re*/, const void */*s*/, uint32_t /*flags*/);
-AGCRE_EXPORT int agcre_regexec(agcre_regex_t */*re*/, const void */*vs*/, size_t /*mc*/,
+agcre_regex_t *agcre_new(void);
+int agcre_regcomp(agcre_regex_t */*re*/, const void */*s*/, uint32_t /*flags*/);
+int agcre_regexec(agcre_regex_t */*re*/, const void */*vs*/, size_t /*mc*/,
agcre_regmatch_t */*m*/, uint32_t /*flags*/);
-AGCRE_EXPORT int agcre_rev_regexec(agcre_regex_t */*agcre*/, const void */*vs*/,
+int agcre_rev_regexec(agcre_regex_t */*agcre*/, const void */*vs*/,
size_t /*matchc*/, agcre_regmatch_t */*m*/, uint32_t /*flags*/);
-AGCRE_EXPORT void agcre_regfree(agcre_regex_t */*re*/);
-AGCRE_EXPORT size_t agcre_regerror(int /*errcode*/, const agcre_regex_t */*agcre*/,
+void agcre_regfree(agcre_regex_t */*re*/);
+size_t agcre_regerror(int /*errcode*/, const agcre_regex_t */*agcre*/,
char */*errbuf*/, size_t /*size*/);
-AGCRE_EXPORT ssize_t agcre_regnsub(char */*buf*/, size_t /*size*/, const char */*repl*/,
+ssize_t agcre_regnsub(char */*buf*/, size_t /*size*/, const char */*repl*/,
const agcre_regmatch_t */*rm*/, const char */*str*/);
-AGCRE_EXPORT ssize_t agcre_regasub(char **/*buf*/, const char */*repl*/,
+ssize_t agcre_regasub(char **/*buf*/, const char */*repl*/,
const agcre_regmatch_t */*rm*/, const char */*str*/);
__END_DECLS
Index: othersrc/external/bsd/elex/dist/elex.c
diff -u othersrc/external/bsd/elex/dist/elex.c:1.1 othersrc/external/bsd/elex/dist/elex.c:1.2
--- othersrc/external/bsd/elex/dist/elex.c:1.1 Thu Dec 9 04:15:26 2021
+++ othersrc/external/bsd/elex/dist/elex.c Wed Feb 22 01:01:39 2023
@@ -33,27 +33,35 @@
#include <string.h>
#include <unistd.h>
+#define LIB_NAMESPACE elex_
#include "agcre.h"
#include "striter.h"
#include "elex.h"
/* a rule for matching */
typedef struct rule_t {
- int startstate; /* start state of rule */
- char *pat; /* pattern before expansion */
- uint64_t patlen; /* length of pattern */
- agcre_regex_t re; /* compiled regexp */
- int newstate; /* new state */
- int ret; /* return value (0 == no return) */
+ int startstate; /* start state of rule */
+ char *pat; /* pattern before expansion */
+ uint64_t patlen; /* length of pattern */
+ agcre_regex_t re; /* compiled regexp */
+ int newstate; /* new state */
+ int ret; /* return value (0 == no return) */
+ uint32_t mbase; /* match base in state regexp */
} rule_t;
/* used for recognising return types */
typedef struct type_t {
- char *pat; /* name of type */
- uint64_t len; /* length of type */
- uint32_t val; /* return value for type */
+ char *pat; /* name of type */
+ uint64_t len; /* length of type */
+ uint32_t val; /* return value for type */
} type_t;
+/* all the information needed for a start state */
+typedef struct startstate_t {
+ char *name; /* start state name */
+ uint32_t hash; /* hash value of state name */
+} startstate_t;
+
/* embedded lex struct */
struct elex_t {
uint32_t rulec; /* # of rules */
@@ -61,7 +69,7 @@ struct elex_t {
rule_t *rules; /* rules */
uint32_t statec; /* # of states */
uint32_t statemax; /* size of states array */
- char **states; /* string names of states */
+ startstate_t *states; /* string names of states */
uint32_t typec; /* # of return types used */
uint32_t typemax; /* # of return types allocated */
type_t *types; /* return types */
@@ -103,12 +111,15 @@ djbhash(const char *s)
/* map from string state to index */
static inline int
-findstate(elex_t *elex, const char *state)
+findstate(elex_t *elex, const char *name)
{
- uint32_t i;
+ startstate_t *state;
+ uint32_t hash;
+ uint32_t i;
- for (i = 0 ; i < elex->statec ; i++) {
- if (strcmp(elex->states[i], state) == 0) {
+ hash = djbhash(name);
+ for (state = elex->states, i = 0 ; i < elex->statec ; i++, state++) {
+ if (state->hash == hash && strcmp(state->name, name) == 0) {
return i;
}
}
@@ -148,10 +159,10 @@ makerule(elex_t *elex)
}
/* create a new state entry */
-static char **
+static startstate_t *
makestate(elex_t *elex)
{
- char **state;
+ startstate_t *state;
if (elex->statec == elex->statemax) {
state = realloc(elex->states, (elex->statemax + 16) * sizeof(*state));
@@ -196,7 +207,7 @@ matchbol(elex_t *elex, rule_t *rule)
static int
make_new_state(elex_t *elex, const char *state)
{
- char **newstate;
+ startstate_t *newstate;
if (elex == NULL || state == NULL) {
return 0;
@@ -209,7 +220,8 @@ make_new_state(elex_t *elex, const char
warnx("already got state '%s'", state);
return 0;
}
- *newstate = strdup(state);
+ newstate->name = strdup(state);
+ newstate->hash = djbhash(state);
return 1;
}
@@ -477,7 +489,7 @@ makeclone(elex_t *old)
}
elex->states = calloc(old->statemax, sizeof(*elex->states));
for (i = 0 ; i < old->statec ; i++) {
- elex->states[i] = strdup(old->states[i]);
+ elex->states[i].name = strdup(old->states[i].name);
}
elex->types = calloc(old->typemax, sizeof(*elex->types));
for (i = 0 ; i < old->typec ; i++) {
@@ -516,9 +528,9 @@ getrule(elex_t *elex, uint64_t n, uint64
ret[0] = 0x0;
}
*size = asprintf(&p, "<%s>%s</>\t{ BEGIN(%s); %s }",
- elex->states[rule->startstate],
+ elex->states[rule->startstate].name,
rule->pat,
- elex->states[rule->newstate],
+ elex->states[rule->newstate].name,
ret);
return p;
}
@@ -526,7 +538,7 @@ getrule(elex_t *elex, uint64_t n, uint64
/********************************************************/
/* create a new elex struct */
-ELEX_EXPORT elex_t *
+elex_t *
elex_new(void)
{
elex_t *elex;
@@ -538,7 +550,7 @@ elex_new(void)
}
/* dispose of elex struct */
-ELEX_EXPORT int
+int
elex_dispose(elex_t **elex)
{
uint32_t i;
@@ -550,7 +562,7 @@ elex_dispose(elex_t **elex)
}
free((*elex)->rules);
for (i = 0 ; i < (*elex)->statec ; i++) {
- free((*elex)->states[i]);
+ free((*elex)->states[i].name);
}
free((*elex)->states);
for (i = 0 ; i < (*elex)->typec ; i++) {
@@ -567,7 +579,7 @@ elex_dispose(elex_t **elex)
}
/* create a new rule */
-ELEX_EXPORT int
+int
elex_make_new_rule(elex_t *elex, const char *startstate, const char *pat,
const char *newstate, int ret)
{
@@ -605,7 +617,7 @@ elex_make_new_rule(elex_t *elex, const c
/* accessor functions */
/* one function to execute with integer return */
-ELEX_EXPORT int64_t
+int64_t
elex_exec(elex_t *elex, const char *info, uint64_t num, const char *s, int64_t cc)
{
if (elex == NULL || info == NULL) {
@@ -661,7 +673,7 @@ elex_exec(elex_t *elex, const char *info
}
/* one function to access string values */
-ELEX_EXPORT void *
+void *
elex_exec_str(elex_t *elex, const char *info, uint64_t n, uint64_t *size)
{
uint64_t len;
@@ -683,7 +695,7 @@ elex_exec_str(elex_t *elex, const char *
case /* "get-yyrule-pat" */ 0x3387cdfa:
return (elex->yyrule == NULL) ? NULL : allocate(elex->yyrule->pat, elex->yyrule->patlen, size);
case /* "get-yystate" */ 0xc6d2a7:
- return allocate(elex->states[elex->yystate], strlen(elex->states[elex->yystate]), size);
+ return allocate(elex->states[elex->yystate].name, strlen(elex->states[elex->yystate].name), size);
case /* "get-yytext" */ 0x88065864:
return allocate(elex->yytext, elex->yyleng, size);
}
Index: othersrc/external/bsd/elex/dist/elex.h
diff -u othersrc/external/bsd/elex/dist/elex.h:1.1 othersrc/external/bsd/elex/dist/elex.h:1.2
--- othersrc/external/bsd/elex/dist/elex.h:1.1 Thu Dec 9 04:15:26 2021
+++ othersrc/external/bsd/elex/dist/elex.h Wed Feb 22 01:01:39 2023
@@ -23,38 +23,23 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ELEX_H_
-#define ELEX_H_ 20211115
+#define ELEX_H_ 20230221
#include <inttypes.h>
-struct elex_t;
-typedef struct elex_t elex_t;
-
-#ifndef USE_VISIBILITY
-# if defined(__GNUC__)
-# if __GNUC__ >= 4
-# define USE_VISIBILITY 1
-# else
-# define USE_VISIBILITY 0
-# endif
-# else
-# define USE_VISIBILITY 0
-# endif
+#ifdef LIB_NAMESPACE
+#define ELEX_CONCAT(x, y) x##y
+#define ELEX_NAMESPACE(x, y) ELEX_CONCAT(x, y)
+#define elex_t ELEX_NAMESPACE(LIB_NAMESPACE, elex_t)
+#define elex_new ELEX_NAMESPACE(LIB_NAMESPACE, elex_new)
+#define elex_dispose ELEX_NAMESPACE(LIB_NAMESPACE, elex_dispose)
+#define elex_exec ELEX_NAMESPACE(LIB_NAMESPACE, elex_exec)
+#define elex_exec_str ELEX_NAMESPACE(LIB_NAMESPACE, elex_exec_str)
+#define elex_make_new_rule ELEX_NAMESPACE(LIB_NAMESPACE, elex_make_new_rule)
#endif
-#if USE_VISIBILITY
-# define DLL_PUBLIC __attribute__ ((visibility ("default")))
-# define DLL_LOCAL __attribute__ ((visibility ("hidden")))
-#else
-# define DLL_PUBLIC
-# define DLL_LOCAL
-#endif
-
-#ifdef HIDE_ELEX
-#define ELEX_EXPORT DLL_LOCAL
-#else
-#define ELEX_EXPORT DLL_PUBLIC
-#endif
+struct elex_t;
+typedef struct elex_t elex_t;
#ifndef __BEGIN_DECLS
# if defined(__cplusplus)
@@ -69,15 +54,15 @@ typedef struct elex_t elex_t;
__BEGIN_DECLS
/* create and destroy */
-ELEX_EXPORT elex_t *elex_new(void);
-ELEX_EXPORT int elex_dispose(elex_t **/*elex*/);
+elex_t *elex_new(void);
+int elex_dispose(elex_t **/*elex*/);
/* these functions do ALL the work */
-ELEX_EXPORT int64_t elex_exec(elex_t */*elex*/, const char */*info*/, uint64_t /*num*/, const char */*s*/, int64_t /*cc*/);
-ELEX_EXPORT void *elex_exec_str(elex_t */*elex*/, const char */*info*/, uint64_t /*n*/, uint64_t */*size*/);
+int64_t elex_exec(elex_t */*elex*/, const char */*info*/, uint64_t /*num*/, const char */*s*/, int64_t /*cc*/);
+void *elex_exec_str(elex_t */*elex*/, const char */*info*/, uint64_t /*n*/, uint64_t */*size*/);
/* with one exeception - deal with states */
-ELEX_EXPORT int elex_make_new_rule(elex_t */*elex*/, const char */*startstate*/,
+int elex_make_new_rule(elex_t */*elex*/, const char */*startstate*/,
const char */*pat*/, const char */*newstate*/, int /*ret*/);
__END_DECLS
Index: othersrc/external/bsd/elex/dist/main.c
diff -u othersrc/external/bsd/elex/dist/main.c:1.1 othersrc/external/bsd/elex/dist/main.c:1.2
--- othersrc/external/bsd/elex/dist/main.c:1.1 Thu Dec 9 04:15:26 2021
+++ othersrc/external/bsd/elex/dist/main.c Wed Feb 22 01:01:39 2023
@@ -32,6 +32,7 @@
#include <string.h>
#include <unistd.h>
+#define LIB_NAMESPACE elex_
#include "elex.h"
#define STRINGIFY(x) #x
Index: othersrc/external/bsd/elex/dist/tests/28.expected
diff -u othersrc/external/bsd/elex/dist/tests/28.expected:1.1 othersrc/external/bsd/elex/dist/tests/28.expected:1.2
--- othersrc/external/bsd/elex/dist/tests/28.expected:1.1 Thu Dec 9 04:15:26 2021
+++ othersrc/external/bsd/elex/dist/tests/28.expected Wed Feb 22 01:01:40 2023
@@ -1 +1 @@
-elex version 20211115
+elex version 20230221