--- /dev/null
+/*-------------------------------------------------------------------------
+ *
+ * libpq-int.h--
+ * This file contains internal definitions meant to be used only by
+ * the frontend libpq library, not by applications that call it.
+ *
+ * Copyright (c) 1994, Regents of the University of California
+ *
+ * $Id: libpq-int.h,v 1.1 1998/08/17 03:52:36 scrappy Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
+
+#ifndef LIBPQ_INT_H
+#define LIBPQ_INT_H
+
+/* We assume libpq-fe.h has already been included. */
+
+/* ----------------
+ * include stuff common to fe and be
+ * ----------------
+ */
+#include "libpq/pqcomm.h"
+
+/* libpq supports this version of the frontend/backend protocol.
+ *
+ * NB: we used to use PG_PROTOCOL_LATEST from the backend pqcomm.h file,
+ * but that's not really the right thing: just recompiling libpq
+ * against a more recent backend isn't going to magically update it
+ * for most sorts of protocol changes. So, when you change libpq
+ * to support a different protocol revision, you have to change this
+ * constant too. PG_PROTOCOL_EARLIEST and PG_PROTOCOL_LATEST in
+ * pqcomm.h describe what the backend knows, not what libpq knows.
+ */
+
+#define PG_PROTOCOL_LIBPQ PG_PROTOCOL(2,0)
+
+/* ----------------
+ * Internal functions of libpq
+ * Functions declared here need to be visible across files of libpq,
+ * but are not intended to be called by applications. We use the
+ * convention "pqXXX" for internal functions, vs. the "PQxxx" names
+ * used for application-visible routines.
+ * ----------------
+ */
+
+/* === in fe-connect.c === */
+
+ extern int pqPacketSend(PGconn *conn, const char *buf, size_t len);
+
+/* === in fe-exec.c === */
+
+ extern void pqClearAsyncResult(PGconn *conn);
+
+/* === in fe-misc.c === */
+
+ /* "Get" and "Put" routines return 0 if successful, EOF if not.
+ * Note that for Get, EOF merely means the buffer is exhausted,
+ * not that there is necessarily any error.
+ */
+ extern int pqGetc(char *result, PGconn *conn);
+ extern int pqGets(char *s, int maxlen, PGconn *conn);
+ extern int pqPuts(const char *s, PGconn *conn);
+ extern int pqGetnchar(char *s, int len, PGconn *conn);
+ extern int pqPutnchar(const char *s, int len, PGconn *conn);
+ extern int pqGetInt(int *result, int bytes, PGconn *conn);
+ extern int pqPutInt(int value, int bytes, PGconn *conn);
+ extern int pqReadData(PGconn *conn);
+ extern int pqFlush(PGconn *conn);
+ extern int pqWait(int forRead, int forWrite, PGconn *conn);
+
+/* max length of message to send */
+#define MAX_MESSAGE_LEN 8193
+
+/* maximum number of fields in a tuple */
+#define MAX_FIELDS 512
+
+/* bits in a byte */
+#define BYTELEN 8
+
+/* fall back options if they are not specified by arguments or defined
+ by environment variables */
+#define DefaultHost "localhost"
+#define DefaultTty ""
+#define DefaultOption ""
+#define DefaultAuthtype ""
+#define DefaultPassword ""
+
+/* supply an implementation of strerror() macro if system doesn't have it */
+#ifndef strerror
+#if defined(sun) && defined(sparc) && !defined(__SVR4)
+extern char *sys_errlist[];
+#define strerror(A) (sys_errlist[(A)])
+#endif /* sunos4 */
+#endif /* !strerror */
+
+#endif /* LIBPQ_INT_H */