Added support for i18n translation with gettext

This commit is contained in:
Daniel P. Berrange 2006-09-21 15:24:37 +00:00
parent 870bf1cdbd
commit e8e5844089
32 changed files with 3417 additions and 440 deletions

View File

@ -1,3 +1,13 @@
Thu Sep 21 10:19:02 EDT 2006 Daniel Berrange <berrange@redhat.com>
* Makefile.am: Added po directory
* autogen.sh: Call autopoint to install the gettext infrastructure
* src/*.c, proxy/*.c: Pass all strings through gettext for translation.
Set up the text domains in libvirt, proxy & virsh at startup.
* libvirt.spec.in: Include compiled .po files in distro
* tests/virshdata/*.txt: Tweak expected data to take account of
some text changes.
Thu Sep 21 10:19:02 EDT 2006 Daniel Berrange <berrange@redhat.com>
* docs/*.html: re-generated documentation to pull in latest

View File

@ -1,6 +1,8 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = src include docs @PYTHON_SUBDIR@ tests proxy
SUBDIRS = src include docs @PYTHON_SUBDIR@ tests proxy po
ACLOCAL_AMFLAGS = -I m4
EXTRA_DIST = libvirt.spec.in libvirt.spec COPYING.LIB \
libvirt.pc.in libvirt.pc TODO AUTHORS ChangeLog \

View File

@ -8,6 +8,14 @@ THEDIR=`pwd`
cd $srcdir
DIE=0
(autopoint --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autopoint installed to compile libvirt."
echo "Download the appropriate package for your distribution,"
echo "or see http://www.gnu.org/software/gettext"
DIE=1
}
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
echo
echo "You must have autoconf installed to compile libvirt."
@ -46,6 +54,8 @@ if test -z "$*"; then
echo "to pass any to it, please specify them on the $0 command line."
fi
autopoint --force
#rm -rf m4
libtoolize --copy --force
aclocal $ACLOCAL_FLAGS
automake --add-missing

View File

@ -1,8 +1,30 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYCURRENT
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
/* Define if you have the iconv() function. */
#undef HAVE_ICONV
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H

View File

@ -246,6 +246,10 @@ AC_SUBST(PYTHON_VERSION)
AC_SUBST(PYTHON_INCLUDES)
AC_SUBST(PYTHON_SITE_PACKAGES)
AM_GNU_GETTEXT_VERSION([0.14.1])
AM_GNU_GETTEXT([external])
ALL_LINGUAS=en_GB
# very annoying
rm -f COPYING
cp COPYING.LIB COPYING
@ -254,6 +258,7 @@ AC_OUTPUT(Makefile src/Makefile include/Makefile docs/Makefile \
docs/examples/Makefile docs/devhelp/Makefile \
docs/examples/python/Makefile \
libvirt.pc libvirt.spec \
po/Makefile.in \
include/libvirt/Makefile include/libvirt/libvirt.h \
python/Makefile python/tests/Makefile \
tests/Makefile proxy/Makefile \

View File

@ -1,3 +1,5 @@
# -*- rpm-spec -*-
Summary: Library providing an API to use the Xen virtualization
Name: libvirt
Version: @VERSION@
@ -6,7 +8,7 @@ License: LGPL
Group: Development/Libraries
Source: libvirt-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-root
URL: http://libvir.org/
URL: http://libvirt.org/
BuildRequires: python python-devel
Requires: xen
Requires: libxml2
@ -16,6 +18,7 @@ BuildRequires: xen-devel
BuildRequires: libxml2-devel
BuildRequires: readline-devel
BuildRequires: ncurses-devel
BuildRequires: gettext
Obsoletes: libvir
ExclusiveArch: i386 x86_64 ia64
@ -61,6 +64,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/python*/site-packages/*.a
%find_lang %{name}
%clean
rm -fr %{buildroot}
@ -71,7 +75,7 @@ rm -fr %{buildroot}
%postun
/sbin/ldconfig
%files
%files -f %{name}.lang
%defattr(-, root, root)
%doc AUTHORS ChangeLog NEWS README COPYING.LIB TODO

41
po/Makevars Normal file
View File

@ -0,0 +1,41 @@
# Makefile variables for PO directory in any package using GNU gettext.
# Usually the message domain is the same as the package name.
DOMAIN = $(PACKAGE)
# These two variables depend on the location of this directory.
subdir = po
top_builddir = ..
# These options get passed to xgettext.
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
# This is the copyright holder that gets inserted into the header of the
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
# package. (Note that the msgstr strings, extracted from the package's
# sources, belong to the copyright holder of the package.) Translators are
# expected to transfer the copyright for their translations to this person
# or entity, or to disclaim their copyright. The empty string stands for
# the public domain; in this case the translators are expected to disclaim
# their copyright.
COPYRIGHT_HOLDER = Free Software Foundation, Inc.
# This is the email address or URL to which the translators shall report
# bugs in the untranslated strings:
# - Strings which are not entire sentences, see the maintainer guidelines
# in the GNU gettext documentation, section 'Preparing Strings'.
# - Strings which use unclear terms or require additional context to be
# understood.
# - Strings which make invalid assumptions about notation of date, time or
# money.
# - Pluralisation problems.
# - Incorrect English spelling.
# - Incorrect formatting.
# It can be your email address, or a mailing list address where translators
# can write to without being subscribed, or the URL of a web page through
# which the translators can contact you.
MSGID_BUGS_ADDRESS =
# This is the list of locale categories, beyond LC_MESSAGES, for which the
# message catalogs shall be used. It is usually empty.
EXTRA_LOCALE_CATEGORIES =

13
po/POTFILES.in Normal file
View File

@ -0,0 +1,13 @@
src/libvirt.c
src/virterror.c
src/xmlrpc.c
src/hash.c
src/test.c
src/xml.c
src/sexpr.c
src/xend_internal.c
src/virsh.c
src/conf.c
src/xs_internal.c
src/proxy_internal.c
src/xen_internal.c

1413
po/en_GB.po Normal file

File diff suppressed because it is too large Load Diff

1413
po/libvirt.pot Normal file

File diff suppressed because it is too large Load Diff

View File

@ -2,8 +2,8 @@
INCLUDES = -I$(top_builddir)/include -I@top_srcdir@/include \
-I@top_srcdir@/proxy -I@top_srcdir@/src @LIBXML_CFLAGS@ \
-DPROXY
-DPROXY -DLOCALEBASEDIR=\""$(datadir)/locale"\" \
-DGETTEXT_PACKAGE=\"$(PACKAGE)\"
libexec_PROGRAMS = libvirt_proxy

View File

@ -715,6 +715,19 @@ usage(const char *progname) {
int main(int argc, char **argv) {
int i;
if (!setlocale(LC_ALL, "")) {
perror("setlocale");
return -1;
}
if (!bindtextdomain(GETTEXT_PACKAGE, LOCALEBASEDIR)) {
perror("bindtextdomain");
return -1;
}
if (!textdomain(GETTEXT_PACKAGE)) {
perror("textdomain");
return -1;
}
for (i = 1; i < argc; i++) {
if (!strcmp(argv[i], "-v")) {
debug++;
@ -725,7 +738,8 @@ int main(int argc, char **argv) {
exit(1);
}
}
if (geteuid() != 0) {
fprintf(stderr, "%s must be run as root or suid\n", argv[0]);
/* exit(1); */

View File

@ -1,7 +1,8 @@
## Process this file with automake to produce Makefile.in
INCLUDES = -I$(top_builddir)/include -I@top_srcdir@/include @LIBXML_CFLAGS@ \
-DBINDIR=\""$(libexecdir)"\"
-DBINDIR=\""$(libexecdir)"\" -DLOCALEBASEDIR=\""$(datadir)/locale"\" \
-DGETTEXT_PACKAGE=\"$(PACKAGE)\"
DEPS = libvirt.la
LDADDS = @STATIC_BINARIES@ libvirt.la
VIRSH_LIBS = @VIRSH_LIBS@

View File

@ -159,7 +159,7 @@ virConfCreate(const char *filename)
ret = (virConfPtr) malloc(sizeof(virConf));
if (ret == NULL) {
virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", 0);
virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), 0);
return(NULL);
}
memset(ret, 0, sizeof(virConf));
@ -193,7 +193,7 @@ virConfAddEntry(virConfPtr conf, char *name, virConfValuePtr value, char *comm)
ret = (virConfEntryPtr) malloc(sizeof(virConfEntry));
if (ret == NULL) {
virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", 0);
virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), 0);
return(NULL);
}
memset(ret, 0, sizeof(virConfEntry));
@ -328,7 +328,7 @@ virConfParseLong(virConfParserCtxtPtr ctxt, long *val)
NEXT;
}
if ((ctxt->cur >= ctxt->end) || (!IS_DIGIT(CUR))) {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated number",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated number"),
ctxt->line);
return(-1);
}
@ -360,7 +360,7 @@ virConfParseString(virConfParserCtxtPtr ctxt)
while ((ctxt->cur < ctxt->end) && (CUR != '\'') && (!IS_EOL(CUR)))
NEXT;
if (CUR != '\'') {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated string",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated string"),
ctxt->line);
return(NULL);
}
@ -377,7 +377,7 @@ virConfParseString(virConfParserCtxtPtr ctxt)
}
if ((ctxt->cur[0] != '"') || (ctxt->cur[1] != '"') ||
(ctxt->cur[2] != '"')) {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated string",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated string"),
ctxt->line);
return(NULL);
}
@ -389,7 +389,7 @@ virConfParseString(virConfParserCtxtPtr ctxt)
while ((ctxt->cur < ctxt->end) && (CUR != '"') && (!IS_EOL(CUR)))
NEXT;
if (CUR != '"') {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "unterminated string",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("unterminated string"),
ctxt->line);
return(NULL);
}
@ -417,7 +417,7 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
SKIP_SPACES;
if (ctxt->cur >= ctxt->end) {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a value",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a value"),
ctxt->line);
return(NULL);
}
@ -437,7 +437,7 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
while ((ctxt->cur < ctxt->end) && (CUR != ']')) {
if (CUR != ',') {
virConfError(NULL, VIR_ERR_CONF_SYNTAX,
"expecting a separator in list", ctxt->line);
_("expecting a separator in list"), ctxt->line);
virConfFreeList(lst);
return(NULL);
}
@ -460,7 +460,7 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
NEXT;
} else {
virConfError(NULL, VIR_ERR_CONF_SYNTAX,
"list is not closed with ] ", ctxt->line);
_("list is not closed with ] "), ctxt->line);
virConfFreeList(lst);
return(NULL);
}
@ -470,13 +470,13 @@ virConfParseValue(virConfParserCtxtPtr ctxt)
}
type = VIR_CONF_LONG;
} else {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a value",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a value"),
ctxt->line);
return(NULL);
}
ret = (virConfValuePtr) malloc(sizeof(virConfValue));
if (ret == NULL) {
virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration", 0);
virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"), 0);
if (str != NULL)
free(str);
return(NULL);
@ -508,14 +508,14 @@ virConfParseName(virConfParserCtxtPtr ctxt)
base = ctxt->cur;
/* TODO: probably need encoding support and UTF-8 parsing ! */
if (!IS_CHAR(CUR)) {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a name", ctxt->line);
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a name"), ctxt->line);
return(NULL);
}
while ((ctxt->cur < ctxt->end) && ((IS_CHAR(CUR)) || (IS_DIGIT(CUR)) || (CUR == '_')))
NEXT;
ret = strndup(base, ctxt->cur - base);
if (ret == NULL) {
virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration",
virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"),
ctxt->line);
return(NULL);
}
@ -543,7 +543,7 @@ virConfParseComment(virConfParserCtxtPtr ctxt)
while ((ctxt->cur < ctxt->end) && (!IS_EOL(CUR))) NEXT;
comm = strndup(base, ctxt->cur - base);
if (comm == NULL) {
virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration",
virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"),
ctxt->line);
return(-1);
}
@ -571,7 +571,7 @@ virConfParseSeparator(virConfParserCtxtPtr ctxt)
NEXT;
SKIP_BLANKS;
} else {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting a separator",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting a separator"),
ctxt->line);
return(-1);
}
@ -603,7 +603,7 @@ virConfParseStatement(virConfParserCtxtPtr ctxt)
return(-1);
SKIP_SPACES;
if (CUR != '=') {
virConfError(NULL, VIR_ERR_CONF_SYNTAX, "expecting an assignment",
virConfError(NULL, VIR_ERR_CONF_SYNTAX, _("expecting an assignment"),
ctxt->line);
return(-1);
}
@ -621,7 +621,7 @@ virConfParseStatement(virConfParserCtxtPtr ctxt)
while ((ctxt->cur < ctxt->end) && (!IS_EOL(CUR))) NEXT;
comm = strndup(base, ctxt->cur - base);
if (comm == NULL) {
virConfError(NULL, VIR_ERR_NO_MEMORY, "Allocating configuration",
virConfError(NULL, VIR_ERR_NO_MEMORY, _("allocating configuration"),
ctxt->line);
free(name);
virConfFreeValue(value);
@ -816,7 +816,7 @@ virConfWriteFile(const char *filename, virConfPtr conf)
fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR );
if (fd < 0) {
virConfError(NULL, VIR_ERR_WRITE_FAILED, "failed to open file", 0);
virConfError(NULL, VIR_ERR_WRITE_FAILED, _("failed to open file"), 0);
ret = -1;
goto error;
}
@ -824,7 +824,7 @@ virConfWriteFile(const char *filename, virConfPtr conf)
ret = write(fd, buf->content, buf->use);
close(fd);
if (ret != (int) buf->use) {
virConfError(NULL, VIR_ERR_WRITE_FAILED, "failed to save content", 0);
virConfError(NULL, VIR_ERR_WRITE_FAILED, _("failed to save content"), 0);
ret = -1;
goto error;
}

View File

@ -528,7 +528,7 @@ virGetConnect(void) {
ret = (virConnectPtr) malloc(sizeof(virConnect));
if (ret == NULL) {
virHashError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection");
virHashError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection"));
goto failed;
}
memset(ret, 0, sizeof(virConnect));
@ -625,13 +625,13 @@ virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid) {
*/
ret = (virDomainPtr) malloc(sizeof(virDomain));
if (ret == NULL) {
virHashError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
goto error;
}
memset(ret, 0, sizeof(virDomain));
ret->name = strdup(name);
if (ret->name == NULL) {
virHashError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virHashError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
goto error;
}
ret->magic = VIR_DOMAIN_MAGIC;
@ -642,7 +642,7 @@ virGetDomain(virConnectPtr conn, const char *name, const unsigned char *uuid) {
if (virHashAddEntry(conn->domains, name, ret) < 0) {
virHashError(conn, VIR_ERR_INTERNAL_ERROR,
"Failed to add domain to connectio hash table");
_("failed to add domain to connection hash table"));
goto error;
}
conn->uses++;
@ -694,7 +694,7 @@ virFreeDomain(virConnectPtr conn, virDomainPtr domain) {
if (virHashRemoveEntry(conn->domains, domain->name, NULL) < 0) {
virHashError(conn, VIR_ERR_INTERNAL_ERROR,
"domain missing from connection hash table");
_("domain missing from connection hash table"));
goto done;
}
domain->magic = -1;

View File

@ -16,11 +16,16 @@
#include "libvirt/libvirt.h"
#include "libvirt/virterror.h"
#include "driver.h"
#include <libintl.h>
#ifdef __cplusplus
extern "C" {
#endif
#define _(str) dgettext(GETTEXT_PACKAGE, (str))
#define _N(str) dgettext(GETTEXT_PACKAGE, (str))
#define gettext_noop(str) (str)
/**
* ATTRIBUTE_UNUSED:
*

View File

@ -60,10 +60,13 @@ virInitialize(void)
return(0);
initialized = 1;
if (!bindtextdomain(GETTEXT_PACKAGE, LOCALEBASEDIR))
return (-1);
/*
* should not be needed but...
*/
for (i = 0;i < MAX_DRIVERS;i++)
for (i = 0;i < MAX_DRIVERS;i++)
virDriverTab[i] = NULL;
/*
@ -140,7 +143,8 @@ virRegisterDriver(virDriverPtr driver)
int i;
if (!initialized)
virInitialize();
if (virInitialize() < 0)
return -1;
if (driver == NULL) {
virLibConnError(NULL, VIR_ERR_INVALID_ARG, __FUNCTION__);
@ -182,7 +186,8 @@ virGetVersion(unsigned long *libVer, const char *type,
int i;
if (!initialized)
virInitialize();
if (virInitialize() < 0)
return -1;
if (libVer == NULL)
return (-1);
@ -223,7 +228,8 @@ virConnectOpen(const char *name)
virConnectPtr ret = NULL;
if (!initialized)
virInitialize();
if (virInitialize() < 0)
return NULL;
if (name == NULL) {
name = "Xen";
@ -234,7 +240,7 @@ virConnectOpen(const char *name)
ret = virGetConnect();
if (ret == NULL) {
virLibConnError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection");
virLibConnError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection"));
goto failed;
}
@ -290,14 +296,15 @@ virConnectOpenReadOnly(const char *name)
virConnectPtr ret = NULL;
if (!initialized)
virInitialize();
if (virInitialize() < 0)
return NULL;
if (name == NULL)
name = "Xen";
ret = virGetConnect();
if (ret == NULL) {
virLibConnError(NULL, VIR_ERR_NO_MEMORY, "Allocating connection");
virLibConnError(NULL, VIR_ERR_NO_MEMORY, _("allocating connection"));
goto failed;
}
@ -313,7 +320,7 @@ virConnectOpenReadOnly(const char *name)
if (ret->nb_drivers == 0) {
if (name == NULL)
virLibConnError(NULL, VIR_ERR_NO_CONNECT,
"could not connect to Xen Daemon nor Xen Store");
_("Xen Daemon or Xen Store"));
else
/* we failed to find an adequate driver */
virLibConnError(NULL, VIR_ERR_NO_SUPPORT, name);

View File

@ -190,7 +190,7 @@ virProxyForkServer(void)
setsid();
if (fork() == 0) {
execl(proxyPath, proxyPath, NULL);
fprintf(stderr, "failed to exec %s\n", proxyPath);
fprintf(stderr, _("failed to exec %s\n"), proxyPath);
}
/*
* calling exit() generate troubles for termination handlers
@ -284,7 +284,7 @@ virProxyCloseClientSocket(int fd) {
ret = close(fd);
if (ret != 0)
fprintf(stderr, "Failed to close socket %d\n", fd);
fprintf(stderr, _("Failed to close socket %d\n"), fd);
else if (debug > 0)
fprintf(stderr, "Closed socket %d\n", fd);
return(ret);
@ -317,7 +317,7 @@ retry:
goto retry;
}
if (!quiet)
fprintf(stderr, "Failed to read socket %d\n", fd);
fprintf(stderr, _("Failed to read socket %d\n"), fd);
return(-1);
}
@ -351,7 +351,7 @@ retry:
fd, len);
goto retry;
}
fprintf(stderr, "Failed to write to socket %d\n", fd);
fprintf(stderr, _("Failed to write to socket %d\n"), fd);
return(-1);
}
if (debug)
@ -413,7 +413,7 @@ retry:
return(-1);
if (ret != sizeof(virProxyPacket)) {
fprintf(stderr,
"Communication error with proxy: got %d bytes of %d\n",
_("Communication error with proxy: got %d bytes of %d\n"),
ret, (int) sizeof(virProxyPacket));
xenProxyClose(conn);
return(-1);
@ -421,7 +421,7 @@ retry:
res = request;
if (res->len != sizeof(virProxyPacket)) {
fprintf(stderr,
"Communication error with proxy: expected %d bytes got %d\n",
_("Communication error with proxy: expected %d bytes got %d\n"),
(int) sizeof(virProxyPacket), res->len);
xenProxyClose(conn);
return(-1);
@ -434,7 +434,7 @@ retry:
return(-1);
if (ret != sizeof(virProxyPacket)) {
fprintf(stderr,
"Communication error with proxy: got %d bytes of %d\n",
_("Communication error with proxy: got %d bytes of %d\n"),
ret, (int) sizeof(virProxyPacket));
xenProxyClose(conn);
return(-1);
@ -443,7 +443,7 @@ retry:
if ((res->len < sizeof(virProxyPacket)) ||
(res->len > sizeof(virProxyFullPacket))) {
fprintf(stderr,
"Communication error with proxy: got %d bytes packet\n",
_("Communication error with proxy: got %d bytes packet\n"),
res->len);
xenProxyClose(conn);
return(-1);
@ -454,7 +454,7 @@ retry:
res->len - ret, quiet);
if (ret != (int) (res->len - sizeof(virProxyPacket))) {
fprintf(stderr,
"Communication error with proxy: got %d bytes of %d\n",
_("Communication error with proxy: got %d bytes of %d\n"),
ret, (int) sizeof(virProxyPacket));
xenProxyClose(conn);
return(-1);
@ -467,13 +467,13 @@ retry:
if ((res == NULL) || (res->version != PROXY_PROTO_VERSION) ||
(res->len < sizeof(virProxyPacket))) {
fprintf(stderr,
"Communication error with proxy: malformed packet\n");
_("Communication error with proxy: malformed packet\n"));
xenProxyClose(conn);
return(-1);
}
if (res->serial != serial) {
TODO /* Asynchronous communication */
fprintf(stderr, "gor asynchronous packet number %d\n", res->serial);
fprintf(stderr, _("got asynchronous packet number %d\n"), res->serial);
goto retry;
}
return(0);
@ -787,7 +787,7 @@ xenProxyLookupByID(virConnectPtr conn, int id)
res = virGetDomain(conn, name, uuid);
if (res == NULL)
virProxyError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virProxyError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
else
res->handle = id;
@ -834,7 +834,7 @@ xenProxyLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
res = virGetDomain(conn, name, uuid);
if (res == NULL)
virProxyError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virProxyError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
else
res->handle = req.data.arg;
@ -885,7 +885,7 @@ xenProxyDomainLookupByName(virConnectPtr conn, const char *name)
res = virGetDomain(conn, name, (const unsigned char *)&req.extra.str[0]);
if (res == NULL)
virProxyError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virProxyError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
else
res->handle = req.data.arg;

View File

@ -56,7 +56,7 @@ sexpr_new(void)
ret = (struct sexpr *) malloc(sizeof(*ret));
if (ret == NULL) {
virSexprError(VIR_ERR_NO_MEMORY, "failed to allocate a node");
virSexprError(VIR_ERR_NO_MEMORY, _("failed to allocate a node"));
return (NULL);
}
ret->kind = SEXPR_NIL;
@ -349,7 +349,7 @@ _string2sexpr(const char *buffer, size_t * end)
ret->value = strndup(start, ptr - start);
if (ret->value == NULL) {
virSexprError(VIR_ERR_NO_MEMORY,
"failed to copy a string");
_("failed to copy a string"));
}
if (*ptr == '\'')
@ -364,7 +364,7 @@ _string2sexpr(const char *buffer, size_t * end)
ret->value = strndup(start, ptr - start);
if (ret->value == NULL) {
virSexprError(VIR_ERR_NO_MEMORY,
"failed to copy a string");
_("failed to copy a string"));
}
}

View File

@ -197,26 +197,26 @@ static int testLoadDomain(virConnectPtr conn,
virDomainRestart onCrash = VIR_DOMAIN_RENAME_RESTART;
if (gettimeofday(&tv, NULL) < 0) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday");
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day"));
return -1;
}
root = xmlDocGetRootElement(xml);
if ((root == NULL) || (!xmlStrEqual(root->name, BAD_CAST "domain"))) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed root element");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain"));
goto error;
}
ctxt = xmlXPathNewContext(xml);
if (ctxt == NULL) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "cannot create xpath context");
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, _("creating xpath context"));
goto error;
}
obj = xmlXPathEval(BAD_CAST "string(/domain/name[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) ||
(obj->stringval == NULL) || (obj->stringval[0] == 0)) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "missing name element on domain");
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, _("domain name"));
goto error;
}
name = strdup((const char *)obj->stringval);
@ -225,12 +225,12 @@ static int testLoadDomain(virConnectPtr conn,
obj = xmlXPathEval(BAD_CAST "string(/domain/uuid[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) ||
(obj->stringval == NULL) || (obj->stringval[0] == 0)) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "missing uuid element on domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain uuid"));
goto error;
}
dst_uuid = (char *) &rawuuid[0];
if (!(virParseUUID((char **)&dst_uuid, (const char *)obj->stringval))) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed uuid data in domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain uuid"));
goto error;
}
xmlXPathFreeObject(obj);
@ -238,12 +238,12 @@ static int testLoadDomain(virConnectPtr conn,
obj = xmlXPathEval(BAD_CAST "string(/domain/memory[1])", ctxt);
if ((obj == NULL) || (obj->type != XPATH_STRING) ||
(obj->stringval == NULL) || (obj->stringval[0] == 0)) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "missing memory element on domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain memory"));
goto error;
}
memory = strtoll((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed memory value for domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain memory"));
goto error;
}
xmlXPathFreeObject(obj);
@ -255,7 +255,7 @@ static int testLoadDomain(virConnectPtr conn,
} else {
nrVirtCpu = strtoll((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed vcpus value for domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain vcpus"));
goto error;
}
}
@ -266,7 +266,7 @@ static int testLoadDomain(virConnectPtr conn,
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
if (!(onReboot = testRestartStringToFlag((const char *)obj->stringval))) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed on_reboot value for domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain reboot behaviour"));
goto error;
}
}
@ -277,7 +277,7 @@ static int testLoadDomain(virConnectPtr conn,
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
if (!(onReboot = testRestartStringToFlag((const char *)obj->stringval))) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed on_poweroff value for domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain poweroff behaviour"));
goto error;
}
}
@ -288,7 +288,7 @@ static int testLoadDomain(virConnectPtr conn,
if ((obj != NULL) && (obj->type == XPATH_STRING) &&
(obj->stringval != NULL) && (obj->stringval[0] != 0)) {
if (!(onReboot = testRestartStringToFlag((const char *)obj->stringval))) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed on_crash value for domain");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("domain crash behaviour"));
goto error;
}
}
@ -331,7 +331,7 @@ static int testLoadDomainFromDoc(virConnectPtr conn,
if (!(xml = xmlReadDoc(BAD_CAST doc, "domain.xml", NULL,
XML_PARSE_NOENT | XML_PARSE_NONET |
XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot parse domain definition");
testError(NULL, NULL, VIR_ERR_XML_ERROR, _("domain"));
return -1;
}
@ -349,14 +349,14 @@ static int testLoadDomainFromFile(virConnectPtr conn,
xmlDocPtr xml;
if ((fd = open(file, O_RDONLY)) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot load domain definition");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("load domain definition file"));
return -1;
}
if (!(xml = xmlReadFd(fd, file, NULL,
XML_PARSE_NOENT | XML_PARSE_NONET |
XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot parse domain definition");
testError(NULL, NULL, VIR_ERR_XML_ERROR, _("domain"));
close(fd);
return -1;
}
@ -376,7 +376,7 @@ static int testOpenDefault(virConnectPtr conn,
struct timeval tv;
if (gettimeofday(&tv, NULL) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day"));
return -1;
}
@ -431,14 +431,14 @@ static int testOpenFromFile(virConnectPtr conn,
virNodeInfoPtr nodeInfo;
if ((fd = open(file, O_RDONLY)) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot load host definition");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("loading host definition file"));
return -1;
}
if (!(xml = xmlReadFd(fd, file, NULL,
XML_PARSE_NOENT | XML_PARSE_NONET |
XML_PARSE_NOERROR | XML_PARSE_NOWARNING))) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot parse host definition");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("host"));
goto error;
}
close(fd);
@ -446,13 +446,13 @@ static int testOpenFromFile(virConnectPtr conn,
root = xmlDocGetRootElement(xml);
if ((root == NULL) || (!xmlStrEqual(root->name, BAD_CAST "node"))) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "malformed root element");
testError(NULL, NULL, VIR_ERR_XML_ERROR, _("node"));
goto error;
}
ctxt = xmlXPathNewContext(xml);
if (ctxt == NULL) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot create xpath context");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("creating xpath context"));
goto error;
}
@ -468,7 +468,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
nodeInfo->nodes = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed nodes value for node cpu");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu numa nodes"));
goto error;
}
xmlXPathFreeObject(obj);
@ -480,7 +480,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
nodeInfo->sockets = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed sockets value for node cpu");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu sockets"));
goto error;
}
xmlXPathFreeObject(obj);
@ -492,7 +492,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
nodeInfo->cores = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed cores value for node cpu");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu cores"));
goto error;
}
xmlXPathFreeObject(obj);
@ -504,7 +504,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
nodeInfo->threads = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed threads value for node cpu");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu threads"));
goto error;
}
xmlXPathFreeObject(obj);
@ -516,7 +516,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
unsigned int active = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed active value for node cpu");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node active cpu"));
goto error;
}
if (active < nodeInfo->cpus) {
@ -530,7 +530,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
nodeInfo->mhz = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed threads value for node cpu");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node cpu mhz"));
goto error;
}
xmlXPathFreeObject(obj);
@ -549,7 +549,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *conv = NULL;
nodeInfo->memory = strtol((const char*)obj->stringval, &conv, 10);
if (conv == (const char*)obj->stringval) {
testError(conn, NULL, VIR_ERR_INTERNAL_ERROR, "malformed memory value for node");
testError(conn, NULL, VIR_ERR_XML_ERROR, _("node memory"));
goto error;
}
xmlXPathFreeObject(obj);
@ -558,7 +558,7 @@ static int testOpenFromFile(virConnectPtr conn,
obj = xmlXPathEval(BAD_CAST "/node/domain", ctxt);
if ((obj == NULL) || (obj->type != XPATH_NODESET) ||
(obj->nodesetval == NULL)) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot extract domain list");
testError(NULL, NULL, VIR_ERR_XML_ERROR, _("node domain list"));
goto error;
}
@ -567,7 +567,7 @@ static int testOpenFromFile(virConnectPtr conn,
char *absFile = testBuildFilename(file, (const char *)domFile);
free(domFile);
if (!absFile) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot resolve filename");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("resolving domain filename"));
goto error;
}
if (testLoadDomainFromFile(conn, i, absFile) != 0) {
@ -605,7 +605,7 @@ static int getNextConnection(void) {
if (node == NULL) {
node = calloc(1, sizeof(testNode));
if (!node) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot allocate memory");
testError(NULL, NULL, VIR_ERR_NO_MEMORY, _("allocating node"));
return -1;
}
}
@ -645,7 +645,7 @@ int testOpen(virConnectPtr conn,
if ((connid = getNextConnection()) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "too many connections");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("too many connections"));
return -1;
}
@ -722,7 +722,7 @@ testDomainCreateLinux(virConnectPtr conn, const char *xmlDesc,
return NULL;
dom = virGetDomain(conn, con->domains[i].name, con->domains[i].uuid);
if (dom == NULL) {
testError(conn, NULL, VIR_ERR_NO_MEMORY, "allocating domain");
testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
return NULL;
}
con->numDomains++;
@ -730,7 +730,7 @@ testDomainCreateLinux(virConnectPtr conn, const char *xmlDesc,
}
}
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "too many domains");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("too many domains"));
return (NULL);
}
@ -747,7 +747,7 @@ virDomainPtr testLookupDomainByID(virConnectPtr conn,
dom = virGetDomain(conn, con->domains[id].name, con->domains[id].uuid);
if (dom == NULL) {
testError(conn, NULL, VIR_ERR_NO_MEMORY, "Allocating domain");
testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
return(NULL);
}
dom->handle = id;
@ -770,7 +770,7 @@ virDomainPtr testLookupDomainByUUID(virConnectPtr conn,
if (id >= 0) {
dom = virGetDomain(conn, con->domains[id].name, con->domains[id].uuid);
if (dom == NULL) {
testError(conn, NULL, VIR_ERR_NO_MEMORY, "Allocating domain");
testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
return(NULL);
}
dom->handle = id;
@ -794,7 +794,7 @@ virDomainPtr testLookupDomainByName(virConnectPtr conn,
if (id >= 0) {
dom = virGetDomain(conn, con->domains[id].name, con->domains[id].uuid);
if (dom == NULL) {
testError(conn, NULL, VIR_ERR_NO_MEMORY, "Allocating domain");
testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating domain"));
return(NULL);
}
dom->handle = id;
@ -892,7 +892,7 @@ int testShutdownDomain (virDomainPtr domain)
con = &node->connections[domain->conn->handle];
if (gettimeofday(&tv, NULL) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day"));
return (-1);
}
@ -920,7 +920,7 @@ int testRebootDomain (virDomainPtr domain, virDomainRestart action)
con = &node->connections[domain->conn->handle];
if (gettimeofday(&tv, NULL) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day"));
return (-1);
}
@ -947,7 +947,7 @@ int testGetDomainInfo (virDomainPtr domain,
con = &node->connections[domain->conn->handle];
if (gettimeofday(&tv, NULL) < 0) {
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, "cannot get timeofday");
testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("getting time of day"));
return (-1);
}
@ -1038,7 +1038,7 @@ int testSetMemory (virDomainPtr domain,
con = &node->connections[domain->conn->handle];
if (memory > con->domains[domain->handle].info.maxMem) {
testError(domain->conn, domain, VIR_ERR_INVALID_ARG, "memory over maximum limit");
testError(domain->conn, domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
return (-1);
}
@ -1064,7 +1064,7 @@ int testSetVcpus(virDomainPtr domain,
/* We allow more cpus in guest than host */
if (nrCpus > 32) {
testError(domain->conn, domain, VIR_ERR_INVALID_ARG, "too many virtual cpus");
testError(domain->conn, domain, VIR_ERR_INVALID_ARG, __FUNCTION__);
return (-1);
}

File diff suppressed because it is too large Load Diff

View File

@ -240,10 +240,10 @@ virDefaultErrorFunc(virErrorPtr err)
lvl = "";
break;
case VIR_ERR_WARNING:
lvl = "warning";
lvl = _("warning");
break;
case VIR_ERR_ERROR:
lvl = "error";
lvl = _("error");
break;
}
switch (err->domain) {
@ -325,7 +325,7 @@ __virRaiseError(virConnectPtr conn, virDomainPtr dom,
* formats the message
*/
if (msg == NULL) {
str = strdup("No error message provided");
str = strdup(_("No error message provided"));
} else {
VIR_GET_VAR_STR(msg, str);
}
@ -379,195 +379,195 @@ __virErrorMsg(virErrorNumber error, const char *info)
return (NULL);
case VIR_ERR_INTERNAL_ERROR:
if (info != NULL)
errmsg = "internal error %s";
errmsg = _("internal error %s");
else
errmsg = "internal error";
errmsg = _("internal error");
break;
case VIR_ERR_NO_MEMORY:
errmsg = "out of memory";
errmsg = _("out of memory");
break;
case VIR_ERR_NO_SUPPORT:
if (info != NULL)
errmsg = "no support for hypervisor";
errmsg = _("no support for hypervisor");
else
errmsg = "no support for hypervisor %s";
errmsg = _("no support for hypervisor %s");
break;
case VIR_ERR_NO_CONNECT:
if (info == NULL)
errmsg = "could not connect to hypervisor";
errmsg = _("could not connect to hypervisor");
else
errmsg = "could not connect to %s";
errmsg = _("could not connect to %s");
break;
case VIR_ERR_INVALID_CONN:
if (info == NULL)
errmsg = "invalid connection pointer in";
errmsg = _("invalid connection pointer in");
else
errmsg = "invalid connection pointer in %s";
errmsg = _("invalid connection pointer in %s");
break;
case VIR_ERR_INVALID_DOMAIN:
if (info == NULL)
errmsg = "invalid domain pointer in";
errmsg = _("invalid domain pointer in");
else
errmsg = "invalid domain pointer in %s";
errmsg = _("invalid domain pointer in %s");
break;
case VIR_ERR_INVALID_ARG:
if (info == NULL)
errmsg = "invalid argument in";
errmsg = _("invalid argument in");
else
errmsg = "invalid argument in %s";
errmsg = _("invalid argument in %s");
break;
case VIR_ERR_OPERATION_FAILED:
if (info != NULL)
errmsg = "operation failed: %s";
errmsg = _("operation failed: %s");
else
errmsg = "operation failed";
errmsg = _("operation failed");
break;
case VIR_ERR_GET_FAILED:
if (info != NULL)
errmsg = "GET operation failed: %s";
errmsg = _("GET operation failed: %s");
else
errmsg = "GET operation failed";
errmsg = _("GET operation failed");
break;
case VIR_ERR_POST_FAILED:
if (info != NULL)
errmsg = "POST operation failed: %s";
errmsg = _("POST operation failed: %s");
else
errmsg = "POST operation failed";
errmsg = _("POST operation failed");
break;
case VIR_ERR_HTTP_ERROR:
errmsg = "got unknown HTTP error code %d";
errmsg = _("got unknown HTTP error code %d");
break;
case VIR_ERR_UNKNOWN_HOST:
if (info != NULL)
errmsg = "unknown host %s";
errmsg = _("unknown host %s");
else
errmsg = "unknown host";
errmsg = _("unknown host");
break;
case VIR_ERR_SEXPR_SERIAL:
if (info != NULL)
errmsg = "failed to serialize S-Expr: %s";
errmsg = _("failed to serialize S-Expr: %s");
else
errmsg = "failed to serialize S-Expr";
errmsg = _("failed to serialize S-Expr");
break;
case VIR_ERR_NO_XEN:
if (info == NULL)
errmsg = "could not use Xen hypervisor entry";
errmsg = _("could not use Xen hypervisor entry");
else
errmsg = "could not use Xen hypervisor entry %s";
errmsg = _("could not use Xen hypervisor entry %s");
break;
case VIR_ERR_NO_XENSTORE:
if (info == NULL)
errmsg = "could not connect to Xen Store";
errmsg = _("could not connect to Xen Store");
else
errmsg = "could not connect to Xen Store %s";
errmsg = _("could not connect to Xen Store %s");
break;
case VIR_ERR_XEN_CALL:
errmsg = "failed Xen syscall %s %d";
errmsg = _("failed Xen syscall %s %d");
break;
case VIR_ERR_OS_TYPE:
if (info == NULL)
errmsg = "unknown OS type";
errmsg = _("unknown OS type");
else
errmsg = "unknown OS type %s";
errmsg = _("unknown OS type %s");
break;
case VIR_ERR_NO_KERNEL:
errmsg = "missing kernel information";
errmsg = _("missing kernel information");
break;
case VIR_ERR_NO_ROOT:
if (info == NULL)
errmsg = "missing root device information";
errmsg = _("missing root device information");
else
errmsg = "missing root device information in %s";
errmsg = _("missing root device information in %s");
break;
case VIR_ERR_NO_SOURCE:
if (info == NULL)
errmsg = "missing source information for device";
errmsg = _("missing source information for device");
else
errmsg = "missing source information for device %s";
errmsg = _("missing source information for device %s");
break;
case VIR_ERR_NO_TARGET:
if (info == NULL)
errmsg = "missing target information for device";
errmsg = _("missing target information for device");
else
errmsg = "missing target information for device %s";
errmsg = _("missing target information for device %s");
break;
case VIR_ERR_NO_NAME:
if (info == NULL)
errmsg = "missing domain name information";
errmsg = _("missing domain name information");
else
errmsg = "missing domain name information in %s";
errmsg = _("missing domain name information in %s");
break;
case VIR_ERR_NO_OS:
if (info == NULL)
errmsg = "missing operating system information";
errmsg = _("missing operating system information");
else
errmsg = "missing operating system information for %s";
errmsg = _("missing operating system information for %s");
break;
case VIR_ERR_NO_DEVICE:
if (info == NULL)
errmsg = "missing devices information";
errmsg = _("missing devices information");
else
errmsg = "missing devices information for %s";
errmsg = _("missing devices information for %s");
break;
case VIR_ERR_DRIVER_FULL:
if (info == NULL)
errmsg = "too many drivers registered";
errmsg = _("too many drivers registered");
else
errmsg = "too many drivers registered in %s";
errmsg = _("too many drivers registered in %s");
break;
case VIR_ERR_CALL_FAILED:
if (info == NULL)
errmsg = "library call failed, possibly not supported";
errmsg = _("library call failed, possibly not supported");
else
errmsg = "library call %s failed, possibly not supported";
errmsg = _("library call %s failed, possibly not supported");
break;
case VIR_ERR_XML_ERROR:
if (info == NULL)
errmsg = "XML description not well formed or invalid";
errmsg = _("XML description not well formed or invalid");
else
errmsg = "XML description for %s is not well formed or invalid";
errmsg = _("XML description for %s is not well formed or invalid");
break;
case VIR_ERR_DOM_EXIST:
if (info == NULL)
errmsg = "this domain exists already";
errmsg = _("this domain exists already");
else
errmsg = "domain %s exists already";
errmsg = _("domain %s exists already");
break;
case VIR_ERR_OPERATION_DENIED:
if (info == NULL)
errmsg = "operation forbidden for read only access";
errmsg = _("operation forbidden for read only access");
else
errmsg = "operation %s forbidden for read only access";
errmsg = _("operation %s forbidden for read only access");
break;
case VIR_ERR_OPEN_FAILED:
if (info == NULL)
errmsg = "failed to open configuration file for reading";
errmsg = _("failed to open configuration file for reading");
else
errmsg = "failed to open %s for reading";
errmsg = _("failed to open %s for reading");
break;
case VIR_ERR_READ_FAILED:
if (info == NULL)
errmsg = "failed to read configuration file";
errmsg = _("failed to read configuration file");
else
errmsg = "failed to read configuration file %s";
errmsg = _("failed to read configuration file %s");
break;
case VIR_ERR_PARSE_FAILED:
if (info == NULL)
errmsg = "failed to parse configuration file";
errmsg = _("failed to parse configuration file");
else
errmsg = "failed to parse configuration file %s";
errmsg = _("failed to parse configuration file %s");
break;
case VIR_ERR_CONF_SYNTAX:
if (info == NULL)
errmsg = "configuration file syntax error";
errmsg = _("configuration file syntax error");
else
errmsg = "configuration file syntax error: %s";
errmsg = _("configuration file syntax error: %s");
break;
case VIR_ERR_WRITE_FAILED:
if (info == NULL)
errmsg = "failed to write configuration file";
errmsg = _("failed to write configuration file");
else
errmsg = "failed to write configuration file: %s";
errmsg = _("failed to write configuration file: %s");
break;
}
return (errmsg);

View File

@ -1238,7 +1238,7 @@ xenHypervisorNumOfDomains(virConnectPtr conn)
retry:
dominfos = malloc(maxids * sizeof(xen_v0_getdomaininfo));
if (dominfos == NULL) {
virXenError(VIR_ERR_NO_MEMORY, "failed to allocate %d domain info",
virXenError(VIR_ERR_NO_MEMORY, _("allocating %d domain info"),
maxids);
return(-1);
}
@ -1285,7 +1285,7 @@ xenHypervisorListDomains(virConnectPtr conn, int *ids, int maxids)
dominfos = malloc(maxids * sizeof(xen_v0_getdomaininfo));
if (dominfos == NULL) {
virXenError(VIR_ERR_NO_MEMORY, "failed to allocate %d domain info",
virXenError(VIR_ERR_NO_MEMORY, "allocating %d domain info",
maxids);
return(-1);
}

View File

@ -261,10 +261,10 @@ wr_sync(int fd, void *buffer, size_t size, int do_read)
if (len == -1) {
if (do_read)
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"faid to read from Xen Daemon");
_("failed to read from Xen Daemon"));
else
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"faid to read from Xen Daemon");
_("failed to read from Xen Daemon"));
return (-1);
}
@ -1053,7 +1053,7 @@ xenDaemonDomainCreateLinux(virConnectPtr xend, const char *sexpr)
if (ptr == NULL) {
/* this should be caught at the interface but ... */
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"Failed to urlencode the create S-Expr");
_("failed to urlencode the create S-Expr"));
return (-1);
}
@ -1094,20 +1094,20 @@ xenDaemonDomainLookupByName_ids(virConnectPtr xend, const char *domname,
value = sexpr_node(root, "domain/domid");
if (value == NULL) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing domid");
_("domain information incomplete, missing domid"));
goto error;
}
ret = strtol(value, NULL, 0);
if ((ret == 0) && (value[0] != '0')) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"domain information incorrect domid not numberic");
_("domain information incorrect domid not numeric"));
ret = -1;
} else if (uuid != NULL) {
char **ptr = (char **) &uuid;
if (sexpr_uuid(ptr, root, "domain/uuid") == NULL) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing uuid");
_("domain information incomplete, missing uuid"));
}
}
@ -1147,7 +1147,7 @@ xenDaemonDomainLookupByID(virConnectPtr xend,
name = sexpr_node(root, "domain/name");
if (name == NULL) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing name");
_("domain information incomplete, missing name"));
goto error;
}
if (domname)
@ -1156,7 +1156,7 @@ xenDaemonDomainLookupByID(virConnectPtr xend,
dst_uuid = (char *)&uuid[0];
if (sexpr_uuid(&dst_uuid, root, "domain/uuid") == NULL) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing uuid");
_("domain information incomplete, missing uuid"));
goto error;
}
@ -1405,7 +1405,7 @@ xend_parse_sexp_desc_os(struct sexpr *node, virBufferPtr buf, int hvm)
tmp = sexpr_node(node, "domain/image/hvm/kernel");
if (tmp == NULL) {
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing kernel");
_("domain information incomplete, missing kernel"));
return(-1);
}
virBufferVSprintf(buf, " <loader>%s</loader>\n", tmp);
@ -1430,7 +1430,7 @@ xend_parse_sexp_desc_os(struct sexpr *node, virBufferPtr buf, int hvm)
tmp = sexpr_node(node, "domain/image/linux/kernel");
if (tmp == NULL) {
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing kernel");
_("domain information incomplete, missing kernel"));
return(-1);
}
virBufferVSprintf(buf, " <kernel>%s</kernel>\n", tmp);
@ -1484,11 +1484,11 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
domid = sexpr_int(root, "domain/domid");
virBufferVSprintf(&buf, "<domain type='xen' id='%d'>\n", domid);
tmp = sexpr_node(root, "domain/name");
if (tmp == NULL) {
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, missing name");
_("domain information incomplete, missing name"));
goto error;
}
virBufferVSprintf(&buf, " <name>%s</name>\n", tmp);
@ -1540,7 +1540,7 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
virBufferAdd(&buf, " <pae/>\n", 11);
virBufferAdd(&buf, " </features>\n", 14);
}
virBufferAdd(&buf, " <devices>\n", 12);
/* in case of HVM we have devices emulation */
@ -1561,9 +1561,10 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
if (dst == NULL) {
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, vbd has no dev");
_("domain information incomplete, vbd has no dev"));
goto error;
}
if (!strncmp(dst, "ioemu:", 6))
dst += 6;
/* New style disk config from Xen >= 3.0.3 */
@ -1597,9 +1598,10 @@ xend_parse_sexp_desc(virConnectPtr conn, struct sexpr *root, int xendConfigVersi
if (dst == NULL) {
virXendError(NULL, VIR_ERR_INTERNAL_ERROR,
"domain information incomplete, vbd has no dev");
_("domain information incomplete, vbd has no dev"));
goto error;
}
if (!strncmp(dst, "ioemu:", 6))
dst += 6;
/* New style cdrom config from Xen >= 3.0.3 */
@ -1859,7 +1861,7 @@ sexpr_to_domain(virConnectPtr conn, struct sexpr *root)
ret = virGetDomain(conn, name, (const unsigned char *) &uuid[0]);
if (ret == NULL) {
virXendError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virXendError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
return(NULL);
}
ret->handle = sexpr_int(root, "domain/domid");
@ -1870,7 +1872,7 @@ sexpr_to_domain(virConnectPtr conn, struct sexpr *root)
error:
virXendError(conn, VIR_ERR_INTERNAL_ERROR,
"failed to parse Xend domain information");
_("failed to parse Xend domain information"));
if (ret != NULL)
virFreeDomain(conn, ret);
return(NULL);
@ -1949,7 +1951,7 @@ try_http:
ret = xenDaemonOpen_unix(conn, uri->path);
if (ret < 0)
goto failed;
ret = xenDaemonGetVersion(conn, &version);
if (ret < 0)
goto failed;
@ -2555,7 +2557,7 @@ xenDaemonLookupByID(virConnectPtr conn, int id) {
ret = virGetDomain(conn, name, uuid);
if (ret == NULL) {
virXendError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virXendError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
goto error;
}
ret->handle = id;
@ -2763,7 +2765,7 @@ xenDaemonLookupByUUID(virConnectPtr conn, const unsigned char *uuid)
ret = virGetDomain(conn, name, uuid);
if (ret == NULL) {
virXendError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virXendError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
goto error;
}
ret->handle = id;
@ -2826,13 +2828,13 @@ xenDaemonCreateLinux(virConnectPtr conn, const char *xmlDesc,
ret = xenDaemonDomainCreateLinux(conn, sexpr);
free(sexpr);
if (ret != 0) {
fprintf(stderr, "Failed to create domain %s\n", name);
fprintf(stderr, _("Failed to create domain %s\n"), name);
goto error;
}
ret = xend_wait_for_devices(conn, name);
if (ret != 0) {
fprintf(stderr, "Failed to get devices for domain %s\n", name);
fprintf(stderr, _("Failed to get devices for domain %s\n"), name);
goto error;
}
@ -2843,7 +2845,7 @@ xenDaemonCreateLinux(virConnectPtr conn, const char *xmlDesc,
ret = xenDaemonDomainResume(dom);
if (ret != 0) {
fprintf(stderr, "Failed to resume new domain %s\n", name);
fprintf(stderr, _("Failed to resume new domain %s\n"), name);
xenDaemonDomainDestroy(dom);
goto error;
}

View File

@ -61,7 +61,7 @@ virBufferGrow(virBufferPtr buf, unsigned int len)
newbuf = (char *) realloc(buf->content, size);
if (newbuf == NULL) {
virXMLError(VIR_ERR_NO_MEMORY, "growing buffer", size);
virXMLError(VIR_ERR_NO_MEMORY, _("growing buffer"), size);
return (-1);
}
buf->content = newbuf;
@ -113,11 +113,11 @@ virBufferNew(unsigned int size)
virBufferPtr buf;
if (!(buf = malloc(sizeof(*buf)))) {
virXMLError(VIR_ERR_NO_MEMORY, "allocate new buffer", sizeof(*buf));
virXMLError(VIR_ERR_NO_MEMORY, _("allocate new buffer"), sizeof(*buf));
return NULL;
}
if (size && (buf->content = malloc(size))==NULL) {
virXMLError(VIR_ERR_NO_MEMORY, "allocate buffer content", size);
virXMLError(VIR_ERR_NO_MEMORY, _("allocate buffer content"), size);
free(buf);
return NULL;
}

View File

@ -60,8 +60,8 @@ static char *xmlGetText(xmlNodePtr node)
if (node->type == XML_TEXT_NODE) {
char *x = strdup((const char *)node->content);
if (!x)
xmlRpcError(VIR_ERR_NO_MEMORY, "copying node content",
strlen((const char *)node->content));
xmlRpcError(VIR_ERR_NO_MEMORY, _("copying node content"),
strlen((const char *)node->content));
return x;
}
return NULL;
@ -154,14 +154,14 @@ static xmlRpcValuePtr xmlRpcValueUnmarshalArray(xmlNodePtr node)
if (!ret)
return NULL;
for (cur = xmlFirstElement(node); cur; cur = xmlNextElement(cur))
n_elements += 1;
ret->value.array.elements = malloc(n_elements * sizeof(xmlRpcValue));
if (!ret->value.array.elements) {
xmlRpcError(VIR_ERR_NO_MEMORY, "allocate value array",
n_elements * sizeof(xmlRpcValue));
xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate value array"),
n_elements * sizeof(xmlRpcValue));
free(ret);
return NULL;
}
@ -193,7 +193,7 @@ static xmlRpcValueDictElementPtr xmlRpcValueUnmarshalDictElement(xmlNodePtr node
} else if (xmlStrEqual(cur->name, BAD_CAST "value")) {
ret->value = xmlRpcValueUnmarshal(cur);
} else {
xmlRpcError(VIR_ERR_XML_ERROR, "unexpected dict node", 0);
xmlRpcError(VIR_ERR_XML_ERROR, _("unexpected dict node"), 0);
if (ret->name)
free(ret->name);
if (ret->value)
@ -265,7 +265,7 @@ xmlRpcValuePtr xmlRpcValueUnmarshal(xmlNodePtr node)
} else if (xmlStrEqual(node->name, BAD_CAST "nil")) {
ret = xmlRpcValueNew(XML_RPC_NIL);
} else {
xmlRpcError(VIR_ERR_XML_ERROR, "unexpected value node", 0);
xmlRpcError(VIR_ERR_XML_ERROR, _("unexpected value node"), 0);
}
return ret;
@ -426,22 +426,22 @@ static char *xmlRpcCallRaw(const char *url, const char *request)
&contentType,
NULL,
strlen(request));
if (cxt == NULL) {
xmlRpcError(VIR_ERR_POST_FAILED, "send request", 0);
xmlRpcError(VIR_ERR_POST_FAILED, _("send request"), 0);
goto error;
}
if (contentType && strcmp(contentType, "text/xml") != 0) {
errno = EINVAL;
xmlRpcError(VIR_ERR_POST_FAILED, "unexpected mime type", 0);
xmlRpcError(VIR_ERR_POST_FAILED, _("unexpected mime type"), 0);
goto error;
}
len = xmlNanoHTTPContentLength(cxt);
response = malloc(len + 1);
if (response == NULL) {
xmlRpcError(VIR_ERR_NO_MEMORY, "allocate response", len);
xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate response"), len);
goto error;
}
ret = xmlNanoHTTPRead(cxt, response, len);
@ -449,7 +449,7 @@ static char *xmlRpcCallRaw(const char *url, const char *request)
errno = EINVAL;
free(response);
response = NULL;
xmlRpcError(VIR_ERR_POST_FAILED, "read response", 0);
xmlRpcError(VIR_ERR_POST_FAILED, _("read response"), 0);
}
response[len] = 0;
@ -481,7 +481,7 @@ static char **xmlRpcStringArray(xmlRpcValuePtr value)
size += strlen(value->value.array.elements[i]->value.string) + 1;
if (!(ptr = malloc(size))) {
xmlRpcError(VIR_ERR_NO_MEMORY, "allocate string array", size);
xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate string array"), size);
return NULL;
}
ret = (char **)ptr;
@ -511,7 +511,7 @@ xmlRpcArgvNew(const char *fmt, va_list ap, int *argc)
*argc = strlen(fmt);
if (!(argv = malloc(sizeof(*argv) * *argc))) {
xmlRpcError(VIR_ERR_NO_MEMORY, "read response", sizeof(*argv) * *argc);
xmlRpcError(VIR_ERR_NO_MEMORY, _("read response"), sizeof(*argv) * *argc);
return NULL;
}
i = 0;
@ -603,7 +603,7 @@ int xmlRpcCall(xmlRpcContextPtr context, const char *method,
if (xml == NULL) {
errno = EINVAL;
xmlRpcError(VIR_ERR_XML_ERROR, "parse server response failed", 0);
xmlRpcError(VIR_ERR_XML_ERROR, _("parse server response failed"), 0);
return -1;
}
@ -667,7 +667,7 @@ xmlRpcContextPtr xmlRpcContextNew(const char *uri)
ret->uri = strdup(uri);
ret->faultMessage = NULL;
} else
xmlRpcError(VIR_ERR_NO_MEMORY, "allocate new context", sizeof(*ret));
xmlRpcError(VIR_ERR_NO_MEMORY, _("allocate new context"), sizeof(*ret));
return ret;
}

View File

@ -315,7 +315,7 @@ xenStoreOpen(virConnectPtr conn, const char *name, int flags)
if (conn->xshandle == NULL) {
if (!(flags & VIR_DRV_OPEN_QUIET))
virXenStoreError(conn, VIR_ERR_NO_XEN,
"failed to connect to Xen Store");
_("failed to connect to Xen Store"));
return (-1);
}
return (0);
@ -589,7 +589,7 @@ xenStoreDomainLookupByName(virConnectPtr conn, const char *name)
ret = virGetDomain(conn, name, NULL);
if (ret == NULL) {
virXenStoreError(conn, VIR_ERR_NO_MEMORY, "Allocating domain");
virXenStoreError(conn, VIR_ERR_NO_MEMORY, _("allocating domain"));
if (path != NULL)
free(path);
goto done;

View File

@ -10,8 +10,8 @@ INCLUDES = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/src \
@LIBXML_CFLAGS@ \
-D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=199506L
-D_XOPEN_SOURCE=600 -D_POSIX_C_SOURCE=199506L \
-DGETTEXT_PACKAGE=\"$(PACKAGE)\"
LDADDS = \
@STATIC_BINARIES@ \
@LIBXML_LIBS@ \

View File

@ -2,7 +2,7 @@ Id: 1
Name: fc4
UUID: ef861801-45b9-11cb-88e3-afbfe5370493
OS Type: linux
State: running
State: running
CPU(s): 1
Max memory: 131072 kB
Used memory: 131072 kB

View File

@ -1,2 +1,2 @@
running
running

View File

@ -1,5 +1,5 @@
Id Name State
----------------------------------
0 fv0 running
1 fc4 running
0 fv0 running
1 fc4 running

View File

@ -1,4 +1,4 @@
Id Name State
----------------------------------
0 Domain-0 running
0 Domain-0 running