From 31153913ff452b7fab70d1ee16a62a2e86c51fd5 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Sat, 15 Sep 2012 11:20:18 -0400 Subject: [PATCH] Extract keyfile helpers into libotutil Will be used by ostree-pull too soon. --- Makefile-otutil.am | 2 + src/libostree/ostree-repo.c | 78 +++------------------------ src/libotutil/ot-keyfile-utils.c | 93 ++++++++++++++++++++++++++++++++ src/libotutil/ot-keyfile-utils.h | 49 +++++++++++++++++ src/libotutil/otutil.h | 1 + 5 files changed, 151 insertions(+), 72 deletions(-) create mode 100644 src/libotutil/ot-keyfile-utils.c create mode 100644 src/libotutil/ot-keyfile-utils.h diff --git a/Makefile-otutil.am b/Makefile-otutil.am index 84fe14af..ea94e3b5 100644 --- a/Makefile-otutil.am +++ b/Makefile-otutil.am @@ -25,6 +25,8 @@ libotutil_la_SOURCES = \ src/libotutil/ot-checksum-utils.c \ src/libotutil/ot-checksum-utils.h \ src/libotutil/ot-local-alloc.h \ + src/libotutil/ot-keyfile-utils.c \ + src/libotutil/ot-keyfile-utils.h \ src/libotutil/ot-opt-utils.c \ src/libotutil/ot-opt-utils.h \ src/libotutil/ot-unix-utils.c \ diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c index 1503dd7c..15843dad 100644 --- a/src/libostree/ostree-repo.c +++ b/src/libostree/ostree-repo.c @@ -586,72 +586,6 @@ ostree_repo_write_config (OstreeRepo *self, return ret; } -static gboolean -keyfile_get_boolean_with_default (GKeyFile *keyfile, - const char *section, - const char *value, - gboolean default_value, - gboolean *out_bool, - GError **error) -{ - gboolean ret = FALSE; - GError *temp_error = NULL; - gboolean ret_bool; - - ret_bool = g_key_file_get_boolean (keyfile, section, value, &temp_error); - if (temp_error) - { - if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) - { - g_clear_error (&temp_error); - ret_bool = default_value; - } - else - { - g_propagate_error (error, temp_error); - goto out; - } - } - - ret = TRUE; - *out_bool = ret_bool; - out: - return ret; -} - -static gboolean -keyfile_get_value_with_default (GKeyFile *keyfile, - const char *section, - const char *value, - const char *default_value, - char **out_value, - GError **error) -{ - gboolean ret = FALSE; - GError *temp_error = NULL; - ot_lfree char *ret_value; - - ret_value = g_key_file_get_value (keyfile, section, value, &temp_error); - if (temp_error) - { - if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) - { - g_clear_error (&temp_error); - ret_value = g_strdup (default_value); - } - else - { - g_propagate_error (error, temp_error); - goto out; - } - } - - ret = TRUE; - ot_transfer_out_value(out_value, &ret_value); - out: - return ret; -} - gboolean ostree_repo_check (OstreeRepo *self, GError **error) { @@ -695,16 +629,16 @@ ostree_repo_check (OstreeRepo *self, GError **error) goto out; } - if (!keyfile_get_boolean_with_default (self->config, "core", "archive", - FALSE, &is_archive, error)) + if (!ot_keyfile_get_boolean_with_default (self->config, "core", "archive", + FALSE, &is_archive, error)) goto out; if (is_archive) self->mode = OSTREE_REPO_MODE_ARCHIVE; else { - if (!keyfile_get_value_with_default (self->config, "core", "mode", - "bare", &mode, error)) + if (!ot_keyfile_get_value_with_default (self->config, "core", "mode", + "bare", &mode, error)) goto out; if (strcmp (mode, "bare") == 0) @@ -719,8 +653,8 @@ ostree_repo_check (OstreeRepo *self, GError **error) } } - if (!keyfile_get_value_with_default (self->config, "core", "parent", - NULL, &parent_repo_path, error)) + if (!ot_keyfile_get_value_with_default (self->config, "core", "parent", + NULL, &parent_repo_path, error)) goto out; if (parent_repo_path && parent_repo_path[0]) diff --git a/src/libotutil/ot-keyfile-utils.c b/src/libotutil/ot-keyfile-utils.c new file mode 100644 index 00000000..30014fad --- /dev/null +++ b/src/libotutil/ot-keyfile-utils.c @@ -0,0 +1,93 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2011 Colin Walters + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Colin Walters + */ + +#include "config.h" + +#include "otutil.h" + +#include + +gboolean +ot_keyfile_get_boolean_with_default (GKeyFile *keyfile, + const char *section, + const char *value, + gboolean default_value, + gboolean *out_bool, + GError **error) +{ + gboolean ret = FALSE; + GError *temp_error = NULL; + gboolean ret_bool; + + ret_bool = g_key_file_get_boolean (keyfile, section, value, &temp_error); + if (temp_error) + { + if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) + { + g_clear_error (&temp_error); + ret_bool = default_value; + } + else + { + g_propagate_error (error, temp_error); + goto out; + } + } + + ret = TRUE; + *out_bool = ret_bool; + out: + return ret; +} + +gboolean +ot_keyfile_get_value_with_default (GKeyFile *keyfile, + const char *section, + const char *value, + const char *default_value, + char **out_value, + GError **error) +{ + gboolean ret = FALSE; + GError *temp_error = NULL; + ot_lfree char *ret_value; + + ret_value = g_key_file_get_value (keyfile, section, value, &temp_error); + if (temp_error) + { + if (g_error_matches (temp_error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) + { + g_clear_error (&temp_error); + ret_value = g_strdup (default_value); + } + else + { + g_propagate_error (error, temp_error); + goto out; + } + } + + ret = TRUE; + ot_transfer_out_value(out_value, &ret_value); + out: + return ret; +} diff --git a/src/libotutil/ot-keyfile-utils.h b/src/libotutil/ot-keyfile-utils.h new file mode 100644 index 00000000..b5fb74da --- /dev/null +++ b/src/libotutil/ot-keyfile-utils.h @@ -0,0 +1,49 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2011 Colin Walters . + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Colin Walters + */ + +#ifndef __OSTREE_KEYFILE_UTILS_H__ +#define __OSTREE_KEYFILE_UTILS_H__ + +#include + +G_BEGIN_DECLS + +gboolean +ot_keyfile_get_boolean_with_default (GKeyFile *keyfile, + const char *section, + const char *value, + gboolean default_value, + gboolean *out_bool, + GError **error); + + +gboolean +ot_keyfile_get_value_with_default (GKeyFile *keyfile, + const char *section, + const char *value, + const char *default_value, + char **out_value, + GError **error); + +G_END_DECLS + +#endif diff --git a/src/libotutil/otutil.h b/src/libotutil/otutil.h index e6b2fb3f..c6bb4b31 100644 --- a/src/libotutil/otutil.h +++ b/src/libotutil/otutil.h @@ -36,6 +36,7 @@ } G_STMT_END; #include +#include #include #include #include