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