Hide non-standard syslog API.

The definitions are still available on LP32 for binary compatibility, but
they're gone on LP64, and the declarations are gone everywhere.

We should probably just make syslog(3) log to the regular Android log,
but that's a job for another day.

Bug: 11156955
Change-Id: I74a98c92f7922ea733549ec6d37c6fa8b7014860
This commit is contained in:
Elliott Hughes 2014-06-09 17:16:19 -07:00
parent 87d4233c72
commit a382a792a4
2 changed files with 37 additions and 35 deletions

View File

@ -25,6 +25,7 @@
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _SYSLOG_H
#define _SYSLOG_H
@ -34,7 +35,6 @@
__BEGIN_DECLS
/* Alert levels */
#define LOG_EMERG 0
#define LOG_ALERT 1
#define LOG_CRIT 2
@ -47,8 +47,6 @@ __BEGIN_DECLS
#define LOG_PRIMASK 7
#define LOG_PRI(x) ((x) & LOG_PRIMASK)
/* Facilities; not actually used */
#define LOG_KERN 0000
#define LOG_USER 0010
#define LOG_MAIL 0020
@ -73,30 +71,15 @@ __BEGIN_DECLS
#define LOG_FACMASK 01770
#define LOG_FAC(x) (((x) >> 3) & (LOG_FACMASK >> 3))
#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
#define LOG_MASK(pri) (1 << (pri))
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1)
/* openlog() flags; only LOG_PID and LOG_PERROR supported */
#define LOG_PID 0x01 /* include pid with message */
#define LOG_CONS 0x02 /* write to console on logger error */
#define LOG_ODELAY 0x04 /* delay connection until syslog() */
#define LOG_NDELAY 0x08 /* open connection immediately */
#define LOG_NOWAIT 0x10 /* wait for child processes (unused on linux) */
#define LOG_PERROR 0x20 /* additional logging to stderr */
/* BIONIC: the following definitions are from OpenBSD's sys/syslog.h
*/
struct syslog_data {
int log_file;
int connected;
int opened;
int log_stat;
const char *log_tag;
int log_fac;
int log_mask;
};
#define SYSLOG_DATA_INIT {-1, 0, 0, 0, (const char *)0, LOG_USER, 0xff}
#define LOG_PID 0x01 /* include pid with message */
#define LOG_CONS 0x02 /* write to console on logger error */
#define LOG_ODELAY 0x04 /* delay connection until syslog() */
#define LOG_NDELAY 0x08 /* open connection immediately */
#define LOG_NOWAIT 0x10 /* wait for child processes (unused on linux) */
#define LOG_PERROR 0x20 /* additional logging to stderr */
#define _PATH_LOG "/dev/syslog"
@ -105,11 +88,6 @@ extern void openlog(const char *, int, int);
extern int setlogmask(int);
extern void syslog(int, const char *, ...) __printflike(2, 3);
extern void vsyslog(int, const char *, va_list) __printflike(2, 0);
extern void closelog_r(struct syslog_data *);
extern void openlog_r(const char *, int, int, struct syslog_data *);
extern int setlogmask_r(int, struct syslog_data *);
extern void syslog_r(int, struct syslog_data *, const char *, ...) __printflike(3, 4);
extern void vsyslog_r(int, struct syslog_data *, const char *, va_list) __printflike(3, 0);
__END_DECLS

View File

@ -44,6 +44,18 @@
#include <unistd.h>
#include <stdarg.h>
struct syslog_data {
int log_file;
int connected;
int opened;
int log_stat;
const char* log_tag;
int log_fac;
int log_mask;
};
#define SYSLOG_DATA_INIT {-1, 0, 0, 0, (const char *)0, LOG_USER, 0xff}
static struct syslog_data sdata = SYSLOG_DATA_INIT;
extern const char *__progname; /* Program name, from crt0. */
@ -51,6 +63,18 @@ extern const char *__progname; /* Program name, from crt0. */
static void disconnectlog_r(struct syslog_data *); /* disconnect from syslogd */
static void connectlog_r(struct syslog_data *); /* (re)connect to syslogd */
#if defined(__LP64__)
#define SYSLOG_R_VISIBILITY static
#else
#define SYSLOG_R_VISIBILITY extern
#endif
SYSLOG_R_VISIBILITY void closelog_r(struct syslog_data*);
SYSLOG_R_VISIBILITY void openlog_r(const char*, int, int, struct syslog_data*);
SYSLOG_R_VISIBILITY int setlogmask_r(int, struct syslog_data*);
SYSLOG_R_VISIBILITY void syslog_r(int, struct syslog_data*, const char*, ...) __printflike(3, 4);
SYSLOG_R_VISIBILITY void vsyslog_r(int, struct syslog_data*, const char*, va_list) __printflike(3, 0);
/*
* syslog, vsyslog --
* print message on log file; output is intended for syslogd(8).
@ -157,7 +181,7 @@ vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
prlen = snprintf(p, tbuf_left, "<%d>", pri);
DEC();
/*
/*
* syslogd will expand time automagically for reentrant case, and
* for normal case, just do like before
*/
@ -196,10 +220,10 @@ vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
++fmt;
if (data == &sdata) {
prlen = snprintf(t, fmt_left, "%s",
strerror(saved_errno));
strerror(saved_errno));
} else {
prlen = snprintf(t, fmt_left, "Error %d",
saved_errno);
saved_errno);
}
if (prlen < 0)
prlen = 0;
@ -269,7 +293,7 @@ vsyslog_r(int pri, struct syslog_data *data, const char *fmt, va_list ap)
if (error == -1 && (data->log_stat & LOG_CONS) &&
(fd = open(_PATH_CONSOLE, O_WRONLY|O_NONBLOCK, 0)) >= 0) {
struct iovec iov[2];
p = strchr(tbuf, '>') + 1;
iov[0].iov_base = p;
iov[0].iov_len = cnt - (p - tbuf);