mirror of
https://github.com/michaelrsweet/mxml.git
synced 2025-05-10 06:52:08 +00:00
Fix compile issues on Linux (Issue #200)
This commit is contained in:
parent
3836e126a8
commit
6f51c8ece5
@ -84,6 +84,11 @@ extern char *_mxml_strdup(const char *);
|
|||||||
# define strdup _mxml_strdup
|
# define strdup _mxml_strdup
|
||||||
# endif /* !HAVE_STRDUP */
|
# endif /* !HAVE_STRDUP */
|
||||||
|
|
||||||
|
# ifndef HAVE_STRLCAT
|
||||||
|
extern size_t _mxml_strlcat(char *, const char *, size_t);
|
||||||
|
# define strlcat _mxml_strlcat
|
||||||
|
# endif /* !HAVE_STRLCAT */
|
||||||
|
|
||||||
# ifndef HAVE_STRLCPY
|
# ifndef HAVE_STRLCPY
|
||||||
extern size_t _mxml_strlcpy(char *, const char *, size_t);
|
extern size_t _mxml_strlcpy(char *, const char *, size_t);
|
||||||
# define strlcpy _mxml_strlcpy
|
# define strlcpy _mxml_strlcpy
|
||||||
|
18
configure
vendored
18
configure
vendored
@ -687,6 +687,7 @@ infodir
|
|||||||
docdir
|
docdir
|
||||||
oldincludedir
|
oldincludedir
|
||||||
includedir
|
includedir
|
||||||
|
runstatedir
|
||||||
localstatedir
|
localstatedir
|
||||||
sharedstatedir
|
sharedstatedir
|
||||||
sysconfdir
|
sysconfdir
|
||||||
@ -767,6 +768,7 @@ datadir='${datarootdir}'
|
|||||||
sysconfdir='${prefix}/etc'
|
sysconfdir='${prefix}/etc'
|
||||||
sharedstatedir='${prefix}/com'
|
sharedstatedir='${prefix}/com'
|
||||||
localstatedir='${prefix}/var'
|
localstatedir='${prefix}/var'
|
||||||
|
runstatedir='${localstatedir}/run'
|
||||||
includedir='${prefix}/include'
|
includedir='${prefix}/include'
|
||||||
oldincludedir='/usr/include'
|
oldincludedir='/usr/include'
|
||||||
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
|
||||||
@ -1019,6 +1021,15 @@ do
|
|||||||
| -silent | --silent | --silen | --sile | --sil)
|
| -silent | --silent | --silen | --sile | --sil)
|
||||||
silent=yes ;;
|
silent=yes ;;
|
||||||
|
|
||||||
|
-runstatedir | --runstatedir | --runstatedi | --runstated \
|
||||||
|
| --runstate | --runstat | --runsta | --runst | --runs \
|
||||||
|
| --run | --ru | --r)
|
||||||
|
ac_prev=runstatedir ;;
|
||||||
|
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
|
||||||
|
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
|
||||||
|
| --run=* | --ru=* | --r=*)
|
||||||
|
runstatedir=$ac_optarg ;;
|
||||||
|
|
||||||
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
||||||
ac_prev=sbindir ;;
|
ac_prev=sbindir ;;
|
||||||
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
||||||
@ -1156,7 +1167,7 @@ fi
|
|||||||
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
|
||||||
datadir sysconfdir sharedstatedir localstatedir includedir \
|
datadir sysconfdir sharedstatedir localstatedir includedir \
|
||||||
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
|
||||||
libdir localedir mandir
|
libdir localedir mandir runstatedir
|
||||||
do
|
do
|
||||||
eval ac_val=\$$ac_var
|
eval ac_val=\$$ac_var
|
||||||
# Remove trailing slashes.
|
# Remove trailing slashes.
|
||||||
@ -1309,6 +1320,7 @@ Fine tuning of the installation directories:
|
|||||||
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
|
||||||
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
|
||||||
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
|
||||||
|
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
|
||||||
--libdir=DIR object code libraries [EPREFIX/lib]
|
--libdir=DIR object code libraries [EPREFIX/lib]
|
||||||
--includedir=DIR C header files [PREFIX/include]
|
--includedir=DIR C header files [PREFIX/include]
|
||||||
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
--oldincludedir=DIR C header files for non-gcc [/usr/include]
|
||||||
@ -3901,7 +3913,7 @@ esac
|
|||||||
|
|
||||||
|
|
||||||
if test "x$use_ansi" != xyes; then
|
if test "x$use_ansi" != xyes; then
|
||||||
for ac_func in strdup strlcpy
|
for ac_func in strdup strlcat strlcpy
|
||||||
do :
|
do :
|
||||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||||
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
|
||||||
@ -4588,7 +4600,7 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
if test -n "$GCC"; then
|
if test -n "$GCC"; then
|
||||||
CFLAGS="-Wall $CFLAGS"
|
CFLAGS="-Wall -D_GNU_SOURCE $CFLAGS"
|
||||||
|
|
||||||
if test "x$OPTIM" = x; then
|
if test "x$OPTIM" = x; then
|
||||||
OPTIM="-Os -g"
|
OPTIM="-Os -g"
|
||||||
|
@ -95,7 +95,7 @@ AC_C_INLINE
|
|||||||
|
|
||||||
dnl Checks for string functions.
|
dnl Checks for string functions.
|
||||||
if test "x$use_ansi" != xyes; then
|
if test "x$use_ansi" != xyes; then
|
||||||
AC_CHECK_FUNCS(strdup strlcpy)
|
AC_CHECK_FUNCS(strdup strlcat strlcpy)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test "x$use_vsnprintf" != xyes; then
|
if test "x$use_vsnprintf" != xyes; then
|
||||||
@ -252,7 +252,7 @@ AC_SUBST(PICFLAG)
|
|||||||
|
|
||||||
dnl Add -Wall for GCC...
|
dnl Add -Wall for GCC...
|
||||||
if test -n "$GCC"; then
|
if test -n "$GCC"; then
|
||||||
CFLAGS="-Wall $CFLAGS"
|
CFLAGS="-Wall -D_GNU_SOURCE $CFLAGS"
|
||||||
|
|
||||||
if test "x$OPTIM" = x; then
|
if test "x$OPTIM" = x; then
|
||||||
OPTIM="-Os -g"
|
OPTIM="-Os -g"
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.TH mxml 3 "Mini-XML API" "06/09/17" "Mini-XML API"
|
.TH mxml 3 "Mini-XML API" "06/27/17" "Mini-XML API"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
mxml \- Mini-XML API
|
mxml \- Mini-XML API
|
||||||
.SH INCLUDE FILE
|
.SH INCLUDE FILE
|
||||||
|
2
mmd.c
2
mmd.c
@ -479,6 +479,8 @@ mmdLoadFile(FILE *fp) /* I - File to load */
|
|||||||
block = NULL;
|
block = NULL;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type = MMD_TYPE_PARAGRAPH;
|
||||||
}
|
}
|
||||||
else if ((*lineptr == '-' || *lineptr == '+' || *lineptr == '*') && isspace(lineptr[1] & 255))
|
else if ((*lineptr == '-' || *lineptr == '+' || *lineptr == '*') && isspace(lineptr[1] & 255))
|
||||||
{
|
{
|
||||||
|
@ -98,7 +98,8 @@ _mxml_strdupf(const char *format, /* I - Printf-style format string */
|
|||||||
|
|
||||||
va_start(ap, format);
|
va_start(ap, format);
|
||||||
#ifdef HAVE_VASPRINTF
|
#ifdef HAVE_VASPRINTF
|
||||||
vasprintf(&s, format, ap);
|
if (vasprintf(&s, format, ap) < 0)
|
||||||
|
s = NULL;
|
||||||
#else
|
#else
|
||||||
s = _mxml_vstrdupf(format, ap);
|
s = _mxml_vstrdupf(format, ap);
|
||||||
#endif /* HAVE_VASPRINTF */
|
#endif /* HAVE_VASPRINTF */
|
||||||
@ -108,6 +109,52 @@ _mxml_strdupf(const char *format, /* I - Printf-style format string */
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef HAVE_STRLCAT
|
||||||
|
/*
|
||||||
|
* '_mxml_strlcat()' - Safely concatenate a string.
|
||||||
|
*/
|
||||||
|
|
||||||
|
size_t /* O - Number of bytes copied */
|
||||||
|
_mxml_strlcat(char *dst, /* I - Destination buffer */
|
||||||
|
const char *src, /* I - Source string */
|
||||||
|
size_t dstsize) /* I - Size of destinatipon buffer */
|
||||||
|
{
|
||||||
|
size_t srclen; /* Length of source string */
|
||||||
|
size_t dstlen; /* Length of destination string */
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Figure out how much room is left...
|
||||||
|
*/
|
||||||
|
|
||||||
|
dstlen = strlen(dst);
|
||||||
|
|
||||||
|
if (dstsize <= (dstlen + 1))
|
||||||
|
return (dstlen); /* No room, return immediately... */
|
||||||
|
|
||||||
|
dstsize -= dstlen + 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Figure out how much room is needed...
|
||||||
|
*/
|
||||||
|
|
||||||
|
srclen = strlen(src);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy the appropriate amount...
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (srclen > dstsize)
|
||||||
|
srclen = dstsize;
|
||||||
|
|
||||||
|
memmove(dst + dstlen, src, srclen);
|
||||||
|
dst[dstlen + srclen] = '\0';
|
||||||
|
|
||||||
|
return (dstlen + srclen);
|
||||||
|
}
|
||||||
|
#endif /* !HAVE_STRLCAT */
|
||||||
|
|
||||||
|
|
||||||
#ifndef HAVE_STRLCPY
|
#ifndef HAVE_STRLCPY
|
||||||
/*
|
/*
|
||||||
* '_mxml_strlcpy()' - Safely copy a string.
|
* '_mxml_strlcpy()' - Safely copy a string.
|
||||||
@ -466,7 +513,8 @@ _mxml_vstrdupf(const char *format, /* I - Printf-style format string */
|
|||||||
#ifdef HAVE_VASPRINTF
|
#ifdef HAVE_VASPRINTF
|
||||||
char *s; /* String */
|
char *s; /* String */
|
||||||
|
|
||||||
vasprintf(&s, format, ap);
|
if (vasprintf(&s, format, ap) < 0)
|
||||||
|
s = NULL;
|
||||||
|
|
||||||
return (s);
|
return (s);
|
||||||
|
|
||||||
|
29
mxmldoc.c
29
mxmldoc.c
@ -175,7 +175,9 @@ static const char *markdown_anchor(const char *text);
|
|||||||
static void markdown_write_block(FILE *out, mmd_t *parent, int mode);
|
static void markdown_write_block(FILE *out, mmd_t *parent, int mode);
|
||||||
static void markdown_write_leaf(FILE *out, mmd_t *node, int mode);
|
static void markdown_write_leaf(FILE *out, mmd_t *node, int mode);
|
||||||
static mxml_node_t *new_documentation(mxml_node_t **mxmldoc);
|
static mxml_node_t *new_documentation(mxml_node_t **mxmldoc);
|
||||||
|
#ifdef __APPLE__
|
||||||
static int remove_directory(const char *path);
|
static int remove_directory(const char *path);
|
||||||
|
#endif /* __APPLE__ */
|
||||||
static void safe_strcpy(char *dst, const char *src);
|
static void safe_strcpy(char *dst, const char *src);
|
||||||
static int scan_file(const char *filename, FILE *fp, mxml_node_t *doc);
|
static int scan_file(const char *filename, FILE *fp, mxml_node_t *doc);
|
||||||
static void sort_node(mxml_node_t *tree, mxml_node_t *func);
|
static void sort_node(mxml_node_t *tree, mxml_node_t *func);
|
||||||
@ -1879,6 +1881,7 @@ new_documentation(mxml_node_t **mxmldoc)/* O - mxmldoc node */
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __APPLE__
|
||||||
/*
|
/*
|
||||||
* 'remove_directory()' - Remove a directory.
|
* 'remove_directory()' - Remove a directory.
|
||||||
*/
|
*/
|
||||||
@ -1886,10 +1889,6 @@ new_documentation(mxml_node_t **mxmldoc)/* O - mxmldoc node */
|
|||||||
static int /* O - 1 on success, 0 on failure */
|
static int /* O - 1 on success, 0 on failure */
|
||||||
remove_directory(const char *path) /* I - Directory to remove */
|
remove_directory(const char *path) /* I - Directory to remove */
|
||||||
{
|
{
|
||||||
#ifdef WIN32
|
|
||||||
/* TODO: Add Windows directory removal code */
|
|
||||||
|
|
||||||
#else
|
|
||||||
DIR *dir; /* Directory */
|
DIR *dir; /* Directory */
|
||||||
struct dirent *dent; /* Current directory entry */
|
struct dirent *dent; /* Current directory entry */
|
||||||
char filename[1024]; /* Current filename */
|
char filename[1024]; /* Current filename */
|
||||||
@ -1951,10 +1950,10 @@ remove_directory(const char *path) /* I - Directory to remove */
|
|||||||
strerror(errno));
|
strerror(errno));
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
#endif /* WIN32 */
|
|
||||||
|
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
#endif /* __APPLE__ */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3929,9 +3928,16 @@ write_docset(const char *docset, /* I - Documentation set directory */
|
|||||||
mxml_node_t *doc, /* I - XML documentation */
|
mxml_node_t *doc, /* I - XML documentation */
|
||||||
const char *footerfile) /* I - Footer file */
|
const char *footerfile) /* I - Footer file */
|
||||||
{
|
{
|
||||||
FILE *out; /* Output file */
|
FILE *out; /* Output file */
|
||||||
char filename[1024]; /* Current output filename */
|
char filename[1024]; /* Current output filename */
|
||||||
toc_t *toc; /* Table of contents */
|
toc_t *toc; /* Table of contents */
|
||||||
|
const char *id; /* Identifier */
|
||||||
|
size_t i; /* Looping var */
|
||||||
|
toc_entry_t *tentry; /* Current table of contents */
|
||||||
|
int toc_level; /* Current table-of-contents level */
|
||||||
|
int xmlid = 1; /* Current XML node ID */
|
||||||
|
const char *indent; /* Indentation */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -3945,13 +3951,6 @@ write_docset(const char *docset, /* I - Documentation set directory */
|
|||||||
* output directory...
|
* output directory...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
const char *id; /* Identifier */
|
|
||||||
size_t i; /* Looping var */
|
|
||||||
toc_entry_t *tentry; /* Current table of contents */
|
|
||||||
int toc_level; /* Current table-of-contents level */
|
|
||||||
int xmlid = 1; /* Current XML node ID */
|
|
||||||
const char *indent; /* Indentation */
|
|
||||||
|
|
||||||
if (!access(docset, 0) && !remove_directory(docset))
|
if (!access(docset, 0) && !remove_directory(docset))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -715,13 +715,16 @@ main(int argc, /* I - Number of command-line args */
|
|||||||
|
|
||||||
if (getenv("TEST_DELAY") != NULL)
|
if (getenv("TEST_DELAY") != NULL)
|
||||||
sleep(atoi(getenv("TEST_DELAY")));
|
sleep(atoi(getenv("TEST_DELAY")));
|
||||||
|
# ifdef __APPLE__
|
||||||
if (getenv("TEST_LEAKS") != NULL)
|
if (getenv("TEST_LEAKS") != NULL)
|
||||||
{
|
{
|
||||||
char command[1024];
|
char command[1024];
|
||||||
|
|
||||||
snprintf(command, sizeof(command), "leaks %d", (int)getpid());
|
snprintf(command, sizeof(command), "leaks %d", (int)getpid());
|
||||||
system(command);
|
if (system(command))
|
||||||
|
puts("Unable to check for leaks.");
|
||||||
}
|
}
|
||||||
|
# endif /* __APPLE__ */
|
||||||
#endif /* !WIN32 */
|
#endif /* !WIN32 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user