/* Is the other way around than system ntoh/hton, so we roll our own
here */
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define ntoh_s(n) n
-#define ntoh_l(n) n
-#define hton_s(n) n
-#define hton_l(n) n
-#endif
-#if BYTE_ORDER == BIG_ENDIAN
-#define ntoh_s(n) (u_short)(((u_char *) &n)[0] << 8 | ((u_char *) &n)[1]);
-#define ntoh_l(n) (u_long)(((u_char *)&n)[0] << 24 | ((u_char *)&n)[1] << 16 |\
- ((u_char *)&n)[2] << 8 | ((u_char *)&n)[3]);
-#define hton_s(n) (ntoh_s(n))
-#define hton_l(n) (ntoh_l(n))
-#endif
-#if BYTE_ORDER == PDP_ENDIAN
-#endif
-#ifndef ntoh_s
-#error Please write byte order macros
+#ifndef BYTE_ORDER
+#error BYTE_ORDER must be defined as LITTLE_ENDIAN, BIG_ENDIAN or PDP_ENDIAN
#endif
-/* --------------------------------------------------------------------- */
-int pqPutShort(const int integer, FILE *f)
+#if BYTE_ORDER == LITTLE_ENDIAN
+# define ntoh_s(n) n
+# define ntoh_l(n) n
+# define hton_s(n) n
+# define hton_l(n) n
+#else /* BYTE_ORDER != LITTLE_ENDIAN */
+# if BYTE_ORDER == BIG_ENDIAN
+# define ntoh_s(n) (u_short)(((u_char *) &n)[0] << 8 | ((u_char *) &n)[1]);
+# define ntoh_l(n) (u_long)(((u_char *)&n)[0] << 24 | \
+ ((u_char *)&n)[1] << 16 | \
+ ((u_char *)&n)[2] << 8 | ((u_char *)&n)[3]);
+# define hton_s(n) (ntoh_s(n))
+# define hton_l(n) (ntoh_l(n))
+# else /* BYTE_ORDER != BIG_ENDIAN */
+# if BYTE_ORDER == PDP_ENDIAN
+# #error PDP_ENDIAN macros not written yet
+# else /* BYTE_ORDER != anything known */
+# #error BYTE_ORDER not defined as anything understood
+# endif /* BYTE_ORDER == PDP_ENDIAN */
+# endif /* BYTE_ORDER == BIG_ENDIAN */
+#endif /* BYTE_ORDER == LITTLE_ENDIAN */
+
+/* --------------------------------------------------------------------- */
+int pqPutShort(int integer, FILE *f)
{
int retval = 0;
u_short n;
}
/* --------------------------------------------------------------------- */
-int pqPutLong(const int integer, FILE *f)
+int pqPutLong(int integer, FILE *f)
{
int retval = 0;
u_long n;
/* pqGetNBytes: Read a chunk of exactly len bytes in buffer s.
Return 0 if ok.
*/
-int pqGetNBytes(char* s, const int len, FILE *f)
+int pqGetNBytes(char *s, size_t len, FILE *f)
{
int cnt;
}
/* --------------------------------------------------------------------- */
-int pqPutNBytes(const char *s, const int len, FILE *f)
+int pqPutNBytes(const char *s, size_t len, FILE *f)
{
if (f == NULL)
return 0;
}
/* --------------------------------------------------------------------- */
-int pqGetString(char *s, int len, FILE *f)
+int pqGetString(char *s, size_t len, FILE *f)
{
int c;
}
/* --------------------------------------------------------------------- */
-int pqPutByte(const int c, FILE *f)
+int pqPutByte(int c, FILE *f)
{
if(!f) return 0;
/* --------------------------------------------------------------------- */
-#include <stdlib.h>
-#include <stdio.h>
-
-#include "postgres.h"
-#include "libpq/pqcomm.h"
-
-/* --------------------------------------------------------------------- */
-/* Is the other way around than system ntoh/hton, so we roll our own
- here */
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define ntoh_s(n) n
-#define ntoh_l(n) n
-#define hton_s(n) n
-#define hton_l(n) n
-#endif
-#if BYTE_ORDER == BIG_ENDIAN
-#define ntoh_s(n) (u_short)(((u_char *) &n)[0] << 8 | ((u_char *) &n)[1]);
-#define ntoh_l(n) (u_long)(((u_char *)&n)[0] << 24 | ((u_char *)&n)[1] << 16 |\
- ((u_char *)&n)[2] << 8 | ((u_char *)&n)[3]);
-#define hton_s(n) (ntoh_s(n))
-#define hton_l(n) (ntoh_l(n))
-#endif
-#if BYTE_ORDER == PDP_ENDIAN
-#endif
-#ifndef ntoh_s
-#error Please write byte order macros
-#endif
-
-/* --------------------------------------------------------------------- */
-int pqPutShort(const int integer, FILE *f)
- {
- int retval = 0;
- u_short n;
-
- n = hton_s(integer);
- if(fwrite(&n, sizeof(u_short), 1, f) != 1)
- retval = 1;
-
- return retval;
- }
-
-/* --------------------------------------------------------------------- */
-int pqPutLong(const int integer, FILE *f)
- {
- int retval = 0;
- u_long n;
-
- n = hton_l(integer);
- if(fwrite(&n, sizeof(u_long), 1, f) != 1)
- retval = 1;
-
- return retval;
- }
-
-/* --------------------------------------------------------------------- */
-int pqGetShort(int *result, FILE *f)
- {
- int retval = 0;
- u_short n;
-
- if(fread(&n, sizeof(u_short), 1, f) != 1)
- retval = 1;
-
- *result = ntoh_s(n);
- return retval;
- }
-
-/* --------------------------------------------------------------------- */
-int pqGetLong(int *result, FILE *f)
- {
- int retval = 0;
- u_long n;
-
- if(fread(&n, sizeof(u_long), 1, f) != 1)
- retval = 1;
-
- *result = ntoh_l(n);
- return retval;
- }
-
-/* --------------------------------------------------------------------- */
*
* Copyright (c) 1994, Regents of the University of California
*
- * $Id: pqcomm.h,v 1.9 1997/03/16 18:50:47 scrappy Exp $
+ * $Id: pqcomm.h,v 1.10 1997/03/20 18:23:03 scrappy Exp $
*
* NOTES
* Some of this should move to libpq.h
/* in pqcompriv.c */
int pqGetShort(int *, FILE *);
int pqGetLong(int *, FILE *);
+int pqGetNBytes(char *, size_t, FILE *);
+int pqGetString(char *, size_t, FILE *);
+int pqGetByte(FILE *);
+
int pqPutShort(int, FILE *);
int pqPutLong(int, FILE *);
+int pqPutNBytes(const char *, size_t, FILE *);
+int pqPutString(const char *, FILE *);
+int pqPutByte(int, FILE *);
+
/*
* prototypes for functions in pqpacket.c
*/