Remove INTLLIBS from librazor_la_LIBADD.
This partially reverts 611c84a3f4b4538a65d186050608c17adbf17770.
It's not clear what motivated the initial inclusion of INTLLIBS
here since the net effect is only seen in librazor.la and not
in razor.pc and librazor.la is not normally packaged. Certainly
neither the static nor the dynamic versions of librazor currently
use libintl. At best this would cause the linker to search a
static libintl for undefined symbols without finding any; at worse
it causes a static build of plover using librazor.la to fail if
no static version of libintl is installed.
2 * Copyright (C) 2008 Kristian Høgsberg <krh@redhat.com>
3 * Copyright (C) 2008 Red Hat, Inc
4 * Copyright (C) 2009, 2011, 2012 J. Ali Harlow <ali@juiblex.co.uk>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
38 #include "razor-internal.h"
44 static const char system_repo_filename[] = "system.rzdb";
46 * system_lock_filename is chosen to be the same as the pre v0.3
47 * next_repo_filename. This means that once a system has been
48 * updated by a v0.3+ copy of razor all pre v0.3 versions of razor
49 * will see the system as permenantly locked.
51 static const char system_lock_filename[] = "system-next.rzdb";
53 #define RAZOR_ROOT_PATH NULL
55 #define RAZOR_ROOT_PATH "/var/lib/razor"
57 static const char *razor_root_path = RAZOR_ROOT_PATH;
60 struct razor_set *system;
68 static char root_path[MAX_PATH];
69 if (!razor_root_path) {
71 CSIDL_COMMON_APPDATA | CSIDL_FLAG_DONT_VERIFY, NULL, 0,
73 strcat(root_path, "\\Razor");
74 razor_root_path = root_path;
80 razor_root_create(const char *root, struct razor_error **error)
84 struct razor_set *set;
85 struct razor_atomic *atomic;
88 assert (root != NULL);
91 if (root[0] == '\0') {
92 /* root is file system root */
93 } else if (stat(root, &buf) < 0) {
94 if (mkdir(root, 0777) < 0) {
95 razor_set_error(error, root,
96 "Could not create install root");
99 } else if (!S_ISDIR(buf.st_mode)) {
100 razor_set_error(error, root, "Not a directory");
104 file = razor_concat(razor_root_path, "/", system_repo_filename, NULL);
105 path = razor_concat(root, file, NULL);
106 retval = !stat(path, &buf);
108 razor_set_error(error, NULL,
109 "A razor install root is already initialized");
115 atomic = razor_atomic_open("Create initial package set");
116 razor_atomic_make_dirs(atomic, root, file);
117 set = razor_set_create();
118 razor_set_write(set, atomic, path, RAZOR_SECTION_ALL);
121 retval = razor_atomic_commit(atomic);
123 razor_propagate_error(error,
124 razor_atomic_get_error(atomic),
125 "Could not write initial package set");
126 razor_set_unref(set);
127 razor_atomic_destroy(atomic);
132 RAZOR_EXPORT struct razor_root *
133 razor_root_open(const char *root, struct razor_error **error)
135 struct razor_root *image;
139 assert (root != NULL);
142 image = malloc(sizeof *image);
144 razor_set_error(error, NULL, "Not enough memory");
148 image->system = razor_set_create_without_root();
149 if (image->system == NULL) {
151 razor_set_error(error, NULL, "Not enough memory");
155 lock_path = razor_concat(root, razor_root_path, "/",
156 system_lock_filename, NULL);
158 r = razor_set_aquire_lock(image->system, lock_path, 1);
163 razor_set_error(error, NULL,
164 "Failed to aquire exclusive system lock");
165 razor_set_unref(image->system);
170 image->path = razor_concat(root, razor_root_path, "/",
171 system_repo_filename, NULL);
173 if (razor_set_bind_sections(image->system, image->path,
174 RAZOR_SET_PRIVATE, error)) {
176 razor_set_unref(image->system);
184 RAZOR_EXPORT struct razor_set *
185 razor_root_open_read_only(const char *root, struct razor_error **error)
188 struct razor_set *set;
190 assert (root != NULL);
193 set = razor_set_create_without_root();
195 razor_set_error(error, NULL, "Not enough memory");
199 path = razor_concat(root, razor_root_path, "/", system_lock_filename,
201 if (razor_set_aquire_lock(set, path, 0) < 0) {
202 razor_set_error(error, NULL,
203 "Failed to aquire non-exclusive system lock");
205 razor_set_unref(set);
210 path = razor_concat(root, razor_root_path, "/", system_repo_filename,
213 if (razor_set_bind_sections(set, path, 0, error)) {
214 razor_set_unref(set);
223 RAZOR_EXPORT struct razor_set *
224 razor_root_get_system_set(struct razor_root *root)
226 assert (root != NULL);
232 razor_root_close(struct razor_root *root)
234 assert (root != NULL);
236 razor_set_unref(root->system);
244 razor_root_update(struct razor_root *root, struct razor_set *next,
245 struct razor_atomic *atomic)
249 assert (root != NULL);
250 assert (next != NULL);
252 handle = razor_atomic_create_file(atomic, root->path,
253 S_IRWXU | S_IRWXG | S_IRWXO);
257 razor_set_write_to_handle(next, atomic, handle, RAZOR_SECTION_ALL);
259 retval = razor_atomic_close(atomic, handle);
262 razor_set_unref(root->system);
263 root->system = razor_set_ref(next);