Revert "Make einfo routines private"
This reverts commit de88aff0a8
.
I was advised that splashutils links to libeinfo, so we do have a
consumer for this library.
This commit is contained in:
parent
d2988dc7dd
commit
48981be8a8
@ -1,4 +1,4 @@
|
|||||||
MAN3= \
|
MAN3= einfo.3 \
|
||||||
rc_config.3 rc_deptree.3 rc_find_pids.3 rc_plugin_hook.3 \
|
rc_config.3 rc_deptree.3 rc_find_pids.3 rc_plugin_hook.3 \
|
||||||
rc_runlevel.3 rc_service.3 rc_stringlist.3
|
rc_runlevel.3 rc_service.3 rc_stringlist.3
|
||||||
MAN8= rc-service.8 rc-status.8 rc-update.8 rc.8 runscript.8 \
|
MAN8= rc-service.8 rc-status.8 rc-update.8 rc.8 runscript.8 \
|
||||||
|
210
man/einfo.3
Normal file
210
man/einfo.3
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
.\" Copyright (c) 2007-2008 Roy Marples
|
||||||
|
.\"
|
||||||
|
.\" Redistribution and use in source and binary forms, with or without
|
||||||
|
.\" modification, are permitted provided that the following conditions
|
||||||
|
.\" are met:
|
||||||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||||||
|
.\" notice, this list of conditions and the following disclaimer.
|
||||||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||||||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||||||
|
.\" documentation and/or other materials provided with the distribution.
|
||||||
|
.\"
|
||||||
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
.\" SUCH DAMAGE.
|
||||||
|
.\"
|
||||||
|
.Dd Mar 16, 2008
|
||||||
|
.Dt EINFO 3 SMM
|
||||||
|
.Os OpenRC
|
||||||
|
.Sh NAME
|
||||||
|
.Nm einfo , ewarn , eerror , ebegin ,
|
||||||
|
.Nm einfon , ewarnn , eerrorn , ebeginn ,
|
||||||
|
.Nm einfov , ewarnv , ebeginv ,
|
||||||
|
.Nm einfovn , ewarnvn , ebeginvn ,
|
||||||
|
.Nm ewarnx , eerrorx ,
|
||||||
|
.Nm eend , ewend ,
|
||||||
|
.Nm eendv , ewendv ,
|
||||||
|
.Nm ebracket ,
|
||||||
|
.Nm eindent , eoutdent ,
|
||||||
|
.Nm eindentv , eoutdentv ,
|
||||||
|
.Nm eprefix
|
||||||
|
.Nd colorful informational output
|
||||||
|
.Sh LIBRARY
|
||||||
|
Enhanced Information output library (libeinfo, -leinfo)
|
||||||
|
.Sh SYNOPSIS
|
||||||
|
.In einfo.h
|
||||||
|
.Ft int Fn einfo "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewarn "const char * restrict format" ...
|
||||||
|
.Ft int Fn eerror "const char * restrict format" ...
|
||||||
|
.Ft int Fn ebegin "const char * restrict format" ...
|
||||||
|
.Ft int Fn einfon "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewarnn "const char * restrict format" ...
|
||||||
|
.Ft int Fn eerrorn "const char * restrict format" ...
|
||||||
|
.Ft int Fn ebeginn "const char * restrict format" ...
|
||||||
|
.Ft int Fn einfov "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewarnv "const char * restrict format" ...
|
||||||
|
.Ft int Fn ebeginv "const char * restrict format" ...
|
||||||
|
.Ft int Fn einfovn "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewarnvn "const char * restrict format" ...
|
||||||
|
.Ft int Fn ebeginvn "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewarnx "const char * restrict format" ...
|
||||||
|
.Ft int Fn eerrorx "const char * restrict format" ...
|
||||||
|
.Ft int Fn eend "int retval" "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewend "int retval" "const char * restrict format" ...
|
||||||
|
.Ft int Fn eendv "int retval" "const char * restrict format" ...
|
||||||
|
.Ft int Fn ewendv "int retval" "const char * restrict format" ...
|
||||||
|
.Ft void Fn ebracket "int col" "ECOLOR color" "const char * restrict msg"
|
||||||
|
.Ft void Fn eindent void
|
||||||
|
.Ft void Fn eoutdent void
|
||||||
|
.Ft void Fn eindentv void
|
||||||
|
.Ft void Fn eoutdentv void
|
||||||
|
.Ft void Fn eprefix "const char * prefix"
|
||||||
|
.Sh DESCRIPTION
|
||||||
|
The
|
||||||
|
.Fn einfo
|
||||||
|
family of functions provide a simple informational output that is colorised.
|
||||||
|
Basically
|
||||||
|
.Fn einfo ,
|
||||||
|
.Fn ewarn
|
||||||
|
and
|
||||||
|
.Fn eerror
|
||||||
|
behave exactly like
|
||||||
|
.Fn printf
|
||||||
|
but prefix the output with a colored *. The function called denotes the color
|
||||||
|
used with
|
||||||
|
.Fn einfo
|
||||||
|
being green,
|
||||||
|
.Fn ewarn
|
||||||
|
being yellow and
|
||||||
|
.Fn eerror
|
||||||
|
being red.
|
||||||
|
einfo goes to stdout and the others go to stderr.
|
||||||
|
The number of real characters printed is returned.
|
||||||
|
.Fn ebegin
|
||||||
|
is identical to
|
||||||
|
.Fn einfo
|
||||||
|
except that 3 dots are appended to the output.
|
||||||
|
.Pp
|
||||||
|
.Fn einfov ,
|
||||||
|
.Fn ewarnv
|
||||||
|
and
|
||||||
|
.Fn ebeginv
|
||||||
|
work the same way to
|
||||||
|
.Fn einfo ,
|
||||||
|
.Fn ewarn ,
|
||||||
|
and
|
||||||
|
.Fn ebegin
|
||||||
|
respectively, but only work when
|
||||||
|
.Va EINFO_VERBOSE
|
||||||
|
is true. You can also make the
|
||||||
|
.Fn einfo ,
|
||||||
|
.Fn ewarn ,
|
||||||
|
and
|
||||||
|
.Fn ebegin
|
||||||
|
functions silent by setting
|
||||||
|
.Va EINFO_QUIET
|
||||||
|
to true.
|
||||||
|
.Pp
|
||||||
|
These functions are designed to output a whole line, so they also
|
||||||
|
append a newline to the string. To stop this behaviour, you can use the
|
||||||
|
functions
|
||||||
|
.Fn einfon ,
|
||||||
|
.Fn ewarnn ,
|
||||||
|
.Fn eerrorn ,
|
||||||
|
.Fn einfovn ,
|
||||||
|
.Fn ewarnvn ,
|
||||||
|
and
|
||||||
|
.Fn ebeginvn .
|
||||||
|
.Pp
|
||||||
|
.Fn eend ,
|
||||||
|
.Fn ewend ,
|
||||||
|
.Fn eendv
|
||||||
|
and
|
||||||
|
.Fn ewendv
|
||||||
|
are the counterparts to the above functions. If
|
||||||
|
.Fa retval
|
||||||
|
is zero then ok in green is printed in a bracket at the end of the prior
|
||||||
|
line. Otherwise we print the formatted string using
|
||||||
|
.Fn error
|
||||||
|
(or
|
||||||
|
.Fn ewarn
|
||||||
|
if
|
||||||
|
.Fn ewend
|
||||||
|
is called) !! in red (or yellow if
|
||||||
|
.Fn ewend
|
||||||
|
is called) is printed in a bracket at the end of the line.
|
||||||
|
The value of
|
||||||
|
.Fa retval
|
||||||
|
is returned.
|
||||||
|
.Pp
|
||||||
|
.Fn ebracket
|
||||||
|
does the same as
|
||||||
|
.Fn eend
|
||||||
|
but prints
|
||||||
|
.Fa msg
|
||||||
|
instead of ok or !! in the color
|
||||||
|
.Fa color
|
||||||
|
at the column
|
||||||
|
.Fa col .
|
||||||
|
.Pp
|
||||||
|
.Fn eindent
|
||||||
|
indents subsequent calls to the above functions by 3 characters.
|
||||||
|
.Fn eoutdent
|
||||||
|
removes an
|
||||||
|
.Fn eindent .
|
||||||
|
.Fn eindentv
|
||||||
|
and
|
||||||
|
.Fn eoutdentv
|
||||||
|
only work when
|
||||||
|
.Va EINFO_VERBOSE
|
||||||
|
is true.
|
||||||
|
.Pp
|
||||||
|
.Fn eprefix
|
||||||
|
prefixes the string
|
||||||
|
.Fa prefix
|
||||||
|
to the above functions.
|
||||||
|
.Sh IMPLEMENTATION NOTES
|
||||||
|
einfo can optionally be linked against the
|
||||||
|
.Lb libtermcap
|
||||||
|
so that we can correctly query the connected console for our color and
|
||||||
|
cursor escape codes.
|
||||||
|
If not, then we have a hard coded list of terminals we know about that support
|
||||||
|
the commonly used codes for color and cursor position.
|
||||||
|
.Sh ENVIRONMENT
|
||||||
|
.Va EINFO_QUIET
|
||||||
|
when set to true makes the
|
||||||
|
.Fn einfo
|
||||||
|
and
|
||||||
|
.Fn einfon
|
||||||
|
family of functions quiet, so nothing is printed.
|
||||||
|
.Va EERROR_QUIET
|
||||||
|
when set to true makes the
|
||||||
|
.Fn eerror
|
||||||
|
and
|
||||||
|
.Fn eerrorn
|
||||||
|
family of functions quiet, so nothing is printed.
|
||||||
|
.Pp
|
||||||
|
.Va EINFO_VERBOSE
|
||||||
|
when set to true makes the
|
||||||
|
.Fn einfov
|
||||||
|
and
|
||||||
|
.Fn einfovn
|
||||||
|
family of functions work, so they do print.
|
||||||
|
.Sh FILES
|
||||||
|
.Pa /etc/init.d/functions.sh
|
||||||
|
is provided by OpenRC, which allows shell scripts to use the above functions.
|
||||||
|
For historical reasons our verbose functions are prefixed with v instead of
|
||||||
|
suffixed. So einfov becomes veinfo, einfovn becomes veinfon.
|
||||||
|
Rinse and repeat for the other verbose functions.
|
||||||
|
.Sh SEE ALSO
|
||||||
|
.Xr printf 3 ,
|
||||||
|
.Sh AUTHORS
|
||||||
|
.An Roy Marples <roy@marples.name>
|
@ -1,6 +1,6 @@
|
|||||||
DIR= ${LIBDIR}/pkgconfig
|
DIR= ${LIBDIR}/pkgconfig
|
||||||
SRCS= openrc.pc.in
|
SRCS= einfo.pc.in openrc.pc.in
|
||||||
INC= openrc.pc
|
INC= einfo.pc openrc.pc
|
||||||
|
|
||||||
.DEFAULT:
|
.DEFAULT:
|
||||||
${SED} -n -e 's/^VERSION=[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1${GITVER}\"/p' ../../Makefile > version.h
|
${SED} -n -e 's/^VERSION=[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1${GITVER}\"/p' ../../Makefile > version.h
|
||||||
|
9
pkgconfig/einfo.pc.in
Normal file
9
pkgconfig/einfo.pc.in
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
prefix=@PREFIX@
|
||||||
|
exec_prefix=${prefix}
|
||||||
|
libdir=${prefix}/@LIB@
|
||||||
|
includedir=/usr/include
|
||||||
|
|
||||||
|
Name: einfo
|
||||||
|
Description: Pretty console informational display
|
||||||
|
Version: @VERSION@
|
||||||
|
Libs: -L${libdir} -leinfo
|
@ -1,7 +1,7 @@
|
|||||||
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
|
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
|
||||||
# Released under the 2-clause BSD license.
|
# Released under the 2-clause BSD license.
|
||||||
|
|
||||||
SUBDIR= test librc rc
|
SUBDIR= test libeinfo librc rc
|
||||||
|
|
||||||
ifeq (${MKTOOLS},yes)
|
ifeq (${MKTOOLS},yes)
|
||||||
SUBDIR+= tools
|
SUBDIR+= tools
|
||||||
|
1
src/libeinfo/.gitignore
vendored
Normal file
1
src/libeinfo/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
libeinfo.so.1
|
12
src/libeinfo/Makefile
Normal file
12
src/libeinfo/Makefile
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
LIB= einfo
|
||||||
|
SHLIB_MAJOR= 1
|
||||||
|
SRCS= libeinfo.c
|
||||||
|
INCS= einfo.h
|
||||||
|
VERSION_MAP= einfo.map
|
||||||
|
|
||||||
|
CPPFLAGS+= -I../includes
|
||||||
|
|
||||||
|
MK= ../../mk
|
||||||
|
include ${MK}/lib.mk
|
||||||
|
include ${MK}/cc.mk
|
||||||
|
include ${MK}/termcap.mk
|
@ -37,6 +37,19 @@
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
/* Although OpenRC requires C99, linking to us should not. */
|
||||||
|
#ifdef restrict
|
||||||
|
# define EINFO_RESTRICT restrict
|
||||||
|
#else
|
||||||
|
# ifdef __restrict
|
||||||
|
# define EINFO_RESTRICT __restrict
|
||||||
|
# else
|
||||||
|
# define EINFO_RESTRICT
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
/*! @brief Color types to use */
|
/*! @brief Color types to use */
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
@ -52,14 +65,14 @@ typedef enum
|
|||||||
const char *ecolor(ECOLOR);
|
const char *ecolor(ECOLOR);
|
||||||
|
|
||||||
/*! @brief Writes to syslog. */
|
/*! @brief Writes to syslog. */
|
||||||
void elog(int, const char *, ...) EINFO_PRINTF(2, 3);
|
void elog(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* @brief Display informational messages.
|
* @brief Display informational messages.
|
||||||
*
|
*
|
||||||
* The einfo family of functions display messages in a consistent manner
|
* The einfo family of functions display messages in a consistent manner
|
||||||
* Basically they prefix the message with " * ".
|
* across applications. Basically they prefix the message with
|
||||||
* If the terminal can handle color then we color the * based on
|
* " * ". If the terminal can handle color then we color the * based on
|
||||||
* the command used. Otherwise we are identical to the printf function.
|
* the command used. Otherwise we are identical to the printf function.
|
||||||
*
|
*
|
||||||
* - einfo - green
|
* - einfo - green
|
||||||
@ -70,22 +83,22 @@ void elog(int, const char *, ...) EINFO_PRINTF(2, 3);
|
|||||||
* The v suffix means only print if EINFO_VERBOSE is yes.
|
* The v suffix means only print if EINFO_VERBOSE is yes.
|
||||||
*/
|
*/
|
||||||
/*@{*/
|
/*@{*/
|
||||||
int einfon(const char *, ...) EINFO_PRINTF(1, 2);
|
int einfon(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int ewarnn(const char *, ...) EINFO_PRINTF(1, 2);
|
int ewarnn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int eerrorn(const char *, ...) EINFO_PRINTF(1, 2);
|
int eerrorn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int einfo(const char *, ...) EINFO_PRINTF(1, 2);
|
int einfo(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int ewarn(const char *, ...) EINFO_PRINTF(1, 2);
|
int ewarn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
void ewarnx(const char *, ...) EINFO_XPRINTF(1, 2);
|
void ewarnx(const char * __EINFO_RESTRICT, ...) EINFO_XPRINTF(1, 2);
|
||||||
int eerror(const char *, ...) EINFO_PRINTF(1, 2);
|
int eerror(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
void eerrorx(const char *, ...) EINFO_XPRINTF(1, 2);
|
void eerrorx(const char * __EINFO_RESTRICT, ...) EINFO_XPRINTF(1, 2);
|
||||||
|
|
||||||
int einfovn(const char *, ...) EINFO_PRINTF(1, 2);
|
int einfovn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int ewarnvn(const char * , ...) EINFO_PRINTF(1, 2);
|
int ewarnvn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int ebeginvn(const char *, ...) EINFO_PRINTF(1, 2);
|
int ebeginvn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int eendvn(int, const char *, ...) EINFO_PRINTF(2, 3);
|
int eendvn(int, const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
int ewendvn(int, const char *, ...) EINFO_PRINTF(2, 3);
|
int ewendvn(int, const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
int einfov(const char *, ...) EINFO_PRINTF(1, 2);
|
int einfov(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int ewarnv(const char *, ...) EINFO_PRINTF(1, 2);
|
int ewarnv(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @ingroup ebegin
|
/*! @ingroup ebegin
|
||||||
@ -93,8 +106,8 @@ int ewarnv(const char *, ...) EINFO_PRINTF(1, 2);
|
|||||||
*
|
*
|
||||||
* Similar to einfo, but we add ... to the end of the message */
|
* Similar to einfo, but we add ... to the end of the message */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
int ebeginv(const char *, ...) EINFO_PRINTF(1, 2);
|
int ebeginv(const char * EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
int ebegin(const char *, ...) EINFO_PRINTF(1, 2);
|
int ebegin(const char * EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @ingroup eend
|
/*! @ingroup eend
|
||||||
@ -106,12 +119,12 @@ int ebegin(const char *, ...) EINFO_PRINTF(1, 2);
|
|||||||
*
|
*
|
||||||
* ebracket allows you to specifiy the position, color and message */
|
* ebracket allows you to specifiy the position, color and message */
|
||||||
/*@{*/
|
/*@{*/
|
||||||
int eend(int, const char *, ...) EINFO_PRINTF(2, 3);
|
int eend(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
int ewend(int, const char *, ...) EINFO_PRINTF(2, 3);
|
int ewend(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
void ebracket(int, ECOLOR, const char *);
|
void ebracket(int, ECOLOR, const char * EINFO_RESTRICT);
|
||||||
|
|
||||||
int eendv(int, const char *, ...) EINFO_PRINTF(2, 3);
|
int eendv(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
int ewendv(int, const char *, ...) EINFO_PRINTF(2, 3);
|
int ewendv(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||||
/*@}*/
|
/*@}*/
|
||||||
|
|
||||||
/*! @ingroup eindent
|
/*! @ingroup eindent
|
||||||
@ -125,6 +138,7 @@ void eindentv(void);
|
|||||||
void eoutdentv(void);
|
void eoutdentv(void);
|
||||||
|
|
||||||
/*! @brief Prefix each einfo line with something */
|
/*! @brief Prefix each einfo line with something */
|
||||||
void eprefix(const char *);
|
void eprefix(const char * EINFO_RESTRICT);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
#endif
|
#endif
|
35
src/libeinfo/einfo.map
Normal file
35
src/libeinfo/einfo.map
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
EINFO_1.0 {
|
||||||
|
global:
|
||||||
|
ecolor;
|
||||||
|
elog;
|
||||||
|
einfon;
|
||||||
|
ewarnn;
|
||||||
|
eerrorn;
|
||||||
|
einfo;
|
||||||
|
ewarn;
|
||||||
|
ewarnx;
|
||||||
|
eerror;
|
||||||
|
eerrorx;
|
||||||
|
einfovn;
|
||||||
|
ewarnvn;
|
||||||
|
ebeginvn;
|
||||||
|
eendvn;
|
||||||
|
ewendvn;
|
||||||
|
einfov;
|
||||||
|
ewarnv;
|
||||||
|
ebeginv;
|
||||||
|
ebegin;
|
||||||
|
eend;
|
||||||
|
ewend;
|
||||||
|
ebracket;
|
||||||
|
eendv;
|
||||||
|
ewendv;
|
||||||
|
eindent;
|
||||||
|
eoutdent;
|
||||||
|
eindentv;
|
||||||
|
eoutdentv;
|
||||||
|
eprefix;
|
||||||
|
|
||||||
|
local:
|
||||||
|
*;
|
||||||
|
};
|
@ -52,6 +52,34 @@ const char libeinfo_copyright[] = "Copyright (c) 2007-2008 Roy Marples";
|
|||||||
|
|
||||||
#include "einfo.h"
|
#include "einfo.h"
|
||||||
#include "helpers.h"
|
#include "helpers.h"
|
||||||
|
#include "hidden-visibility.h"
|
||||||
|
|
||||||
|
hidden_proto(ecolor)
|
||||||
|
hidden_proto(ebegin)
|
||||||
|
hidden_proto(ebeginv)
|
||||||
|
hidden_proto(ebracket)
|
||||||
|
hidden_proto(eend)
|
||||||
|
hidden_proto(eendv)
|
||||||
|
hidden_proto(eerror)
|
||||||
|
hidden_proto(eerrorn)
|
||||||
|
hidden_proto(eerrorx)
|
||||||
|
hidden_proto(eindent)
|
||||||
|
hidden_proto(eindentv)
|
||||||
|
hidden_proto(einfo)
|
||||||
|
hidden_proto(einfon)
|
||||||
|
hidden_proto(einfov)
|
||||||
|
hidden_proto(einfovn)
|
||||||
|
hidden_proto(elog)
|
||||||
|
hidden_proto(eoutdent)
|
||||||
|
hidden_proto(eoutdentv)
|
||||||
|
hidden_proto(eprefix)
|
||||||
|
hidden_proto(ewarn)
|
||||||
|
hidden_proto(ewarnn)
|
||||||
|
hidden_proto(ewarnv)
|
||||||
|
hidden_proto(ewarnvn)
|
||||||
|
hidden_proto(ewarnx)
|
||||||
|
hidden_proto(ewend)
|
||||||
|
hidden_proto(ewendv)
|
||||||
|
|
||||||
/* Incase we cannot work out how many columns from ioctl, supply a default */
|
/* Incase we cannot work out how many columns from ioctl, supply a default */
|
||||||
#define DEFAULT_COLS 80
|
#define DEFAULT_COLS 80
|
||||||
@ -324,7 +352,7 @@ tgoto(const char *cap, int col, int line)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
colour_terminal(FILE *f)
|
colour_terminal(FILE * EINFO_RESTRICT f)
|
||||||
{
|
{
|
||||||
static int in_colour = -1;
|
static int in_colour = -1;
|
||||||
char *e, *ee, *end, *d, *p;
|
char *e, *ee, *end, *d, *p;
|
||||||
@ -471,7 +499,7 @@ colour_terminal(FILE *f)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
get_term_columns(FILE *stream)
|
get_term_columns(FILE * EINFO_RESTRICT stream)
|
||||||
{
|
{
|
||||||
struct winsize ws;
|
struct winsize ws;
|
||||||
char *env = getenv("COLUMNS");
|
char *env = getenv("COLUMNS");
|
||||||
@ -491,13 +519,14 @@ get_term_columns(FILE *stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
eprefix(const char *prefix)
|
eprefix(const char *EINFO_RESTRICT prefix)
|
||||||
{
|
{
|
||||||
_eprefix = prefix;
|
_eprefix = prefix;
|
||||||
}
|
}
|
||||||
|
hidden_def(eprefix)
|
||||||
|
|
||||||
static void EINFO_PRINTF(2, 0)
|
static void EINFO_PRINTF(2, 0)
|
||||||
elogv(int level, const char *fmt, va_list ap)
|
elogv(int level, const char *EINFO_RESTRICT fmt, va_list ap)
|
||||||
{
|
{
|
||||||
char *e = getenv("EINFO_LOG");
|
char *e = getenv("EINFO_LOG");
|
||||||
va_list apc;
|
va_list apc;
|
||||||
@ -513,7 +542,7 @@ elogv(int level, const char *fmt, va_list ap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
elog(int level, const char *fmt, ...)
|
elog(int level, const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@ -521,9 +550,10 @@ elog(int level, const char *fmt, ...)
|
|||||||
elogv(level, fmt, ap);
|
elogv(level, fmt, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
hidden_def(elog)
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_eindent(FILE *stream)
|
_eindent(FILE * EINFO_RESTRICT stream)
|
||||||
{
|
{
|
||||||
char *env = getenv("EINFO_INDENT");
|
char *env = getenv("EINFO_INDENT");
|
||||||
int amount = 0;
|
int amount = 0;
|
||||||
@ -547,7 +577,7 @@ _eindent(FILE *stream)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const char *
|
static const char *
|
||||||
_ecolor(FILE *f, ECOLOR color)
|
_ecolor(FILE * EINFO_RESTRICT f, ECOLOR color)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
@ -559,6 +589,7 @@ _ecolor(FILE *f, ECOLOR color)
|
|||||||
return ecolors_str[i];
|
return ecolors_str[i];
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
hidden_def(ecolor)
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
ecolor(ECOLOR color)
|
ecolor(ECOLOR color)
|
||||||
@ -584,7 +615,7 @@ ecolor(ECOLOR color)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int EINFO_PRINTF(3, 0)
|
static int EINFO_PRINTF(3, 0)
|
||||||
_einfo(FILE *f, ECOLOR color, const char *fmt, va_list va)
|
_einfo(FILE *f, ECOLOR color, const char *EINFO_RESTRICT fmt, va_list va)
|
||||||
{
|
{
|
||||||
int retval = 0;
|
int retval = 0;
|
||||||
char *last = getenv("EINFO_LASTCMD");
|
char *last = getenv("EINFO_LASTCMD");
|
||||||
@ -612,7 +643,7 @@ static int EINFO_PRINTF(3, 0)
|
|||||||
#define _eerrorvn(fmt, ap) _einfo(stderr, ECOLOR_BAD, fmt, ap)
|
#define _eerrorvn(fmt, ap) _einfo(stderr, ECOLOR_BAD, fmt, ap)
|
||||||
|
|
||||||
int
|
int
|
||||||
einfon(const char *fmt, ...)
|
einfon(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -625,9 +656,10 @@ einfon(const char *fmt, ...)
|
|||||||
LASTCMD("einfon");
|
LASTCMD("einfon");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(einfon)
|
||||||
|
|
||||||
int
|
int
|
||||||
ewarnn(const char *fmt, ...)
|
ewarnn(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -640,9 +672,10 @@ ewarnn(const char *fmt, ...)
|
|||||||
LASTCMD("ewarnn");
|
LASTCMD("ewarnn");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ewarnn)
|
||||||
|
|
||||||
int
|
int
|
||||||
eerrorn(const char *fmt, ...)
|
eerrorn(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -655,9 +688,10 @@ eerrorn(const char *fmt, ...)
|
|||||||
LASTCMD("errorn");
|
LASTCMD("errorn");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(eerrorn)
|
||||||
|
|
||||||
int
|
int
|
||||||
einfo(const char *fmt, ...)
|
einfo(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -671,9 +705,10 @@ einfo(const char *fmt, ...)
|
|||||||
LASTCMD("einfo");
|
LASTCMD("einfo");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(einfo)
|
||||||
|
|
||||||
int
|
int
|
||||||
ewarn(const char *fmt, ...)
|
ewarn(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -688,9 +723,10 @@ ewarn(const char *fmt, ...)
|
|||||||
LASTCMD("ewarn");
|
LASTCMD("ewarn");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ewarn)
|
||||||
|
|
||||||
void
|
void
|
||||||
ewarnx(const char *fmt, ...)
|
ewarnx(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -704,9 +740,10 @@ ewarnx(const char *fmt, ...)
|
|||||||
}
|
}
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
hidden_def(ewarnx)
|
||||||
|
|
||||||
int
|
int
|
||||||
eerror(const char *fmt, ...)
|
eerror(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -721,9 +758,10 @@ eerror(const char *fmt, ...)
|
|||||||
LASTCMD("eerror");
|
LASTCMD("eerror");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(eerror)
|
||||||
|
|
||||||
void
|
void
|
||||||
eerrorx(const char *fmt, ...)
|
eerrorx(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@ -736,9 +774,10 @@ eerrorx(const char *fmt, ...)
|
|||||||
}
|
}
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
hidden_def(eerrorx)
|
||||||
|
|
||||||
int
|
int
|
||||||
ebegin(const char *fmt, ...)
|
ebegin(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -754,9 +793,10 @@ ebegin(const char *fmt, ...)
|
|||||||
LASTCMD("ebegin");
|
LASTCMD("ebegin");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ebegin)
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_eend(FILE *fp, int col, ECOLOR color, const char *msg)
|
_eend(FILE * EINFO_RESTRICT fp, int col, ECOLOR color, const char *msg)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int cols;
|
int cols;
|
||||||
@ -792,7 +832,7 @@ _eend(FILE *fp, int col, ECOLOR color, const char *msg)
|
|||||||
|
|
||||||
static int EINFO_PRINTF(3, 0)
|
static int EINFO_PRINTF(3, 0)
|
||||||
_do_eend(const char *cmd, int retval,
|
_do_eend(const char *cmd, int retval,
|
||||||
const char *fmt, va_list ap)
|
const char *EINFO_RESTRICT fmt, va_list ap)
|
||||||
{
|
{
|
||||||
int col = 0;
|
int col = 0;
|
||||||
FILE *fp = stdout;
|
FILE *fp = stdout;
|
||||||
@ -815,7 +855,7 @@ _do_eend(const char *cmd, int retval,
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
eend(int retval, const char *fmt, ...)
|
eend(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@ -827,9 +867,10 @@ eend(int retval, const char *fmt, ...)
|
|||||||
LASTCMD("eend");
|
LASTCMD("eend");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(eend)
|
||||||
|
|
||||||
int
|
int
|
||||||
ewend(int retval, const char *fmt, ...)
|
ewend(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@ -841,12 +882,14 @@ ewend(int retval, const char *fmt, ...)
|
|||||||
LASTCMD("ewend");
|
LASTCMD("ewend");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ewend)
|
||||||
|
|
||||||
void
|
void
|
||||||
ebracket(int col, ECOLOR color, const char *msg)
|
ebracket(int col, ECOLOR color, const char *msg)
|
||||||
{
|
{
|
||||||
_eend(stdout, col, color, msg);
|
_eend(stdout, col, color, msg);
|
||||||
}
|
}
|
||||||
|
hidden_def(ebracket)
|
||||||
|
|
||||||
void
|
void
|
||||||
eindent(void)
|
eindent(void)
|
||||||
@ -867,6 +910,7 @@ eindent(void)
|
|||||||
snprintf(num, 10, "%08d", amount);
|
snprintf(num, 10, "%08d", amount);
|
||||||
setenv("EINFO_INDENT", num, 1);
|
setenv("EINFO_INDENT", num, 1);
|
||||||
}
|
}
|
||||||
|
hidden_def(eindent)
|
||||||
|
|
||||||
void eoutdent(void)
|
void eoutdent(void)
|
||||||
{
|
{
|
||||||
@ -891,9 +935,10 @@ void eoutdent(void)
|
|||||||
}
|
}
|
||||||
errno = serrno;
|
errno = serrno;
|
||||||
}
|
}
|
||||||
|
hidden_def(eoutdent)
|
||||||
|
|
||||||
int
|
int
|
||||||
einfovn(const char *fmt, ...)
|
einfovn(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -906,9 +951,10 @@ einfovn(const char *fmt, ...)
|
|||||||
LASTCMD("einfovn");
|
LASTCMD("einfovn");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(einfovn)
|
||||||
|
|
||||||
int
|
int
|
||||||
ewarnvn(const char *fmt, ...)
|
ewarnvn(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -921,9 +967,10 @@ ewarnvn(const char *fmt, ...)
|
|||||||
LASTCMD("ewarnvn");
|
LASTCMD("ewarnvn");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ewarnvn)
|
||||||
|
|
||||||
int
|
int
|
||||||
einfov(const char *fmt, ...)
|
einfov(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -937,9 +984,10 @@ einfov(const char *fmt, ...)
|
|||||||
LASTCMD("einfov");
|
LASTCMD("einfov");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(einfov)
|
||||||
|
|
||||||
int
|
int
|
||||||
ewarnv(const char *fmt, ...)
|
ewarnv(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -953,9 +1001,10 @@ ewarnv(const char *fmt, ...)
|
|||||||
LASTCMD("ewarnv");
|
LASTCMD("ewarnv");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ewarnv)
|
||||||
|
|
||||||
int
|
int
|
||||||
ebeginv(const char *fmt, ...)
|
ebeginv(const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
@ -972,9 +1021,10 @@ ebeginv(const char *fmt, ...)
|
|||||||
LASTCMD("ebeginv");
|
LASTCMD("ebeginv");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ebeginv)
|
||||||
|
|
||||||
int
|
int
|
||||||
eendv(int retval, const char *fmt, ...)
|
eendv(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@ -986,9 +1036,10 @@ eendv(int retval, const char *fmt, ...)
|
|||||||
LASTCMD("eendv");
|
LASTCMD("eendv");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(eendv)
|
||||||
|
|
||||||
int
|
int
|
||||||
ewendv(int retval, const char *fmt, ...)
|
ewendv(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
@ -1000,6 +1051,7 @@ ewendv(int retval, const char *fmt, ...)
|
|||||||
LASTCMD("ewendv");
|
LASTCMD("ewendv");
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
hidden_def(ewendv)
|
||||||
|
|
||||||
void
|
void
|
||||||
eindentv(void)
|
eindentv(void)
|
||||||
@ -1007,6 +1059,7 @@ eindentv(void)
|
|||||||
if (is_verbose())
|
if (is_verbose())
|
||||||
eindent();
|
eindent();
|
||||||
}
|
}
|
||||||
|
hidden_def(eindentv)
|
||||||
|
|
||||||
void
|
void
|
||||||
eoutdentv(void)
|
eoutdentv(void)
|
||||||
@ -1014,3 +1067,4 @@ eoutdentv(void)
|
|||||||
if (is_verbose())
|
if (is_verbose())
|
||||||
eoutdent();
|
eoutdent();
|
||||||
}
|
}
|
||||||
|
hidden_def(eoutdentv)
|
@ -1,21 +1,8 @@
|
|||||||
PROG= rc
|
PROG= rc
|
||||||
SRCS= \
|
SRCS= checkpath.c fstabinfo.c mountinfo.c start-stop-daemon.c \
|
||||||
checkpath.c \
|
rc-applets.c rc-depend.c rc-logger.c \
|
||||||
einfo.c \
|
rc-misc.c rc-plugin.c rc-service.c rc-status.c rc-update.c \
|
||||||
fstabinfo.c \
|
runscript.c rc.c swclock.c
|
||||||
mountinfo.c \
|
|
||||||
rc-applets.c \
|
|
||||||
rc-depend.c \
|
|
||||||
rc-logger.c \
|
|
||||||
rc-misc.c \
|
|
||||||
rc-plugin.c \
|
|
||||||
rc-service.c \
|
|
||||||
rc-status.c \
|
|
||||||
rc-update.c \
|
|
||||||
rc.c \
|
|
||||||
runscript.c \
|
|
||||||
start-stop-daemon.c \
|
|
||||||
swclock.c
|
|
||||||
|
|
||||||
CLEANFILES= version.h
|
CLEANFILES= version.h
|
||||||
|
|
||||||
@ -43,9 +30,9 @@ RC_SBINLINKS= mark_service_starting mark_service_started \
|
|||||||
ALL_LINKS= ${BINLINKS} ${SBINLINKS} ${RC_BINLINKS} ${RC_SBINLINKS}
|
ALL_LINKS= ${BINLINKS} ${SBINLINKS} ${RC_BINLINKS} ${RC_SBINLINKS}
|
||||||
CLEANFILES+= ${ALL_LINKS}
|
CLEANFILES+= ${ALL_LINKS}
|
||||||
|
|
||||||
CPPFLAGS+= -I../includes -I../librc
|
CPPFLAGS+= -I../includes -I../librc -I../libeinfo
|
||||||
LDFLAGS+= -L../librc
|
LDFLAGS+= -L../librc -L../libeinfo
|
||||||
LDADD+= -lutil -lrc
|
LDADD+= -lutil -lrc -leinfo
|
||||||
|
|
||||||
include ../../Makefile.inc
|
include ../../Makefile.inc
|
||||||
MK= ../../mk
|
MK= ../../mk
|
||||||
|
1
src/test/einfo.data.list
Normal file
1
src/test/einfo.data.list
Normal file
@ -0,0 +1 @@
|
|||||||
|
EINFO_1.0
|
52
src/test/einfo.funcs.list
Normal file
52
src/test/einfo.funcs.list
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
ebegin
|
||||||
|
ebegin@@EINFO_1.0
|
||||||
|
ebeginv
|
||||||
|
ebeginv@@EINFO_1.0
|
||||||
|
ebracket
|
||||||
|
ebracket@@EINFO_1.0
|
||||||
|
ecolor
|
||||||
|
ecolor@@EINFO_1.0
|
||||||
|
eend
|
||||||
|
eend@@EINFO_1.0
|
||||||
|
eendv
|
||||||
|
eendv@@EINFO_1.0
|
||||||
|
eerror
|
||||||
|
eerror@@EINFO_1.0
|
||||||
|
eerrorn
|
||||||
|
eerrorn@@EINFO_1.0
|
||||||
|
eerrorx
|
||||||
|
eerrorx@@EINFO_1.0
|
||||||
|
eindent
|
||||||
|
eindent@@EINFO_1.0
|
||||||
|
eindentv
|
||||||
|
eindentv@@EINFO_1.0
|
||||||
|
einfo
|
||||||
|
einfo@@EINFO_1.0
|
||||||
|
einfon
|
||||||
|
einfon@@EINFO_1.0
|
||||||
|
einfov
|
||||||
|
einfov@@EINFO_1.0
|
||||||
|
einfovn
|
||||||
|
einfovn@@EINFO_1.0
|
||||||
|
elog
|
||||||
|
elog@@EINFO_1.0
|
||||||
|
eoutdent
|
||||||
|
eoutdent@@EINFO_1.0
|
||||||
|
eoutdentv
|
||||||
|
eoutdentv@@EINFO_1.0
|
||||||
|
eprefix
|
||||||
|
eprefix@@EINFO_1.0
|
||||||
|
ewarn
|
||||||
|
ewarn@@EINFO_1.0
|
||||||
|
ewarnn
|
||||||
|
ewarnn@@EINFO_1.0
|
||||||
|
ewarnv
|
||||||
|
ewarnv@@EINFO_1.0
|
||||||
|
ewarnvn
|
||||||
|
ewarnvn@@EINFO_1.0
|
||||||
|
ewarnx
|
||||||
|
ewarnx@@EINFO_1.0
|
||||||
|
ewend
|
||||||
|
ewend@@EINFO_1.0
|
||||||
|
ewendv
|
||||||
|
ewendv@@EINFO_1.0
|
@ -3,6 +3,8 @@
|
|||||||
top_srcdir=${top_srcdir:-../..}
|
top_srcdir=${top_srcdir:-../..}
|
||||||
. ${top_srcdir}/test/setup_env.sh
|
. ${top_srcdir}/test/setup_env.sh
|
||||||
|
|
||||||
|
libeinfo_srcdir="${srcdir}/../libeinfo"
|
||||||
|
libeinfo_builddir="${builddir}/../libeinfo"
|
||||||
librc_srcdir="${srcdir}/../librc"
|
librc_srcdir="${srcdir}/../librc"
|
||||||
librc_builddir="${builddir}/../librc"
|
librc_builddir="${builddir}/../librc"
|
||||||
rc_srcdir="${srcdir}/../rc"
|
rc_srcdir="${srcdir}/../rc"
|
||||||
@ -18,6 +20,22 @@ checkit() {
|
|||||||
|
|
||||||
ret=0
|
ret=0
|
||||||
|
|
||||||
|
ebegin "Checking exported symbols in libeinfo.so (data)"
|
||||||
|
checkit einfo.data $(
|
||||||
|
readelf -Ws ${libeinfo_builddir}/libeinfo.so \
|
||||||
|
| awk '$4 == "OBJECT" && $5 == "GLOBAL" && $7 != "UND" {print $NF}' \
|
||||||
|
| LC_ALL=C sort -u
|
||||||
|
)
|
||||||
|
|
||||||
|
ebegin "Checking exported symbols in libeinfo.so (functions)"
|
||||||
|
checkit einfo.funcs $(
|
||||||
|
readelf -Ws ${libeinfo_builddir}/libeinfo.so \
|
||||||
|
| awk '$4 == "FUNC" && $5 == "GLOBAL" && $7 != "UND" {print $NF}' \
|
||||||
|
| LC_ALL=C sort -u \
|
||||||
|
| egrep -v \
|
||||||
|
-e '^_(init|fini)$'
|
||||||
|
)
|
||||||
|
|
||||||
ebegin "Checking exported symbols in librc.so (data)"
|
ebegin "Checking exported symbols in librc.so (data)"
|
||||||
checkit rc.data $(
|
checkit rc.data $(
|
||||||
readelf -Ws ${librc_builddir}/librc.so \
|
readelf -Ws ${librc_builddir}/librc.so \
|
||||||
|
Loading…
Reference in New Issue
Block a user