mirror of https://github.com/OpenRC/openrc.git
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_runlevel.3 rc_service.3 rc_stringlist.3
|
||||
MAN8= rc-service.8 rc-status.8 rc-update.8 rc.8 runscript.8 \
|
||||
|
|
|
@ -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
|
||||
SRCS= openrc.pc.in
|
||||
INC= openrc.pc
|
||||
SRCS= einfo.pc.in openrc.pc.in
|
||||
INC= einfo.pc openrc.pc
|
||||
|
||||
.DEFAULT:
|
||||
${SED} -n -e 's/^VERSION=[[:space:]]*\([^[:space:]]*\).*/#define VERSION "\1${GITVER}\"/p' ../../Makefile > version.h
|
||||
|
|
|
@ -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>
|
||||
# Released under the 2-clause BSD license.
|
||||
|
||||
SUBDIR= test librc rc
|
||||
SUBDIR= test libeinfo librc rc
|
||||
|
||||
ifeq (${MKTOOLS},yes)
|
||||
SUBDIR+= tools
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
libeinfo.so.1
|
|
@ -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 <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 */
|
||||
typedef enum
|
||||
{
|
||||
|
@ -52,14 +65,14 @@ typedef enum
|
|||
const char *ecolor(ECOLOR);
|
||||
|
||||
/*! @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.
|
||||
*
|
||||
* The einfo family of functions display messages in a consistent manner
|
||||
* Basically they prefix the message with " * ".
|
||||
* If the terminal can handle color then we color the * based on
|
||||
* across applications. Basically they prefix the message with
|
||||
* " * ". If the terminal can handle color then we color the * based on
|
||||
* the command used. Otherwise we are identical to the printf function.
|
||||
*
|
||||
* - 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.
|
||||
*/
|
||||
/*@{*/
|
||||
int einfon(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarnn(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int eerrorn(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int einfo(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarn(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
void ewarnx(const char *, ...) EINFO_XPRINTF(1, 2);
|
||||
int eerror(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
void eerrorx(const char *, ...) EINFO_XPRINTF(1, 2);
|
||||
int einfon(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarnn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int eerrorn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int einfo(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
void ewarnx(const char * __EINFO_RESTRICT, ...) EINFO_XPRINTF(1, 2);
|
||||
int eerror(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
void eerrorx(const char * __EINFO_RESTRICT, ...) EINFO_XPRINTF(1, 2);
|
||||
|
||||
int einfovn(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarnvn(const char * , ...) EINFO_PRINTF(1, 2);
|
||||
int ebeginvn(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int eendvn(int, const char *, ...) EINFO_PRINTF(2, 3);
|
||||
int ewendvn(int, const char *, ...) EINFO_PRINTF(2, 3);
|
||||
int einfov(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarnv(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int einfovn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarnvn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int ebeginvn(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int eendvn(int, const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||
int ewendvn(int, const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||
int einfov(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int ewarnv(const char * __EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
/*@}*/
|
||||
|
||||
/*! @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 */
|
||||
/*@{*/
|
||||
int ebeginv(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int ebegin(const char *, ...) EINFO_PRINTF(1, 2);
|
||||
int ebeginv(const char * EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
int ebegin(const char * EINFO_RESTRICT, ...) EINFO_PRINTF(1, 2);
|
||||
/*@}*/
|
||||
|
||||
/*! @ingroup eend
|
||||
|
@ -106,12 +119,12 @@ int ebegin(const char *, ...) EINFO_PRINTF(1, 2);
|
|||
*
|
||||
* ebracket allows you to specifiy the position, color and message */
|
||||
/*@{*/
|
||||
int eend(int, const char *, ...) EINFO_PRINTF(2, 3);
|
||||
int ewend(int, const char *, ...) EINFO_PRINTF(2, 3);
|
||||
void ebracket(int, ECOLOR, const char *);
|
||||
int eend(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||
int ewend(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||
void ebracket(int, ECOLOR, const char * EINFO_RESTRICT);
|
||||
|
||||
int eendv(int, const char *, ...) EINFO_PRINTF(2, 3);
|
||||
int ewendv(int, const char *, ...) EINFO_PRINTF(2, 3);
|
||||
int eendv(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||
int ewendv(int, const char * EINFO_RESTRICT, ...) EINFO_PRINTF(2, 3);
|
||||
/*@}*/
|
||||
|
||||
/*! @ingroup eindent
|
||||
|
@ -125,6 +138,7 @@ void eindentv(void);
|
|||
void eoutdentv(void);
|
||||
|
||||
/*! @brief Prefix each einfo line with something */
|
||||
void eprefix(const char *);
|
||||
void eprefix(const char * EINFO_RESTRICT);
|
||||
|
||||
__END_DECLS
|
||||
#endif
|
|
@ -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 "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 */
|
||||
#define DEFAULT_COLS 80
|
||||
|
@ -324,7 +352,7 @@ tgoto(const char *cap, int col, int line)
|
|||
#endif
|
||||
|
||||
static bool
|
||||
colour_terminal(FILE *f)
|
||||
colour_terminal(FILE * EINFO_RESTRICT f)
|
||||
{
|
||||
static int in_colour = -1;
|
||||
char *e, *ee, *end, *d, *p;
|
||||
|
@ -471,7 +499,7 @@ colour_terminal(FILE *f)
|
|||
}
|
||||
|
||||
static int
|
||||
get_term_columns(FILE *stream)
|
||||
get_term_columns(FILE * EINFO_RESTRICT stream)
|
||||
{
|
||||
struct winsize ws;
|
||||
char *env = getenv("COLUMNS");
|
||||
|
@ -491,13 +519,14 @@ get_term_columns(FILE *stream)
|
|||
}
|
||||
|
||||
void
|
||||
eprefix(const char *prefix)
|
||||
eprefix(const char *EINFO_RESTRICT prefix)
|
||||
{
|
||||
_eprefix = prefix;
|
||||
}
|
||||
hidden_def(eprefix)
|
||||
|
||||
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");
|
||||
va_list apc;
|
||||
|
@ -513,7 +542,7 @@ elogv(int level, const char *fmt, va_list ap)
|
|||
}
|
||||
|
||||
void
|
||||
elog(int level, const char *fmt, ...)
|
||||
elog(int level, const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -521,9 +550,10 @@ elog(int level, const char *fmt, ...)
|
|||
elogv(level, fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
hidden_def(elog)
|
||||
|
||||
static int
|
||||
_eindent(FILE *stream)
|
||||
_eindent(FILE * EINFO_RESTRICT stream)
|
||||
{
|
||||
char *env = getenv("EINFO_INDENT");
|
||||
int amount = 0;
|
||||
|
@ -547,7 +577,7 @@ _eindent(FILE *stream)
|
|||
}
|
||||
|
||||
static const char *
|
||||
_ecolor(FILE *f, ECOLOR color)
|
||||
_ecolor(FILE * EINFO_RESTRICT f, ECOLOR color)
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
|
@ -559,6 +589,7 @@ _ecolor(FILE *f, ECOLOR color)
|
|||
return ecolors_str[i];
|
||||
return "";
|
||||
}
|
||||
hidden_def(ecolor)
|
||||
|
||||
const char *
|
||||
ecolor(ECOLOR color)
|
||||
|
@ -584,7 +615,7 @@ ecolor(ECOLOR color)
|
|||
}
|
||||
|
||||
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;
|
||||
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)
|
||||
|
||||
int
|
||||
einfon(const char *fmt, ...)
|
||||
einfon(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -625,9 +656,10 @@ einfon(const char *fmt, ...)
|
|||
LASTCMD("einfon");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(einfon)
|
||||
|
||||
int
|
||||
ewarnn(const char *fmt, ...)
|
||||
ewarnn(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -640,9 +672,10 @@ ewarnn(const char *fmt, ...)
|
|||
LASTCMD("ewarnn");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ewarnn)
|
||||
|
||||
int
|
||||
eerrorn(const char *fmt, ...)
|
||||
eerrorn(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -655,9 +688,10 @@ eerrorn(const char *fmt, ...)
|
|||
LASTCMD("errorn");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(eerrorn)
|
||||
|
||||
int
|
||||
einfo(const char *fmt, ...)
|
||||
einfo(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -671,9 +705,10 @@ einfo(const char *fmt, ...)
|
|||
LASTCMD("einfo");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(einfo)
|
||||
|
||||
int
|
||||
ewarn(const char *fmt, ...)
|
||||
ewarn(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -688,9 +723,10 @@ ewarn(const char *fmt, ...)
|
|||
LASTCMD("ewarn");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ewarn)
|
||||
|
||||
void
|
||||
ewarnx(const char *fmt, ...)
|
||||
ewarnx(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -704,9 +740,10 @@ ewarnx(const char *fmt, ...)
|
|||
}
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
hidden_def(ewarnx)
|
||||
|
||||
int
|
||||
eerror(const char *fmt, ...)
|
||||
eerror(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -721,9 +758,10 @@ eerror(const char *fmt, ...)
|
|||
LASTCMD("eerror");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(eerror)
|
||||
|
||||
void
|
||||
eerrorx(const char *fmt, ...)
|
||||
eerrorx(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -736,9 +774,10 @@ eerrorx(const char *fmt, ...)
|
|||
}
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
hidden_def(eerrorx)
|
||||
|
||||
int
|
||||
ebegin(const char *fmt, ...)
|
||||
ebegin(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -754,9 +793,10 @@ ebegin(const char *fmt, ...)
|
|||
LASTCMD("ebegin");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ebegin)
|
||||
|
||||
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 cols;
|
||||
|
@ -792,7 +832,7 @@ _eend(FILE *fp, int col, ECOLOR color, const char *msg)
|
|||
|
||||
static int EINFO_PRINTF(3, 0)
|
||||
_do_eend(const char *cmd, int retval,
|
||||
const char *fmt, va_list ap)
|
||||
const char *EINFO_RESTRICT fmt, va_list ap)
|
||||
{
|
||||
int col = 0;
|
||||
FILE *fp = stdout;
|
||||
|
@ -815,7 +855,7 @@ _do_eend(const char *cmd, int retval,
|
|||
}
|
||||
|
||||
int
|
||||
eend(int retval, const char *fmt, ...)
|
||||
eend(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -827,9 +867,10 @@ eend(int retval, const char *fmt, ...)
|
|||
LASTCMD("eend");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(eend)
|
||||
|
||||
int
|
||||
ewend(int retval, const char *fmt, ...)
|
||||
ewend(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -841,12 +882,14 @@ ewend(int retval, const char *fmt, ...)
|
|||
LASTCMD("ewend");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ewend)
|
||||
|
||||
void
|
||||
ebracket(int col, ECOLOR color, const char *msg)
|
||||
{
|
||||
_eend(stdout, col, color, msg);
|
||||
}
|
||||
hidden_def(ebracket)
|
||||
|
||||
void
|
||||
eindent(void)
|
||||
|
@ -867,6 +910,7 @@ eindent(void)
|
|||
snprintf(num, 10, "%08d", amount);
|
||||
setenv("EINFO_INDENT", num, 1);
|
||||
}
|
||||
hidden_def(eindent)
|
||||
|
||||
void eoutdent(void)
|
||||
{
|
||||
|
@ -891,9 +935,10 @@ void eoutdent(void)
|
|||
}
|
||||
errno = serrno;
|
||||
}
|
||||
hidden_def(eoutdent)
|
||||
|
||||
int
|
||||
einfovn(const char *fmt, ...)
|
||||
einfovn(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -906,9 +951,10 @@ einfovn(const char *fmt, ...)
|
|||
LASTCMD("einfovn");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(einfovn)
|
||||
|
||||
int
|
||||
ewarnvn(const char *fmt, ...)
|
||||
ewarnvn(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -921,9 +967,10 @@ ewarnvn(const char *fmt, ...)
|
|||
LASTCMD("ewarnvn");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ewarnvn)
|
||||
|
||||
int
|
||||
einfov(const char *fmt, ...)
|
||||
einfov(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -937,9 +984,10 @@ einfov(const char *fmt, ...)
|
|||
LASTCMD("einfov");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(einfov)
|
||||
|
||||
int
|
||||
ewarnv(const char *fmt, ...)
|
||||
ewarnv(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -953,9 +1001,10 @@ ewarnv(const char *fmt, ...)
|
|||
LASTCMD("ewarnv");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ewarnv)
|
||||
|
||||
int
|
||||
ebeginv(const char *fmt, ...)
|
||||
ebeginv(const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
int retval;
|
||||
va_list ap;
|
||||
|
@ -972,9 +1021,10 @@ ebeginv(const char *fmt, ...)
|
|||
LASTCMD("ebeginv");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ebeginv)
|
||||
|
||||
int
|
||||
eendv(int retval, const char *fmt, ...)
|
||||
eendv(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -986,9 +1036,10 @@ eendv(int retval, const char *fmt, ...)
|
|||
LASTCMD("eendv");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(eendv)
|
||||
|
||||
int
|
||||
ewendv(int retval, const char *fmt, ...)
|
||||
ewendv(int retval, const char *EINFO_RESTRICT fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
|
@ -1000,6 +1051,7 @@ ewendv(int retval, const char *fmt, ...)
|
|||
LASTCMD("ewendv");
|
||||
return retval;
|
||||
}
|
||||
hidden_def(ewendv)
|
||||
|
||||
void
|
||||
eindentv(void)
|
||||
|
@ -1007,6 +1059,7 @@ eindentv(void)
|
|||
if (is_verbose())
|
||||
eindent();
|
||||
}
|
||||
hidden_def(eindentv)
|
||||
|
||||
void
|
||||
eoutdentv(void)
|
||||
|
@ -1014,3 +1067,4 @@ eoutdentv(void)
|
|||
if (is_verbose())
|
||||
eoutdent();
|
||||
}
|
||||
hidden_def(eoutdentv)
|
|
@ -1,21 +1,8 @@
|
|||
PROG= rc
|
||||
SRCS= \
|
||||
checkpath.c \
|
||||
einfo.c \
|
||||
fstabinfo.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
|
||||
SRCS= checkpath.c fstabinfo.c mountinfo.c start-stop-daemon.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 \
|
||||
runscript.c rc.c swclock.c
|
||||
|
||||
CLEANFILES= version.h
|
||||
|
||||
|
@ -43,9 +30,9 @@ RC_SBINLINKS= mark_service_starting mark_service_started \
|
|||
ALL_LINKS= ${BINLINKS} ${SBINLINKS} ${RC_BINLINKS} ${RC_SBINLINKS}
|
||||
CLEANFILES+= ${ALL_LINKS}
|
||||
|
||||
CPPFLAGS+= -I../includes -I../librc
|
||||
LDFLAGS+= -L../librc
|
||||
LDADD+= -lutil -lrc
|
||||
CPPFLAGS+= -I../includes -I../librc -I../libeinfo
|
||||
LDFLAGS+= -L../librc -L../libeinfo
|
||||
LDADD+= -lutil -lrc -leinfo
|
||||
|
||||
include ../../Makefile.inc
|
||||
MK= ../../mk
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
EINFO_1.0
|
|
@ -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}/test/setup_env.sh
|
||||
|
||||
libeinfo_srcdir="${srcdir}/../libeinfo"
|
||||
libeinfo_builddir="${builddir}/../libeinfo"
|
||||
librc_srcdir="${srcdir}/../librc"
|
||||
librc_builddir="${builddir}/../librc"
|
||||
rc_srcdir="${srcdir}/../rc"
|
||||
|
@ -18,6 +20,22 @@ checkit() {
|
|||
|
||||
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)"
|
||||
checkit rc.data $(
|
||||
readelf -Ws ${librc_builddir}/librc.so \
|
||||
|
|
Loading…
Reference in New Issue