| From 690a90a5b7786e40b5447ad7c5f19a7657d27405 Mon Sep 17 00:00:00 2001 |
| From: Mingli Yu <Mingli.Yu@windriver.com> |
| Date: Fri, 14 Dec 2018 17:44:32 +0800 |
| Subject: [PATCH] Makefile.am: fix undefined function for libnsm.a |
| |
| The source file of libnsm.a uses some function |
| in ../support/misc/file.c, add ../support/misc/file.c |
| to libnsm_a_SOURCES to fix build error when run |
| "make -C tests statdb_dump": |
| | ../support/nsm/libnsm.a(file.o): In function `nsm_make_pathname': |
| | /usr/src/debug/nfs-utils/2.3.3-r0/nfs-utils-2.3.3/support/nsm/file.c:175: undefined reference to `generic_make_pathname' |
| | /usr/src/debug/nfs-utils/2.3.3-r0/nfs-utils-2.3.3/support/nsm/file.c:175: undefined reference to `generic_make_pathname' |
| | /usr/src/debug/nfs-utils/2.3.3-r0/nfs-utils-2.3.3/support/nsm/file.c:175: undefined reference to `generic_make_pathname' |
| | ../support/nsm/libnsm.a(file.o): In function `nsm_setup_pathnames': |
| | /usr/src/debug/nfs-utils/2.3.3-r0/nfs-utils-2.3.3/support/nsm/file.c:280: undefined reference to `generic_setup_basedir' |
| | collect2: error: ld returned 1 exit status |
| |
| As there is already one source file named file.c |
| as support/nsm/file.c in support/nsm/Makefile.am, |
| so rename ../support/misc/file.c to ../support/misc/misc.c. |
| |
| Upstream-Status: Submitted[https://marc.info/?l=linux-nfs&m=154502780423058&w=2] |
| |
| Signed-off-by: Mingli Yu <Mingli.Yu@windriver.com> |
| |
| Rebase it. |
| |
| Signed-off-by: Robert Yang <liezhi.yang@windriver.com> |
| --- |
| support/misc/Makefile.am | 2 +- |
| support/misc/file.c | 115 --------------------------------------------------------------------------------------------------------------- |
| support/misc/misc.c | 111 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| support/nsm/Makefile.am | 2 +- |
| 4 files changed, 113 insertions(+), 117 deletions(-) |
| |
| diff --git a/support/misc/Makefile.am b/support/misc/Makefile.am |
| index f9993e3..8b0e9db 100644 |
| --- a/support/misc/Makefile.am |
| +++ b/support/misc/Makefile.am |
| @@ -1,7 +1,7 @@ |
| ## Process this file with automake to produce Makefile.in |
| |
| noinst_LIBRARIES = libmisc.a |
| -libmisc_a_SOURCES = tcpwrapper.c from_local.c mountpoint.c file.c \ |
| +libmisc_a_SOURCES = tcpwrapper.c from_local.c mountpoint.c misc.c \ |
| nfsd_path.c workqueue.c xstat.c |
| |
| MAINTAINERCLEANFILES = Makefile.in |
| diff --git a/support/misc/file.c b/support/misc/file.c |
| deleted file mode 100644 |
| index 06f6bb2..0000000 |
| --- a/support/misc/file.c |
| +++ /dev/null |
| @@ -1,115 +0,0 @@ |
| -/* |
| - * Copyright 2009 Oracle. All rights reserved. |
| - * Copyright 2017 Red Hat, Inc. All rights reserved. |
| - * |
| - * This file is part of nfs-utils. |
| - * |
| - * nfs-utils is free software; you can redistribute it and/or modify |
| - * it under the terms of the GNU General Public License as published by |
| - * the Free Software Foundation; either version 2 of the License, or |
| - * (at your option) any later version. |
| - * |
| - * nfs-utils is distributed in the hope that it will be useful, |
| - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| - * GNU General Public License for more details. |
| - * |
| - * You should have received a copy of the GNU General Public License |
| - * along with nfs-utils. If not, see <http://www.gnu.org/licenses/>. |
| - */ |
| - |
| -#ifdef HAVE_CONFIG_H |
| -#include <config.h> |
| -#endif |
| - |
| -#include <sys/stat.h> |
| - |
| -#include <string.h> |
| -#include <libgen.h> |
| -#include <stdio.h> |
| -#include <errno.h> |
| -#include <dirent.h> |
| -#include <stdlib.h> |
| -#include <stdbool.h> |
| -#include <limits.h> |
| - |
| -#include "xlog.h" |
| -#include "misc.h" |
| - |
| -/* |
| - * Returns a dynamically allocated, '\0'-terminated buffer |
| - * containing an appropriate pathname, or NULL if an error |
| - * occurs. Caller must free the returned result with free(3). |
| - */ |
| -__attribute__((__malloc__)) |
| -char * |
| -generic_make_pathname(const char *base, const char *leaf) |
| -{ |
| - size_t size; |
| - char *path; |
| - int len; |
| - |
| - size = strlen(base) + strlen(leaf) + 2; |
| - if (size > PATH_MAX) |
| - return NULL; |
| - |
| - path = malloc(size); |
| - if (path == NULL) |
| - return NULL; |
| - |
| - len = snprintf(path, size, "%s/%s", base, leaf); |
| - if ((len < 0) || ((size_t)len >= size)) { |
| - free(path); |
| - return NULL; |
| - } |
| - |
| - return path; |
| -} |
| - |
| - |
| -/** |
| - * generic_setup_basedir - set up basedir |
| - * @progname: C string containing name of program, for error messages |
| - * @parentdir: C string containing pathname to on-disk state, or NULL |
| - * @base: character buffer to contain the basedir that is set up |
| - * @baselen: size of @base in bytes |
| - * |
| - * This runs before logging is set up, so error messages are directed |
| - * to stderr. |
| - * |
| - * Returns true and sets up our basedir, if @parentdir was valid |
| - * and usable; otherwise false is returned. |
| - */ |
| -_Bool |
| -generic_setup_basedir(const char *progname, const char *parentdir, char *base, |
| - const size_t baselen) |
| -{ |
| - static char buf[PATH_MAX]; |
| - struct stat st; |
| - char *path; |
| - |
| - /* First: test length of name and whether it exists */ |
| - if ((strlen(parentdir) >= baselen) || (strlen(parentdir) >= PATH_MAX)) { |
| - (void)fprintf(stderr, "%s: Directory name too long: %s", |
| - progname, parentdir); |
| - return false; |
| - } |
| - if (lstat(parentdir, &st) == -1) { |
| - (void)fprintf(stderr, "%s: Failed to stat %s: %s", |
| - progname, parentdir, strerror(errno)); |
| - return false; |
| - } |
| - |
| - /* Ensure we have a clean directory pathname */ |
| - strncpy(buf, parentdir, sizeof(buf)-1); |
| - path = dirname(buf); |
| - if (*path == '.') { |
| - (void)fprintf(stderr, "%s: Unusable directory %s", |
| - progname, parentdir); |
| - return false; |
| - } |
| - |
| - xlog(D_CALL, "Using %s as the state directory", parentdir); |
| - strcpy(base, parentdir); |
| - return true; |
| -} |
| diff --git a/support/misc/misc.c b/support/misc/misc.c |
| new file mode 100644 |
| index 0000000..e7c3819 |
| --- /dev/null |
| +++ b/support/misc/misc.c |
| @@ -0,0 +1,111 @@ |
| +/* |
| + * Copyright 2009 Oracle. All rights reserved. |
| + * Copyright 2017 Red Hat, Inc. All rights reserved. |
| + * |
| + * This file is part of nfs-utils. |
| + * |
| + * nfs-utils is free software; you can redistribute it and/or modify |
| + * it under the terms of the GNU General Public License as published by |
| + * the Free Software Foundation; either version 2 of the License, or |
| + * (at your option) any later version. |
| + * |
| + * nfs-utils is distributed in the hope that it will be useful, |
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| + * GNU General Public License for more details. |
| + * |
| + * You should have received a copy of the GNU General Public License |
| + * along with nfs-utils. If not, see <http://www.gnu.org/licenses/>. |
| + */ |
| + |
| +#include <sys/stat.h> |
| + |
| +#include <string.h> |
| +#include <libgen.h> |
| +#include <stdio.h> |
| +#include <errno.h> |
| +#include <dirent.h> |
| +#include <stdlib.h> |
| +#include <stdbool.h> |
| +#include <limits.h> |
| + |
| +#include "xlog.h" |
| +#include "misc.h" |
| + |
| +/* |
| + * Returns a dynamically allocated, '\0'-terminated buffer |
| + * containing an appropriate pathname, or NULL if an error |
| + * occurs. Caller must free the returned result with free(3). |
| + */ |
| +__attribute__((__malloc__)) |
| +char * |
| +generic_make_pathname(const char *base, const char *leaf) |
| +{ |
| + size_t size; |
| + char *path; |
| + int len; |
| + |
| + size = strlen(base) + strlen(leaf) + 2; |
| + if (size > PATH_MAX) |
| + return NULL; |
| + |
| + path = malloc(size); |
| + if (path == NULL) |
| + return NULL; |
| + |
| + len = snprintf(path, size, "%s/%s", base, leaf); |
| + if ((len < 0) || ((size_t)len >= size)) { |
| + free(path); |
| + return NULL; |
| + } |
| + |
| + return path; |
| +} |
| + |
| + |
| +/** |
| + * generic_setup_basedir - set up basedir |
| + * @progname: C string containing name of program, for error messages |
| + * @parentdir: C string containing pathname to on-disk state, or NULL |
| + * @base: character buffer to contain the basedir that is set up |
| + * @baselen: size of @base in bytes |
| + * |
| + * This runs before logging is set up, so error messages are directed |
| + * to stderr. |
| + * |
| + * Returns true and sets up our basedir, if @parentdir was valid |
| + * and usable; otherwise false is returned. |
| + */ |
| +_Bool |
| +generic_setup_basedir(const char *progname, const char *parentdir, char *base, |
| + const size_t baselen) |
| +{ |
| + static char buf[PATH_MAX]; |
| + struct stat st; |
| + char *path; |
| + |
| + /* First: test length of name and whether it exists */ |
| + if ((strlen(parentdir) >= baselen) || (strlen(parentdir) >= PATH_MAX)) { |
| + (void)fprintf(stderr, "%s: Directory name too long: %s", |
| + progname, parentdir); |
| + return false; |
| + } |
| + if (lstat(parentdir, &st) == -1) { |
| + (void)fprintf(stderr, "%s: Failed to stat %s: %s", |
| + progname, parentdir, strerror(errno)); |
| + return false; |
| + } |
| + |
| + /* Ensure we have a clean directory pathname */ |
| + strncpy(buf, parentdir, sizeof(buf)-1); |
| + path = dirname(buf); |
| + if (*path == '.') { |
| + (void)fprintf(stderr, "%s: Unusable directory %s", |
| + progname, parentdir); |
| + return false; |
| + } |
| + |
| + xlog(D_CALL, "Using %s as the state directory", parentdir); |
| + strcpy(base, parentdir); |
| + return true; |
| +} |
| diff --git a/support/nsm/Makefile.am b/support/nsm/Makefile.am |
| index 8f5874e..68f1a46 100644 |
| --- a/support/nsm/Makefile.am |
| +++ b/support/nsm/Makefile.am |
| @@ -10,7 +10,7 @@ GENFILES = $(GENFILES_CLNT) $(GENFILES_SVC) $(GENFILES_XDR) $(GENFILES_H) |
| EXTRA_DIST = sm_inter.x |
| |
| noinst_LIBRARIES = libnsm.a |
| -libnsm_a_SOURCES = $(GENFILES) file.c rpc.c |
| +libnsm_a_SOURCES = $(GENFILES) ../misc/misc.c file.c rpc.c |
| |
| BUILT_SOURCES = $(GENFILES) |
| |