-/*
- * Bacula memory pool routines.
- *
- * The idea behind these routines is that there will be
- * pools of memory that are pre-allocated for quick
- * access. The pools will have a fixed memory size on allocation
- * but if need be, the size can be increased. This is
- * particularly useful for filename
- * buffers where 256 bytes should be sufficient in 99.99%
- * of the cases, but when it isn't we want to be able to
- * increase the size.
- *
- * A major advantage of the pool memory aside from the speed
- * is that the buffer carrys around its size, so to ensure that
- * there is enough memory, simply call the check_pool_memory_size()
- * with the desired size and it will adjust only if necessary.
- *
- * Kern E. Sibbald
- *
- * Version $Id$
- */
/*
Bacula® - The Network Backup Solution
- Copyright (C) 2000-2006 Free Software Foundation Europe e.V.
+ Copyright (C) 2000-2007 Free Software Foundation Europe e.V.
The main author of Bacula is Kern Sibbald, with contributions from
many others, a complete list can be found in the file AUTHORS.
This program is Free Software; you can redistribute it and/or
modify it under the terms of version two of the GNU General Public
- License as published by the Free Software Foundation plus additions
- that are listed in the file LICENSE.
+ License as published by the Free Software Foundation and included
+ in the file LICENSE.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Bacula® is a registered trademark of John Walker.
+ Bacula® is a registered trademark of Kern Sibbald.
The licensor of Bacula is the Free Software Foundation Europe
(FSFE), Fiduciary Program, Sumatrastrasse 25, 8006 Zürich,
Switzerland, email:ftf@fsfeurope.org.
*/
+/*
+ * Bacula memory pool routines.
+ *
+ * The idea behind these routines is that there will be
+ * pools of memory that are pre-allocated for quick
+ * access. The pools will have a fixed memory size on allocation
+ * but if need be, the size can be increased. This is
+ * particularly useful for filename
+ * buffers where 256 bytes should be sufficient in 99.99%
+ * of the cases, but when it isn't we want to be able to
+ * increase the size.
+ *
+ * A major advantage of the pool memory aside from the speed
+ * is that the buffer carrys around its size, so to ensure that
+ * there is enough memory, simply call the check_pool_memory_size()
+ * with the desired size and it will adjust only if necessary.
+ *
+ * Kern E. Sibbald
+ *
+ * Version $Id$
+ */
#include "bacula.h"
int32_t ablen; /* Buffer length in bytes */
int32_t pool; /* pool */
struct abufhead *next; /* pointer to next free buffer */
+ int32_t bnet_size; /* dummy for bnet_send() */
};
static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int pm_strcat(POOLMEM **pm, const char *str)
{
int pmlen = strlen(*pm);
- int len = strlen(str) + 1;
+ int len;
+
+ if (!str) str = "";
+ len = strlen(str) + 1;
*pm = check_pool_memory_size(*pm, pmlen + len);
memcpy(*pm+pmlen, str, len);
return pmlen + len - 1;
int pm_strcat(POOLMEM *&pm, const char *str)
{
int pmlen = strlen(pm);
- int len = strlen(str) + 1;
+ int len;
+ if (!str) str = "";
+
+ len = strlen(str) + 1;
pm = check_pool_memory_size(pm, pmlen + len);
memcpy(pm+pmlen, str, len);
return pmlen + len - 1;
int pm_strcat(POOL_MEM &pm, const char *str)
{
int pmlen = strlen(pm.c_str());
- int len = strlen(str) + 1;
+ int len;
+
+ if (!str) str = "";
+ len = strlen(str) + 1;
pm.check_size(pmlen + len);
memcpy(pm.c_str()+pmlen, str, len);
return pmlen + len - 1;
*/
int pm_strcpy(POOLMEM **pm, const char *str)
{
- int len = strlen(str) + 1;
+ int len;
+
+ if (!str) str = "";
+ len = strlen(str) + 1;
*pm = check_pool_memory_size(*pm, len);
memcpy(*pm, str, len);
return len - 1;
int pm_strcpy(POOLMEM *&pm, const char *str)
{
- int len = strlen(str) + 1;
+ int len;
+ if (!str) str = "";
+
+ len = strlen(str) + 1;
pm = check_pool_memory_size(pm, len);
memcpy(pm, str, len);
return len - 1;
int pm_strcpy(POOL_MEM &pm, const char *str)
{
- int len = strlen(str) + 1;
+ int len;
+
+ if (!str) str = "";
+
+ len = strlen(str) + 1;
pm.check_size(len);
memcpy(pm.c_str(), str, len);
return len - 1;
int POOL_MEM::strcat(const char *str)
{
int pmlen = strlen(mem);
- int len = strlen(str) + 1;
+ int len;
+ if (!str) str = "";
+
+ len = strlen(str) + 1;
check_size(pmlen + len);
memcpy(mem+pmlen, str, len);
return pmlen + len - 1;
int POOL_MEM::strcpy(const char *str)
{
- int len = strlen(str) + 1;
+ int len;
+
+ if (!str) str = "";
+
+ len = strlen(str) + 1;
check_size(len);
memcpy(mem, str, len);
return len - 1;