Please correct the copyright dates on error_conversion.c to match the set from the files you copied those routines from (including 2012). Reviewed-by: Steven Dake <sdake@xxxxxxxxxx> On 02/08/2012 03:57 PM, Angus Salkeld wrote: > We have always had this problem and worked around it by coping code > or using inline functions. Both not good IMO. > > Signed-off-by: Angus Salkeld <asalkeld@xxxxxxxxxx> > --- > Makefile.am | 2 +- > common_lib/Makefile.am | 43 ++++++++++++++++ > common_lib/error_conversion.c | 113 +++++++++++++++++++++++++++++++++++++++++ > configure.ac | 1 + > exec/Makefile.am | 4 +- > include/corosync/corotypes.h | 77 +--------------------------- > lib/Makefile.am | 2 +- > 7 files changed, 162 insertions(+), 80 deletions(-) > create mode 100644 common_lib/Makefile.am > create mode 100644 common_lib/error_conversion.c > > diff --git a/Makefile.am b/Makefile.am > index 178b34d..b16eae6 100644 > --- a/Makefile.am > +++ b/Makefile.am > @@ -47,7 +47,7 @@ MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure depcomp \ > > dist_doc_DATA = LICENSE INSTALL README.recovery SECURITY TODO AUTHORS > > -SUBDIRS = include lib exec tools test cts pkgconfig \ > +SUBDIRS = include common_lib lib exec tools test cts pkgconfig \ > man init conf > > coverity: > diff --git a/common_lib/Makefile.am b/common_lib/Makefile.am > new file mode 100644 > index 0000000..14d6fba > --- /dev/null > +++ b/common_lib/Makefile.am > @@ -0,0 +1,43 @@ > +# > +# Copyright (c) 2009 Red Hat, Inc. > +# > +# Authors: Angus Salkeld > +# > +# This software licensed under BSD license, the text of which follows: > +# > +# Redistribution and use in source and binary forms, with or without > +# modification, are permitted provided that the following conditions are met: > +# > +# - Redistributions of source code must retain the above copyright notice, > +# this list of conditions and the following disclaimer. > +# - Redistributions in binary form must reproduce the above copyright notice, > +# this list of conditions and the following disclaimer in the documentation > +# and/or other materials provided with the distribution. > +# - Neither the name of the MontaVista Software, Inc. nor the names of its > +# contributors may be used to endorse or promote products derived from this > +# software without specific prior written permission. > +# > +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > +# THE POSSIBILITY OF SUCH DAMAGE. > + > +MAINTAINERCLEANFILES = Makefile.in > + > +AM_CFLAGS = -fPIC > + > +INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include > + > +noinst_LIBRARIES = libcorosync_common.a > + > +libcorosync_common_a_SOURCES = error_conversion.c > + > +clean-local: > + rm -f *.o *.a > diff --git a/common_lib/error_conversion.c b/common_lib/error_conversion.c > new file mode 100644 > index 0000000..ad6193a > --- /dev/null > +++ b/common_lib/error_conversion.c > @@ -0,0 +1,113 @@ > +/* > + * Copyright (c) 2012 Red Hat, Inc. > + * > + * All rights reserved. > + * > + * Author: Angus Salkeld (asalkeld@xxxxxxxxxx) > + * > + * This software licensed under BSD license, the text of which follows: > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions are met: > + * > + * - Redistributions of source code must retain the above copyright notice, > + * this list of conditions and the following disclaimer. > + * - Redistributions in binary form must reproduce the above copyright notice, > + * this list of conditions and the following disclaimer in the documentation > + * and/or other materials provided with the distribution. > + * - Neither the name of the MontaVista Software, Inc. nor the names of its > + * contributors may be used to endorse or promote products derived from this > + * software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" > + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE > + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE > + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE > + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR > + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF > + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS > + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN > + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) > + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF > + * THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#include <corosync/corotypes.h> > + > +cs_error_t qb_to_cs_error (int result) > +{ > + int32_t res; > + cs_error_t err = CS_ERR_LIBRARY; > + > + if (result >= 0) { > + return CS_OK; > + } > + res = -result; > + > + switch (res) { > + case EBADF: > + err = CS_ERR_BAD_HANDLE; > + break; > + case ENOMEM: > + err = CS_ERR_NO_MEMORY; > + break; > + case ETIMEDOUT: > + case EAGAIN: > + err = CS_ERR_TRY_AGAIN; > + break; > + case EBADE: > + err = CS_ERR_FAILED_OPERATION; > + break; > + case ETIME: > + err = CS_ERR_TIMEOUT; > + break; > + case EINVAL: > + err = CS_ERR_INVALID_PARAM; > + break; > + case EBUSY: > + err = CS_ERR_BUSY; > + break; > + case EACCES: > + err = CS_ERR_ACCESS; > + break; > + case EOVERFLOW: > + err = CS_ERR_NAME_TOO_LONG; > + break; > + case EEXIST: > + err = CS_ERR_EXIST; > + break; > + case ENOBUFS: > + err = CS_ERR_QUEUE_FULL; > + break; > + case ENOSPC: > + err = CS_ERR_NO_SPACE; > + break; > + case EINTR: > + err = CS_ERR_INTERRUPT; > + break; > + case ENOENT: > + case ENODEV: > + err = CS_ERR_NOT_EXIST; > + break; > + case ENOSYS: > + case ENOTSUP: > + err = CS_ERR_NOT_SUPPORTED; > + break; > + case EBADMSG: > + err = CS_ERR_MESSAGE_ERROR; > + break; > + case EMSGSIZE: > + case E2BIG: > + err = CS_ERR_TOO_BIG; > + break; > + case ECONNREFUSED: > + case ENOTCONN: > + default: > + err = CS_ERR_LIBRARY; > + break; > + } > + > + return err; > +} > + > + > diff --git a/configure.ac b/configure.ac > index d03c91b..65abfae 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -131,6 +131,7 @@ AC_CONFIG_FILES([Makefile > include/Makefile > init/Makefile > lib/Makefile > + common_lib/Makefile > man/Makefile > pkgconfig/Makefile > test/Makefile > diff --git a/exec/Makefile.am b/exec/Makefile.am > index 3b6f201..d4d83eb 100644 > --- a/exec/Makefile.am > +++ b/exec/Makefile.am > @@ -52,8 +52,8 @@ corosync_SOURCES = evil.c vsf_ykd.c coroparse.c vsf_quorum.c syncv2.c \ > votequorum.c wd.c util.c schedwrk.c main.c \ > apidef.c quorum.c sync.c icmap.c timer.c \ > ipc_glue.c service.c mainconfig.c totemconfig.c > -corosync_LDADD = -ltotem_pg $(LIBQB_LIBS) $(statgrab_LIBS) > -corosync_DEPENDENCIES = libtotem_pg.so.$(SONAME) > +corosync_LDADD = -ltotem_pg ../common_lib/libcorosync_common.a $(LIBQB_LIBS) $(statgrab_LIBS) > +corosync_DEPENDENCIES = libtotem_pg.so.$(SONAME) ../common_lib/libcorosync_common.a > corosync_LDFLAGS = $(OS_DYFLAGS) -L./ > > TOTEM_OBJS = $(TOTEM_SRC:%.c=%.o) > diff --git a/include/corosync/corotypes.h b/include/corosync/corotypes.h > index c67bf29..dcd78f3 100644 > --- a/include/corosync/corotypes.h > +++ b/include/corosync/corotypes.h > @@ -134,82 +134,7 @@ static inline uint64_t cs_timestamp_get(void) > return result; > } > > -static inline cs_error_t qb_to_cs_error (int result) > -{ > - int32_t res; > - cs_error_t err = CS_ERR_LIBRARY; > - > - if (result >= 0) { > - return CS_OK; > - } > - res = -result; > - > - switch (res) { > - case EBADF: > - err = CS_ERR_BAD_HANDLE; > - break; > - case ENOMEM: > - err = CS_ERR_NO_MEMORY; > - break; > - case ETIMEDOUT: > - case EAGAIN: > - err = CS_ERR_TRY_AGAIN; > - break; > - case EBADE: > - err = CS_ERR_FAILED_OPERATION; > - break; > - case ETIME: > - err = CS_ERR_TIMEOUT; > - break; > - case EINVAL: > - err = CS_ERR_INVALID_PARAM; > - break; > - case EBUSY: > - err = CS_ERR_BUSY; > - break; > - case EACCES: > - err = CS_ERR_ACCESS; > - break; > - case EOVERFLOW: > - err = CS_ERR_NAME_TOO_LONG; > - break; > - case EEXIST: > - err = CS_ERR_EXIST; > - break; > - case ENOBUFS: > - err = CS_ERR_QUEUE_FULL; > - break; > - case ENOSPC: > - err = CS_ERR_NO_SPACE; > - break; > - case EINTR: > - err = CS_ERR_INTERRUPT; > - break; > - case ENOENT: > - case ENODEV: > - err = CS_ERR_NOT_EXIST; > - break; > - case ENOSYS: > - case ENOTSUP: > - err = CS_ERR_NOT_SUPPORTED; > - break; > - case EBADMSG: > - err = CS_ERR_MESSAGE_ERROR; > - break; > - case EMSGSIZE: > - case E2BIG: > - err = CS_ERR_TOO_BIG; > - break; > - case ECONNREFUSED: > - case ENOTCONN: > - default: > - err = CS_ERR_LIBRARY; > - break; > - } > - > - return err; > -} > - > +cs_error_t qb_to_cs_error (int result); > > /* > * DEPRECATED > diff --git a/lib/Makefile.am b/lib/Makefile.am > index d2dd8ed..6744233 100644 > --- a/lib/Makefile.am > +++ b/lib/Makefile.am > @@ -89,7 +89,7 @@ lib%.so: lib%.a > $(CC) -shared -o $@.$(call get_soname,$*) \ > -Wl,-soname=lib$*.so.$(call get_major,$*) \ > -Wl,-version-script=$(srcdir)/lib$*.versions \ > - -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(LIBQB_LIBS) $(AM_LDFLAGS) $(call get_linker_add,$*) > + -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(LIBQB_LIBS) ../common_lib/libcorosync_common.a $(AM_LDFLAGS) $(call get_linker_add,$*) > ln -sf lib$*.so.$(call get_soname,$*) lib$*.so > ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*) > _______________________________________________ discuss mailing list discuss@xxxxxxxxxxxx http://lists.corosync.org/mailman/listinfo/discuss