diff mbox series

[v1,3/3] Finish port of junction support to nfs-utils

Message ID 20181031200229.7507.26189.stgit@klimt.1015granger.net (mailing list archive)
State New, archived
Headers show
Series [v1,1/3] Fix quoting in configure.ac | expand

Commit Message

Chuck Lever Oct. 31, 2018, 8:02 p.m. UTC
CONFIG_JUNCTION was defined for use in Makefiles, but that does not
provide a -DCONFIG_JUNCTION on the compiler command line. Add logic
to configure.ac to get the compiler flags right.

Now that mountd junction support is getting built, a few last minute
porting bugs popped out. Fix those up.

Reported-by: Yongcheng Yang <yoyang@redhat.com>
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
 configure.ac         |    8 +++++++-
 utils/mountd/cache.c |   18 +++++++++---------
 2 files changed, 16 insertions(+), 10 deletions(-)

Comments

Chuck Lever Nov. 27, 2018, 4:45 p.m. UTC | #1
Ping!


> On Oct 31, 2018, at 4:02 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
> 
> CONFIG_JUNCTION was defined for use in Makefiles, but that does not
> provide a -DCONFIG_JUNCTION on the compiler command line. Add logic
> to configure.ac to get the compiler flags right.
> 
> Now that mountd junction support is getting built, a few last minute
> porting bugs popped out. Fix those up.
> 
> Reported-by: Yongcheng Yang <yoyang@redhat.com>
> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
> Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> configure.ac         |    8 +++++++-
> utils/mountd/cache.c |   18 +++++++++---------
> 2 files changed, 16 insertions(+), 10 deletions(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 16eae06..b458891 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -185,7 +185,13 @@ AC_ARG_ENABLE(junction,
> 			[enable support for NFS junctions @<:@default=no@:>@])],
> 	enable_junction=$enableval,
> 	enable_junction=no)
> -AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
> +	if test "$enable_junction" = yes; then
> +		AC_DEFINE(HAVE_JUNCTION_SUPPORT, 1,
> +                          [Define this if you want junction support compiled in])
> +	else
> +		enable_junction=
> +	fi
> +	AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
> 
> AC_ARG_ENABLE(tirpc,
> 	[AC_HELP_STRING([--disable-tirpc],
> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
> index 6f42512..7e8d403 100644
> --- a/utils/mountd/cache.c
> +++ b/utils/mountd/cache.c
> @@ -976,8 +976,9 @@ lookup_export(char *dom, char *path, struct addrinfo *ai)
> 	return found;
> }
> 
> -#ifdef CONFIG_JUNCTION
> +#ifdef HAVE_JUNCTION_SUPPORT
> 
> +#include <libxml/parser.h>
> #include "junction.h"
> 
> struct nfs_fsloc_set {
> @@ -1084,8 +1085,7 @@ static bool locations_to_fslocdata(struct nfs_fsloc_set *locations,
> 	*ttl = 0;
> 
> 	for (;;) {
> -		enum jp_status status;
> -		int len;
> +		int len, status;
> 
> 		status = get_next_location(locations, &server,
> 							&rootpath, ttl);
> @@ -1219,7 +1219,7 @@ nfs_get_basic_junction(const char *junct_path, struct nfs_fsloc_set **locset)
> 		return EINVAL;
> 	}
> 
> -	locset->ns_current = locset->ns_list;
> +	new->ns_current = new->ns_list;
> 	new->ns_ttl = 300;
> 	*locset = new;
> 	return 0;
> @@ -1242,7 +1242,7 @@ static struct exportent *lookup_junction(char *dom, const char *pathname,
> 	status = nfs_get_basic_junction(pathname, &locations);
> 	switch (status) {
> 		xlog(L_WARNING, "Dangling junction %s: %s",
> -			pathname, strerro(status));
> +			pathname, strerror(status));
> 		goto out;
> 	}
> 
> @@ -1252,8 +1252,8 @@ static struct exportent *lookup_junction(char *dom, const char *pathname,
> 
> 	exp = locations_to_export(locations, pathname, parent);
> 
> -	nfs_free_locations(locset->ns_list);
> -	free(locset);
> +	nfs_free_locations(locations->ns_list);
> +	free(locations);
> 
> out:
> 	xmlCleanupParser();
> @@ -1273,7 +1273,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
> 	free(eep);
> }
> 
> -#else	/* !CONFIG_JUNCTION */
> +#else	/* !HAVE_JUNCTION_SUPPORT */
> 
> static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path,
> 		struct addrinfo *UNUSED(ai))
> @@ -1281,7 +1281,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
> 	dump_to_cache(f, buf, buflen, dom, path, NULL, 0);
> }
> 
> -#endif	/* !CONFIG_JUNCTION */
> +#endif	/* !HAVE_JUNCTION_SUPPORT */
> 
> static void nfsd_export(int f)
> {
> 

--
Chuck Lever
Steve Dickson Nov. 28, 2018, 9 p.m. UTC | #2
On 11/27/18 11:45 AM, Chuck Lever wrote:
> Ping!
My apologies for taking so long to get to this... 
I took an extended Thanksgiving then completely 
for got about it... Thanks for the ping... but :-) 

When I enable junctions via  --enable-junction I get the
following compile error with or w/out these patches

gcc -DHAVE_CONFIG_H -I. -I../../support/include  -I. -I../../support/include -D_GNU_SOURCE -pipe  -Wall  -Wextra  -Werror=strict-prototypes  -Werror=missing-prototypes  -Werror=missing-declarations  -Werror=format=2  -Werror=undef  -Werror=missing-include-dirs  -Werror=strict-aliasing=2  -Werror=init-self  -Werror=implicit-function-declaration  -Werror=return-type  -Werror=switch  -Werror=overflow  -Werror=parentheses  -Werror=aggregate-return  -Werror=unused-result  -fno-strict-aliasing  -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -g -O2 -MT remove.o -MD -MP -MF .deps/remove.Tpo -c -o remove.o remove.c
In file included from lookup.c:31:
../../support/include/rpcsvc/nfs_prot.h:9:10: fatal error: rpc/rpc.h: No such file or directory
 #include <rpc/rpc.h>
          ^~~~~~~~~~~
I know how to fix it... Add the following to CFLAGS and LDFLAGS
`pkg-config --cflags libtirpc`
`pkg-config --libs libtirpc`

First I'm wonder how you got things to compile w/out making these changes
and secondly I'm wondering where we should make these changes... 

Maybe we should hardcode the -I/usr/include/tirpc and -ltirpc
flags in aclocal/libtirpc.m4? 

steved.

> 
> 
>> On Oct 31, 2018, at 4:02 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
>>
>> CONFIG_JUNCTION was defined for use in Makefiles, but that does not
>> provide a -DCONFIG_JUNCTION on the compiler command line. Add logic
>> to configure.ac to get the compiler flags right.
>>
>> Now that mountd junction support is getting built, a few last minute
>> porting bugs popped out. Fix those up.
>>
>> Reported-by: Yongcheng Yang <yoyang@redhat.com>
>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
>> Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>> ---
>> configure.ac         |    8 +++++++-
>> utils/mountd/cache.c |   18 +++++++++---------
>> 2 files changed, 16 insertions(+), 10 deletions(-)
>>
>> diff --git a/configure.ac b/configure.ac
>> index 16eae06..b458891 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -185,7 +185,13 @@ AC_ARG_ENABLE(junction,
>> 			[enable support for NFS junctions @<:@default=no@:>@])],
>> 	enable_junction=$enableval,
>> 	enable_junction=no)
>> -AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
>> +	if test "$enable_junction" = yes; then
>> +		AC_DEFINE(HAVE_JUNCTION_SUPPORT, 1,
>> +                          [Define this if you want junction support compiled in])
>> +	else
>> +		enable_junction=
>> +	fi
>> +	AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
>>
>> AC_ARG_ENABLE(tirpc,
>> 	[AC_HELP_STRING([--disable-tirpc],
>> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
>> index 6f42512..7e8d403 100644
>> --- a/utils/mountd/cache.c
>> +++ b/utils/mountd/cache.c
>> @@ -976,8 +976,9 @@ lookup_export(char *dom, char *path, struct addrinfo *ai)
>> 	return found;
>> }
>>
>> -#ifdef CONFIG_JUNCTION
>> +#ifdef HAVE_JUNCTION_SUPPORT
>>
>> +#include <libxml/parser.h>
>> #include "junction.h"
>>
>> struct nfs_fsloc_set {
>> @@ -1084,8 +1085,7 @@ static bool locations_to_fslocdata(struct nfs_fsloc_set *locations,
>> 	*ttl = 0;
>>
>> 	for (;;) {
>> -		enum jp_status status;
>> -		int len;
>> +		int len, status;
>>
>> 		status = get_next_location(locations, &server,
>> 							&rootpath, ttl);
>> @@ -1219,7 +1219,7 @@ nfs_get_basic_junction(const char *junct_path, struct nfs_fsloc_set **locset)
>> 		return EINVAL;
>> 	}
>>
>> -	locset->ns_current = locset->ns_list;
>> +	new->ns_current = new->ns_list;
>> 	new->ns_ttl = 300;
>> 	*locset = new;
>> 	return 0;
>> @@ -1242,7 +1242,7 @@ static struct exportent *lookup_junction(char *dom, const char *pathname,
>> 	status = nfs_get_basic_junction(pathname, &locations);
>> 	switch (status) {
>> 		xlog(L_WARNING, "Dangling junction %s: %s",
>> -			pathname, strerro(status));
>> +			pathname, strerror(status));
>> 		goto out;
>> 	}
>>
>> @@ -1252,8 +1252,8 @@ static struct exportent *lookup_junction(char *dom, const char *pathname,
>>
>> 	exp = locations_to_export(locations, pathname, parent);
>>
>> -	nfs_free_locations(locset->ns_list);
>> -	free(locset);
>> +	nfs_free_locations(locations->ns_list);
>> +	free(locations);
>>
>> out:
>> 	xmlCleanupParser();
>> @@ -1273,7 +1273,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
>> 	free(eep);
>> }
>>
>> -#else	/* !CONFIG_JUNCTION */
>> +#else	/* !HAVE_JUNCTION_SUPPORT */
>>
>> static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path,
>> 		struct addrinfo *UNUSED(ai))
>> @@ -1281,7 +1281,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
>> 	dump_to_cache(f, buf, buflen, dom, path, NULL, 0);
>> }
>>
>> -#endif	/* !CONFIG_JUNCTION */
>> +#endif	/* !HAVE_JUNCTION_SUPPORT */
>>
>> static void nfsd_export(int f)
>> {
>>
> 
> --
> Chuck Lever
> 
> 
>
Chuck Lever Nov. 28, 2018, 9:05 p.m. UTC | #3
> On Nov 28, 2018, at 4:00 PM, Steve Dickson <SteveD@RedHat.com> wrote:
> 
> 
> 
> On 11/27/18 11:45 AM, Chuck Lever wrote:
>> Ping!
> My apologies for taking so long to get to this... 
> I took an extended Thanksgiving then completely 
> for got about it... Thanks for the ping... but :-) 
> 
> When I enable junctions via  --enable-junction I get the
> following compile error with or w/out these patches
> 
> gcc -DHAVE_CONFIG_H -I. -I../../support/include  -I. -I../../support/include -D_GNU_SOURCE -pipe  -Wall  -Wextra  -Werror=strict-prototypes  -Werror=missing-prototypes  -Werror=missing-declarations  -Werror=format=2  -Werror=undef  -Werror=missing-include-dirs  -Werror=strict-aliasing=2  -Werror=init-self  -Werror=implicit-function-declaration  -Werror=return-type  -Werror=switch  -Werror=overflow  -Werror=parentheses  -Werror=aggregate-return  -Werror=unused-result  -fno-strict-aliasing  -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -g -O2 -MT remove.o -MD -MP -MF .deps/remove.Tpo -c -o remove.o remove.c
> In file included from lookup.c:31:
> ../../support/include/rpcsvc/nfs_prot.h:9:10: fatal error: rpc/rpc.h: No such file or directory
> #include <rpc/rpc.h>
>          ^~~~~~~~~~~
> I know how to fix it... Add the following to CFLAGS and LDFLAGS
> `pkg-config --cflags libtirpc`
> `pkg-config --libs libtirpc`
> 
> First I'm wonder how you got things to compile w/out making these changes

Well I built and tested this on RHEL 7. If you're testing on
late-model Fedora, you're probably getting a slightly different
build configuration. Just a guess.


> and secondly I'm wondering where we should make these changes... 
> 
> Maybe we should hardcode the -I/usr/include/tirpc and -ltirpc
> flags in aclocal/libtirpc.m4?

libtirpc.m4 seems like the right place, but hard-coding seems
like a sledgehammer. Maybe have a look at the changes I made
to libxml2.m4 and do something similar?


> steved.
> 
>> 
>> 
>>> On Oct 31, 2018, at 4:02 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
>>> 
>>> CONFIG_JUNCTION was defined for use in Makefiles, but that does not
>>> provide a -DCONFIG_JUNCTION on the compiler command line. Add logic
>>> to configure.ac to get the compiler flags right.
>>> 
>>> Now that mountd junction support is getting built, a few last minute
>>> porting bugs popped out. Fix those up.
>>> 
>>> Reported-by: Yongcheng Yang <yoyang@redhat.com>
>>> BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1543126
>>> Fixes: 79978ed34973 ("mountd: Solder in support for NFS basic ... ")
>>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>>> ---
>>> configure.ac         |    8 +++++++-
>>> utils/mountd/cache.c |   18 +++++++++---------
>>> 2 files changed, 16 insertions(+), 10 deletions(-)
>>> 
>>> diff --git a/configure.ac b/configure.ac
>>> index 16eae06..b458891 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -185,7 +185,13 @@ AC_ARG_ENABLE(junction,
>>> 			[enable support for NFS junctions @<:@default=no@:>@])],
>>> 	enable_junction=$enableval,
>>> 	enable_junction=no)
>>> -AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
>>> +	if test "$enable_junction" = yes; then
>>> +		AC_DEFINE(HAVE_JUNCTION_SUPPORT, 1,
>>> +                          [Define this if you want junction support compiled in])
>>> +	else
>>> +		enable_junction=
>>> +	fi
>>> +	AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
>>> 
>>> AC_ARG_ENABLE(tirpc,
>>> 	[AC_HELP_STRING([--disable-tirpc],
>>> diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
>>> index 6f42512..7e8d403 100644
>>> --- a/utils/mountd/cache.c
>>> +++ b/utils/mountd/cache.c
>>> @@ -976,8 +976,9 @@ lookup_export(char *dom, char *path, struct addrinfo *ai)
>>> 	return found;
>>> }
>>> 
>>> -#ifdef CONFIG_JUNCTION
>>> +#ifdef HAVE_JUNCTION_SUPPORT
>>> 
>>> +#include <libxml/parser.h>
>>> #include "junction.h"
>>> 
>>> struct nfs_fsloc_set {
>>> @@ -1084,8 +1085,7 @@ static bool locations_to_fslocdata(struct nfs_fsloc_set *locations,
>>> 	*ttl = 0;
>>> 
>>> 	for (;;) {
>>> -		enum jp_status status;
>>> -		int len;
>>> +		int len, status;
>>> 
>>> 		status = get_next_location(locations, &server,
>>> 							&rootpath, ttl);
>>> @@ -1219,7 +1219,7 @@ nfs_get_basic_junction(const char *junct_path, struct nfs_fsloc_set **locset)
>>> 		return EINVAL;
>>> 	}
>>> 
>>> -	locset->ns_current = locset->ns_list;
>>> +	new->ns_current = new->ns_list;
>>> 	new->ns_ttl = 300;
>>> 	*locset = new;
>>> 	return 0;
>>> @@ -1242,7 +1242,7 @@ static struct exportent *lookup_junction(char *dom, const char *pathname,
>>> 	status = nfs_get_basic_junction(pathname, &locations);
>>> 	switch (status) {
>>> 		xlog(L_WARNING, "Dangling junction %s: %s",
>>> -			pathname, strerro(status));
>>> +			pathname, strerror(status));
>>> 		goto out;
>>> 	}
>>> 
>>> @@ -1252,8 +1252,8 @@ static struct exportent *lookup_junction(char *dom, const char *pathname,
>>> 
>>> 	exp = locations_to_export(locations, pathname, parent);
>>> 
>>> -	nfs_free_locations(locset->ns_list);
>>> -	free(locset);
>>> +	nfs_free_locations(locations->ns_list);
>>> +	free(locations);
>>> 
>>> out:
>>> 	xmlCleanupParser();
>>> @@ -1273,7 +1273,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
>>> 	free(eep);
>>> }
>>> 
>>> -#else	/* !CONFIG_JUNCTION */
>>> +#else	/* !HAVE_JUNCTION_SUPPORT */
>>> 
>>> static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path,
>>> 		struct addrinfo *UNUSED(ai))
>>> @@ -1281,7 +1281,7 @@ static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
>>> 	dump_to_cache(f, buf, buflen, dom, path, NULL, 0);
>>> }
>>> 
>>> -#endif	/* !CONFIG_JUNCTION */
>>> +#endif	/* !HAVE_JUNCTION_SUPPORT */
>>> 
>>> static void nfsd_export(int f)
>>> {
>>> 
>> 
>> --
>> Chuck Lever
>> 
>> 
>> 

--
Chuck Lever
Steve Dickson Nov. 29, 2018, 6:37 p.m. UTC | #4
On 11/28/18 4:05 PM, Chuck Lever wrote:
> 
> 
>> On Nov 28, 2018, at 4:00 PM, Steve Dickson <SteveD@RedHat.com> wrote:
>>
>>
>>
>> On 11/27/18 11:45 AM, Chuck Lever wrote:
>>> Ping!
>> My apologies for taking so long to get to this... 
>> I took an extended Thanksgiving then completely 
>> for got about it... Thanks for the ping... but :-) 
>>
>> When I enable junctions via  --enable-junction I get the
>> following compile error with or w/out these patches
>>
>> gcc -DHAVE_CONFIG_H -I. -I../../support/include  -I. -I../../support/include -D_GNU_SOURCE -pipe  -Wall  -Wextra  -Werror=strict-prototypes  -Werror=missing-prototypes  -Werror=missing-declarations  -Werror=format=2  -Werror=undef  -Werror=missing-include-dirs  -Werror=strict-aliasing=2  -Werror=init-self  -Werror=implicit-function-declaration  -Werror=return-type  -Werror=switch  -Werror=overflow  -Werror=parentheses  -Werror=aggregate-return  -Werror=unused-result  -fno-strict-aliasing  -Werror=format-overflow=2 -Werror=int-conversion -Werror=incompatible-pointer-types -Werror=misleading-indentation -g -O2 -MT remove.o -MD -MP -MF .deps/remove.Tpo -c -o remove.o remove.c
>> In file included from lookup.c:31:
>> ../../support/include/rpcsvc/nfs_prot.h:9:10: fatal error: rpc/rpc.h: No such file or directory
>> #include <rpc/rpc.h>
>>          ^~~~~~~~~~~
>> I know how to fix it... Add the following to CFLAGS and LDFLAGS
>> `pkg-config --cflags libtirpc`
>> `pkg-config --libs libtirpc`
>>
>> First I'm wonder how you got things to compile w/out making these changes
> 
> Well I built and tested this on RHEL 7. If you're testing on
> late-model Fedora, you're probably getting a slightly different
> build configuration. Just a guess.
Fair enough.... 

> 
> 
>> and secondly I'm wondering where we should make these changes... 
>>
>> Maybe we should hardcode the -I/usr/include/tirpc and -ltirpc
>> flags in aclocal/libtirpc.m4?
> 
> libtirpc.m4 seems like the right place, but hard-coding seems
> like a sledgehammer. Maybe have a look at the changes I made
> to libxml2.m4 and do something similar?
It turns out that the AM_CPPFLAGS were being overwritten by
the nfsref/Makefile.am file... Removing that definition 
allowed the proper flags and libs to be set...

steved.
diff mbox series

Patch

diff --git a/configure.ac b/configure.ac
index 16eae06..b458891 100644
--- a/configure.ac
+++ b/configure.ac
@@ -185,7 +185,13 @@  AC_ARG_ENABLE(junction,
 			[enable support for NFS junctions @<:@default=no@:>@])],
 	enable_junction=$enableval,
 	enable_junction=no)
-AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
+	if test "$enable_junction" = yes; then
+		AC_DEFINE(HAVE_JUNCTION_SUPPORT, 1,
+                          [Define this if you want junction support compiled in])
+	else
+		enable_junction=
+	fi
+	AM_CONDITIONAL(CONFIG_JUNCTION, [test "$enable_junction" = "yes" ])
 
 AC_ARG_ENABLE(tirpc,
 	[AC_HELP_STRING([--disable-tirpc],
diff --git a/utils/mountd/cache.c b/utils/mountd/cache.c
index 6f42512..7e8d403 100644
--- a/utils/mountd/cache.c
+++ b/utils/mountd/cache.c
@@ -976,8 +976,9 @@  lookup_export(char *dom, char *path, struct addrinfo *ai)
 	return found;
 }
 
-#ifdef CONFIG_JUNCTION
+#ifdef HAVE_JUNCTION_SUPPORT
 
+#include <libxml/parser.h>
 #include "junction.h"
 
 struct nfs_fsloc_set {
@@ -1084,8 +1085,7 @@  static bool locations_to_fslocdata(struct nfs_fsloc_set *locations,
 	*ttl = 0;
 
 	for (;;) {
-		enum jp_status status;
-		int len;
+		int len, status;
 
 		status = get_next_location(locations, &server,
 							&rootpath, ttl);
@@ -1219,7 +1219,7 @@  nfs_get_basic_junction(const char *junct_path, struct nfs_fsloc_set **locset)
 		return EINVAL;
 	}
 
-	locset->ns_current = locset->ns_list;
+	new->ns_current = new->ns_list;
 	new->ns_ttl = 300;
 	*locset = new;
 	return 0;
@@ -1242,7 +1242,7 @@  static struct exportent *lookup_junction(char *dom, const char *pathname,
 	status = nfs_get_basic_junction(pathname, &locations);
 	switch (status) {
 		xlog(L_WARNING, "Dangling junction %s: %s",
-			pathname, strerro(status));
+			pathname, strerror(status));
 		goto out;
 	}
 
@@ -1252,8 +1252,8 @@  static struct exportent *lookup_junction(char *dom, const char *pathname,
 
 	exp = locations_to_export(locations, pathname, parent);
 
-	nfs_free_locations(locset->ns_list);
-	free(locset);
+	nfs_free_locations(locations->ns_list);
+	free(locations);
 
 out:
 	xmlCleanupParser();
@@ -1273,7 +1273,7 @@  static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
 	free(eep);
 }
 
-#else	/* !CONFIG_JUNCTION */
+#else	/* !HAVE_JUNCTION_SUPPORT */
 
 static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path,
 		struct addrinfo *UNUSED(ai))
@@ -1281,7 +1281,7 @@  static void lookup_nonexport(int f, char *buf, int buflen, char *dom, char *path
 	dump_to_cache(f, buf, buflen, dom, path, NULL, 0);
 }
 
-#endif	/* !CONFIG_JUNCTION */
+#endif	/* !HAVE_JUNCTION_SUPPORT */
 
 static void nfsd_export(int f)
 {