about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--INSTALL4
-rw-r--r--Makefile12
-rw-r--r--NEWS5
-rwxr-xr-xconfigure12
-rw-r--r--doc/index.html8
-rw-r--r--doc/libnsss/index.html25
-rw-r--r--doc/upgrade.html10
-rw-r--r--package/info2
-rw-r--r--package/targets.mak4
-rw-r--r--src/include/grp.h13
-rw-r--r--src/include/nsss/grp.h19
-rw-r--r--src/include/nsss/pwd.h13
-rw-r--r--src/include/nsss/shadow.h19
-rw-r--r--src/include/pwd.h7
-rw-r--r--src/include/shadow.h13
15 files changed, 109 insertions, 57 deletions
diff --git a/INSTALL b/INSTALL
index e57679e..4424944 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,8 +6,8 @@ Build Instructions
 
   - A POSIX-compliant C development environment
   - GNU make version 3.81 or later
-  - skalibs version 2.9.2.1 or later: https://skarnet.org/software/skalibs/
-  - To run the test suite and the nsssd-* programs: s6 version 2.9.1.0 or later: https://skarnet.org/software/s6/
+  - skalibs version 2.10.0.0 or later: https://skarnet.org/software/skalibs/
+  - To run the test suite and the nsssd-* programs: s6 version 2.10.0.0 or later: https://skarnet.org/software/s6/
 
  This software will run on any operating system that implements
 POSIX.1-2008, available at:
diff --git a/Makefile b/Makefile
index ce18023..68599cb 100644
--- a/Makefile
+++ b/Makefile
@@ -57,7 +57,7 @@ ALL_BINS := $(LIBEXEC_TARGETS) $(BIN_TARGETS)
 ALL_LIBS := $(SHARED_LIBS) $(STATIC_LIBS) $(INTERNAL_LIBS)
 ALL_INCLUDES := $(wildcard src/include/$(package)/*.h)
 
-all: $(ALL_LIBS) $(ALL_BINS) $(ALL_INCLUDES) src/include/pwd.h src/include/grp.h src/include/shadow.h
+all: $(ALL_LIBS) $(ALL_BINS) $(ALL_INCLUDES) $(EXTRA_INCLUDES)
 
 clean:
 	@exec rm -f $(ALL_LIBS) $(ALL_BINS) $(wildcard src/*/*.o src/*/*.lo) $(TEST_BINS) $(EXTRA_TARGETS)
@@ -86,7 +86,7 @@ install-dynlib: $(SHARED_LIBS:lib%.so.xyzzy=$(DESTDIR)$(dynlibdir)/lib%.so)
 install-libexec: $(LIBEXEC_TARGETS:%=$(DESTDIR)$(libexecdir)/%)
 install-bin: $(BIN_TARGETS:%=$(DESTDIR)$(bindir)/%)
 install-lib: $(STATIC_LIBS:lib%.a.xyzzy=$(DESTDIR)$(libdir)/lib%.a)
-install-include: $(ALL_INCLUDES:src/include/$(package)/%.h=$(DESTDIR)$(includedir)/$(package)/%.h) $(DESTDIR)$(includedir)/pwd.h $(DESTDIR)$(includedir)/grp.h $(DESTDIR)$(includedir)/shadow.h
+install-include: $(ALL_INCLUDES:src/include/$(package)/%.h=$(DESTDIR)$(includedir)/$(package)/%.h) $(EXTRA_INCLUDES:src/include/%.h=$(DESTDIR)$(includedir)/%.h)
 install-data: $(ALL_DATA:src/etc/%=$(DESTDIR)$(datadir)/%)
 
 tests: $(TEST_BINS)
@@ -134,13 +134,7 @@ $(DESTDIR)$(libdir)/lib%.a: lib%.a.xyzzy
 $(DESTDIR)$(includedir)/$(package)/%.h: src/include/$(package)/%.h
 	exec $(INSTALL) -D -m 644 $< $@
 
-$(DESTDIR)$(includedir)/pwd.h: src/include/pwd.h
-	exec $(INSTALL) -D -m 644 $< $@
-
-$(DESTDIR)$(includedir)/grp.h: src/include/grp.h
-	exec $(INSTALL) -D -m 644 $< $@
-
-$(DESTDIR)$(includedir)/shadow.h: src/include/shadow.h
+$(DESTDIR)$(includedir)/%.h: src/include/%.h
 	exec $(INSTALL) -D -m 644 $< $@
 
 %.o: %.c
diff --git a/NEWS b/NEWS
index 71084aa..5cac770 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,12 @@
 Changelog for nsss.
 
-In 0.0.2.3
+In 0.1.0.0
 ----------
 
  - Bugfixes.
+ - pwd.h, grp.h and shadow.h are not installed by default anymore.
+You now need to explicitly give the --enable-libc-includes
+configure option.
 
 
 In 0.0.2.2
diff --git a/configure b/configure
index 24a4a52..365404c 100755
--- a/configure
+++ b/configure
@@ -47,6 +47,7 @@ Optional features:
                                   hardcode absolute BINDIR/foobar paths instead [disabled]
 
   --with-nsssd-socket=PATH      assume the nsssd socket is at PATH [/run/service/nsssd/s]
+  --enable-libc-includes        overwrite {pwd,grp,shadow}.h in includedir [disabled]
 
 EOF
 exit 0
@@ -161,6 +162,7 @@ vpaths=''
 vpathd=''
 build=
 nsssdpath=/run/service/nsssd/s
+libcincludes=false
 
 for arg ; do
   case "$arg" in
@@ -191,10 +193,12 @@ for arg ; do
     --disable-slashpackage) sproot= ; slashpackage=false ;;
     --enable-absolute-paths|--enable-absolute-paths=yes) abspath=true ;;
     --disable-absolute-paths|--enable-absolute-paths=no) abspath=false ;;
+    --enable-libc-includes|--enable-libc-includes=yes) libcincludes=true ;;
+    --disable-libc-includes|--enable-libc-includes=no) libcincludes=false ;;
+    --with-nsssd-socket=*) nsssdpath=${arg#*=} ;;
     --enable-*|--disable-*|--with-*|--without-*|--*dir=*) ;;
     --host=*|--target=*) target=${arg#*=} ;;
     --build=*) build=${arg#*=} ;;
-    --with-nsssd-socket=*) nsssdpath=${arg#*=} ;;
     -* ) echo "$0: unknown option $arg" ;;
     *=*) ;;
     *) target=$arg ;;
@@ -434,7 +438,11 @@ if $allpic ; then
 else
   echo "STATIC_LIBS_ARE_PIC :="
 fi
-
+if $libcincludes ; then
+  echo "DO_LIBC_INCLUDES := 1"
+else
+  echo "DO_LIBC_INCLUDES :="
+fi
 exec 1>&3 3>&-
 echo "  ... done."
 
diff --git a/doc/index.html b/doc/index.html
index 9c155a1..62b37bd 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -81,11 +81,11 @@ functions.
  <li> A POSIX-compliant system with a standard C development environment </li>
  <li> GNU make, version 3.81 or later </li>
  <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> version
-2.9.2.1 or later. It's a build-time requirement. It's also a run-time
+2.10.0.0 or later. It's a build-time requirement. It's also a run-time
 requirement if you link against the shared version of the skalibs
 library. </li>
  <li> <a href="//skarnet.org/software/s6/">s6</a> version
-2.9.1.0 or later. It's a <em>run-time</em> requirement only, to run
+2.10.0.0 or later. It's a <em>run-time</em> requirement only, to run
 the nsssd service (and can be done without if you have a suitable replacement
 for <a href="//skarnet.org/software/s6/s6-ipcserver">s6-ipcserver</a>). </li>
 </ul>
@@ -94,13 +94,13 @@ for <a href="//skarnet.org/software/s6/s6-ipcserver">s6-ipcserver</a>). </li>
 
 <p>
  nsss is free software. It is available under the
-<a href="http://opensource.org/licenses/ISC">ISC license</a>.
+<a href="https://opensource.org/licenses/ISC">ISC license</a>.
 </p>
 
 <h3> Download </h3>
 
 <ul>
- <li> The current released version of nsss is <a href="nsss-0.0.2.2.tar.gz">0.0.2.2</a>. </li>
+ <li> The current released version of nsss is <a href="nsss-0.1.0.0.tar.gz">0.1.0.0</a>. </li>
  <li> Alternatively, you can checkout a copy of the
 <a href="//git.skarnet.org/cgi-bin/cgit.cgi/nsss/">nsss
 git repository</a>:
diff --git a/doc/libnsss/index.html b/doc/libnsss/index.html
index 3514c42..bbe5029 100644
--- a/doc/libnsss/index.html
+++ b/doc/libnsss/index.html
@@ -103,6 +103,17 @@ the other functions will be aliased similarly.
 </p>
 
 <p>
+ <tt>pwd.h</tt> can be found in the <tt>nsss/</tt> subdirectory of
+the header installation directory; if the <tt>--enable-libc-includes</tt>
+option has been given to configure, it can also be found directly
+in that directory. (Example: <tt>/usr/include/nsss/pwd.h</tt> is
+always installed, but if the option has been given at nsss build time,
+<tt>/usr/include/pwd.h</tt> is also installed and replaces the
+version provided by the libc.) This also applies to the <tt>grp.h</tt>
+and <tt>shadow.h</tt> files.
+</p>
+
+<p>
  If the NSSS_DISABLE_SWITCH macro is defined before inclusion of the
 nsss headers, then <tt>getpwnam()</tt> will be aliased to
 <tt>nsss_unix_getpwnam()</tt> instead, and the other functions will
@@ -121,9 +132,17 @@ functions will follow the same pattern.
 are visible in your header search path. </li>
  <li> Use <tt>#include &lt;nsss/nsss.h&gt;</tt> </li>
  <li> To use the standard <tt>pwd.h</tt> interface, you can
-just <tt>#include &lt;pwd.h&gt;</tt>, which will work as long
-as the <tt>nsss/pwd.h</tt> header is accessible in your header
-search path. </li>
+just <tt>#include &lt;pwd.h&gt;</tt>, which will work:
+  <ul>
+   <li> either if the <tt>--enable-libc-includes</tt> option
+has been given at nsss build time </li>
+   <li> or if you give the <tt>-I/usr/include/nsss</tt> option
+to your compiler. (Depending on your standard header location,
+specify that the header search path should include the
+<tt>nsss</tt> subdirectory of that location.) This is useful when
+the administrator did not want to overwrite the libc-provided
+<tt>pwd.h</tt> file when they installed nsss. </li>
+  </ul> </li>
  <li> Same thing for <tt>grp.h</tt> and <tt>shadow.h</tt>. </li>
  <li> If don't want to use the nsss-all implementation of
 "try nsss-switch and fall back to nsss-unix if it fails", then
diff --git a/doc/upgrade.html b/doc/upgrade.html
index b0ae772..00fffe3 100644
--- a/doc/upgrade.html
+++ b/doc/upgrade.html
@@ -18,11 +18,17 @@
 
 <h1> What has changed in nsss </h1>
 
-<h2> in 0.0.2.3 </h2>
+<h2> in 0.1.0.0 </h2>
 
 <ul>
  <li> <a href="//skarnet.org/software/skalibs/">skalibs</a> dependency bumped to
-2.9.2.1. </li>
+2.10.0.0. </li>
+ <li> <a href="//skarnet.org/software/s6/">s6</a> optional dependency bumped to
+2.10.0.0. </li>
+ <li> The <tt>pwd.h</tt>, <tt>grp.h</tt> and <tt>shadow.h</tt> header files are
+not installed by default anymore. You now need to explicitly give the
+<tt>--enable-libc-includes</tt> configure option in order to install them. The
+point of this change is to avoid overwriting libc headers accidentally. </li>
 </ul>
 
 <h2> in 0.0.2.2 </h2>
diff --git a/package/info b/package/info
index 5c1c699..aafdb5e 100644
--- a/package/info
+++ b/package/info
@@ -1,4 +1,4 @@
 package=nsss
-version=0.0.2.3
+version=0.1.0.0
 category=admin
 package_macro_name=NSSS
diff --git a/package/targets.mak b/package/targets.mak
index e58f396..bc1f9c0 100644
--- a/package/targets.mak
+++ b/package/targets.mak
@@ -10,3 +10,7 @@ test-unix \
 test-all-fallback
 
 LIB_DEFS := NSSS=nsss NSSSD=nsssd
+
+ifneq ($(DO_LIBC_INCLUDES),)
+EXTRA_INCLUDES := src/include/pwd.h src/include/grp.h src/include/shadow.h
+endif
diff --git a/src/include/grp.h b/src/include/grp.h
index a30fe79..7c5b8f9 100644
--- a/src/include/grp.h
+++ b/src/include/grp.h
@@ -10,17 +10,4 @@
 
 #include <nsss/grp.h>
 
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#include <sys/types.h>
-extern int setgroups (size_t, gid_t const *) ;
-extern int initgroups (char const *, gid_t) ;
-#endif
-
-#ifdef _GNU_SOURCE
-#include <stdio.h>
-extern struct group *fgetgrent (FILE *) ;
-extern int fgetgrent_r (FILE *, struct group *, char *, size_t, struct group **) ;
-extern int putgrent (struct group const *, FILE *) ;
-#endif
-
 #endif
diff --git a/src/include/nsss/grp.h b/src/include/nsss/grp.h
index 0d56cbd..e26ae05 100644
--- a/src/include/nsss/grp.h
+++ b/src/include/nsss/grp.h
@@ -62,6 +62,25 @@ extern "C" {
 #endif
 #endif
 
+ /*
+   The following functions are not implemented by nsss.
+   However, the libc may implement them, so we still need to
+   declare them. Of course, we only declare functions that
+   do not conflict with nsss operation.
+ */
+
+#if defined(_GNU_SOURCE) || defined(_DEFAULT_SOURCE)
+#include <sys/types.h>
+extern int setgroups (size_t, gid_t const *) ;
+extern int initgroups (char const *, gid_t) ;
+#endif
+
+#ifdef _GNU_SOURCE
+#include <stdio.h>
+extern struct group *fgetgrent (FILE *) ;
+extern int fgetgrent_r (FILE *, struct group *, char *, size_t, struct group **) ;
+extern int putgrent (struct group const *, FILE *) ;
+#endif
 
 #ifdef __cplusplus
 }
diff --git a/src/include/nsss/pwd.h b/src/include/nsss/pwd.h
index 950a5ce..f3c7000 100644
--- a/src/include/nsss/pwd.h
+++ b/src/include/nsss/pwd.h
@@ -50,6 +50,19 @@ extern "C" {
 #endif
 #endif
 
+ /*
+   The following functions are not implemented by nsss.
+   However, the libc may implement them, so we still need to
+   declare them. Of course, we only declare functions that
+   do not conflict with nsss operation.
+ */
+
+#ifdef _GNU_SOURCE
+#include <stdio.h>
+extern struct passwd *fgetpwent (FILE *) ;
+extern int fgetpwent_r (FILE *, struct passwd *, char *, size_t, struct passwd **) ;
+extern int putpwent (struct passwd const *, FILE *) ;
+#endif
 
 #ifdef __cplusplus
 }
diff --git a/src/include/nsss/shadow.h b/src/include/nsss/shadow.h
index c3357fd..5665fc8 100644
--- a/src/include/nsss/shadow.h
+++ b/src/include/nsss/shadow.h
@@ -44,6 +44,25 @@ extern "C" {
 #endif
 #endif
 
+ /*
+   The following functions are not implemented by nsss.
+   However, the libc may implement them, so we still need to
+   declare them. Of course, we only declare functions that
+   do not conflict with nsss operation.
+ */
+
+#include <stdio.h>
+
+extern struct spwd *fgetspent (FILE *) ;
+extern struct spwd *sgetspent (char const *) ;
+extern int putspent (struct spwd const *, FILE *) ;
+extern int lckpwdf (void) ;
+extern int ulckpwdf (void) ;
+
+#ifdef _DEFAULT_SOURCE
+extern int fgetspent_r(FILE *, struct spwd *, char *, size_t, struct spwd **) ;
+extern int sgetspent_r (char const *, struct spwd *, char *, size_t, struct spwd **) ;
+#endif
 
 #ifdef __cplusplus
 }
diff --git a/src/include/pwd.h b/src/include/pwd.h
index 6ad4faf..22aa835 100644
--- a/src/include/pwd.h
+++ b/src/include/pwd.h
@@ -10,11 +10,4 @@
 
 #include <nsss/pwd.h>
 
-#ifdef _GNU_SOURCE
-#include <stdio.h>
-extern struct passwd *fgetpwent (FILE *) ;
-extern int fgetpwent_r (FILE *, struct passwd *, char *, size_t, struct passwd **) ;
-extern int putpwent (struct passwd const *, FILE *) ;
-#endif
-
 #endif
diff --git a/src/include/shadow.h b/src/include/shadow.h
index 00d1944..96a2719 100644
--- a/src/include/shadow.h
+++ b/src/include/shadow.h
@@ -10,17 +10,4 @@
 
 #include <nsss/shadow.h>
 
-#include <stdio.h>
-
-extern struct spwd *fgetspent (FILE *) ;
-extern struct spwd *sgetspent (char const *) ;
-extern int putspent (struct spwd const *, FILE *) ;
-extern int lckpwdf (void) ;
-extern int ulckpwdf (void) ;
-
-#ifdef _DEFAULT_SOURCE
-extern int fgetspent_r(FILE *, struct spwd *, char *, size_t, struct spwd **) ;
-extern int sgetspent_r (char const *, struct spwd *, char *, size_t, struct spwd **) ;
-#endif
-
 #endif