common: move strscat/cpy to a file of their own
authorFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 2 Jun 2016 17:16:11 +0000 (19:16 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 2 Jun 2016 20:06:48 +0000 (22:06 +0200)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/cfgparser/Makefile
src/common/string_handling.c [new file with mode: 0644]
src/common/string_handling.h [new file with mode: 0644]
src/defs.h
src/olsr_switch/Makefile
src/olsr_switch/ohs_cmd.c

index 3c82a06..08f324d 100644 (file)
@@ -50,7 +50,7 @@ HDRS =
 
 include local.mk
 
-OBJS +=                ../ipcalc.o ../builddata.o ../common/autobuf.o ../lock_file.o
+OBJS +=                ../ipcalc.o ../builddata.o ../common/autobuf.o ../common/string_handling.o ../lock_file.o
 
 ifeq ($(OS), win32)
 
diff --git a/src/common/string_handling.c b/src/common/string_handling.c
new file mode 100644 (file)
index 0000000..5370fe9
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * The olsr.org Optimized Link-State Routing daemon (olsrd)
+ *
+ * (c) by the OLSR project
+ *
+ * See our Git repository to find out who worked on this file
+ * and thus is a copyright holder on it.
+ *
+ * All rights reserved.
+ *
+ * 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 olsr.org, olsrd 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.
+ *
+ * Visit http://www.olsr.org for more information.
+ *
+ * If you find this software useful feel free to make a donation
+ * to the project. For more information see the website or contact
+ * the copyright holders.
+ *
+ */
+
+#include <assert.h>
+#include <string.h>
+#include <stdio.h>
+
+#include "common/string_handling.h"
+
+/*
+ * A somewhat safe version of strncpy and strncat. Note, that
+ * BSD/Solaris strlcpy()/strlcat() differ in implementation, while
+ * the BSD compiler prints out a warning if you use plain strcpy().
+ */
+
+char * strscpy(char *dest, const char *src, size_t dest_size) {
+  register size_t l = 0;
+#if !defined(NODEBUG) && defined(DEBUG)
+  if (NULL == dest)
+    fprintf(stderr, "Warning: dest is NULL in strscpy!\n");
+  if (NULL == src)
+    fprintf(stderr, "Warning: src is NULL in strscpy!\n");
+#endif /* !defined(NODEBUG) && defined(DEBUG) */
+  if (!dest || !src) {
+    return NULL;
+  }
+
+  /* src does not need to be null terminated */
+  if (0 < dest_size--)
+    while (l < dest_size && 0 != src[l])
+      l++;
+  dest[l] = 0;
+
+  return strncpy(dest, src, l);
+}
+
+char * strscat(char *dest, const char *src, size_t dest_size) {
+  register size_t l = strlen(dest);
+  return strscpy(dest + l, src, dest_size > l ? dest_size - l : 0);
+}
diff --git a/src/common/string_handling.h b/src/common/string_handling.h
new file mode 100644 (file)
index 0000000..d5718c6
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * The olsr.org Optimized Link-State Routing daemon (olsrd)
+ *
+ * (c) by the OLSR project
+ *
+ * See our Git repository to find out who worked on this file
+ * and thus is a copyright holder on it.
+ *
+ * All rights reserved.
+ *
+ * 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 olsr.org, olsrd 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.
+ *
+ * Visit http://www.olsr.org for more information.
+ *
+ * If you find this software useful feel free to make a donation
+ * to the project. For more information see the website or contact
+ * the copyright holders.
+ *
+ */
+
+#ifndef _COMMON_STRING_H_
+#define _COMMON_STRING_H_
+
+#include <stddef.h>
+
+char *strscpy(char *dest, const char *src, size_t dest_size);
+char *strscat(char *dest, const char *src, size_t dest_size);
+
+#endif /* _COMMON_STRING_H_ */
index a132f8f..d9ce8ba 100644 (file)
@@ -47,6 +47,8 @@
 #define _OLSR_DEFS
 
 /* Common includes */
+#include "common/string_handling.h"
+
 #include <sys/time.h>
 #include <sys/times.h>
 #include <sys/socket.h>
@@ -115,42 +117,6 @@ extern FILE *debug_handle;
 #define MIN(x,y)       ((x) < (y) ? (x) : (y))
 #endif /* MIN */
 
-/*
- * A somewhat safe version of strncpy and strncat. Note, that
- * BSD/Solaris strlcpy()/strlcat() differ in implementation, while
- * the BSD compiler prints out a warning if you use plain strcpy().
- */
-
-static INLINE char *
-strscpy(char *dest, const char *src, size_t size)
-{
-  register size_t l = 0;
-#if !defined(NODEBUG) && defined(DEBUG)
-  if (NULL == dest)
-    fprintf(stderr, "Warning: dest is NULL in strscpy!\n");
-  if (NULL == src)
-    fprintf(stderr, "Warning: src is NULL in strscpy!\n");
-#endif /* !defined(NODEBUG) && defined(DEBUG) */
-  if (!dest || !src) {
-    return NULL;
-  }
-
-  /* src does not need to be null terminated */
-  if (0 < size--)
-    while (l < size && 0 != src[l])
-      l++;
-  dest[l] = 0;
-
-  return strncpy(dest, src, l);
-}
-
-static INLINE char *
-strscat(char *dest, const char *src, size_t size)
-{
-  register size_t l = strlen(dest);
-  return strscpy(dest + l, src, size > l ? size - l : 0);
-}
-
 /*
  * Queueing macros
  */
index ef65067..6e3c747 100644 (file)
@@ -51,6 +51,9 @@ else
 BINNAME = olsr_switch
 endif
 
+HDRS += ../common/string_handling.h
+SRCS += ../common/string_handling.c
+
 default_target:        $(TOPDIR)/$(BINNAME)
 
 $(TOPDIR)/$(BINNAME):  $(OBJS)
index 1ef477d..d28716f 100644 (file)
@@ -43,6 +43,7 @@
  *
  */
 
+#include "common/string_handling.h"
 #include "olsr_host_switch.h"
 #include "olsr_types.h"
 #include "commands.h"