]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
Add util-conf for config util
authorEric Leblond <eric@regit.org>
Tue, 9 Apr 2013 12:41:34 +0000 (14:41 +0200)
committerEric Leblond <eric@regit.org>
Mon, 29 Jul 2013 12:33:41 +0000 (14:33 +0200)
src/Makefile.am
src/suricata-common.h
src/suricata.c
src/util-conf.c [new file with mode: 0644]
src/util-conf.h [new file with mode: 0644]

index b3a7783a0a0d2070487ab5a9701125b603cb0ffb..fc9ce7c84dd2d62d04c43f9b6bf54680bbc6f4e9 100644 (file)
@@ -263,6 +263,7 @@ util-byte.c util-byte.h \
 util-checksum.c util-checksum.h \
 util-cidr.c util-cidr.h \
 util-classification-config.c util-classification-config.h \
+util-conf.c util-conf.h \
 util-coredump-config.c util-coredump-config.h \
 util-cpu.c util-cpu.h \
 util-crypt.c util-crypt.h \
index 7db178a07e8149222c2f0355a06976212a391527..9a66ab181203b7eec94e06ee03b7805848b45a02 100644 (file)
@@ -309,6 +309,7 @@ typedef enum PacketProfileDetectId_ {
 #include "detect-engine-alert.h"
 #include "util-optimize.h"
 #include "util-path.h"
+#include "util-conf.h"
 
 size_t strlcat(char *, const char *src, size_t siz);
 size_t strlcpy(char *dst, const char *src, size_t siz);
index 6fc2eb4a9cb9f8cd6a539c64693af8cefb35797e..82a3c25bd9a8a89148615d0493db37991c8aeba8 100644 (file)
@@ -805,21 +805,6 @@ static int IsRuleReloadSet(int quiet)
     return rule_reload;
 }
 
-static TmEcode CheckLogDirectory(char *log_dir)
-{
-    SCEnter();
-#ifdef OS_WIN32
-    struct _stat buf;
-    if (_stat(log_dir, &buf) != 0) {
-#else
-    struct stat buf;
-    if (stat(log_dir, &buf) != 0) {
-#endif /* OS_WIN32 */
-            SCReturn(TM_ECODE_FAILED);
-    }
-    SCReturn(TM_ECODE_OK);
-}
-
 int main(int argc, char **argv)
 {
     int opt;
@@ -1294,8 +1279,8 @@ int main(int argc, char **argv)
             }
             break;
         case 'l':
-            if (ConfSet("default-log-dir", optarg, 0) != 1) {
-                fprintf(stderr, "ERROR: Failed to set log directory.\n");
+            if (SetLogDirectory(optarg) != TM_ECODE_OK) {
+                SCLogError(SC_ERR_FATAL, "Failed to set log directory.\n");
                 exit(EXIT_FAILURE);
             }
             if (CheckLogDirectory(optarg) != TM_ECODE_OK) {
@@ -1489,16 +1474,7 @@ int main(int argc, char **argv)
 
     /* Check for the existance of the default logging directory which we pick
      * from suricata.yaml.  If not found, shut the engine down */
-    if (ConfGet("default-log-dir", &log_dir) != 1) {
-#ifdef OS_WIN32
-        log_dir = _getcwd(NULL, 0);
-        if (log_dir == NULL) {
-            log_dir = DEFAULT_LOG_DIR;
-        }
-#else
-        log_dir = DEFAULT_LOG_DIR;
-#endif /* OS_WIN32 */
-    }
+    log_dir = GetLogDirectory();
 
     if (CheckLogDirectory(log_dir) != TM_ECODE_OK) {
         SCLogError(SC_ERR_LOGDIR_CONFIG, "The logging directory \"%s\" "
diff --git a/src/util-conf.c b/src/util-conf.c
new file mode 100644 (file)
index 0000000..ba9dd3b
--- /dev/null
@@ -0,0 +1,65 @@
+/* Copyright (C) 2013 Open Information Security Foundation
+ *
+ * You can copy, redistribute or modify this Program under the terms of
+ * the GNU General Public License version 2 as published by the Free
+ * Software Foundation.
+ *
+ * This program 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
+ * version 2 along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+/**
+ * \file
+ *
+ * \author Eric Leblond <eric@regit.org>
+ *
+ */
+
+#include "suricata-common.h"
+#include "config.h"
+#include "conf.h"
+
+TmEcode SetLogDirectory(char *name)
+{
+    return ConfSet("default-log-dir", name, 0) ? TM_ECODE_OK : TM_ECODE_FAILED;
+}
+
+char *GetLogDirectory()
+{
+    char *log_dir = NULL;
+
+    if (ConfGet("default-log-dir", &log_dir) != 1) {
+#ifdef OS_WIN32
+        log_dir = _getcwd(NULL, 0);
+        if (log_dir == NULL) {
+            log_dir = DEFAULT_LOG_DIR;
+        }
+#else
+        log_dir = DEFAULT_LOG_DIR;
+#endif /* OS_WIN32 */
+    }
+
+    return log_dir;
+}
+
+TmEcode CheckLogDirectory(char *log_dir)
+{
+    SCEnter();
+#ifdef OS_WIN32
+    struct _stat buf;
+    if (_stat(log_dir, &buf) != 0) {
+#else
+    struct stat buf;
+    if (stat(log_dir, &buf) != 0) {
+#endif /* OS_WIN32 */
+            SCReturnInt(TM_ECODE_FAILED);
+    }
+    SCReturnInt(TM_ECODE_OK);
+}
diff --git a/src/util-conf.h b/src/util-conf.h
new file mode 100644 (file)
index 0000000..0eb7954
--- /dev/null
@@ -0,0 +1,32 @@
+/* Copyright (C) 2013 Open Information Security Foundation
+ *
+ * You can copy, redistribute or modify this Program under the terms of
+ * the GNU General Public License version 2 as published by the Free
+ * Software Foundation.
+ *
+ * This program 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
+ * version 2 along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ * 02110-1301, USA.
+ */
+
+/**
+ * \file
+ *
+ * \author Eric Leblond <eric@regit.org>
+ *
+ */
+
+#ifndef __UTIL_UTIL_CONF_H__
+#define __UTIL_UTIL_CONF_H__
+
+TmEcode SetLogDirectory(char *name);
+char *GetLogDirectory();
+TmEcode CheckLogDirectory(char *log_dir);
+
+#endif /* __UTIL_UTIL_CONF_H__ */