Commit 5d4cd0030569f0551cb0b7e432d0f496c50a118c

Carlos Martín Nieto 2011-03-28T17:02:45

Move the struct declaration outside config.c Signed-off-by: Carlos Martín Nieto <cmn@elego.de>

diff --git a/include/git2.h b/include/git2.h
index b08c25e..87b7701 100644
--- a/include/git2.h
+++ b/include/git2.h
@@ -52,5 +52,6 @@
 #include "git2/tree.h"
 
 #include "git2/index.h"
+#include "git2/config.h"
 
 #endif
diff --git a/include/git2/config.h b/include/git2/config.h
new file mode 100644
index 0000000..c43d27f
--- /dev/null
+++ b/include/git2/config.h
@@ -0,0 +1,53 @@
+/*
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License, version 2,
+ * as published by the Free Software Foundation.
+ *
+ * In addition to the permissions in the GNU General Public License,
+ * the authors give you unlimited permission to link the compiled
+ * version of this file into combinations with other programs,
+ * and to distribute those combinations without any restriction
+ * coming from the use of this file.  (The General Public License
+ * restrictions do apply in other respects; for example, they cover
+ * modification of the file, and distribution when not linked into
+ * a combined executable.)
+ *
+ * This file 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 this program; see the file COPYING.  If not, write to
+ * the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+#ifndef INCLUDE_git_config_h__
+#define INCLUDE_git_config_h__
+
+#include "common.h"
+
+/**
+ * @file git2/refs.h
+ * @brief Git config management routines
+ * @defgroup git_reference Git config management routines
+ * @ingroup Git
+ * @{
+ */
+GIT_BEGIN_DECL
+
+/**
+ * Open a configuration file
+ *
+ * @param cfg_out pointer to the configuration data
+ */
+GIT_EXTERN(int) git_config_open(git_config **cfg_out, const char *path);
+
+/**
+ * Free the configuration and its associated memory
+ */
+GIT_EXTERN(void) git_config_free(git_config *cfg);
+
+/** @} */
+GIT_END_DECL
+#endif
diff --git a/include/git2/types.h b/include/git2/types.h
index 62467ec..a99195f 100644
--- a/include/git2/types.h
+++ b/include/git2/types.h
@@ -122,6 +122,12 @@ typedef struct git_tree git_tree;
 /** Memory representation of an index file. */
 typedef struct git_index git_index;
 
+/** Memory representation of a config file */
+typedef struct git_config git_config;
+
+/** Memory representation of a config variable */
+typedef struct git_config_var git_config_var;
+
 /** Time in a signature */
 typedef struct git_time {
 	time_t time; /** time in seconds from epoch */
diff --git a/src/config.c b/src/config.c
index 627bb37..ad06035 100644
--- a/src/config.c
+++ b/src/config.c
@@ -28,36 +28,7 @@
 #include "hashtable.h"
 #include "config.h"
 
-struct git_config {
-	char *file_path;
-
-	struct {
-		gitfo_buf buffer;
-		char *read_ptr;
-		int line_number;
-		int eof;
-	} reader;
-
-	git_hashtable *vars;
-};
-
-typedef enum {
-	GIT_VAR_INT,
-	GIT_VAR_BOOL,
-	GIT_VAR_STR
-} git_config_type;
-
-struct git_config_var {
-	git_config_type type;
-	char *name;
-	union {
-		unsigned char boolean;
-		long integer;
-		char *string;
-	} value;
-};
-
-typedef struct git_config git_config;
+#include <ctype.h>
 
 
 uint32_t config_table_hash(const void *key)
diff --git a/src/config.h b/src/config.h
new file mode 100644
index 0000000..07d123e
--- /dev/null
+++ b/src/config.h
@@ -0,0 +1,33 @@
+#ifndef INCLUDE_tag_h__
+#define INCLUDE_tag_h__
+
+struct git_config {
+	char *file_path;
+
+	struct {
+		gitfo_buf buffer;
+		char *read_ptr;
+		int line_number;
+		int eof;
+	} reader;
+
+	git_hashtable *vars;
+};
+
+typedef enum {
+	GIT_VAR_INT,
+	GIT_VAR_BOOL,
+	GIT_VAR_STR
+} git_config_type;
+
+struct git_config_var {
+	git_config_type type;
+	char *name;
+	union {
+		unsigned char boolean;
+		long integer;
+		char *string;
+	} value;
+};
+
+#endif