summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2003-03-31 20:34:28 +0000
committerBruno Haible <bruno@clisp.org>2009-06-23 12:10:19 +0200
commit2784ad9f09ef6d0db9cc917ed984a5e13df7703f (patch)
tree8f6c902b44505ed1cd8bf0f8e22ab35d3034af05
parentd41822386cbd5e0aadef581229896e58f2f1e459 (diff)
downloadexternal_gettext-2784ad9f09ef6d0db9cc917ed984a5e13df7703f.zip
external_gettext-2784ad9f09ef6d0db9cc917ed984a5e13df7703f.tar.gz
external_gettext-2784ad9f09ef6d0db9cc917ed984a5e13df7703f.tar.bz2
More Woe32/MSVC support.
-rw-r--r--gettext-tools/src/ChangeLog20
-rw-r--r--gettext-tools/src/Makefile.am16
-rw-r--r--gettext-tools/src/Makefile.msvc84
-rw-r--r--gettext-tools/src/msgfilter.c11
-rw-r--r--gettext-tools/src/msgfmt.c8
-rw-r--r--gettext-tools/src/msggrep.c2
-rw-r--r--gettext-tools/src/msginit.c42
-rw-r--r--gettext-tools/src/read-java.c2
-rw-r--r--gettext-tools/src/read-tcl.c3
-rw-r--r--gettext-tools/src/write-mo.c5
10 files changed, 128 insertions, 65 deletions
diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog
index 4d3bb73..9ea6eb3 100644
--- a/gettext-tools/src/ChangeLog
+++ b/gettext-tools/src/ChangeLog
@@ -1,8 +1,28 @@
+2003-03-30 Bruno Haible <bruno@clisp.org>
+
+ * Makefile.am (noinst_HEADERS): Add po-gram-gen2.h.
+ (BUILT_SOURCES): Add po-gram-gen2.h.
+ (DISTCLEANFILES): Remove po-gram-gen2.h.
+ (po-gram-gen2.h): Simplify rule.
+
2003-03-17 Bruno Haible <bruno@clisp.org>
Native Woe32/MSVC support.
* Makefile.msvc: New file.
* Makefile.am (EXTRA_DIST): Add it.
+ * msgfilter.c: Include <sys/time.h> only if it exists.
+ (process_string): Mark as NYI on Woe32.
+ * msgfmt.c (sigjmp_buf, sigsetjmp, siglongjmp): Provide fallback
+ definitions for Woe32.
+ * msginit.c: Include <fcntl.h>, for F_OK. Include <pwd.h> only if it
+ exists.
+ (get_user_pwd, get_user_fullname): Adapt for when <pwd.h> is missing.
+ (project_id, project_id_version, get_user_email,
+ language_team_address): Use DEV_NULL instead of "/dev/null".
+ * msggrep.c (is_string_selected): Likewise.
+ * read-java.c (execute_and_read_po_output): Likewise.
+ * read-tcl.c (msgdomain_read_tcl): Likewise.
+ * write-mo.c: Include <sys/param.h> only if it exists.
2003-03-28 Bruno Haible <bruno@clisp.org>
diff --git a/gettext-tools/src/Makefile.am b/gettext-tools/src/Makefile.am
index d0bf63a..5efedf8 100644
--- a/gettext-tools/src/Makefile.am
+++ b/gettext-tools/src/Makefile.am
@@ -36,10 +36,10 @@ include_HEADERS = gettext-po.h
noinst_HEADERS = pos.h message.h po-gram.h po-hash.h po-charset.h po-lex.h \
po.h open-po.h read-po.h str-list.h write-po.h dir-list.h file-list.h \
-po-gram-gen.h po-hash-gen.h msgl-charset.h msgl-equal.h msgl-iconv.h \
-msgl-ascii.h msgl-cat.h msgl-english.h msgfmt.h msgunfmt.h read-mo.h \
-write-mo.h read-java.h write-java.h read-tcl.h write-tcl.h po-time.h \
-plural-table.h format.h xgettext.h x-c.h x-po.h x-python.h x-lisp.h \
+po-gram-gen.h po-gram-gen2.h po-hash-gen.h msgl-charset.h msgl-equal.h \
+msgl-iconv.h msgl-ascii.h msgl-cat.h msgl-english.h msgfmt.h msgunfmt.h \
+read-mo.h write-mo.h read-java.h write-java.h read-tcl.h write-tcl.h \
+po-time.h plural-table.h format.h xgettext.h x-c.h x-po.h x-python.h x-lisp.h \
x-elisp.h x-librep.h x-smalltalk.h x-java.h x-awk.h x-ycp.h x-tcl.h x-php.h \
x-rst.h x-glade.h
@@ -214,19 +214,19 @@ endif
# Special rules for bison and flex generated files.
-BUILT_SOURCES = po-gram-gen.c po-hash-gen.c po-gram-gen.h po-hash-gen.h
+BUILT_SOURCES = \
+ po-gram-gen.c po-gram-gen.h po-gram-gen2.h \
+ po-hash-gen.c po-hash-gen.h
po-lex.o po-lex.lo: po-gram-gen2.h
po-gram-gen2.h: po-gram-gen.h
- $(SED) 's/[yY][yY]/po_gram_/g' $(srcdir)/po-gram-gen.h > $@-tmp
+ $(SED) 's/yy/po_gram_/g' $(srcdir)/po-gram-gen.h > $@-tmp
mv $@-tmp $@
x-java.c: x-java.l
$(LEX) -o$@-tmp -Px_java_yy $(srcdir)/x-java.l
test "$(LEX)" = ":" || mv $@-tmp $@
-DISTCLEANFILES += po-gram-gen2.h
-
# Special rules for installation of auxiliary programs.
diff --git a/gettext-tools/src/Makefile.msvc b/gettext-tools/src/Makefile.msvc
index f76e845..c9c492d 100644
--- a/gettext-tools/src/Makefile.msvc
+++ b/gettext-tools/src/Makefile.msvc
@@ -33,7 +33,20 @@ includedir = $(prefix)\include
datadir = $(prefix)\share
localedir = $(datadir)\locale
aliaspath =
+jardir = $(datadir)\gettext
pkgdatadir = $(datadir)\gettext
+projectsdir = $(pkgdatadir)\projects
+IIprefix = c:\\usr
+IIexec_prefix = $(IIprefix)
+IIbindir = $(IIexec_prefix)\\bin
+IIlibdir = $(IIexec_prefix)\\lib
+IIincludedir = $(IIprefix)\\include
+IIdatadir = $(IIprefix)\\share
+IIlocaledir = $(IIdatadir)\\locale
+IIaliaspath =
+IIjardir = $(IIdatadir)\\gettext
+IIpkgdatadir = $(IIdatadir)\\gettext
+IIprojectsdir = $(IIpkgdatadir)\\projects
# Programs used by "make":
@@ -58,9 +71,9 @@ OPTIMFLAGS = -Od -Z7
OPTIMFLAGS = -D_NDEBUG -O1
!endif
-CFLAGS = $(MFLAGS) $(WARN_CFLAGS) $(OPTIMFLAGS) -DHAVE_CONFIG_H
+CFLAGS = $(MFLAGS) $(WARN_CFLAGS) $(OPTIMFLAGS) -DHAVE_CONFIG_H -DLOCALEDIR=\"$(IIlocaledir)\" -DLOCALE_ALIAS_PATH=\"$(IIaliaspath)\" -DGETTEXTJAR=\"$(IIjardir)\\gettext.jar\" -DLIBDIR=\"$(IIlibdir)\" -DGETTEXTDATADIR=\"$(IIpkgdatadir)\" -DPROJECTSDIR=\"$(IIprojectsdir)\"
-INCLUDES =
+INCLUDES = -I. -I.. -I..\libuniname -I..\lib -I..\intl -I..\..\gettext-runtime\intl -I..\windows -I$(includedir)
AR = lib
AR_FLAGS = /out:
@@ -131,6 +144,7 @@ msgfilter_OBJECTS = msgfilter.obj
msggrep_OBJECTS = msggrep.obj
msginit_OBJECTS = msginit.obj localealias.obj
msguniq_OBJECTS = msguniq.obj
+LDADD =
RESOURCES = gettextsrc.res
@@ -246,8 +260,8 @@ gettextsrc.lib : $(OBJECTS)
!else
# gettextsrc.dll and gettextsrc.lib are created together.
-gettextsrc.lib : $(OBJECTS) $(RESOURCES)
- $(CC) $(MFLAGS) -LD $(OBJECTS) $(RESOURCES)
+gettextsrc.lib : ..\windows\gettextsrc.def $(OBJECTS) $(RESOURCES)
+ $(CC) $(MFLAGS) -LD ..\windows\gettextsrc.def $(OBJECTS) ..\lib\gettextlib.lib ..\intl\intl.lib $(libdir)\iconv.lib $(RESOURCES) -Fegettextsrc.dll
gettextsrc.res : ../windows/gettextsrc.rc
rc -Fo gettextsrc.res ../windows/gettextsrc.rc
@@ -257,10 +271,10 @@ gettextsrc.res : ../windows/gettextsrc.rc
# Compilation rules for $(program_OBJECTS), without $(PICFLAGS).
msgcmp.obj : msgcmp.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgcmp.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgcmp.c
msgfmt.obj : msgfmt.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgfmt.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgfmt.c
write-mo.obj : write-mo.c
$(CC) $(INCLUDES) $(CFLAGS) -c write-mo.c
@@ -275,10 +289,10 @@ plural-eval.obj : plural-eval.c
$(CC) $(INCLUDES) $(CFLAGS) -c plural-eval.c
msgmerge.obj : msgmerge.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgmerge.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgmerge.c
msgunfmt.obj : msgunfmt.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgunfmt.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgunfmt.c
read-mo.obj : read-mo.c
$(CC) $(INCLUDES) $(CFLAGS) -c read-mo.c
@@ -290,7 +304,7 @@ read-tcl.obj : read-tcl.c
$(CC) $(INCLUDES) $(CFLAGS) -c read-tcl.c
xgettext.obj : xgettext.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c xgettext.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c xgettext.c
x-c.obj : x-c.c
$(CC) $(INCLUDES) $(CFLAGS) -c x-c.c
@@ -335,82 +349,82 @@ x-glade.obj : x-glade.c
$(CC) $(INCLUDES) $(CFLAGS) -c x-glade.c
msgattrib.obj : msgattrib.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgattrib.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgattrib.c
msgcat.obj : msgcat.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgcat.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgcat.c
msgcomm.obj : msgcomm.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgcomm.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgcomm.c
msgconv.obj : msgconv.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgconv.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgconv.c
msgen.obj : msgen.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgen.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgen.c
msgexec.obj : msgexec.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgexec.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgexec.c
msgfilter.obj : msgfilter.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msgfilter.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msgfilter.c
msggrep.obj : msggrep.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msggrep.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msggrep.c
msginit.obj : msginit.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msginit.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msginit.c
localealias.obj : ..\..\gettext-runtime\intl\localealias.c
- $(CC) $(INCLUDES) $(CFLAGS) -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" -c ..\..\gettext-runtime\intl\localealias.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DLOCALE_ALIAS_PATH=\"$(IIaliaspath)\" -c ..\..\gettext-runtime\intl\localealias.c
msguniq.obj : msguniq.c
- $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(prefix)\" -DINSTALLDIR=\"$(bindir)\" -c msguniq.c
+ $(CC) $(INCLUDES) $(CFLAGS) -DINSTALLPREFIX=\"$(IIprefix)\" -DINSTALLDIR=\"$(IIbindir)\" -c msguniq.c
msgcmp.exe : $(msgcmp_OBJECTS)
- $(CC) $(msgcmp_OBJECTS) -lgettextsrc -Femsgcmp.exe
+ $(CC) $(msgcmp_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgcmp.exe
msgfmt.exe : $(msgfmt_OBJECTS)
- $(CC) $(msgfmt_OBJECTS) -lgettextsrc -Femsgfmt.exe
+ $(CC) $(msgfmt_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgfmt.exe
msgmerge.exe : $(msgmerge_OBJECTS)
- $(CC) $(msgmerge_OBJECTS) -lgettextsrc -Femsgmerge.exe
+ $(CC) $(msgmerge_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgmerge.exe
msgunfmt.exe : $(msgunfmt_OBJECTS)
- $(CC) $(msgunfmt_OBJECTS) -lgettextsrc -Femsgunfmt.exe
+ $(CC) $(msgunfmt_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgunfmt.exe
xgettext.exe : $(xgettext_OBJECTS)
- $(CC) $(xgettext_OBJECTS) ..\libuniname\uniname.lib -lgettextsrc -Fexgettext.exe
+ $(CC) $(xgettext_OBJECTS) ..\libuniname\uniname.lib gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(libdir)\iconv.lib $(LDADD) -Fexgettext.exe
msgattrib.exe : $(msgattrib_OBJECTS)
- $(CC) $(msgattrib_OBJECTS) -lgettextsrc -Femsgattrib.exe
+ $(CC) $(msgattrib_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgattrib.exe
msgcat.exe : $(msgcat_OBJECTS)
- $(CC) $(msgcat_OBJECTS) -lgettextsrc -Femsgcat.exe
+ $(CC) $(msgcat_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgcat.exe
msgcomm.exe : $(msgcomm_OBJECTS)
- $(CC) $(msgcomm_OBJECTS) -lgettextsrc -Femsgcomm.exe
+ $(CC) $(msgcomm_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgcomm.exe
msgconv.exe : $(msgconv_OBJECTS)
- $(CC) $(msgconv_OBJECTS) -lgettextsrc -Femsgconv.exe
+ $(CC) $(msgconv_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgconv.exe
msgen.exe : $(msgen_OBJECTS)
- $(CC) $(msgen_OBJECTS) -lgettextsrc -Femsgen.exe
+ $(CC) $(msgen_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgen.exe
msgexec.exe : $(msgexec_OBJECTS)
- $(CC) $(msgexec_OBJECTS) -lgettextsrc -Femsgexec.exe
+ $(CC) $(msgexec_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgexec.exe
msgfilter.exe : $(msgfilter_OBJECTS)
- $(CC) $(msgfilter_OBJECTS) -lgettextsrc -Femsgfilter.exe
+ $(CC) $(msgfilter_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsgfilter.exe
msggrep.exe : $(msggrep_OBJECTS)
- $(CC) $(msggrep_OBJECTS) -lgettextsrc -Femsggrep.exe
+ $(CC) $(msggrep_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsggrep.exe
msginit.exe : $(msginit_OBJECTS)
- $(CC) $(msginit_OBJECTS) ..\intl\localename.obj -lgettextsrc -Femsginit.exe
+ $(CC) $(msginit_OBJECTS) ..\intl\localename.obj gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsginit.exe
msguniq.exe : $(msguniq_OBJECTS)
- $(CC) $(msguniq_OBJECTS) -lgettextsrc -Femsguniq.exe
+ $(CC) $(msguniq_OBJECTS) gettextsrc.lib ..\lib\gettextlib.lib ..\intl\intl.lib $(LDADD) -Femsguniq.exe
install : all force
-mkdir $(prefix)
diff --git a/gettext-tools/src/msgfilter.c b/gettext-tools/src/msgfilter.c
index 11e5f57..93339ee 100644
--- a/gettext-tools/src/msgfilter.c
+++ b/gettext-tools/src/msgfilter.c
@@ -30,7 +30,10 @@
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
-#include <sys/time.h>
+
+#if HAVE_SYS_TIME_H
+# include <sys/time.h>
+#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
@@ -503,6 +506,11 @@ nonintr_select (int n, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
static void
process_string (const char *str, size_t len, char **resultp, size_t *lengthp)
{
+#if defined _MSC_VER || defined __MINGW32__
+ /* Native Woe32 API. */
+ /* Not yet implemented. */
+ error (EXIT_FAILURE, 0, _("Not yet implemented."));
+#else
pid_t child;
int fd[2];
char *result;
@@ -648,6 +656,7 @@ process_string (const char *str, size_t len, char **resultp, size_t *lengthp)
*resultp = result;
*lengthp = length;
+#endif
}
diff --git a/gettext-tools/src/msgfmt.c b/gettext-tools/src/msgfmt.c
index 29c0a98..322f078 100644
--- a/gettext-tools/src/msgfmt.c
+++ b/gettext-tools/src/msgfmt.c
@@ -56,6 +56,14 @@
#define SIZEOF(a) (sizeof(a) / sizeof(a[0]))
+/* Some platforms don't have the sigjmp_buf type in <setjmp.h>. */
+#if defined _MSC_VER || defined __MINGW32__
+/* Native Woe32 API. */
+# define sigjmp_buf jmp_buf
+# define sigsetjmp(env,savesigs) setjmp (env)
+# define siglongjmp longjmp
+#endif
+
/* We use siginfo to get precise information about the signal.
But siginfo doesn't work on Irix 6.5. */
#if HAVE_SIGINFO && !defined (__sgi)
diff --git a/gettext-tools/src/msggrep.c b/gettext-tools/src/msggrep.c
index 0ce5a33..d143401 100644
--- a/gettext-tools/src/msggrep.c
+++ b/gettext-tools/src/msggrep.c
@@ -550,7 +550,7 @@ is_string_selected (int grep_pass, const char *str, size_t len)
/* Open a pipe to a grep subprocess. */
child = create_pipe_out ("grep", grep_path, grep_argv[grep_pass],
- "/dev/null", false, true, fd);
+ DEV_NULL, false, true, fd);
if (full_write (fd[0], str, len) < len)
error (EXIT_FAILURE, errno,
diff --git a/gettext-tools/src/msginit.c b/gettext-tools/src/msginit.c
index bd146e7..f04dc28 100644
--- a/gettext-tools/src/msginit.c
+++ b/gettext-tools/src/msginit.c
@@ -23,6 +23,7 @@
#include <alloca.h>
#include <errno.h>
+#include <fcntl.h>
#include <getopt.h>
#include <limits.h>
#include <locale.h>
@@ -31,7 +32,10 @@
#include <string.h>
#include <time.h>
#include <sys/types.h>
-#include <pwd.h>
+
+#if HAVE_PWD_H
+# include <pwd.h>
+#endif
#if HAVE_UNISTD_H
# include <unistd.h>
@@ -872,7 +876,7 @@ project_id ()
argv[0] = "/bin/sh";
argv[1] = prog;
argv[2] = NULL;
- child = create_pipe_in (prog, "/bin/sh", argv, "/dev/null", false, true, fd);
+ child = create_pipe_in (prog, "/bin/sh", argv, DEV_NULL, false, true, fd);
/* Retrieve its result. */
fp = fdopen (fd[0], "r");
@@ -924,7 +928,7 @@ project_id_version ()
argv[1] = prog;
argv[2] = "yes";
argv[3] = NULL;
- child = create_pipe_in (prog, "/bin/sh", argv, "/dev/null", false, true, fd);
+ child = create_pipe_in (prog, "/bin/sh", argv, DEV_NULL, false, true, fd);
/* Retrieve its result. */
fp = fdopen (fd[0], "r");
@@ -973,6 +977,7 @@ po_revision_date (const char *header)
static struct passwd *
get_user_pwd ()
{
+#if HAVE_PWD_H /* Only Unix, not native Woe32. */
const char *username;
struct passwd *userpasswd;
@@ -1007,6 +1012,7 @@ get_user_pwd ()
return userpasswd;
if (errno != 0)
error (EXIT_FAILURE, errno, "getpwuid(\"%d\")", getuid ());
+#endif
return NULL;
}
@@ -1022,20 +1028,24 @@ get_user_fullname ()
char *result;
pwd = get_user_pwd ();
- if (pwd == NULL)
- return NULL;
+#if HAVE_PWD_H
+ if (pwd != NULL)
+ {
+ /* Return the pw_gecos field, upto the first comma (if any). */
+ fullname = pwd->pw_gecos;
+ fullname_end = strchr (fullname, ',');
+ if (fullname_end == NULL)
+ fullname_end = fullname + strlen (fullname);
- /* Return the pw_gecos field, upto the first comma (if any). */
- fullname = pwd->pw_gecos;
- fullname_end = strchr (fullname, ',');
- if (fullname_end == NULL)
- fullname_end = fullname + strlen (fullname);
+ result = (char *) xmalloc (fullname_end - fullname + 1);
+ memcpy (result, fullname, fullname_end - fullname);
+ result[fullname_end - fullname] = '\0';
- result = (char *) xmalloc (fullname_end - fullname + 1);
- memcpy (result, fullname, fullname_end - fullname);
- result[fullname_end - fullname] = '\0';
+ return result;
+ }
+#endif
- return result;
+ return NULL;
}
@@ -1061,7 +1071,7 @@ The new message catalog should contain your email address, so that users can\n\
give you feedback about the translations, and so that maintainers can contact\n\
you in case of unexpected technical problems.\n");
argv[3] = NULL;
- child = create_pipe_in (prog, "/bin/sh", argv, "/dev/null", false, true, fd);
+ child = create_pipe_in (prog, "/bin/sh", argv, DEV_NULL, false, true, fd);
/* Retrieve his answer. */
fp = fdopen (fd[0], "r");
@@ -1128,7 +1138,7 @@ language_team_address ()
argv[4] = (char *) catalogname;
argv[5] = (char *) language;
argv[6] = NULL;
- child = create_pipe_in (prog, "/bin/sh", argv, "/dev/null", false, true, fd);
+ child = create_pipe_in (prog, "/bin/sh", argv, DEV_NULL, false, true, fd);
/* Retrieve its result. */
fp = fdopen (fd[0], "r");
diff --git a/gettext-tools/src/read-java.c b/gettext-tools/src/read-java.c
index ed64591..5d9fbf1 100644
--- a/gettext-tools/src/read-java.c
+++ b/gettext-tools/src/read-java.c
@@ -63,7 +63,7 @@ execute_and_read_po_output (const char *progname,
int exitstatus;
/* Open a pipe to the JVM. */
- child = create_pipe_in (progname, prog_path, prog_argv, "/dev/null", false,
+ child = create_pipe_in (progname, prog_path, prog_argv, DEV_NULL, false,
true, fd);
fp = fdopen (fd[0], "r");
diff --git a/gettext-tools/src/read-tcl.c b/gettext-tools/src/read-tcl.c
index 71567ce..38fdc07 100644
--- a/gettext-tools/src/read-tcl.c
+++ b/gettext-tools/src/read-tcl.c
@@ -100,8 +100,7 @@ msgdomain_read_tcl (const char *locale_name, const char *directory)
}
/* Open a pipe to the Tcl interpreter. */
- child = create_pipe_in ("tclsh", "tclsh", argv, "/dev/null", false, true,
- fd);
+ child = create_pipe_in ("tclsh", "tclsh", argv, DEV_NULL, false, true, fd);
fp = fdopen (fd[0], "r");
if (fp == NULL)
diff --git a/gettext-tools/src/write-mo.c b/gettext-tools/src/write-mo.c
index 1fcd364..53e6901 100644
--- a/gettext-tools/src/write-mo.c
+++ b/gettext-tools/src/write-mo.c
@@ -27,10 +27,13 @@
#include <errno.h>
#include <stdbool.h>
#include <stdio.h>
-#include <sys/param.h>
#include <stdlib.h>
#include <string.h>
+#if HAVE_SYS_PARAM_H
+# include <sys/param.h>
+#endif
+
/* These two include files describe the binary .mo format. */
#include "gmo.h"
#include "hash-string.h"