Changeset 16723
- Timestamp:
- 06/27/08 11:11:58 (4 months ago)
- Files:
-
- trunk/midgard/core/midgard/src/midgard_config.c (modified) (9 diffs)
- trunk/midgard/core/midgard/src/midgard_config.h (modified) (2 diffs)
- trunk/midgard/core/midgard/src/midgard_connection.c (modified) (3 diffs)
- trunk/midgard/core/midgard/test/midgard-query.c (modified) (1 diff)
- trunk/midgard/core/midgard/test/midgard-schema.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/midgard/core/midgard/src/midgard_config.c
r16466 r16723 31 31 #include "midgard_core_config.h" 32 32 #include "midgard_connection.h" 33 #include "midgard_error.h" 33 34 34 35 #define AUTH_NORMAL_STR "Normal" … … 92 93 { 93 94 static mdirs *iconf = NULL; 94 GDir *dir;95 /* GDir *dir; */ 95 96 96 97 if (iconf != NULL) return iconf; … … 212 213 * @filename: name of the file to read 213 214 * @user: boolean switch for system or user's config files 215 * @error: pointer to store error 214 216 * 215 217 * This method reads configuration file from the given name and sets MidgardConfig object's properties. … … 223 225 * Since: 1.9 224 226 */ 225 gboolean midgard_config_read_file(MidgardConfig *self, const gchar *filename, gboolean user )227 gboolean midgard_config_read_file(MidgardConfig *self, const gchar *filename, gboolean user, GError **error) 226 228 { 227 229 const mdirs *iconf; … … 230 232 GKeyFile *keyfile; 231 233 gboolean tmpbool; 232 GError *error = NULL;233 234 234 235 g_assert(self != NULL); 236 g_return_val_if_fail (error == NULL || *error == NULL, FALSE); 237 238 if(filename == NULL || *filename == '\0') { 239 240 *error = g_error_new(MGD_GENERIC_ERROR, 241 MGD_ERR_INVALID_NAME, 242 "Configuration name can not be empty"); 243 return FALSE; 244 } 235 245 236 246 if ((iconf = _midgard_core_config_get_config_dirs()) == NULL) … … 247 257 } 248 258 259 GError *kf_error = NULL; 249 260 keyfile = g_key_file_new(); 250 261 if (!g_key_file_load_from_file ( 251 keyfile, fname, G_KEY_FILE_NONE, &error)) { 252 g_critical("Can not open %s. %s" , fname, error->message); 253 g_clear_error(&error); 262 keyfile, fname, G_KEY_FILE_NONE, &kf_error)) { 263 264 *error = g_error_new(MGD_GENERIC_ERROR, 265 MGD_ERR_INTERNAL, 266 "Can not open %s. %s" , fname, kf_error->message); 267 g_clear_error(&kf_error); 254 268 g_free(fname); 255 269 return FALSE; … … 522 536 */ 523 537 gboolean midgard_config_save_file(MidgardConfig *self, 524 const gchar *name, gboolean user )538 const gchar *name, gboolean user, GError **error) 525 539 { 526 540 g_return_val_if_fail(self != NULL, FALSE); … … 658 672 659 673 gsize length; 660 GError * error = NULL;674 GError *kf_error = NULL; 661 675 662 676 gchar *content = g_key_file_to_data(self->private->keyfile, 663 &length, & error);677 &length, &kf_error); 664 678 665 679 if(length < 1) { 666 g_ warning("%s", error->message);667 g_clear_error(& error);680 g_propagate_error(error, kf_error); 681 g_clear_error(&kf_error); 668 682 return FALSE; 669 683 } 670 684 671 g_clear_error(&error); 685 if(kf_error) 686 g_clear_error(&kf_error); 672 687 673 688 gboolean saved = g_file_set_contents(cnfpath, 674 content, length, & error);689 content, length, &kf_error); 675 690 676 691 if(!saved) { 677 g_ warning("%s", error->message);678 g_clear_error(& error);692 g_propagate_error(error, kf_error); 693 g_clear_error(&kf_error); 679 694 return FALSE; 680 695 } 681 696 682 #ifdef MIDGARD_IS_WIN32697 #ifdef G_OS_WIN32 683 698 /* TODO , implement WIN32 */ 684 699 #else 685 700 g_chmod(cnfpath, 0600); 686 #endif /* MIDGARD_IS_WIN32 */701 #endif /* G_OS_WIN32 */ 687 702 688 703 return TRUE; … … 801 816 } 802 817 803 804 805 MidgardConnection *midgard_config_init(const gchar *filename)806 {807 MidgardConnection *mgd = midgard_connection_new();808 809 if(!mgd)810 g_error("Can not initialize midgard_connection object");811 812 MidgardConfig *config = g_object_new(MIDGARD_TYPE_CONFIG, NULL);813 814 if(!midgard_config_read_file(config, (const gchar *)filename, TRUE)){815 g_object_unref(mgd);816 g_object_unref(config);817 return NULL;818 }819 820 if(!midgard_connection_open_config(mgd, config)){821 g_object_unref(mgd);822 g_object_unref(config);823 return NULL;824 }825 826 /*827 g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_MASK,828 mgd_log_debug_default,829 (gpointer)midgard_connection_get_loglevel(mgd));830 g_log_set_handler("midgard-core", G_LOG_LEVEL_MASK,831 mgd_log_debug_default,832 (gpointer)midgard_connection_get_loglevel(mgd));833 g_log_set_handler("midgard-core-type", G_LOG_LEVEL_MASK,834 mgd_log_debug_default,835 (gpointer)midgard_connection_get_loglevel(mgd));836 */837 838 return mgd;839 }840 818 841 819 /* !! Undocumented workarounds !! */ trunk/midgard/core/midgard/src/midgard_config.h
r16277 r16723 95 95 /* class members */ 96 96 gboolean (*read_config) (MidgardConfig *self, 97 const gchar *filename, gboolean user );97 const gchar *filename, gboolean user, GError **error); 98 98 gboolean (*save_config) (MidgardConfig *self, 99 const gchar *name, gboolean user );99 const gchar *name, gboolean user, GError **error); 100 100 gchar (**list_files) (gboolean user); 101 101 gboolean (*create_midgard_tables)(MidgardConfig *self, … … 120 120 } MidgardDBType; 121 121 122 externGType midgard_config_get_type(void);122 GType midgard_config_get_type(void); 123 123 124 externMidgardConfig *midgard_config_new(void);124 MidgardConfig *midgard_config_new(void); 125 125 126 externgboolean midgard_config_read_file(MidgardConfig *self,127 const gchar *filename, gboolean user );126 gboolean midgard_config_read_file(MidgardConfig *self, 127 const gchar *filename, gboolean user, GError **error); 128 128 129 externgchar **midgard_config_list_files(gboolean user);129 gchar **midgard_config_list_files(gboolean user); 130 130 131 externgboolean midgard_config_save_file(MidgardConfig *self,132 const gchar *name, gboolean user );131 gboolean midgard_config_save_file(MidgardConfig *self, 132 const gchar *name, gboolean user, GError **error); 133 133 134 externgboolean midgard_config_create_midgard_tables(MidgardConfig *self,134 gboolean midgard_config_create_midgard_tables(MidgardConfig *self, 135 135 MidgardConnection *mgd); 136 136 137 externgboolean midgard_config_create_class_table(MidgardConfig *self,137 gboolean midgard_config_create_class_table(MidgardConfig *self, 138 138 MidgardObjectClass *klass, MidgardConnection *mgd); 139 139 trunk/midgard/core/midgard/src/midgard_connection.c
r16500 r16723 823 823 824 824 MidgardConfig *config = midgard_config_new(); 825 if(!midgard_config_read_file(config, name, FALSE)) 825 826 GError *error = NULL; 827 if(!midgard_config_read_file(config, name, FALSE, &error)) 826 828 return FALSE; 827 829 … … 862 864 guint i = 0; 863 865 866 GError *error = NULL; 867 864 868 while(cfgs[i] != NULL) { 865 869 … … 868 872 869 873 MidgardConfig *config = midgard_config_new(); 870 if(!midgard_config_read_file(config, cfgs[i], userdir ))874 if(!midgard_config_read_file(config, cfgs[i], userdir, &error)) 871 875 g_warning("Can not open %s configuration", cfgs[i]); 872 876 trunk/midgard/core/midgard/test/midgard-query.c
r16255 r16723 77 77 cts = TRUE; 78 78 } 79 80 if(!midgard_config_read_file(config, (const gchar *)config_name, cts)) 79 80 if(!midgard_config_read_file(config, (const gchar *)config_name, cts, &error)) { 81 82 if(error) { 83 g_warning("%s", error->message); 84 g_error_free(error); 85 } 81 86 return 1; 87 } 82 88 83 89 if(!midgard_connection_open_config(mgd, config)) trunk/midgard/core/midgard/test/midgard-schema.c
r16272 r16723 169 169 MidgardConfig *config = g_object_new(MIDGARD_TYPE_CONFIG, NULL); 170 170 171 if(!midgard_config_read_file(config, (const gchar *)config_file, TRUE)) 171 GError *error = NULL; 172 if(!midgard_config_read_file(config, (const gchar *)config_file, TRUE, &error)) { 173 174 if(error) { 175 g_warning("%s", error->message); 176 g_error_free(error); 177 } 178 172 179 return 1; 180 } 173 181 174 182 /* open config using class member method or function
