ecpg problem : pre-processor translated hex constant to char

From: Raymond Fung <raymondf(at)valentia(dot)com(dot)hk>
To: pgsql-admin <pgsql-admin(at)postgresql(dot)org>
Subject: ecpg problem : pre-processor translated hex constant to char
Date: 2002-07-03 21:00:44
Message-ID: 3D2365FC.3E353D4C@acm.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-admin

Dear all,

A simple testing program :

* * * * * * * * * * * * * * begin * * * * * * * * * * * * * * * *

#include <stdio.h>
#include <stdlib.h>

int main (void)
{
unsigned int v;

v = 0x87654321L;

return (0);
}

* * * * * * * * * * * * * * end * * * * * * * * * * * * * * * *

compile with ecpg using :

ecpg -o mytest.c -I/usr/include/pgsql mytest.pgc

produces the output C program file as follow :

* * * * * * * * * * * * * * begin * * * * * * * * * * * * * * * *

/* Processed by ecpg (2.8.0) */
/* These three include files are added by the preprocessor */
#include <ecpgtype.h>
#include <ecpglib.h>
#include <ecpgerrno.h>
#line 1 "test.pgc"
#include <stdio.h>
#include <stdlib.h>

int main (void)
{
unsigned int v;

v = '0x87654321'L;

return (0);
}

* * * * * * * * * * * * * * * end * * * * * * * * * * * * * * *

It has translated the 4 bytes constant (0x87654321) into a one byte
char constant (within the single quotes) during pre-processing. Seems
this happens only when the high bit of the constant is set (i.e. it
won't add the quotes if the constant is 0x12345678).

Also, I noticed that the line number reported during the preprocessing
error output is incorrect : it is '1' less than the actual line number
in the source file. As shown, I am using version 2.8.0 of ecpg. Is my
version being too old to be buggy ? Any suggestion to bypass the
translation problem ?

Thanks,
Raymond Fung.

Browse pgsql-admin by date

  From Date Subject
Next Message Wolfgang Meiners 2002-07-03 21:16:21 starting the databaseserver
Previous Message Michael G. Martin 2002-07-03 20:25:41 Re: Oracle data -> PostgreSQL