* This file handles locking and seaching resources
*
* Kern Sibbald, January MM
- * Split from parse_conf.c April MMV
+ * Split from parse_conf.c April MMV
*
* Version $Id$
*/
-
/*
- Copyright (C) 2000-2005 Kern Sibbald
+ Copyright (C) 2000-2006 Kern Sibbald
This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License as
- published by the Free Software Foundation; either version 2 of
- the License, or (at your option) any later version.
+ modify it under the terms of the GNU General Public License
+ version 2 as amended with additional clauses defined in the
+ file LICENSE in the main source directory.
This program 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
- General Public License for more details.
-
- You should have received a copy of the GNU General Public
- License along with this program; if not, write to the Free
- Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
- MA 02111-1307, USA.
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ the file LICENSE for additional details.
*/
-
#include "bacula.h"
-extern int debug_level;
-
/* Each daemon has a slightly different set of
* resources, so it will define the following
* global values.
extern RES_TABLE resources[];
extern RES **res_head;
-#ifdef HAVE_WIN32
-// work around visual studio name manling preventing external linkage since res_all
-// is declared as a different type when instantiated.
-extern "C" CURES res_all;
-extern "C" int res_all_size;
-#else
-extern CURES res_all;
-extern int res_all_size;
-#endif
-
-
-brwlock_t res_lock; /* resource lock */
-static int res_locked = 0; /* set when resource chains locked -- for debug */
-
+brwlock_t res_lock; /* resource lock */
+static int res_locked = 0; /* set when resource chains locked -- for debug */
/* #define TRACE_RES */
int errstat;
#ifdef TRACE_RES
Pmsg4(000, "LockRes locked=%d w_active=%d at %s:%d\n",
- res_locked, res_lock.w_active, file, line);
+ res_locked, res_lock.w_active, file, line);
if (res_locked) {
Pmsg2(000, "LockRes writerid=%d myid=%d\n", res_lock.writer_id,
- pthread_self());
+ pthread_self());
}
#endif
if ((errstat=rwl_writelock(&res_lock)) != 0) {
- Emsg3(M_ABORT, 0, "rwl_writelock failure at %s:%d: ERR=%s\n",
- file, line, strerror(errstat));
+ Emsg3(M_ABORT, 0, _("rwl_writelock failure at %s:%d: ERR=%s\n"),
+ file, line, strerror(errstat));
}
res_locked++;
}
{
int errstat;
if ((errstat=rwl_writeunlock(&res_lock)) != 0) {
- Emsg3(M_ABORT, 0, "rwl_writeunlock failure at %s:%d:. ERR=%s\n",
- file, line, strerror(errstat));
+ Emsg3(M_ABORT, 0, _("rwl_writeunlock failure at %s:%d:. ERR=%s\n"),
+ file, line, strerror(errstat));
}
res_locked--;
#ifdef TRACE_RES
Pmsg4(000, "UnLockRes locked=%d wactive=%d at %s:%d\n",
- res_locked, res_lock.w_active, file, line);
+ res_locked, res_lock.w_active, file, line);
#endif
}
res = res_head[rindex];
while (res) {
if (strcmp(res->name, name) == 0) {
- break;
+ break;
}
res = res->next;
}
RES *nres;
int rindex = rcode - r_first;
-
-// if (!res_locked) {
-// Emsg0(M_ABORT, 0, "Resource chain not locked.\n");
-// }
if (res == NULL) {
nres = res_head[rindex];
} else {