@ -8,27 +8,34 @@
/* Is the other way around than system ntoh/hton, so we roll our own
/* Is the other way around than system ntoh/hton, so we roll our own
here */
here */
# if BYTE_ORDER == LITTLE_ENDIAN
# ifndef BYTE_ORDER
# define ntoh_s(n) n
# error BYTE_ORDER must be defined as LITTLE_ENDIAN, BIG_ENDIAN or PDP_ENDIAN
# 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
# endif
/* --------------------------------------------------------------------- */
# if BYTE_ORDER == LITTLE_ENDIAN
int pqPutShort ( const int integer , FILE * f )
# 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 ;
int retval = 0 ;
u_short n ;
u_short n ;
@ -41,7 +48,7 @@ int pqPutShort(const int integer, FILE *f)
}
}
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
int pqPutLong ( const int integer , FILE * f )
int pqPutLong ( int integer , FILE * f )
{
{
int retval = 0 ;
int retval = 0 ;
u_long n ;
u_long n ;
@ -83,7 +90,7 @@ int pqGetLong(int *result, FILE *f)
/* pqGetNBytes: Read a chunk of exactly len bytes in buffer s.
/* pqGetNBytes: Read a chunk of exactly len bytes in buffer s.
Return 0 if ok .
Return 0 if ok .
*/
*/
int pqGetNBytes ( char * s , const in t len , FILE * f )
int pqGetNBytes ( char * s , size_ t len , FILE * f )
{
{
int cnt ;
int cnt ;
@ -98,7 +105,7 @@ int pqGetNBytes(char* s, const int len, FILE *f)
}
}
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
int pqPutNBytes ( const char * s , const in t len , FILE * f )
int pqPutNBytes ( const char * s , size_ t len , FILE * f )
{
{
if ( f = = NULL )
if ( f = = NULL )
return 0 ;
return 0 ;
@ -110,7 +117,7 @@ int pqPutNBytes(const char *s, const int len, FILE *f)
}
}
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
int pqGetString ( char * s , in t len , FILE * f )
int pqGetString ( char * s , size_ t len , FILE * f )
{
{
int c ;
int c ;
@ -147,7 +154,7 @@ int pqGetByte(FILE *f)
}
}
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
int pqPutByte ( const int c , FILE * f )
int pqPutByte ( int c , FILE * f )
{
{
if ( ! f ) return 0 ;
if ( ! f ) return 0 ;
@ -156,85 +163,3 @@ int pqPutByte(const int c, FILE *f)
/* --------------------------------------------------------------------- */
/* --------------------------------------------------------------------- */
# 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 ;
}
/* --------------------------------------------------------------------- */