/* gen-help.c - Helper functions used by build time tools
* Copyright (C) 2010 g10 Code GmbH
*
* This file is part of KSBA.
*
* KSBA 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 Fountion; either version 3 of the License, or
* (at your option) any later version.
*
* KSBA 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, see .
*/
/* No config.h - this file needs to build as plain ISO-C. */
#include
#include
#include
#include "gen-help.h"
static void
out_of_core(void)
{
fputs ("\nfatal: out of memory\n", stderr);
exit (2);
}
/* Implementation of the common xfoo() memory allocation functions */
void *
xmalloc (size_t n )
{
void *p = malloc (n);
if (!p)
out_of_core ();
return p;
}
void *
xcalloc (size_t n, size_t m)
{
void *p = calloc (n, m);
if (!p)
out_of_core ();
return p;
}
void *
xrealloc (void *mem, size_t n)
{
void *p = realloc (mem, n);
if (!p)
out_of_core ();
return p;
}
char *
xstrdup (const char *str)
{
char *p = strdup (str);
if (!p)
out_of_core ();
return p;
}
void
xfree (void *a)
{
if (a)
free (a);
}
/* Our version of stpcpy to avoid conflicts with already availabale
implementations. */
char *
gen_help_stpcpy (char *a, const char *b)
{
while (*b)
*a++ = *b++;
*a = 0;
return a;
}
/* Simple replacement function to avoid the need for a build libgpg-error */
const char *
gpg_strerror (int err)
{
switch (err)
{
case 0: return "Success";
case GPG_ERR_GENERAL: return "General error";
case GPG_ERR_SYNTAX: return "Syntax error";
case GPG_ERR_INV_VALUE: return "Invalid value";
case GPG_ERR_BUG: return "Bug";
case GPG_ERR_ELEMENT_NOT_FOUND: return "Not found";
case GPG_ERR_IDENTIFIER_NOT_FOUND: return "Identifier not found";
default: return "Unknown error";
}
}