[cpp-log4shib] 02/06: Imported Upstream version 1.0.7
Scott Cantor
cantor.2 at osu.edu
Tue Oct 19 16:13:47 UTC 2021
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to annotated tag debian/1.0.7-1
in repository cpp-log4shib.
View the commit online:
http://git.shibboleth.net/view/?p=cpp-log4shib.git;a=commit;h=150679a21778ad5ca29780febd6c4b2dc5ddd164
commit 150679a21778ad5ca29780febd6c4b2dc5ddd164
Author: Russ Allbery <rra at stanford.edu>
AuthorDate: Tue Jun 18 15:11:53 2013 -0700
Imported Upstream version 1.0.7
---
Portfile | 2 +-
configure | 125 ++++++++++++++++++++++++++++++++++----
configure.ac | 27 +++++++-
include/config.h.in | 9 +++
log4shib.spec | 4 +-
m4/BB_ENABLE_DOXYGEN.m4 | 2 +-
msvc10/log4shibDLL/log4shibDLL.rc | 8 +--
src/FileAppender.cpp | 34 ++++++++++-
src/RemoteSyslogAppender.cpp | 93 +++++++++++++++-------------
src/RollingFileAppender.cpp | 7 +++
10 files changed, 246 insertions(+), 65 deletions(-)
diff --git a/Portfile b/Portfile
index f10711d..93d62c9 100644
--- a/Portfile
+++ b/Portfile
@@ -1,7 +1,7 @@
PortSystem 1.0
name log4shib
-version 1.0.6
+version 1.0.7
categories sysutils shibboleth devel
maintainers snc scantor
description configurable logging for C++, fork of log4cpp
diff --git a/configure b/configure
index 9bdeda8..b5a6ea9 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for log4shib 1.0.6.
+# Generated by GNU Autoconf 2.69 for log4shib 1.0.7.
#
#
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='log4shib'
PACKAGE_TARNAME='log4shib'
-PACKAGE_VERSION='1.0.6'
-PACKAGE_STRING='log4shib 1.0.6'
+PACKAGE_VERSION='1.0.7'
+PACKAGE_STRING='log4shib 1.0.7'
PACKAGE_BUGREPORT=''
PACKAGE_URL=''
@@ -1338,7 +1338,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures log4shib 1.0.6 to adapt to many kinds of systems.
+\`configure' configures log4shib 1.0.7 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1408,7 +1408,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of log4shib 1.0.6:";;
+ short | recursive ) echo "Configuration of log4shib 1.0.7:";;
esac
cat <<\_ACEOF
@@ -1520,7 +1520,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-log4shib configure 1.0.6
+log4shib configure 1.0.7
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2002,11 +2002,57 @@ fi
eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
+
+# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES
+# ---------------------------------------------
+# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR
+# accordingly.
+ac_fn_c_check_decl ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ as_decl_name=`echo $2|sed 's/ *(.*//'`
+ as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5
+$as_echo_n "checking whether $as_decl_name is declared... " >&6; }
+if eval \${$3+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+$4
+int
+main ()
+{
+#ifndef $as_decl_name
+#ifdef __cplusplus
+ (void) $as_decl_use;
+#else
+ (void) $as_decl_name;
+#endif
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ eval "$3=yes"
+else
+ eval "$3=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+eval ac_res=\$$3
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+
+} # ac_fn_c_check_decl
cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by log4shib $as_me 1.0.6, which was
+It was created by log4shib $as_me 1.0.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2366,7 +2412,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# ? :+1 : ? == just some internal changes, nothing breaks but might work
# better
# CURRENT : REVISION : AGE
-LT_VERSION=1:6:0
+LT_VERSION=1:7:0
@@ -2852,7 +2898,7 @@ fi
# Define the identity of the package.
PACKAGE='log4shib'
- VERSION='1.0.6'
+ VERSION='1.0.7'
cat >>confdefs.h <<_ACEOF
@@ -15287,6 +15333,63 @@ fi
done
+
+# Checks close-on-exec functionality
+# ----------------------------------------------------------------------------
+ac_fn_c_check_decl "$LINENO" "O_CLOEXEC" "ac_cv_have_decl_O_CLOEXEC" "#include <fcntl.h>
+"
+if test "x$ac_cv_have_decl_O_CLOEXEC" = xyes; then :
+
+$as_echo "#define HAVE_O_CLOEXEC 1" >>confdefs.h
+
+fi
+
+ac_fn_c_check_decl "$LINENO" "FD_CLOEXEC" "ac_cv_have_decl_FD_CLOEXEC" "#include <fcntl.h>
+"
+if test "x$ac_cv_have_decl_FD_CLOEXEC" = xyes; then :
+
+$as_echo "#define HAVE_FD_CLOEXEC 1" >>confdefs.h
+
+fi
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SOCK_CLOEXEC support" >&5
+$as_echo_n "checking for SOCK_CLOEXEC support... " >&6; }
+if ${log_cv_sock_cloexec+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ log_cv_sock_cloexec=no
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <sys/types.h>
+#include <sys/socket.h>
+int main()
+{
+return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ log_cv_sock_cloexec=yes
+else
+ log_cv_sock_cloexec=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $log_cv_sock_cloexec" >&5
+$as_echo "$log_cv_sock_cloexec" >&6; }
+
+if test "$log_cv_sock_cloexec" = "yes"; then
+
+$as_echo "#define HAVE_SOCK_CLOEXEC 1" >>confdefs.h
+
+fi
+
+
# Checks local idioms
# ----------------------------------------------------------------------------
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for int64_t" >&5
@@ -16963,7 +17066,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by log4shib $as_me 1.0.6, which was
+This file was extended by log4shib $as_me 1.0.7, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -17029,7 +17132,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-log4shib config.status 1.0.6
+log4shib config.status 1.0.7
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 0309a05..36d981d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT(log4shib, 1.0.6)
+AC_INIT(log4shib, 1.0.7)
# autoconf 2.50 or higher to rebuild aclocal.m4, because the
# AC_CREATE_PREFIX_CONFIG_H macro needs the AS_DIRNAME macro.
@@ -11,7 +11,7 @@ AC_PREREQ(2.50)
# ? :+1 : ? == just some internal changes, nothing breaks but might work
# better
# CURRENT : REVISION : AGE
-LT_VERSION=1:6:0
+LT_VERSION=1:7:0
AC_SUBST(LT_VERSION)
@@ -69,6 +69,29 @@ AC_LANG(C)
AC_CHECK_HEADERS([unistd.h])
AC_CHECK_HEADERS([io.h])
+
+# Checks close-on-exec functionality
+# ----------------------------------------------------------------------------
+AC_CHECK_DECL([O_CLOEXEC],
+ [AC_DEFINE([HAVE_O_CLOEXEC],[1],[Define to 1 if open supports O_CLOEXEC flag.])],,
+ [#include <fcntl.h>])
+AC_CHECK_DECL([FD_CLOEXEC],
+ [AC_DEFINE([HAVE_FD_CLOEXEC],[1],[Define to 1 if fcntl supports FD_CLOEXEC flag.])],,
+ [#include <fcntl.h>])
+AC_CACHE_CHECK([for SOCK_CLOEXEC support], [log_cv_sock_cloexec],
+[AC_TRY_RUN([
+#include <sys/types.h>
+#include <sys/socket.h>
+int main()
+{
+return socket(AF_INET, SOCK_STREAM|SOCK_CLOEXEC, 0) == -1;
+}], [log_cv_sock_cloexec=yes], [log_cv_sock_cloexec=no], [log_cv_sock_cloexec=no])])
+
+if test "$log_cv_sock_cloexec" = "yes"; then
+ AC_DEFINE([HAVE_SOCK_CLOEXEC], 1, [Define if the SOCK_CLOEXEC flag is supported])
+fi
+
+
# Checks local idioms
# ----------------------------------------------------------------------------
AC_C_INT64_T
diff --git a/include/config.h.in b/include/config.h.in
index 1912818..8461423 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -3,6 +3,9 @@
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
+/* Define to 1 if fcntl supports FD_CLOEXEC flag. */
+#undef HAVE_FD_CLOEXEC
+
/* Define to 1 if you have the `ftime' function. */
#undef HAVE_FTIME
@@ -33,6 +36,9 @@
/* define if the compiler implements namespaces */
#undef HAVE_NAMESPACES
+/* Define to 1 if open supports O_CLOEXEC flag. */
+#undef HAVE_O_CLOEXEC
+
/* Define if you have POSIX threads libraries and header files. */
#undef HAVE_PTHREAD
@@ -42,6 +48,9 @@
/* define if the C library has snprintf */
#undef HAVE_SNPRINTF
+/* Define if the SOCK_CLOEXEC flag is supported */
+#undef HAVE_SOCK_CLOEXEC
+
/* define if the compiler has stringstream */
#undef HAVE_SSTREAM
diff --git a/log4shib.spec b/log4shib.spec
index 43453f4..526b3df 100644
--- a/log4shib.spec
+++ b/log4shib.spec
@@ -1,11 +1,11 @@
Name: log4shib
-Version: 1.0.6
+Version: 1.0.7
Release: 1
Summary: Log for C++, Shibboleth Edition
License: LGPL
Group: Development/Libraries
Vendor: Shibboleth Consortium
-URL: http://shibboleth.net/downloads/log4shib/1.0.6
+URL: http://shibboleth.net/downloads/log4shib/1.0.7
Source: %name-%version.tar.gz
BuildRoot: %_tmppath/%name-%version-root
BuildRequires: gcc-c++
diff --git a/m4/BB_ENABLE_DOXYGEN.m4 b/m4/BB_ENABLE_DOXYGEN.m4
index 5f95bd5..66856dc 100644
--- a/m4/BB_ENABLE_DOXYGEN.m4
+++ b/m4/BB_ENABLE_DOXYGEN.m4
@@ -1,4 +1,4 @@
-AC_DEFUN(BB_ENABLE_DOXYGEN,
+AC_DEFUN([BB_ENABLE_DOXYGEN],
[
AC_ARG_ENABLE(doxygen, [ --enable-doxygen enable documentation generation with doxygen (auto)])
AC_ARG_ENABLE(dot, [ --enable-dot use 'dot' to generate graphs in doxygen (auto)])
diff --git a/msvc10/log4shibDLL/log4shibDLL.rc b/msvc10/log4shibDLL/log4shibDLL.rc
index 0c61093..f82be9f 100644
--- a/msvc10/log4shibDLL/log4shibDLL.rc
+++ b/msvc10/log4shibDLL/log4shibDLL.rc
@@ -10,8 +10,8 @@
//
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,0,6,0
- PRODUCTVERSION 1,0,6,0
+ FILEVERSION 1,0,7,0
+ PRODUCTVERSION 1,0,7,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@@ -30,7 +30,7 @@ BEGIN
VALUE "CompanyName", "Internet2\0"
VALUE "ContributingAuthors", "Cedric Le Goater, Marc Welz, others. See documentation for complete list\0"
VALUE "FileDescription", "Log library for C++ DLL\0"
- VALUE "FileVersion", "1.0.6\0"
+ VALUE "FileVersion", "1.0.7\0"
VALUE "InternalName", "log4shib\0"
VALUE "LegalCopyright", "Copyright � 2000-2013 the Log4cpp Project, others\0"
VALUE "LegalTrademarks", "\0"
@@ -41,7 +41,7 @@ BEGIN
#endif
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "Log library for C++\0"
- VALUE "ProductVersion", "1.0.6\0"
+ VALUE "ProductVersion", "1.0.7\0"
VALUE "SpecialBuild", "\0"
END
END
diff --git a/src/FileAppender.cpp b/src/FileAppender.cpp
index 4b0727c..78552f2 100644
--- a/src/FileAppender.cpp
+++ b/src/FileAppender.cpp
@@ -15,6 +15,7 @@
# include <unistd.h>
#endif
+#include <fcntl.h>
#include <stdio.h>
#include <time.h>
#include <log4shib/FileAppender.hh>
@@ -32,9 +33,19 @@ namespace log4shib {
_mode(mode) {
if (!append)
_flags |= O_TRUNC;
+#ifdef LOG4SHIB_HAVE_O_CLOEXEC
+ _flags |= O_CLOEXEC;
+#endif
_fd = ::open(_fileName.c_str(), _flags, _mode);
if (_fd == -1)
throw std::runtime_error(std::string("failed to open log file (") + _fileName + ')');
+#if !defined(LOG4SHIB_HAVE_O_CLOEXEC) && defined(LOG4SHIB_HAVE_FD_CLOEXEC)
+ int fdflags = ::fcntl(_fd, F_GETFD);
+ if (fdflags != -1) {
+ fdflags |= FD_CLOEXEC;
+ ::fcntl(_fd, F_SETFD, fdflags);
+ }
+#endif
}
FileAppender::FileAppender(const std::string& name, int fd) :
@@ -43,6 +54,16 @@ namespace log4shib {
_fd(fd),
_flags(O_CREAT | O_APPEND | O_WRONLY),
_mode(00644) {
+#ifdef LOG4SHIB_HAVE_O_CLOEXEC
+ _flags |= O_CLOEXEC;
+#endif
+#if !defined(LOG4SHIB_HAVE_O_CLOEXEC) && defined(LOG4SHIB_HAVE_FD_CLOEXEC)
+ int fdflags = ::fcntl(_fd, F_GETFD);
+ if (fdflags != -1) {
+ fdflags |= FD_CLOEXEC;
+ ::fcntl(_fd, F_SETFD, fdflags);
+ }
+#endif
}
FileAppender::~FileAppender() {
@@ -50,9 +71,9 @@ namespace log4shib {
}
void FileAppender::close() {
- if (_fd!=-1) {
+ if (_fd != -1) {
::close(_fd);
- _fd=-1;
+ _fd = -1;
}
}
@@ -91,9 +112,16 @@ namespace log4shib {
if (fd < 0)
return false;
else {
- if (_fd != -1)
+ if (_fd != -1)
::close(_fd);
_fd = fd;
+#if !defined(LOG4SHIB_HAVE_O_CLOEXEC) && defined(LOG4SHIB_HAVE_FD_CLOEXEC)
+ int fdflags = ::fcntl(_fd, F_GETFD);
+ if (fdflags != -1) {
+ fdflags |= FD_CLOEXEC;
+ ::fcntl(_fd, F_SETFD, fdflags);
+ }
+#endif
return true;
}
} else {
diff --git a/src/RemoteSyslogAppender.cpp b/src/RemoteSyslogAppender.cpp
index f4f12a1..099d0fe 100644
--- a/src/RemoteSyslogAppender.cpp
+++ b/src/RemoteSyslogAppender.cpp
@@ -60,12 +60,12 @@ namespace log4shib {
int portNumber) :
LayoutAppender(name),
_syslogName(syslogName),
- _relayer(relayer),
+ _relayer(relayer),
_facility((facility == -1) ? LOG_USER : facility),
- _portNumber((portNumber == -1) ? 514 : portNumber),
- _socket (0),
- _ipAddr (0),
- _cludge (0)
+ _portNumber((portNumber == -1) ? 514 : portNumber),
+ _socket (0),
+ _ipAddr (0),
+ _cludge (0)
{
open();
}
@@ -81,54 +81,65 @@ namespace log4shib {
}
void RemoteSyslogAppender::open() {
- if (!_ipAddr) {
- struct hostent *pent = gethostbyname (_relayer.c_str ());
+ if (!_ipAddr) {
+ struct hostent *pent = gethostbyname (_relayer.c_str ());
#ifdef WIN32
- if (pent == NULL) {
- if (WSAGetLastError () == WSANOTINITIALISED) {
- WSADATA wsaData;
- int err;
-
- err = WSAStartup (0x101, &wsaData );
- if (err) {
- // loglog("RemoteSyslogAppender: WSAStartup returned %d", err);
+ if (pent == NULL) {
+ if (WSAGetLastError () == WSANOTINITIALISED) {
+ WSADATA wsaData;
+ int err;
+
+ err = WSAStartup (0x101, &wsaData );
+ if (err) {
+ // loglog("RemoteSyslogAppender: WSAStartup returned %d", err);
+ return; // fail silently
+ }
+ pent = gethostbyname (_relayer.c_str ());
+ _cludge = 1;
+ } else {
+ // loglog("RemoteSyslogAppender: gethostbyname returned error");
+ return; // fail silently
+ }
+ }
+#endif
+ if (pent == NULL) {
+ in_addr_t ip = inet_addr (_relayer.c_str ());
+ pent = gethostbyaddr ((const char *) &ip, sizeof(in_addr_t), AF_INET);
+ if (pent == NULL) {
+ // loglog("RemoteSyslogAppender: failed to resolve host %s", _relayer.c_str());
return; // fail silently
}
- pent = gethostbyname (_relayer.c_str ());
- _cludge = 1;
- } else {
- // loglog("RemoteSyslogAppender: gethostbyname returned error");
- return; // fail silently
- }
- }
-#endif
- if (pent == NULL) {
- in_addr_t ip = inet_addr (_relayer.c_str ());
- pent = gethostbyaddr ((const char *) &ip, sizeof(in_addr_t), AF_INET);
- if (pent == NULL) {
- // loglog("RemoteSyslogAppender: failed to resolve host %s", _relayer.c_str());
- return; // fail silently
- }
}
- _ipAddr = *(pent->h_addr);
- }
- // Get a datagram socket.
-
- if ((_socket = socket(AF_INET, SOCK_DGRAM, 0)) < 0) {
+ _ipAddr = *(pent->h_addr);
+ }
+
+ // Get a datagram socket.
+ int type = SOCK_DGRAM;
+#ifdef LOG4SHIB_HAVE_SOCK_CLOEXEC
+ type |= SOCK_CLOEXEC;
+#endif
+ if ((_socket = socket(AF_INET, type, 0)) < 0) {
// loglog("RemoteSyslogAppender: failed to open socket");
return; // fail silently
- }
+ }
+#if !defined(LOG4SHIB_HAVE_SOCK_CLOEXEC) && defined(LOG4SHIB_HAVE_FD_CLOEXEC)
+ int fdflags = ::fcntl(_socket, F_GETFD);
+ if (fdflags != -1) {
+ fdflags |= FD_CLOEXEC;
+ ::fcntl(_socket, F_SETFD, fdflags);
+ }
+#endif
}
void RemoteSyslogAppender::close() {
- if (_socket) {
+ if (_socket) {
#ifdef WIN32
- closesocket (_socket);
+ closesocket (_socket);
#else
- ::close (_socket);
+ ::close (_socket);
#endif
- _socket = 0;
- }
+ _socket = 0;
+ }
}
void RemoteSyslogAppender::_append(const LoggingEvent& event) {
diff --git a/src/RollingFileAppender.cpp b/src/RollingFileAppender.cpp
index 5c72884..03a22fa 100644
--- a/src/RollingFileAppender.cpp
+++ b/src/RollingFileAppender.cpp
@@ -73,6 +73,13 @@ namespace log4shib {
::rename(_fileName.c_str(), oldName.str().c_str());
}
_fd = ::open(_fileName.c_str(), _flags, _mode);
+#if !defined(LOG4SHIB_HAVE_O_CLOEXEC) && defined(LOG4SHIB_HAVE_FD_CLOEXEC)
+ int fdflags = ::fcntl(_fd, F_GETFD);
+ if (fdflags != -1) {
+ fdflags |= FD_CLOEXEC;
+ ::fcntl(_fd, F_SETFD, fdflags);
+ }
+#endif
}
void RollingFileAppender::_append(const LoggingEvent& event) {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list