dnl @synopsis AC_FUNC_ACCEPT_ARGTYPES
dnl
dnl Checks the data types of the three arguments to accept(). Results are
-dnl placed into the symbols ACCEPT_TYPE_ARG[123], consistent with the
-dnl following example:
+dnl placed into the symbols ACCEPT_TYPE_RETURN and ACCEPT_TYPE_ARG[123],
+dnl consistent with the following example:
dnl
+dnl #define ACCEPT_TYPE_RETURN int
dnl #define ACCEPT_TYPE_ARG1 int
dnl #define ACCEPT_TYPE_ARG2 struct sockaddr *
dnl #define ACCEPT_TYPE_ARG3 socklen_t
# Solaris 7 and 8 have arg3 as 'void *' (disguised as 'Psocklen_t'
# which is *not* 'socklen_t *'). If we detect that, then we assume
# 'int' as the result, because that ought to work best.
+#
+# On Win32, accept() returns 'unsigned int PASCAL'
AC_DEFUN([AC_FUNC_ACCEPT_ARGTYPES],
[AC_MSG_CHECKING([types of arguments for accept()])
- AC_CACHE_VAL(ac_cv_func_accept_arg1,dnl
- [AC_CACHE_VAL(ac_cv_func_accept_arg2,dnl
- [AC_CACHE_VAL(ac_cv_func_accept_arg3,dnl
- [for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do
- for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
- for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do
- AC_TRY_COMPILE(
+ AC_CACHE_VAL(ac_cv_func_accept_return,dnl
+ [AC_CACHE_VAL(ac_cv_func_accept_arg1,dnl
+ [AC_CACHE_VAL(ac_cv_func_accept_arg2,dnl
+ [AC_CACHE_VAL(ac_cv_func_accept_arg3,dnl
+ [for ac_cv_func_accept_return in 'int' 'unsigned int PASCAL'; do
+ for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do
+ for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
+ for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do
+ AC_TRY_COMPILE(
[#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
-extern int accept ($ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *);],
- [], [ac_not_found=no; break 3], [ac_not_found=yes])
+extern $ac_cv_func_accept_return accept ($ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *);],
+ [], [ac_not_found=no; break 4], [ac_not_found=yes])
+ done
done
done
done
if test "$ac_cv_func_accept_arg3" = "void"; then
ac_cv_func_accept_arg3=int
fi
+ ])dnl AC_CACHE_VAL
])dnl AC_CACHE_VAL
])dnl AC_CACHE_VAL
])dnl AC_CACHE_VAL
- AC_MSG_RESULT([$ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *])
+ AC_MSG_RESULT([$ac_cv_func_accept_return, $ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *])
+ AC_DEFINE_UNQUOTED(ACCEPT_TYPE_RETURN, $ac_cv_func_accept_return,
+ [Define to the return type of 'accept'])
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG1, $ac_cv_func_accept_arg1,
[Define to the type of arg 1 of 'accept'])
AC_DEFINE_UNQUOTED(ACCEPT_TYPE_ARG2, $ac_cv_func_accept_arg2,
{ echo "$as_me:$LINENO: using CFLAGS=$CFLAGS" >&5
echo "$as_me: using CFLAGS=$CFLAGS" >&6;}
+# We already have this in Makefile.win32, but configure needs it too
+if test "$PORTNAME" = "win32"
+then
+ CPPFLAGS="$CPPFLAGS -Isrc/include/port/win32"
+fi
+
# Check if the compiler still works with the template settings
echo "$as_me:$LINENO: checking whether the C compiler still works" >&5
echo $ECHO_N "checking whether the C compiler still works... $ECHO_C" >&6
fi
echo "$as_me:$LINENO: checking types of arguments for accept()" >&5
echo $ECHO_N "checking types of arguments for accept()... $ECHO_C" >&6
- if test "${ac_cv_func_accept_arg1+set}" = set; then
+ if test "${ac_cv_func_accept_return+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "${ac_cv_func_accept_arg2+set}" = set; then
+ if test "${ac_cv_func_accept_arg1+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- if test "${ac_cv_func_accept_arg3+set}" = set; then
+ if test "${ac_cv_func_accept_arg2+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do
- for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
- for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do
- cat >conftest.$ac_ext <<_ACEOF
+ if test "${ac_cv_func_accept_arg3+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ for ac_cv_func_accept_return in 'int' 'unsigned int PASCAL'; do
+ for ac_cv_func_accept_arg1 in 'int' 'unsigned int'; do
+ for ac_cv_func_accept_arg2 in 'struct sockaddr *' 'const struct sockaddr *' 'void *'; do
+ for ac_cv_func_accept_arg3 in 'int' 'size_t' 'socklen_t' 'unsigned int' 'void'; do
+ cat >conftest.$ac_ext <<_ACEOF
#line $LINENO "configure"
#include "confdefs.h"
#ifdef HAVE_SYS_TYPES_H
#ifdef HAVE_SYS_SOCKET_H
#include <sys/socket.h>
#endif
-extern int accept ($ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *);
+extern $ac_cv_func_accept_return accept ($ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *);
#ifdef F77_DUMMY_MAIN
# ifdef __cplusplus
extern "C"
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_not_found=no; break 3
+ ac_not_found=no; break 4
else
echo "$as_me: failed program was:" >&5
cat conftest.$ac_ext >&5
ac_not_found=yes
fi
rm -f conftest.$ac_objext conftest.$ac_ext
+ done
done
done
done
fi
fi
- echo "$as_me:$LINENO: result: $ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *" >&5
-echo "${ECHO_T}$ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *" >&6
+
+fi
+ echo "$as_me:$LINENO: result: $ac_cv_func_accept_return, $ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *" >&5
+echo "${ECHO_T}$ac_cv_func_accept_return, $ac_cv_func_accept_arg1, $ac_cv_func_accept_arg2, $ac_cv_func_accept_arg3 *" >&6
+
+cat >>confdefs.h <<_ACEOF
+#define ACCEPT_TYPE_RETURN $ac_cv_func_accept_return
+_ACEOF
+
cat >>confdefs.h <<_ACEOF
#define ACCEPT_TYPE_ARG1 $ac_cv_func_accept_arg1
fi
AC_MSG_NOTICE([using CFLAGS=$CFLAGS])
+# We already have this in Makefile.win32, but configure needs it too
+if test "$PORTNAME" = "win32"
+then
+ CPPFLAGS="$CPPFLAGS -Isrc/include/port/win32"
+fi
+
# Check if the compiler still works with the template settings
AC_MSG_CHECKING([whether the C compiler still works])
AC_TRY_LINK([], [return 0;],
use_real_uid_flag = 0,
limit_user_info = 0;
const char *username = NULL;
-
+ extern int optind;
+#ifndef WIN32
struct passwd *pw;
+#else
+ struct passwd_win32
+ {
+ int pw_uid;
+ char pw_name[128];
+ } pass_win32;
+ struct passwd_win32 *pw = &pass_win32;
- extern int optind;
+ pw->pw_uid = 1;
+#endif
while ((c = getopt(argc, argv, "nru")) != -1)
{
limit_user_info = 1;
break;
default:
+#ifndef WIN32
fprintf(stderr, "Usage: %s [-n] [-r] [-u] [username]\n", argv[0]);
+#else
+ fprintf(stderr, "Usage: %s [-n] [-r] [-u]\n", argv[0]);
+#endif
exit(1);
}
}
if (argc - optind >= 1)
+#ifndef WIN32
username = argv[optind];
+#else
+ {
+ fprintf(stderr, "%s: specifying a username is not supported on this platform\n", argv[0]);
+ exit(1);
+ }
+#endif
if (name_only_flag && !limit_user_info)
{
exit(1);
}
-
+#ifndef WIN32
if (username)
{
pw = getpwnam(username);
perror(argv[0]);
exit(1);
}
+#else
+ if (!use_real_uid_flag)
+ {
+ fprintf(stderr, "%s: -r must be used on this platform\n", argv[0]);
+ exit(1);
+ }
+
+ GetUserName(pw->pw_name, sizeof(pw->pw_name)-1);
+#endif
if (!limit_user_info)
printf("uid=%d(%s)\n", (int) pw->pw_uid, pw->pw_name);
#include "catalog/catversion.h"
#include "catalog/pg_control.h"
-
/******************** stuff copied from xlog.c ********************/
/* Increment an xlogid/segment pair */
static void WriteEmptyXLOG(void);
static void usage(void);
+extern char *optarg;
+
int
{
/* Name */
#ifdef WIN32
- cells[i * cols + 0] = mbvalidate(PQgetvalue(res, i, 0));
+ cells[i * cols + 0] = mbvalidate(PQgetvalue(res, i, 0), myopt.encoding);
#else
cells[i * cols + 0] = PQgetvalue(res, i, 0); /* don't free this
* afterwards */
/* Type */
#ifdef WIN32
- cells[i * cols + 1] = mbvalidate(PQgetvalue(res, i, 1));
+ cells[i * cols + 1] = mbvalidate(PQgetvalue(res, i, 1), myopt.encoding);
#else
cells[i * cols + 1] = PQgetvalue(res, i, 1); /* don't free this
* either */
}
#ifdef WIN32
- cells[i * cols + 2] = xstrdup(mbvalidate(tmpbuf.data));
+ cells[i * cols + 2] = xstrdup(mbvalidate(tmpbuf.data, myopt.encoding));
#else
cells[i * cols + 2] = xstrdup(tmpbuf.data);
#endif
/* Description */
if (verbose)
#ifdef WIN32
- cells[i * cols + cols - 1] = mbvalidate(PQgetvalue(res, i, 5));
+ cells[i * cols + cols - 1] = mbvalidate(PQgetvalue(res, i, 5), myopt.encoding);
#else
cells[i * cols + cols - 1] = PQgetvalue(res, i, 5);
#endif
*/
#include "postgres_fe.h"
+#ifndef PGSCRIPTS
+#include "settings.h"
+#endif
#include "mbprint.h"
#include "mb/pg_wchar.h"
return mb_utf_validate(pwcs);
else
{
-#ifdef WIN32
+#if defined(WIN32) && !defined(PGSCRIPTS)
/*
* translate characters to DOS console encoding, e.g. needed for
* German umlauts
PROGRAMS = createdb createlang createuser dropdb droplang dropuser clusterdb vacuumdb
-override CPPFLAGS := -I$(top_srcdir)/src/bin/pg_dump -I$(top_srcdir)/src/bin/psql -I$(libpq_srcdir) $(CPPFLAGS)
+override CPPFLAGS := -DPGSCRIPTS -I$(top_srcdir)/src/bin/pg_dump -I$(top_srcdir)/src/bin/psql -I$(libpq_srcdir) $(CPPFLAGS)
all: submake-libpq submake-backend $(PROGRAMS)
const char *
get_user_name(const char *progname)
{
+#ifndef WIN32
struct passwd *pw;
pw = getpwuid(getuid());
exit(1);
}
return pw->pw_name;
+#else
+ static char username[128]; /* remains after function exit */
+
+ GetUserName(username, sizeof(username)-1);
+ return username;
+#endif
}
/* Define to the type of arg 3 of 'accept' */
#undef ACCEPT_TYPE_ARG3
+/* Define to the return type of 'accept' */
+#undef ACCEPT_TYPE_RETURN
+
/* The alignment requirement of a `double'. */
#undef ALIGNOF_DOUBLE
fe-protocol2.o fe-protocol3.o pqexpbuffer.o pqsignal.o fe-secure.o \
dllist.o md5.o ip.o wchar.o encnames.o \
$(filter crypt.o getaddrinfo.o inet_aton.o snprintf.o strerror.o path.o thread.o, $(LIBOBJS))
+ifeq ($(PORTNAME), win32)
+OBJS+=win32.o
+endif
# Add libraries that libpq depends (or might depend) on into the