[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Libguestfs] Remove gettexti[ze]



This is the final pair of patches which I'm going to push.  I have
checked that 'make dist' and 'make install' work correctly with these.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
New in Fedora 11: Fedora Windows cross-compiler. Compile Windows
programs, test, and build Windows installers. Over 70 libraries supprt'd
http://fedoraproject.org/wiki/MinGW http://www.annexia.org/fedora_mingw
From 6aa95e87c1f259589ff9c7812707e4b30b8f6fd7 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones redhat com>
Date: Mon, 30 Apr 2012 16:23:05 +0100
Subject: [PATCH 1/2] Remove "convenience header" "gettext.h" and use
 <libintl.h> instead.

gettextize provides a local file called "gettext.h".  Remove this and
use <libintl.h> from glibc headers instead.

Most of this change is mechanical: #include <libintl.h> in every C
file which uses any gettext function.  But also we remove the
gettext.h file, and adjust the "_" macros.

Note that this effectively removes the ./configure --disable-nls
option, although we don't know if that ever worked.
---
 align/domains.c             |    1 +
 df/domains.c                |    1 +
 df/output.c                 |    1 +
 fish/alloc.c                |    1 +
 fish/config.c               |    1 +
 fish/copy.c                 |    1 +
 fish/display.c              |    1 +
 fish/edit.c                 |    1 +
 fish/events.c               |    1 +
 fish/fish.c                 |    1 +
 fish/fish.h                 |   13 ---
 fish/glob.c                 |    1 +
 fish/help.c                 |    1 +
 fish/hexedit.c              |    1 +
 fish/inspect.c              |    1 +
 fish/keys.c                 |    1 +
 fish/lcd.c                  |    1 +
 fish/man.c                  |    1 +
 fish/more.c                 |    1 +
 fish/options.c              |    2 +
 fish/options.h              |   10 --
 fish/prep.c                 |    1 +
 fish/prep_boot.c            |    1 +
 fish/prep_disk.c            |    1 +
 fish/prep_fs.c              |    1 +
 fish/prep_lv.c              |    1 +
 fish/prep_part.c            |    1 +
 fish/rc.c                   |    1 +
 fish/reopen.c               |    1 +
 fish/setenv.c               |    1 +
 fish/supported.c            |    1 +
 fish/time.c                 |    1 +
 fuse/guestmount.c           |    1 +
 fuse/guestmount.h           |    8 +-
 generator/generator_fish.ml |    4 +
 src/Makefile.am             |    1 -
 src/gettext.h               |  271 -------------------------------------------
 src/guestfs-internal.h      |    8 +-
 test-tool/test-tool.c       |   14 +--
 39 files changed, 40 insertions(+), 321 deletions(-)
 delete mode 100644 src/gettext.h

diff --git a/align/domains.c b/align/domains.c
index 9dd49cc..6b3f28f 100644
--- a/align/domains.c
+++ b/align/domains.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libintl.h>
 #include <assert.h>
 
 #ifdef HAVE_LIBVIRT
diff --git a/df/domains.c b/df/domains.c
index 3993bbf..43dc47d 100644
--- a/df/domains.c
+++ b/df/domains.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libintl.h>
 #include <assert.h>
 
 #ifdef HAVE_LIBVIRT
diff --git a/df/output.c b/df/output.c
index d604566..ba513de 100644
--- a/df/output.c
+++ b/df/output.c
@@ -24,6 +24,7 @@
 #include <string.h>
 #include <inttypes.h>
 #include <xvasprintf.h>
+#include <libintl.h>
 #include <math.h>
 #include <assert.h>
 
diff --git a/fish/alloc.c b/fish/alloc.c
index b530254..f6e5b8f 100644
--- a/fish/alloc.c
+++ b/fish/alloc.c
@@ -25,6 +25,7 @@
 #include <fcntl.h>
 #include <inttypes.h>
 #include <errno.h>
+#include <libintl.h>
 
 #include "xstrtol.h"
 
diff --git a/fish/config.c b/fish/config.c
index 6c75969..3e004cc 100644
--- a/fish/config.c
+++ b/fish/config.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libintl.h>
 
 #ifdef HAVE_LIBCONFIG
 #include <libconfig.h>
diff --git a/fish/copy.c b/fish/copy.c
index 4ff1693..0ea605f 100644
--- a/fish/copy.c
+++ b/fish/copy.c
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <limits.h>
+#include <libintl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <sys/wait.h>
diff --git a/fish/display.c b/fish/display.c
index 05933f4..a5889db 100644
--- a/fish/display.c
+++ b/fish/display.c
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <inttypes.h>
+#include <libintl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 
diff --git a/fish/edit.c b/fish/edit.c
index 517c098..a411180 100644
--- a/fish/edit.c
+++ b/fish/edit.c
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <inttypes.h>
+#include <libintl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <assert.h>
diff --git a/fish/events.c b/fish/events.c
index 1106372..b98bd58 100644
--- a/fish/events.c
+++ b/fish/events.c
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <inttypes.h>
+#include <libintl.h>
 #include <assert.h>
 #include <sys/types.h>
 #include <sys/wait.h>
diff --git a/fish/fish.c b/fish/fish.c
index a83f702..d0688f1 100644
--- a/fish/fish.c
+++ b/fish/fish.c
@@ -30,6 +30,7 @@
 #include <sys/wait.h>
 #include <locale.h>
 #include <langinfo.h>
+#include <libintl.h>
 
 #ifdef HAVE_LIBREADLINE
 #include <readline/readline.h>
diff --git a/fish/fish.h b/fish/fish.h
index e77f349..69a7640 100644
--- a/fish/fish.h
+++ b/fish/fish.h
@@ -31,21 +31,8 @@
 #define SOCK_CLOEXEC 0
 #endif
 
-#ifdef HAVE_GETTEXT
-#include "gettext.h"
 #define _(str) dgettext(PACKAGE, (str))
 #define N_(str) dgettext(PACKAGE, (str))
-#else
-#define _(str) str
-#define N_(str) str
-#endif
-
-#if !ENABLE_NLS
-#undef textdomain
-#define textdomain(Domainname) /* empty */
-#undef bindtextdomain
-#define bindtextdomain(Domainname, Dirname) /* empty */
-#endif
 
 #define STREQ(a,b) (strcmp((a),(b)) == 0)
 #define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0)
diff --git a/fish/glob.c b/fish/glob.c
index 108eda3..b3cfa57 100644
--- a/fish/glob.c
+++ b/fish/glob.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/help.c b/fish/help.c
index b62739a..c141287 100644
--- a/fish/help.c
+++ b/fish/help.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/hexedit.c b/fish/hexedit.c
index 472aa8f..1057a31 100644
--- a/fish/hexedit.c
+++ b/fish/hexedit.c
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <inttypes.h>
+#include <libintl.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 
diff --git a/fish/inspect.c b/fish/inspect.c
index 3358cd4..64c6607 100644
--- a/fish/inspect.c
+++ b/fish/inspect.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libintl.h>
 
 #include "c-ctype.h"
 
diff --git a/fish/keys.c b/fish/keys.c
index b66db52..80c0501 100644
--- a/fish/keys.c
+++ b/fish/keys.c
@@ -23,6 +23,7 @@
 #include <unistd.h>
 #include <termios.h>
 #include <string.h>
+#include <libintl.h>
 
 #include "guestfs.h"
 
diff --git a/fish/lcd.c b/fish/lcd.c
index 69c684e..19c6613 100644
--- a/fish/lcd.c
+++ b/fish/lcd.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/man.c b/fish/man.c
index 7d0318c..a710607 100644
--- a/fish/man.c
+++ b/fish/man.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <signal.h>
 #include <string.h>
+#include <libintl.h>
 #include <sys/wait.h>
 
 #include "fish.h"
diff --git a/fish/more.c b/fish/more.c
index 2ac2c3b..c5a94d3 100644
--- a/fish/more.c
+++ b/fish/more.c
@@ -24,6 +24,7 @@
 #include <unistd.h>
 #include <fcntl.h>
 #include <inttypes.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/options.c b/fish/options.c
index 1a2e8c5..b3ad675 100644
--- a/fish/options.c
+++ b/fish/options.c
@@ -20,6 +20,8 @@
 
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
+#include <libintl.h>
 
 #include "c-ctype.h"
 
diff --git a/fish/options.h b/fish/options.h
index f0f5a07..29117f6 100644
--- a/fish/options.h
+++ b/fish/options.h
@@ -19,22 +19,12 @@
 #ifndef OPTIONS_H
 #define OPTIONS_H
 
-#ifdef HAVE_GETTEXT
-#include "gettext.h"
 #ifndef _
 #define _(str) dgettext(PACKAGE, (str))
 #endif
 #ifndef N_
 #define N_(str) dgettext(PACKAGE, (str))
 #endif
-#else
-#ifndef _
-#define _(str) str
-#endif
-#ifndef _
-#define N_(str) str
-#endif
-#endif
 
 #ifndef STREQ
 #define STREQ(a,b) (strcmp((a),(b)) == 0)
diff --git a/fish/prep.c b/fish/prep.c
index 9863bc9..665a3e9 100644
--- a/fish/prep.c
+++ b/fish/prep.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 #include "prepopts.h"
diff --git a/fish/prep_boot.c b/fish/prep_boot.c
index 79798cd..75ddcca 100644
--- a/fish/prep_boot.c
+++ b/fish/prep_boot.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 #include "prepopts.h"
diff --git a/fish/prep_disk.c b/fish/prep_disk.c
index 055b36f..1caee5f 100644
--- a/fish/prep_disk.c
+++ b/fish/prep_disk.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 #include "prepopts.h"
diff --git a/fish/prep_fs.c b/fish/prep_fs.c
index 8934de4..a0373d9 100644
--- a/fish/prep_fs.c
+++ b/fish/prep_fs.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 #include "prepopts.h"
diff --git a/fish/prep_lv.c b/fish/prep_lv.c
index ec380d4..f635ff9 100644
--- a/fish/prep_lv.c
+++ b/fish/prep_lv.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 #include "prepopts.h"
diff --git a/fish/prep_part.c b/fish/prep_part.c
index 27f4b78..fc39014 100644
--- a/fish/prep_part.c
+++ b/fish/prep_part.c
@@ -23,6 +23,7 @@
 #include <stdarg.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 #include "prepopts.h"
diff --git a/fish/rc.c b/fish/rc.c
index 8674bdf..14c9d59 100644
--- a/fish/rc.c
+++ b/fish/rc.c
@@ -23,6 +23,7 @@
 #include <string.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include <libintl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/un.h>
diff --git a/fish/reopen.c b/fish/reopen.c
index 585bbd2..3fc9510 100644
--- a/fish/reopen.c
+++ b/fish/reopen.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/setenv.c b/fish/setenv.c
index c2af863..d04b1d3 100644
--- a/fish/setenv.c
+++ b/fish/setenv.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/supported.c b/fish/supported.c
index 7b9e085..1b558bf 100644
--- a/fish/supported.c
+++ b/fish/supported.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 
 #include "fish.h"
 
diff --git a/fish/time.c b/fish/time.c
index 246a580..17d31a7 100644
--- a/fish/time.c
+++ b/fish/time.c
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <libintl.h>
 #include <sys/time.h>
 
 #include "fish.h"
diff --git a/fuse/guestmount.c b/fuse/guestmount.c
index 379346f..2fe56ca 100644
--- a/fuse/guestmount.c
+++ b/fuse/guestmount.c
@@ -29,6 +29,7 @@
 #include <getopt.h>
 #include <signal.h>
 #include <locale.h>
+#include <libintl.h>
 
 /* We're still using some of FUSE to handle command line options. */
 #include <fuse.h>
diff --git a/fuse/guestmount.h b/fuse/guestmount.h
index a6249ec..3f54c30 100644
--- a/fuse/guestmount.h
+++ b/fuse/guestmount.h
@@ -25,14 +25,8 @@
 #ifndef GUESTMOUNT_H_
 #define GUESTMOUNT_H_
 
-#ifdef HAVE_GETTEXT
-#include "gettext.h"
 #define _(str) dgettext(PACKAGE, (str))
-//#define N_(str) dgettext(PACKAGE, (str))
-#else
-#define _(str) str
-//#define N_(str) str
-#endif
+#define N_(str) dgettext(PACKAGE, (str))
 
 #define STREQ(a,b) (strcmp((a),(b)) == 0)
 #define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0)
diff --git a/generator/generator_fish.ml b/generator/generator_fish.ml
index c4ab69d..97625cc 100644
--- a/generator/generator_fish.ml
+++ b/generator/generator_fish.ml
@@ -62,6 +62,7 @@ let generate_fish_cmds () =
   pr "#include <stdlib.h>\n";
   pr "#include <string.h>\n";
   pr "#include <inttypes.h>\n";
+  pr "#include <libintl.h>\n";
   pr "\n";
   pr "#include \"c-ctype.h\"\n";
   pr "#include \"full-write.h\"\n";
@@ -1000,9 +1001,12 @@ and generate_fish_event_names () =
   generate_header CStyle GPLv2plus;
 
   pr "\
+#include <config.h>
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <libintl.h>
 
 #include \"fish.h\"
 
diff --git a/src/Makefile.am b/src/Makefile.am
index d29a38e..30e5070 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -122,7 +122,6 @@ libguestfs_la_SOURCES = \
 	guestfs.h \
 	guestfs-internal.h \
 	guestfs_protocol.h \
-	gettext.h \
 	actions.c \
 	appliance.c \
 	bindtests.c \
diff --git a/src/gettext.h b/src/gettext.h
deleted file mode 100644
index 93f32e5..0000000
--- a/src/gettext.h
+++ /dev/null
@@ -1,271 +0,0 @@
-/* Convenience header for conditional use of GNU <libintl.h>.
-   Copyright (C) 1995-1998, 2000-2002, 2004-2006 Free Software Foundation, Inc.
-
-   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, or (at your option)
-   any later version.
-
-   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
-   Library 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
-   USA.  */
-
-#ifndef _LIBGETTEXT_H
-#define _LIBGETTEXT_H 1
-
-/* NLS can be disabled through the configure --disable-nls option.  */
-#if ENABLE_NLS
-
-/* Get declarations of GNU message catalog functions.  */
-# include <libintl.h>
-
-/* You can set the DEFAULT_TEXT_DOMAIN macro to specify the domain used by
-   the gettext() and ngettext() macros.  This is an alternative to calling
-   textdomain(), and is useful for libraries.  */
-# ifdef DEFAULT_TEXT_DOMAIN
-#  undef gettext
-#  define gettext(Msgid) \
-     dgettext (DEFAULT_TEXT_DOMAIN, Msgid)
-#  undef ngettext
-#  define ngettext(Msgid1, Msgid2, N) \
-     dngettext (DEFAULT_TEXT_DOMAIN, Msgid1, Msgid2, N)
-# endif
-
-#else
-
-/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which
-   chokes if dcgettext is defined as a macro.  So include it now, to make
-   later inclusions of <locale.h> a NOP.  We don't include <libintl.h>
-   as well because people using "gettext.h" will not include <libintl.h>,
-   and also including <libintl.h> would fail on SunOS 4, whereas <locale.h>
-   is OK.  */
-#if defined(__sun)
-# include <locale.h>
-#endif
-
-/* Many header files from the libstdc++ coming with g++ 3.3 or newer include
-   <libintl.h>, which chokes if dcgettext is defined as a macro.  So include
-   it now, to make later inclusions of <libintl.h> a NOP.  */
-#if defined(__cplusplus) && defined(__GNUG__) && (__GNUC__ >= 3)
-# include <cstdlib>
-# if (__GLIBC__ >= 2) || _GLIBCXX_HAVE_LIBINTL_H
-#  include <libintl.h>
-# endif
-#endif
-
-/* Disabled NLS.
-   The casts to 'const char *' serve the purpose of producing warnings
-   for invalid uses of the value returned from these functions.
-   On pre-ANSI systems without 'const', the config.h file is supposed to
-   contain "#define const".  */
-# define gettext(Msgid) ((const char *) (Msgid))
-# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
-# define dcgettext(Domainname, Msgid, Category) \
-    ((void) (Category), dgettext (Domainname, Msgid))
-# define ngettext(Msgid1, Msgid2, N) \
-    ((N) == 1 \
-     ? ((void) (Msgid2), (const char *) (Msgid1)) \
-     : ((void) (Msgid1), (const char *) (Msgid2)))
-# define dngettext(Domainname, Msgid1, Msgid2, N) \
-    ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
-# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
-    ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
-# define textdomain(Domainname) ((const char *) (Domainname))
-# define bindtextdomain(Domainname, Dirname) \
-    ((void) (Domainname), (const char *) (Dirname))
-# define bind_textdomain_codeset(Domainname, Codeset) \
-    ((void) (Domainname), (const char *) (Codeset))
-
-#endif
-
-/* A pseudo function call that serves as a marker for the automated
-   extraction of messages, but does not call gettext().  The run-time
-   translation is done at a different place in the code.
-   The argument, String, should be a literal string.  Concatenated strings
-   and other string expressions won't work.
-   The macro's expansion is not parenthesized, so that it is suitable as
-   initializer for static 'char[]' or 'const char[]' variables.  */
-#define gettext_noop(String) String
-
-/* The separator between msgctxt and msgid in a .mo file.  */
-#define GETTEXT_CONTEXT_GLUE "\004"
-
-/* Pseudo function calls, taking a MSGCTXT and a MSGID instead of just a
-   MSGID.  MSGCTXT and MSGID must be string literals.  MSGCTXT should be
-   short and rarely need to change.
-   The letter 'p' stands for 'particular' or 'special'.  */
-#ifdef DEFAULT_TEXT_DOMAIN
-# define pgettext(Msgctxt, Msgid) \
-   pgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
-#else
-# define pgettext(Msgctxt, Msgid) \
-   pgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
-#endif
-#define dpgettext(Domainname, Msgctxt, Msgid) \
-  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, LC_MESSAGES)
-#define dcpgettext(Domainname, Msgctxt, Msgid, Category) \
-  pgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, Category)
-#ifdef DEFAULT_TEXT_DOMAIN
-# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
-   npgettext_aux (DEFAULT_TEXT_DOMAIN, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
-#else
-# define npgettext(Msgctxt, Msgid, MsgidPlural, N) \
-   npgettext_aux (NULL, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
-#endif
-#define dnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
-  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, LC_MESSAGES)
-#define dcnpgettext(Domainname, Msgctxt, Msgid, MsgidPlural, N, Category) \
-  npgettext_aux (Domainname, Msgctxt GETTEXT_CONTEXT_GLUE Msgid, Msgid, MsgidPlural, N, Category)
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-pgettext_aux (const char *domain,
-              const char *msg_ctxt_id, const char *msgid,
-              int category)
-{
-  const char *translation = dcgettext (domain, msg_ctxt_id, category);
-  if (translation == msg_ctxt_id)
-    return msgid;
-  else
-    return translation;
-}
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-npgettext_aux (const char *domain,
-               const char *msg_ctxt_id, const char *msgid,
-               const char *msgid_plural, unsigned long int n,
-               int category)
-{
-  const char *translation =
-    dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
-  if (translation == msg_ctxt_id || translation == msgid_plural)
-    return (n == 1 ? msgid : msgid_plural);
-  else
-    return translation;
-}
-
-/* The same thing extended for non-constant arguments.  Here MSGCTXT and MSGID
-   can be arbitrary expressions.  But for string literals these macros are
-   less efficient than those above.  */
-
-#include <string.h>
-
-#define _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS \
-  (((__GNUC__ >= 3 || __GNUG__ >= 2) && !__STRICT_ANSI__) \
-   /* || __STDC_VERSION__ >= 199901L */ )
-
-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-#include <stdlib.h>
-#endif
-
-#define pgettext_expr(Msgctxt, Msgid) \
-  dcpgettext_expr (NULL, Msgctxt, Msgid, LC_MESSAGES)
-#define dpgettext_expr(Domainname, Msgctxt, Msgid) \
-  dcpgettext_expr (Domainname, Msgctxt, Msgid, LC_MESSAGES)
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-dcpgettext_expr (const char *domain,
-                 const char *msgctxt, const char *msgid,
-                 int category)
-{
-  size_t msgctxt_len = strlen (msgctxt) + 1;
-  size_t msgid_len = strlen (msgid) + 1;
-  const char *translation;
-#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-  char msg_ctxt_id[msgctxt_len + msgid_len];
-#else
-  char buf[1024];
-  char *msg_ctxt_id =
-    (msgctxt_len + msgid_len <= sizeof (buf)
-     ? buf
-     : (char *) malloc (msgctxt_len + msgid_len));
-  if (msg_ctxt_id != NULL)
-#endif
-    {
-      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
-      msg_ctxt_id[msgctxt_len - 1] = '\004';
-      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
-      translation = dcgettext (domain, msg_ctxt_id, category);
-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-      if (msg_ctxt_id != buf)
-        free (msg_ctxt_id);
-#endif
-      if (translation != msg_ctxt_id)
-        return translation;
-    }
-  return msgid;
-}
-
-#define npgettext_expr(Msgctxt, Msgid, MsgidPlural, N) \
-  dcnpgettext_expr (NULL, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
-#define dnpgettext_expr(Domainname, Msgctxt, Msgid, MsgidPlural, N) \
-  dcnpgettext_expr (Domainname, Msgctxt, Msgid, MsgidPlural, N, LC_MESSAGES)
-
-#ifdef __GNUC__
-__inline
-#else
-#ifdef __cplusplus
-inline
-#endif
-#endif
-static const char *
-dcnpgettext_expr (const char *domain,
-                  const char *msgctxt, const char *msgid,
-                  const char *msgid_plural, unsigned long int n,
-                  int category)
-{
-  size_t msgctxt_len = strlen (msgctxt) + 1;
-  size_t msgid_len = strlen (msgid) + 1;
-  const char *translation;
-#if _LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-  char msg_ctxt_id[msgctxt_len + msgid_len];
-#else
-  char buf[1024];
-  char *msg_ctxt_id =
-    (msgctxt_len + msgid_len <= sizeof (buf)
-     ? buf
-     : (char *) malloc (msgctxt_len + msgid_len));
-  if (msg_ctxt_id != NULL)
-#endif
-    {
-      memcpy (msg_ctxt_id, msgctxt, msgctxt_len - 1);
-      msg_ctxt_id[msgctxt_len - 1] = '\004';
-      memcpy (msg_ctxt_id + msgctxt_len, msgid, msgid_len);
-      translation = dcngettext (domain, msg_ctxt_id, msgid_plural, n, category);
-#if !_LIBGETTEXT_HAVE_VARIABLE_SIZE_ARRAYS
-      if (msg_ctxt_id != buf)
-        free (msg_ctxt_id);
-#endif
-      if (!(translation == msg_ctxt_id || translation == msgid_plural))
-        return translation;
-    }
-  return (n == 1 ? msgid : msgid_plural);
-}
-
-#endif /* _LIBGETTEXT_H */
diff --git a/src/guestfs-internal.h b/src/guestfs-internal.h
index a41212d..01a7e6c 100644
--- a/src/guestfs-internal.h
+++ b/src/guestfs-internal.h
@@ -19,6 +19,8 @@
 #ifndef GUESTFS_INTERNAL_H_
 #define GUESTFS_INTERNAL_H_
 
+#include <libintl.h>
+
 #include <rpc/types.h>
 #include <rpc/xdr.h>
 
@@ -44,14 +46,8 @@
 #define STRCASENEQLEN(a,b,n) (strncasecmp((a),(b),(n)) != 0)
 #define STRPREFIX(a,b) (strncmp((a),(b),strlen((b))) == 0)
 
-#ifdef HAVE_GETTEXT
-#include "gettext.h"
 #define _(str) dgettext(PACKAGE, (str))
 #define N_(str) dgettext(PACKAGE, (str))
-#else
-#define _(str) str
-#define N_(str) str
-#endif
 
 #ifdef HAVE_SYS_SDT_H
 #include <sys/sdt.h>
diff --git a/test-tool/test-tool.c b/test-tool/test-tool.c
index 1c8f6f5..91093d8 100644
--- a/test-tool/test-tool.c
+++ b/test-tool/test-tool.c
@@ -31,24 +31,12 @@
 #include <sys/wait.h>
 #include <locale.h>
 #include <limits.h>
+#include <libintl.h>
 
 #include <guestfs.h>
 
-#ifdef HAVE_GETTEXT
-#include "gettext.h"
 #define _(str) dgettext(PACKAGE, (str))
 //#define N_(str) dgettext(PACKAGE, (str))
-#else
-#define _(str) str
-//#define N_(str) str
-#endif
-
-#if !ENABLE_NLS
-#undef textdomain
-#define textdomain(Domainname) /* empty */
-#undef bindtextdomain
-#define bindtextdomain(Domainname, Dirname) /* empty */
-#endif
 
 #define STREQ(a,b) (strcmp((a),(b)) == 0)
 //#define STRCASEEQ(a,b) (strcasecmp((a),(b)) == 0)
-- 
1.7.10

From 75514ab57a06e534f26698fe1725ca29b966c3ad Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones redhat com>
Date: Mon, 30 Apr 2012 16:04:51 +0100
Subject: [PATCH 2/2] Remove gettextize.

Replace the sociopathic nonsense in gettextize with a simple
Makefile.am which does the same ... and is faster.
---
 .gitignore             |   13 --
 Makefile.am            |    6 +-
 configure.ac           |   24 ++-
 m4/.gitignore          |    1 -
 po/Makefile.am         |   99 +++++++++++
 po/Makefile.in.in      |  444 ------------------------------------------------
 po/Makevars            |   43 -----
 po/POTFILES            |  217 +++++++++++++++++++++++
 po/POTFILES.in         |  217 -----------------------
 po/remove-potcdate.sin |   19 ---
 10 files changed, 339 insertions(+), 744 deletions(-)
 create mode 100644 po/Makefile.am
 delete mode 100644 po/Makefile.in.in
 delete mode 100644 po/Makevars
 create mode 100644 po/POTFILES
 delete mode 100644 po/POTFILES.in
 delete mode 100644 po/remove-potcdate.sin

diff --git a/.gitignore b/.gitignore
index 757b6f9..d420430 100644
--- a/.gitignore
+++ b/.gitignore
@@ -290,8 +290,6 @@ pod2htm?.tmp
 /php/extension/php_guestfs_php.h
 /php/extension/run-tests.php
 /php/extension/tmp-php.ini
-/po/boldquot.sed
-/po/ChangeLog
 /po-docs/*/*.1
 /po-docs/*/*.3
 /po-docs/*/*.pl
@@ -299,18 +297,7 @@ pod2htm?.tmp
 /po-docs/*/*.pod
 /po-docs/*/stamp-update-po
 /podwrapper.sh
-/po/en boldquot header
-/po/en quot header
 /po/*.gmo
-/po/insert-header.sin
-/po/LINGUAS
-/po/Makevars.template
-/po/POTFILES
-/po/quot.sed
-/po/remove-potcdate.sed
-/po/Rules-quot
-/po/stamp-it
-/po/stamp-po
 /python/bindtests.py
 /python/examples/guestfs-python.3
 /python/examples/stamp-guestfs-python.pod
diff --git a/Makefile.am b/Makefile.am
index b3df5b3..fe37b82 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -139,7 +139,6 @@ EXTRA_DIST = \
 	libtool-kill-dependency_libs.sh \
 	logo/fish.svg logo/fish.png \
 	m4/.gitignore \
-	po/remove-potcdate.sin \
 	update-bugs.sh
 
 # The website.
@@ -212,7 +211,8 @@ dist-hook:
 	mv AUTHORS-t AUTHORS
 	cp AUTHORS $(distdir)/AUTHORS
 
-# Update the list of translatable files in po/POTFILES.in.
+# Update the list of translatable files (po/POTFILES).  This has to be
+# in the top-level Makefile.am so that we have access to DIST_SUBDIRS.
 all-local:
 	cd $(srcdir); \
 	find $(DIST_SUBDIRS) \
@@ -229,7 +229,7 @@ all-local:
 	grep -v '^po-docs/' | \
 	grep -v '^images/' | \
 	LC_ALL=C sort | \
-	sed 's,^\./,,' > po/POTFILES.in
+	sed 's,^\./,,' > po/POTFILES
 
 # Make clean.
 
diff --git a/configure.ac b/configure.ac
index 29d1116..bcd0382 100644
--- a/configure.ac
+++ b/configure.ac
@@ -251,6 +251,23 @@ AC_CHECK_FUNC([register_printf_specifier],[
 This means you either have a very old glibc (pre-2.0) or you
 are using some other libc where this is not supported.])])])
 
+dnl GNU gettext tools (optional).
+AC_CHECK_PROG([XGETTEXT],[xgettext],[xgettext],[no])
+AC_CHECK_PROG([MSGCAT],[msgcat],[msgcat],[no])
+AC_CHECK_PROG([MSGFMT],[msgfmt],[msgfmt],[no])
+AC_CHECK_PROG([MSGMERGE],[msgmerge],[msgmerge],[no])
+
+dnl Check they are the GNU gettext tools.
+AC_MSG_CHECKING([msgfmt is GNU tool])
+if $MSGFMT --version >/dev/null 2>&1 && $MSGFMT --version | grep -q 'GNU gettext'; then
+    msgfmt_is_gnu=yes
+else
+    msgfmt_is_gnu=no
+fi
+AC_MSG_RESULT([$msgfmt_is_gnu])
+AM_CONDITIONAL([HAVE_GNU_GETTEXT],
+        [test "x$XGETTEXT" != "xno" && test "x$MSGCAT" != "xno" && test "x$MSGFMT" != "xno" && test "x$MSGMERGE" != "xno" && test "x$msgfmt_is_gnu" != "xno"])
+
 dnl Build the daemon?
 AC_MSG_CHECKING([if we should build the daemon])
 AC_ARG_ENABLE([daemon],
@@ -652,9 +669,6 @@ AS_IF([test "x$with_readline" != xno],
      LIBS="$old_LIBS"
     ])
 
-dnl For i18n.
-AM_GNU_GETTEXT([external])
-
 dnl Check for PCRE (required)
 PKG_CHECK_MODULES([PCRE], [libpcre])
 
@@ -1216,7 +1230,7 @@ AC_CONFIG_FILES([Makefile
                  po-docs/Makefile
                  po-docs/ja/Makefile
                  po-docs/uk/Makefile
-                 po/Makefile.in
+                 po/Makefile
                  python/Makefile
                  python/examples/Makefile
                  rescue/Makefile
@@ -1281,6 +1295,8 @@ echo -n "gobject bindings .................... "
 if test "x$HAVE_GOBJECT_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo -n "gobject introspection ............... "
 if test "x$HAVE_INTROSPECTION_TRUE" = "x"; then echo "yes"; else echo "no"; fi
+echo -n "GNU gettext for i18n ................ "
+if test "x$HAVE_GNU_GETTEXT_TRUE" = "x"; then echo "yes"; else echo "no"; fi
 echo
 echo "If any optional component is configured 'no' when you expected 'yes'"
 echo "then you should check the preceding messages."
diff --git a/m4/.gitignore b/m4/.gitignore
index d03bc28..fdaf3b5 100644
--- a/m4/.gitignore
+++ b/m4/.gitignore
@@ -71,7 +71,6 @@
 /getlogin_r.m4
 /getopt.m4
 /getpagesize.m4
-/gettext.m4
 /gettime.m4
 /gettimeofday.m4
 /getugroups.m4
diff --git a/po/Makefile.am b/po/Makefile.am
new file mode 100644
index 0000000..de455a3
--- /dev/null
+++ b/po/Makefile.am
@@ -0,0 +1,99 @@
+# libguestfs
+# Copyright (C) 2009-2012 Red Hat Inc.
+#
+# 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.
+#
+# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+include $(top_srcdir)/subdir-rules.mk
+
+DOMAIN = $(PACKAGE_NAME)
+COPYRIGHT_HOLDER = Red Hat Inc.
+MSGID_BUGS_ADDRESS = https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
+
+# Languages.
+# Don't use LINGUAS (uppercase) as Gentoo defines it (RHBZ#804464).
+linguas     := en_GB es gu hi kn ml mr nl or pa pl ta te uk
+
+POTFILES := $(shell $(SED) 's,^,$(top_srcdir)/,' POTFILES)
+POFILES  := $(linguas:%=%.po)
+GMOFILES := $(linguas:%=%.gmo)
+
+EXTRA_DIST = \
+	POTFILES \
+	$(DOMAIN).pot \
+	$(POFILES) \
+	$(GMOFILES)
+
+if HAVE_GNU_GETTEXT
+
+dist-hook:
+	$(MAKE) update-po
+	cp *.po *.gmo $(distdir)/
+
+update-po:
+	$(MAKE) $(DOMAIN).pot
+	$(MAKE) $(POFILES)
+	$(MAKE) update-gmo
+
+update-gmo: Makefile $(GMOFILES)
+
+$(DOMAIN).pot: Makefile $(POTFILES)
+	rm -f $@ $ -t
+	$(XGETTEXT) \
+	  -o $ -t \
+	  --default-domain=$(DOMAIN) \
+	  --add-comments=TRANSLATORS: \
+	  --keyword=_ --keyword=N_ --keyword=__ --keyword=__x \
+	  --flag=error:3:c-format \
+	  --flag=error_at_line:5:c-format \
+	  --flag=asprintf:2:c-format \
+	  --flag=vasprintf:2:c-format \
+	  --flag=xasprintf:1:c-format \
+	  --copyright-holder='$(COPYRIGHT_HOLDER)' \
+	  --package-name="$(PACKAGE_NAME)" \
+	  --package-version="$(PACKAGE_VERSION)" \
+	  --msgid-bugs-address="$(MSGID_BUGS_ADDRESS)" \
+	  --directory=$(top_srcdir) \
+	  --files-from=$(abs_srcdir)/POTFILES
+	mv $ -t $@
+
+%.po: $(DOMAIN).pot
+	$(MSGMERGE) -N --update $@ $(DOMAIN).pot
+
+.po.gmo:
+	rm -f $@ $ -t
+	$(MSGFMT) -c -o $ -t $<
+	mv $ -t $@
+
+# Install.
+# Cannot use 'localedir' since this conflicts with autoconf.
+langinstdir = $(datadir)/locale
+
+install-data-hook:
+	mkdir -p $(DESTDIR)$(langinstdir)
+	for lang in $(linguas); do \
+	  d=$(DESTDIR)$(langinstdir)/$$lang/LC_MESSAGES; \
+	  mkdir -p $$d; \
+	  install -m 0755 $$lang.gmo $$d/$(DOMAIN).mo; \
+	done
+
+.PRECIOUS: $(DOMAIN).pot $(POFILES)
+SUFFIXES = .po .gmo
+
+else
+
+# If no GNU gettext, 'make update-po' is a dummy rule.
+update-po:
+
+endif
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
deleted file mode 100644
index 406c2f4..0000000
--- a/po/Makefile.in.in
+++ /dev/null
@@ -1,444 +0,0 @@
-# Makefile for PO directory in any package using GNU gettext.
-# Copyright (C) 1995-1997, 2000-2007, 2009-2012 by Ulrich Drepper <drepper gnu ai mit edu>
-#
-# This file can be copied and used freely without restrictions.  It can
-# be used in projects which are not available under the GNU General Public
-# License but which still want to provide support for the GNU gettext
-# functionality.
-# Please note that the actual code of GNU gettext is covered by the GNU
-# General Public License and is *not* in the public domain.
-#
-# Origin: gettext-0.18
-GETTEXT_MACRO_VERSION = 0.18
-
-PACKAGE = @PACKAGE@
-VERSION = @VERSION@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-
-SHELL = /bin/sh
- SET_MAKE@
-
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
-VPATH = @srcdir@
-
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-datarootdir = @datarootdir@
-datadir = @datadir@
-localedir = @localedir@
-gettextsrcdir = $(datadir)/gettext/po
-
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-
-# We use $(mkdir_p).
-# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
-# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
-# @install_sh@ does not start with $(SHELL), so we add it.
-# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
-# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
-# versions, $(mkinstalldirs) and $(install_sh) are unused.
-mkinstalldirs = $(SHELL) @install_sh@ -d
-install_sh = $(SHELL) @install_sh@
-MKDIR_P = @MKDIR_P@
-mkdir_p = @mkdir_p@
-
-GMSGFMT_ = @GMSGFMT@
-GMSGFMT_no = @GMSGFMT@
-GMSGFMT_yes = @GMSGFMT_015@
-GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
-MSGFMT_ = @MSGFMT@
-MSGFMT_no = @MSGFMT@
-MSGFMT_yes = @MSGFMT_015@
-MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
-XGETTEXT_ = @XGETTEXT@
-XGETTEXT_no = @XGETTEXT@
-XGETTEXT_yes = @XGETTEXT_015@
-XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
-MSGMERGE = msgmerge
-MSGMERGE_UPDATE = @MSGMERGE@ --update
-MSGINIT = msginit
-MSGCONV = msgconv
-MSGFILTER = msgfilter
-
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-UPDATEPOFILES = @UPDATEPOFILES@
-DUMMYPOFILES = @DUMMYPOFILES@
-DISTFILES.common = Makefile.in.in remove-potcdate.sin \
-$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
-DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
-$(POFILES) $(GMOFILES) \
-$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
-
-POTFILES = \
-
-CATALOGS = @CATALOGS@
-
-# Makevars gets inserted here. (Don't remove this line!)
-
-.SUFFIXES:
-.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
-
-.po.mo:
-	@echo "$(MSGFMT) -c -o $@ $<"; \
-	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
-
-.po.gmo:
-	@lang=`echo $* | sed -e 's,.*/,,'`; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
-	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
-
-.sin.sed:
-	sed -e '/^#/d' $< > t-$@
-	mv t-$@ $@
-
-
-all: check-macro-version all- USE_NLS@
-
-all-yes: stamp-po
-all-no:
-
-# Ensure that the gettext macros and this Makefile.in.in are in sync.
-check-macro-version:
-	@test "$(GETTEXT_MACRO_VERSION)" = "@GETTEXT_MACRO_VERSION@" \
-	  || { echo "*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version @GETTEXT_MACRO_VERSION@" 1>&2; \
-	       exit 1; \
-	     }
-
-# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
-# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
-# we don't want to bother translators with empty POT files). We assume that
-# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
-# In this case, stamp-po is a nop (i.e. a phony target).
-
-# stamp-po is a timestamp denoting the last time at which the CATALOGS have
-# been loosely updated. Its purpose is that when a developer or translator
-# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
-# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
-# invocations of "make" will do nothing. This timestamp would not be necessary
-# if updating the $(CATALOGS) would always touch them; however, the rule for
-# $(POFILES) has been designed to not touch files that don't need to be
-# changed.
-stamp-po: $(srcdir)/$(DOMAIN).pot
-	test ! -f $(srcdir)/$(DOMAIN).pot || \
-	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
-	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
-	  echo "touch stamp-po" && \
-	  echo timestamp > stamp-poT && \
-	  mv stamp-poT stamp-po; \
-	}
-
-# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
-# otherwise packages like GCC can not be built if only parts of the source
-# have been downloaded.
-
-# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
-# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
-$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
-	if LC_ALL=C grep 'GNU @PACKAGE@' $(top_srcdir)/* 2>/dev/null | grep -v 'libtool:' >/dev/null; then \
-	  package_gnu='GNU '; \
-	else \
-	  package_gnu=''; \
-	fi; \
-	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
-	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
-	else \
-	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
-	fi; \
-	case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	  '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
-	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
-	      --files-from=$(srcdir)/POTFILES.in \
-	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
-	      --msgid-bugs-address="$$msgid_bugs_address" \
-	    ;; \
-	  *) \
-	    $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
-	      --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
-	      --files-from=$(srcdir)/POTFILES.in \
-	      --copyright-holder='$(COPYRIGHT_HOLDER)' \
-	      --package-name="$${package_gnu} PACKAGE@" \
-	      --package-version='@VERSION@' \
-	      --msgid-bugs-address="$$msgid_bugs_address" \
-	    ;; \
-	esac
-	test ! -f $(DOMAIN).po || { \
-	  if test -f $(srcdir)/$(DOMAIN).pot; then \
-	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
-	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
-	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
-	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
-	    else \
-	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
-	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-	    fi; \
-	  else \
-	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
-	  fi; \
-	}
-
-# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
-# every "make" invocation, only create it when it is missing.
-# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
-$(srcdir)/$(DOMAIN).pot:
-	$(MAKE) $(DOMAIN).pot-update
-
-# This target rebuilds a PO file if $(DOMAIN).pot has changed.
-# Note that a PO file is not touched if it doesn't need to be changed.
-$(POFILES): $(srcdir)/$(DOMAIN).pot
-	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
-	if test -f "$(srcdir)/$${lang}.po"; then \
-	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
-	  cd $(srcdir) \
-	    && { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	           '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
-	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) $${lang}.po $(DOMAIN).pot;; \
-	           *) \
-	             $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot;; \
-	         esac; \
-	       }; \
-	else \
-	  $(MAKE) $${lang}.po-create; \
-	fi
-
-
-install: install-exec install-data
-install-exec:
-install-data: install-data- USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-	  for file in $(DISTFILES.common) Makevars.template; do \
-	    $(INSTALL_DATA) $(srcdir)/$$file \
-			    $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	  for file in Makevars; do \
-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	else \
-	  : ; \
-	fi
-install-data-no: all
-install-data-yes: all
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  dir=$(localedir)/$$lang/LC_MESSAGES; \
-	  $(mkdir_p) $(DESTDIR)$$dir; \
-	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
-	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
-	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
-	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-	    if test -n "$$lc"; then \
-	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-	         for file in *; do \
-	           if test -f $$file; then \
-	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-	           fi; \
-	         done); \
-	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	      else \
-	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-	          :; \
-	        else \
-	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        fi; \
-	      fi; \
-	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
-	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
-	    fi; \
-	  done; \
-	done
-
-install-strip: install
-
-installdirs: installdirs-exec installdirs-data
-installdirs-exec:
-installdirs-data: installdirs-data- USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-	else \
-	  : ; \
-	fi
-installdirs-data-no:
-installdirs-data-yes:
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  dir=$(localedir)/$$lang/LC_MESSAGES; \
-	  $(mkdir_p) $(DESTDIR)$$dir; \
-	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
-	    if test -n "$$lc"; then \
-	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
-	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
-	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
-	         for file in *; do \
-	           if test -f $$file; then \
-	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
-	           fi; \
-	         done); \
-	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
-	      else \
-	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
-	          :; \
-	        else \
-	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
-	        fi; \
-	      fi; \
-	    fi; \
-	  done; \
-	done
-
-# Define this as empty until I found a useful application.
-installcheck:
-
-uninstall: uninstall-exec uninstall-data
-uninstall-exec:
-uninstall-data: uninstall-data- USE_NLS@
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  for file in $(DISTFILES.common) Makevars.template; do \
-	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-	  done; \
-	else \
-	  : ; \
-	fi
-uninstall-data-no:
-uninstall-data-yes:
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
-	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
-	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
-	  done; \
-	done
-
-check: all
-
-info dvi ps pdf html tags TAGS ctags CTAGS ID:
-
-mostlyclean:
-	rm -f remove-potcdate.sed
-	rm -f stamp-poT
-	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
-	rm -fr *.o
-
-clean: mostlyclean
-
-distclean: clean
-	rm -f Makefile Makefile.in POTFILES *.mo
-
-maintainer-clean: distclean
-	@echo "This command is intended for maintainers to use;"
-	@echo "it deletes files that may require special tools to rebuild."
-	rm -f stamp-po $(GMOFILES)
-
-distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
-dist distdir:
-	$(MAKE) update-po
-	@$(MAKE) dist2
-# This is a separate target because 'update-po' must be executed before.
-dist2: stamp-po $(DISTFILES)
-	dists="$(DISTFILES)"; \
-	if test "$(PACKAGE)" = "gettext-tools"; then \
-	  dists="$$dists Makevars.template"; \
-	fi; \
-	if test -f $(srcdir)/$(DOMAIN).pot; then \
-	  dists="$$dists $(DOMAIN).pot stamp-po"; \
-	fi; \
-	if test -f $(srcdir)/ChangeLog; then \
-	  dists="$$dists ChangeLog"; \
-	fi; \
-	for i in 0 1 2 3 4 5 6 7 8 9; do \
-	  if test -f $(srcdir)/ChangeLog.$$i; then \
-	    dists="$$dists ChangeLog.$$i"; \
-	  fi; \
-	done; \
-	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
-	for file in $$dists; do \
-	  if test -f $$file; then \
-	    cp -p $$file $(distdir) || exit 1; \
-	  else \
-	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
-	  fi; \
-	done
-
-update-po: Makefile
-	$(MAKE) $(DOMAIN).pot-update
-	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
-	$(MAKE) update-gmo
-
-# General rule for creating PO files.
-
-.nop.po-create:
-	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
-	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
-	exit 1
-
-# General rule for updating PO files.
-
-.nop.po-update:
-	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
-	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
-	tmpdir=`pwd`; \
-	echo "$$lang:"; \
-	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
-	echo "$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
-	cd $(srcdir); \
-	if { case `$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
-	       '' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
-	         $(MSGMERGE) $(MSGMERGE_OPTIONS) -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
-	       *) \
-	         $(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang -o $$tmpdir/$$lang.new.po $$lang.po $(DOMAIN).pot;; \
-	     esac; \
-	   }; then \
-	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
-	    rm -f $$tmpdir/$$lang.new.po; \
-	  else \
-	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
-	      :; \
-	    else \
-	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
-	      exit 1; \
-	    fi; \
-	  fi; \
-	else \
-	  echo "msgmerge for $$lang.po failed!" 1>&2; \
-	  rm -f $$tmpdir/$$lang.new.po; \
-	fi
-
-$(DUMMYPOFILES):
-
-update-gmo: Makefile $(GMOFILES)
-	@:
-
-# Recreate Makefile by invoking config.status. Explicitly invoke the shell,
-# because execution permission bits may not work on the current file system.
-# Use @SHELL@, which is the shell determined by autoconf for the use by its
-# scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
-Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
-	cd $(top_builddir) \
-	  && @SHELL@ ./config.status $(subdir)/$  in po-directories
-
-force:
-
-# Tell versions [3.59,3.63) of GNU make not to export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/po/Makevars b/po/Makevars
deleted file mode 100644
index f2c8d37..0000000
--- a/po/Makevars
+++ /dev/null
@@ -1,43 +0,0 @@
-# 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.
-# --keyword=__ etc are for Perl code using perl-libintl.
-XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ --keyword=__ --keyword=__x \
-         $${end_of_xgettext_options+}
-
-# 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 = Red Hat 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 = https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
-
-# 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 =
diff --git a/po/POTFILES b/po/POTFILES
new file mode 100644
index 0000000..2b4b586
--- /dev/null
+++ b/po/POTFILES
@@ -0,0 +1,217 @@
+align/domains.c
+align/scan.c
+cat/virt-cat.c
+cat/virt-filesystems.c
+cat/virt-ls.c
+daemon/9p.c
+daemon/augeas.c
+daemon/available.c
+daemon/base64.c
+daemon/blkid.c
+daemon/blockdev.c
+daemon/btrfs.c
+daemon/checksum.c
+daemon/cmp.c
+daemon/command.c
+daemon/compress.c
+daemon/copy.c
+daemon/cpmv.c
+daemon/dd.c
+daemon/debug.c
+daemon/devsparts.c
+daemon/df.c
+daemon/dir.c
+daemon/dmesg.c
+daemon/dropcaches.c
+daemon/du.c
+daemon/echo_daemon.c
+daemon/errnostring.c
+daemon/errnostring_gperf.c
+daemon/ext2.c
+daemon/fallocate.c
+daemon/file.c
+daemon/fill.c
+daemon/find.c
+daemon/findfs.c
+daemon/fsck.c
+daemon/glob.c
+daemon/grep.c
+daemon/grub.c
+daemon/guestfsd.c
+daemon/headtail.c
+daemon/hexdump.c
+daemon/htonl.c
+daemon/initrd.c
+daemon/inotify.c
+daemon/internal.c
+daemon/is.c
+daemon/isoinfo.c
+daemon/labels.c
+daemon/link.c
+daemon/ls.c
+daemon/luks.c
+daemon/lvm-filter.c
+daemon/lvm.c
+daemon/md.c
+daemon/mkfs.c
+daemon/mknod.c
+daemon/modprobe.c
+daemon/mount.c
+daemon/names.c
+daemon/ntfs.c
+daemon/ntfsclone.c
+daemon/optgroups.c
+daemon/parted.c
+daemon/pingdaemon.c
+daemon/proto.c
+daemon/readdir.c
+daemon/realpath.c
+daemon/scrub.c
+daemon/selinux.c
+daemon/sfdisk.c
+daemon/sleep.c
+daemon/stat.c
+daemon/statvfs.c
+daemon/strings.c
+daemon/stubs.c
+daemon/swap.c
+daemon/sync.c
+daemon/tar.c
+daemon/truncate.c
+daemon/umask.c
+daemon/upload.c
+daemon/utimens.c
+daemon/wc.c
+daemon/xattr.c
+daemon/zero.c
+daemon/zerofree.c
+df/df.c
+df/domains.c
+df/main.c
+df/output.c
+edit/virt-edit.c
+erlang/erl-guestfs-proto.c
+erlang/erl-guestfs.c
+fish/alloc.c
+fish/cmds.c
+fish/cmds_gperf.c
+fish/completion.c
+fish/config.c
+fish/copy.c
+fish/destpaths.c
+fish/display.c
+fish/echo.c
+fish/edit.c
+fish/event-names.c
+fish/events.c
+fish/fish.c
+fish/glob.c
+fish/help.c
+fish/hexedit.c
+fish/inspect.c
+fish/keys.c
+fish/lcd.c
+fish/man.c
+fish/more.c
+fish/options.c
+fish/prep.c
+fish/prep_boot.c
+fish/prep_disk.c
+fish/prep_fs.c
+fish/prep_lv.c
+fish/prep_part.c
+fish/prepopts.c
+fish/progress.c
+fish/rc.c
+fish/reopen.c
+fish/setenv.c
+fish/supported.c
+fish/tilde.c
+fish/time.c
+fish/virt.c
+format/format.c
+fuse/guestmount.c
+gobject/src/optargs-add_domain.c
+gobject/src/optargs-add_drive_opts.c
+gobject/src/optargs-btrfs_filesystem_resize.c
+gobject/src/optargs-compress_device_out.c
+gobject/src/optargs-compress_out.c
+gobject/src/optargs-copy_device_to_device.c
+gobject/src/optargs-copy_device_to_file.c
+gobject/src/optargs-copy_file_to_device.c
+gobject/src/optargs-copy_file_to_file.c
+gobject/src/optargs-e2fsck.c
+gobject/src/optargs-inspect_get_icon.c
+gobject/src/optargs-md_create.c
+gobject/src/optargs-mkfs_btrfs.c
+gobject/src/optargs-mkfs_opts.c
+gobject/src/optargs-mount_9p.c
+gobject/src/optargs-mount_local.c
+gobject/src/optargs-ntfsclone_out.c
+gobject/src/optargs-ntfsfix.c
+gobject/src/optargs-ntfsresize_opts.c
+gobject/src/optargs-set_e2attrs.c
+gobject/src/optargs-test0.c
+gobject/src/optargs-tune2fs.c
+gobject/src/optargs-umount_local.c
+gobject/src/session.c
+gobject/src/struct-application.c
+gobject/src/struct-btrfssubvolume.c
+gobject/src/struct-dirent.c
+gobject/src/struct-inotify_event.c
+gobject/src/struct-int_bool.c
+gobject/src/struct-isoinfo.c
+gobject/src/struct-lvm_lv.c
+gobject/src/struct-lvm_pv.c
+gobject/src/struct-lvm_vg.c
+gobject/src/struct-mdstat.c
+gobject/src/struct-partition.c
+gobject/src/struct-stat.c
+gobject/src/struct-statvfs.c
+gobject/src/struct-version.c
+gobject/src/struct-xattr.c
+gobject/src/tristate.c
+inspector/virt-inspector.c
+java/com_redhat_et_libguestfs_GuestFS.c
+ocaml/guestfs_c.c
+ocaml/guestfs_c_actions.c
+ocaml/t/exit.c
+perl/Guestfs.c
+perl/bindtests.pl
+perl/lib/Sys/Guestfs.pm
+perl/lib/Sys/Guestfs/Lib.pm
+php/extension/guestfs_php.c
+python/guestfs-py-byhand.c
+python/guestfs-py.c
+rescue/virt-rescue.c
+resize/progress_c.c
+ruby/ext/guestfs/_guestfs.c
+sparsify/progress_c.c
+src/actions.c
+src/appliance.c
+src/bindtests.c
+src/dbdump.c
+src/errnostring.c
+src/errnostring_gperf.c
+src/events.c
+src/filearch.c
+src/fuse.c
+src/guestfs.c
+src/inspect.c
+src/inspect_apps.c
+src/inspect_fs.c
+src/inspect_fs_cd.c
+src/inspect_fs_unix.c
+src/inspect_fs_windows.c
+src/inspect_icon.c
+src/launch.c
+src/listfs.c
+src/match.c
+src/proto.c
+src/virt.c
+test-tool/test-tool.c
+tools/virt-list-filesystems.pl
+tools/virt-list-partitions.pl
+tools/virt-make-fs.pl
+tools/virt-tar.pl
+tools/virt-win-reg.pl
diff --git a/po/POTFILES.in b/po/POTFILES.in
deleted file mode 100644
index 2b4b586..0000000
--- a/po/POTFILES.in
+++ /dev/null
@@ -1,217 +0,0 @@
-align/domains.c
-align/scan.c
-cat/virt-cat.c
-cat/virt-filesystems.c
-cat/virt-ls.c
-daemon/9p.c
-daemon/augeas.c
-daemon/available.c
-daemon/base64.c
-daemon/blkid.c
-daemon/blockdev.c
-daemon/btrfs.c
-daemon/checksum.c
-daemon/cmp.c
-daemon/command.c
-daemon/compress.c
-daemon/copy.c
-daemon/cpmv.c
-daemon/dd.c
-daemon/debug.c
-daemon/devsparts.c
-daemon/df.c
-daemon/dir.c
-daemon/dmesg.c
-daemon/dropcaches.c
-daemon/du.c
-daemon/echo_daemon.c
-daemon/errnostring.c
-daemon/errnostring_gperf.c
-daemon/ext2.c
-daemon/fallocate.c
-daemon/file.c
-daemon/fill.c
-daemon/find.c
-daemon/findfs.c
-daemon/fsck.c
-daemon/glob.c
-daemon/grep.c
-daemon/grub.c
-daemon/guestfsd.c
-daemon/headtail.c
-daemon/hexdump.c
-daemon/htonl.c
-daemon/initrd.c
-daemon/inotify.c
-daemon/internal.c
-daemon/is.c
-daemon/isoinfo.c
-daemon/labels.c
-daemon/link.c
-daemon/ls.c
-daemon/luks.c
-daemon/lvm-filter.c
-daemon/lvm.c
-daemon/md.c
-daemon/mkfs.c
-daemon/mknod.c
-daemon/modprobe.c
-daemon/mount.c
-daemon/names.c
-daemon/ntfs.c
-daemon/ntfsclone.c
-daemon/optgroups.c
-daemon/parted.c
-daemon/pingdaemon.c
-daemon/proto.c
-daemon/readdir.c
-daemon/realpath.c
-daemon/scrub.c
-daemon/selinux.c
-daemon/sfdisk.c
-daemon/sleep.c
-daemon/stat.c
-daemon/statvfs.c
-daemon/strings.c
-daemon/stubs.c
-daemon/swap.c
-daemon/sync.c
-daemon/tar.c
-daemon/truncate.c
-daemon/umask.c
-daemon/upload.c
-daemon/utimens.c
-daemon/wc.c
-daemon/xattr.c
-daemon/zero.c
-daemon/zerofree.c
-df/df.c
-df/domains.c
-df/main.c
-df/output.c
-edit/virt-edit.c
-erlang/erl-guestfs-proto.c
-erlang/erl-guestfs.c
-fish/alloc.c
-fish/cmds.c
-fish/cmds_gperf.c
-fish/completion.c
-fish/config.c
-fish/copy.c
-fish/destpaths.c
-fish/display.c
-fish/echo.c
-fish/edit.c
-fish/event-names.c
-fish/events.c
-fish/fish.c
-fish/glob.c
-fish/help.c
-fish/hexedit.c
-fish/inspect.c
-fish/keys.c
-fish/lcd.c
-fish/man.c
-fish/more.c
-fish/options.c
-fish/prep.c
-fish/prep_boot.c
-fish/prep_disk.c
-fish/prep_fs.c
-fish/prep_lv.c
-fish/prep_part.c
-fish/prepopts.c
-fish/progress.c
-fish/rc.c
-fish/reopen.c
-fish/setenv.c
-fish/supported.c
-fish/tilde.c
-fish/time.c
-fish/virt.c
-format/format.c
-fuse/guestmount.c
-gobject/src/optargs-add_domain.c
-gobject/src/optargs-add_drive_opts.c
-gobject/src/optargs-btrfs_filesystem_resize.c
-gobject/src/optargs-compress_device_out.c
-gobject/src/optargs-compress_out.c
-gobject/src/optargs-copy_device_to_device.c
-gobject/src/optargs-copy_device_to_file.c
-gobject/src/optargs-copy_file_to_device.c
-gobject/src/optargs-copy_file_to_file.c
-gobject/src/optargs-e2fsck.c
-gobject/src/optargs-inspect_get_icon.c
-gobject/src/optargs-md_create.c
-gobject/src/optargs-mkfs_btrfs.c
-gobject/src/optargs-mkfs_opts.c
-gobject/src/optargs-mount_9p.c
-gobject/src/optargs-mount_local.c
-gobject/src/optargs-ntfsclone_out.c
-gobject/src/optargs-ntfsfix.c
-gobject/src/optargs-ntfsresize_opts.c
-gobject/src/optargs-set_e2attrs.c
-gobject/src/optargs-test0.c
-gobject/src/optargs-tune2fs.c
-gobject/src/optargs-umount_local.c
-gobject/src/session.c
-gobject/src/struct-application.c
-gobject/src/struct-btrfssubvolume.c
-gobject/src/struct-dirent.c
-gobject/src/struct-inotify_event.c
-gobject/src/struct-int_bool.c
-gobject/src/struct-isoinfo.c
-gobject/src/struct-lvm_lv.c
-gobject/src/struct-lvm_pv.c
-gobject/src/struct-lvm_vg.c
-gobject/src/struct-mdstat.c
-gobject/src/struct-partition.c
-gobject/src/struct-stat.c
-gobject/src/struct-statvfs.c
-gobject/src/struct-version.c
-gobject/src/struct-xattr.c
-gobject/src/tristate.c
-inspector/virt-inspector.c
-java/com_redhat_et_libguestfs_GuestFS.c
-ocaml/guestfs_c.c
-ocaml/guestfs_c_actions.c
-ocaml/t/exit.c
-perl/Guestfs.c
-perl/bindtests.pl
-perl/lib/Sys/Guestfs.pm
-perl/lib/Sys/Guestfs/Lib.pm
-php/extension/guestfs_php.c
-python/guestfs-py-byhand.c
-python/guestfs-py.c
-rescue/virt-rescue.c
-resize/progress_c.c
-ruby/ext/guestfs/_guestfs.c
-sparsify/progress_c.c
-src/actions.c
-src/appliance.c
-src/bindtests.c
-src/dbdump.c
-src/errnostring.c
-src/errnostring_gperf.c
-src/events.c
-src/filearch.c
-src/fuse.c
-src/guestfs.c
-src/inspect.c
-src/inspect_apps.c
-src/inspect_fs.c
-src/inspect_fs_cd.c
-src/inspect_fs_unix.c
-src/inspect_fs_windows.c
-src/inspect_icon.c
-src/launch.c
-src/listfs.c
-src/match.c
-src/proto.c
-src/virt.c
-test-tool/test-tool.c
-tools/virt-list-filesystems.pl
-tools/virt-list-partitions.pl
-tools/virt-make-fs.pl
-tools/virt-tar.pl
-tools/virt-win-reg.pl
diff --git a/po/remove-potcdate.sin b/po/remove-potcdate.sin
deleted file mode 100644
index 2436c49..0000000
--- a/po/remove-potcdate.sin
+++ /dev/null
@@ -1,19 +0,0 @@
-# Sed script that remove the POT-Creation-Date line in the header entry
-# from a POT file.
-#
-# The distinction between the first and the following occurrences of the
-# pattern is achieved by looking at the hold space.
-/^"POT-Creation-Date: .*"$/{
-x
-# Test if the hold space is empty.
-s/P/P/
-ta
-# Yes it was empty. First occurrence. Remove the line.
-g
-d
-bb
-:a
-# The hold space was nonempty. Following occurrences. Do nothing.
-x
-:b
-}
-- 
1.7.10


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]