2013-02-19 18:48:00

by Mike Frysinger

[permalink] [raw]
Subject: [PATCH [rpcbind]] fix building one systems w/out nss.h

The nss.h header is glibc-specific, so use the existing HAVE_NSS_H define
to avoid including/using it when it is not available.

URL: http://bugs.gentoo.org/458024
Reported-by: Mark Reiche <[email protected]>
Signed-off-by: Mike Frysinger <[email protected]>
---
src/rpcbind.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/src/rpcbind.c b/src/rpcbind.c
index 9a0504d..83dbe93 100644
--- a/src/rpcbind.c
+++ b/src/rpcbind.c
@@ -67,7 +67,11 @@
#include <pwd.h>
#include <string.h>
#include <errno.h>
+#ifdef HAVE_NSS_H
#include <nss.h>
+#else
+static inline void __nss_configure_lookup(const char *db, const char *s) {}
+#endif
#include "rpcbind.h"

/*#define RPCBIND_DEBUG*/
--
1.8.1.2



2013-02-19 19:14:41

by Mike Frysinger

[permalink] [raw]
Subject: Re: [PATCH [rpcbind]] fix building one systems w/out nss.h

On Tuesday 19 February 2013 13:54:19 Chuck Lever wrote:
> On Feb 19, 2013, at 1:48 PM, Mike Frysinger <[email protected]> wrote:
> > The nss.h header is glibc-specific, so use the existing HAVE_NSS_H define
> > to avoid including/using it when it is not available.
> > --- a/src/rpcbind.c
> > +++ b/src/rpcbind.c
> > @@ -67,7 +67,11 @@
> > #include <pwd.h>
> > #include <string.h>
> > #include <errno.h>
> > +#ifdef HAVE_NSS_H
> > #include <nss.h>
> > +#else
> > +static inline void __nss_configure_lookup(const char *db, const char *s)
> > {} +#endif
>
> Where is rpcbind getting the __nss_configure_lookup() function in this
> case? I don't see that the call sites are ifdef-d out if HAVE_NSS_H is
> not defined.

i'm not sure what you mean.

if nss.h exists, then HAVE_NSS_H is defined, and the nss.h header provides the
__nss_configure_lookup prototype (and presumably, the C library provides that
func).

if nss.h doesn't exist, then HAVE_NSS_H is not defined, so we have to stub out
the __nss_configure_lookup func. i could have put "#ifdef HAVE_NSS_H" around
all the call sites, but i think this version is cleaner and less error prone.

also, i typoed the subject name ("one" vs "on").
-mike


Attachments:
signature.asc (836.00 B)
This is a digitally signed message part.

2013-02-21 15:43:21

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH [rpcbind]] fix building one systems w/out nss.h



On 19/02/13 13:48, Mike Frysinger wrote:
> The nss.h header is glibc-specific, so use the existing HAVE_NSS_H define
> to avoid including/using it when it is not available.
>
> URL: http://bugs.gentoo.org/458024
> Reported-by: Mark Reiche <[email protected]>
> Signed-off-by: Mike Frysinger <[email protected]>
Committed...

steved.
> ---
> src/rpcbind.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/rpcbind.c b/src/rpcbind.c
> index 9a0504d..83dbe93 100644
> --- a/src/rpcbind.c
> +++ b/src/rpcbind.c
> @@ -67,7 +67,11 @@
> #include <pwd.h>
> #include <string.h>
> #include <errno.h>
> +#ifdef HAVE_NSS_H
> #include <nss.h>
> +#else
> +static inline void __nss_configure_lookup(const char *db, const char *s) {}
> +#endif
> #include "rpcbind.h"
>
> /*#define RPCBIND_DEBUG*/
> -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
>

2013-02-19 18:54:38

by Chuck Lever

[permalink] [raw]
Subject: Re: [PATCH [rpcbind]] fix building one systems w/out nss.h

Hi-

On Feb 19, 2013, at 1:48 PM, Mike Frysinger <[email protected]> wrote:

> The nss.h header is glibc-specific, so use the existing HAVE_NSS_H define
> to avoid including/using it when it is not available.
>
> URL: http://bugs.gentoo.org/458024
> Reported-by: Mark Reiche <[email protected]>
> Signed-off-by: Mike Frysinger <[email protected]>
> ---
> src/rpcbind.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/src/rpcbind.c b/src/rpcbind.c
> index 9a0504d..83dbe93 100644
> --- a/src/rpcbind.c
> +++ b/src/rpcbind.c
> @@ -67,7 +67,11 @@
> #include <pwd.h>
> #include <string.h>
> #include <errno.h>
> +#ifdef HAVE_NSS_H
> #include <nss.h>
> +#else
> +static inline void __nss_configure_lookup(const char *db, const char *s) {}
> +#endif

Where is rpcbind getting the __nss_configure_lookup() function in this case? I don't see that the call sites are ifdef-d out if HAVE_NSS_H is not defined.

> #include "rpcbind.h"
>
> /*#define RPCBIND_DEBUG*/

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com





2013-02-19 19:16:29

by Chuck Lever

[permalink] [raw]
Subject: Re: [PATCH [rpcbind]] fix building one systems w/out nss.h


On Feb 19, 2013, at 2:14 PM, Mike Frysinger <[email protected]> wrote:

> On Tuesday 19 February 2013 13:54:19 Chuck Lever wrote:
>> On Feb 19, 2013, at 1:48 PM, Mike Frysinger <[email protected]> wrote:
>>> The nss.h header is glibc-specific, so use the existing HAVE_NSS_H define
>>> to avoid including/using it when it is not available.
>>> --- a/src/rpcbind.c
>>> +++ b/src/rpcbind.c
>>> @@ -67,7 +67,11 @@
>>> #include <pwd.h>
>>> #include <string.h>
>>> #include <errno.h>
>>> +#ifdef HAVE_NSS_H
>>> #include <nss.h>
>>> +#else
>>> +static inline void __nss_configure_lookup(const char *db, const char *s)
>>> {} +#endif
>>
>> Where is rpcbind getting the __nss_configure_lookup() function in this
>> case? I don't see that the call sites are ifdef-d out if HAVE_NSS_H is
>> not defined.
>
> i'm not sure what you mean.
>
> if nss.h exists, then HAVE_NSS_H is defined, and the nss.h header provides the
> __nss_configure_lookup prototype (and presumably, the C library provides that
> func).
>
> if nss.h doesn't exist, then HAVE_NSS_H is not defined, so we have to stub out
> the __nss_configure_lookup func. i could have put "#ifdef HAVE_NSS_H" around
> all the call sites, but i think this version is cleaner and less error prone.

OK, clear. Sorry to be dense.

>
> also, i typoed the subject name ("one" vs "on").
> -mike

--
Chuck Lever
chuck[dot]lever[at]oracle[dot]com