Unic routine for checking agent names
authorJosé Bollo <jose.bollo@iot.bzh>
Thu, 24 Oct 2019 09:11:23 +0000 (11:11 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Thu, 24 Oct 2019 09:11:23 +0000 (11:11 +0200)
Change-Id: Ibd3601ce97b4bc9e1035642584df0fe7788716db
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
src/CMakeLists.txt
src/cyn.c
src/cynagora.c
src/names.c [new file with mode: 0644]
src/names.h [new file with mode: 0644]

index cf98bbe..f9034de 100644 (file)
@@ -25,6 +25,7 @@ set(LIBCORE_SOURCES
        fbuf.c
        filedb.c
        memdb.c
+       names.c
        pollitem.c
        queue.c
 )
@@ -45,6 +46,7 @@ set(LIBCLI_SOURCES
        cynagora.c
        expire.c
        idgen.c
+       names.c
        prot.c
        socket.c
 )
index 7255821..b1477f4 100644 (file)
--- a/src/cyn.c
+++ b/src/cyn.c
 #include <stdbool.h>
 #include <string.h>
 #include <errno.h>
-#include <ctype.h>
 
 #include "data.h"
 #include "db.h"
 #include "queue.h"
 #include "cyn.h"
+#include "names.h"
 
 #if !CYN_SEARCH_DEEP_MAX
 # define CYN_SEARCH_DEEP_MAX 10
@@ -557,31 +557,6 @@ cyn_query_reply(
        free(query);
 }
 
-/**
- * Check the name and compute its length. Returns 0 in case of invalid name
- * @param name the name to check
- * @return the length of the name or zero if invalid
- */
-static
-size_t
-agent_check_name(
-       const char *name
-) {
-       char c;
-       size_t length = 0;
-       if (name) {
-               while ((c = name[length])) {
-                       if (length > UINT8_MAX
-                        || (!isalnum(c) && !strchr("@_-$", c))) {
-                               length = 0;
-                               break;
-                       }
-                       length++;
-               }
-       }
-       return length;
-}
-
 /* see cyn.h */
 int
 cyn_agent_add(
index a95789e..2e35876 100644 (file)
@@ -31,7 +31,6 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <poll.h>
-#include <ctype.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/stat.h>
@@ -44,6 +43,7 @@
 #include "socket.h"
 #include "expire.h"
 #include "idgen.h"
+#include "names.h"
 
 #define MIN_CACHE_SIZE 400
 #define CACHESIZE(x)  ((x) >= MIN_CACHE_SIZE ? (x) : (x) ? MIN_CACHE_SIZE : 0)
@@ -1231,31 +1231,6 @@ cynagora_drop(
 /*** PRIVATE AGENT METHODS                                                  ***/
 /******************************************************************************/
 
-/**
- * Check the name and compute its length. Returns 0 in case of invalid name
- * @param name the name to check
- * @return the length of the name or zero if invalid
- */
-static
-size_t
-agent_check_name(
-       const char *name
-) {
-       char c;
-       size_t length = 0;
-       if (name) {
-               while ((c = name[length])) {
-                       if (length > UINT8_MAX
-                        || (!isalnum(c) && !strchr("@_-$", c))) {
-                               length = 0;
-                               break;
-                       }
-                       length++;
-               }
-       }
-       return length;
-}
-
 /**
  * Search the recorded agent of name
  *
diff --git a/src/names.c b/src/names.c
new file mode 100644 (file)
index 0000000..f9a7817
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2018 "IoT.bzh"
+ * Author José Bollo <jose.bollo@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/******************************************************************************/
+/******************************************************************************/
+/* IMPLEMENTATION OF NAMES                                                    */
+/******************************************************************************/
+/******************************************************************************/
+
+#include <ctype.h>
+#include <string.h>
+#include <stdint.h>
+
+#include "names.h"
+
+/**
+ * Check the name and compute its length. Returns 0 in case of invalid name
+ * @param name the name to check
+ * @return the length of the name or zero if invalid
+ */
+size_t
+agent_check_name(
+       const char *name
+) {
+       char c;
+       size_t length = 0;
+       if (name) {
+               while ((c = name[length])) {
+                       if (length > UINT8_MAX
+                        || (!isalnum(c) && !strchr("@_-$", c))) {
+                               length = 0;
+                               break;
+                       }
+                       length++;
+               }
+       }
+       return length;
+}
+
diff --git a/src/names.h b/src/names.h
new file mode 100644 (file)
index 0000000..30f4a99
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2018 "IoT.bzh"
+ * Author José Bollo <jose.bollo@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#pragma once
+/******************************************************************************/
+/******************************************************************************/
+/* IMPLEMENTATION OF NAMES                                                    */
+/******************************************************************************/
+/******************************************************************************/
+
+/**
+ * Check the name and compute its length. Returns 0 in case of invalid name
+ * @param name the name to check
+ * @return the length of the name or zero if invalid
+ */
+extern
+size_t
+agent_check_name(
+       const char *name
+);