1/* 2 * Copyright 2006, Haiku. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Stephan Aßmus <superstippi@gmx.de> 7 */ 8 9#include "support_settings.h" 10 11#include <stdio.h> 12 13#include <Directory.h> 14#include <File.h> 15#include <FindDirectory.h> 16#include <Message.h> 17#include <Path.h> 18 19// load_settings 20status_t 21load_settings(BMessage* message, const char* fileName, const char* folder) 22{ 23 status_t ret = B_BAD_VALUE; 24 if (message) { 25 BPath path; 26 if ((ret = find_directory(B_USER_SETTINGS_DIRECTORY, &path)) == B_OK) { 27 // passing folder is optional 28 if (folder) 29 ret = path.Append(folder); 30 if (ret == B_OK && (ret = path.Append(fileName)) == B_OK) { 31 BFile file(path.Path(), B_READ_ONLY); 32 if ((ret = file.InitCheck()) == B_OK) { 33 ret = message->Unflatten(&file); 34 file.Unset(); 35 } 36 } 37 } 38 } 39 return ret; 40} 41 42// save_settings 43status_t 44save_settings(BMessage* message, const char* fileName, const char* folder) 45{ 46 status_t ret = B_BAD_VALUE; 47 if (message) { 48 BPath path; 49 if ((ret = find_directory(B_USER_SETTINGS_DIRECTORY, &path)) == B_OK) { 50 // passing folder is optional 51 if (folder && (ret = path.Append(folder)) == B_OK) 52 ret = create_directory(path.Path(), 0777); 53 if (ret == B_OK && (ret = path.Append(fileName)) == B_OK) { 54 BFile file(path.Path(), 55 B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE); 56 if ((ret = file.InitCheck()) == B_OK) { 57 ret = message->Flatten(&file); 58 file.Unset(); 59 } 60 } 61 } 62 } 63 return ret; 64} 65 66