Discussion:
[omniORB] omniorb with gcc 4.4 : getline, getopt, EOF
Jiang Wei
2009-05-06 18:40:37 UTC
Permalink
$ gcc --version
gcc (GCC) 4.4.0 20090427 (Red Hat 4.4.0-3)


$ configure & make
... ...
make[3]: Entering directory `/home/jw/omni/build/src/tool/omkdepend'
gcc -c -O -DDEBUG -I. -I../../../../src/tool/omkdepend -I../../../include -
I../../../../include -D__OSVERSION__=2 -D__linux__ -D__x86__ -o include.o
../../../../src/tool/omkdepend/include.c
In file included from ../../../../src/tool/omkdepend/include.c:31:
../../../../src/tool/omkdepend/def.h:132: error: conflicting types for
'getline'
/usr/include/stdio.h:653: note: previous declaration of 'getline' was here


$ rename getline to get_line, and make
...
../../../../../src/appl/utils/catior/catior.cc: In function 'int main(int,
char**)':
../../../../../src/appl/utils/catior/catior.cc:363: error: 'EOF' was not
declared in thi

../../../../../src/appl/utils/convertior/convertior.cc: In function 'int
main(int, char**)':
../../../../../src/appl/utils/convertior/convertior.cc:153: error: 'EOF' was
not declared in this scope


$ man getopt

The getopt() function was once specified to return EOF instead of -1.
This was changed by IEEE Std 1003.2-1992 ("POSIX.2") to decouple getopt()
from <stdio.h>.

$ change EOF to -1 & make , Successed.

$ cvs diff -u


Index: src/appl/utils/catior/catior.cc
===================================================================
RCS file: /cvsroot/omniorb/omni/src/appl/utils/catior/Attic/catior.cc,v
retrieving revision 1.14.2.3
diff -u -r1.14.2.3 catior.cc
--- src/appl/utils/catior/catior.cc 22 May 2005 12:39:44 -0000
1.14.2.3
+++ src/appl/utils/catior/catior.cc 6 May 2009 12:38:04 -0000
@@ -360,7 +360,7 @@
int hexflag = 0;
int omniflag = 0;

- while((c = getopt(argc,argv,"xo")) != EOF) {
+ while((c = getopt(argc,argv,"xo")) != -1) {
switch(c) {
case 'x':
hexflag = 1;
Index: src/appl/utils/convertior/convertior.cc
===================================================================
RCS file:
/cvsroot/omniorb/omni/src/appl/utils/convertior/Attic/convertior.cc,v
retrieving revision 1.11.2.3
diff -u -r1.11.2.3 convertior.cc
--- src/appl/utils/convertior/convertior.cc 22 May 2005 12:39:43 -0000
1.11.2.3
+++ src/appl/utils/convertior/convertior.cc 6 May 2009 12:38:04 -0000
@@ -150,7 +150,7 @@

int c;

- while((c = getopt(argc,argv,"x")) != EOF)
+ while((c = getopt(argc,argv,"x")) != -1)
{
switch(c)
{
Index: src/tool/omkdepend/def.h
===================================================================
RCS file: /cvsroot/omniorb/omni/src/tool/omkdepend/Attic/def.h,v
retrieving revision 1.4.2.4
diff -u -r1.4.2.4 def.h
--- src/tool/omkdepend/def.h 12 Dec 2008 12:13:19 -0000 1.4.2.4
+++ src/tool/omkdepend/def.h 6 May 2009 12:38:04 -0000
@@ -129,7 +129,7 @@

char *copy();
char *base_name();
-char *getline();
+char *get_line();
struct symtab *slookup();
struct symtab *isdefined();
struct symtab *fdefined();
Index: src/tool/omkdepend/main.c
===================================================================
RCS file: /cvsroot/omniorb/omni/src/tool/omkdepend/Attic/main.c,v
retrieving revision 1.8.2.3
diff -u -r1.8.2.3 main.c
--- src/tool/omkdepend/main.c 29 Dec 2008 14:38:31 -0000 1.8.2.3
+++ src/tool/omkdepend/main.c 6 May 2009 12:38:04 -0000
@@ -470,7 +470,7 @@
* Get the next line. We only return lines beginning with '#' since that
* is all this program is ever interested in.
*/
-char *getline(filep)
+char *get_line(filep)
register struct filepointer *filep;
{
register char *p, /* walking pointer */
Index: src/tool/omkdepend/parse.c
===================================================================
RCS file: /cvsroot/omniorb/omni/src/tool/omkdepend/Attic/parse.c,v
retrieving revision 1.2.2.3
diff -u -r1.2.2.3 parse.c
--- src/tool/omkdepend/parse.c 29 Dec 2008 14:38:31 -0000 1.2.2.3
+++ src/tool/omkdepend/parse.c 6 May 2009 12:38:04 -0000
@@ -45,7 +45,7 @@
register int type;
boolean recfailOK;

- while (line = getline(filep)) {
+ while (line = get_line(filep)) {
switch(type = deftype(line, filep, file_red, file, TRUE)) {
case IF:
doif:
@@ -170,7 +170,7 @@
register char *line;
register int type;

- while (line = getline(filep)) {
+ while (line = get_line(filep)) {
switch(type = deftype(line, filep, file_red, file, FALSE)) {
case IF:
case IFFALSE:
Michael
2009-05-06 18:51:41 UTC
Permalink
This doesn't seem to be a gcc 4.4 issue, but depend on the standard C
library shipped with your OS. Should be fixed anyway :)
Post by Jiang Wei
$ gcc --version
gcc (GCC) 4.4.0 20090427 (Red Hat 4.4.0-3)
$ configure & make
... ...
make[3]: Entering directory `/home/jw/omni/build/src/tool/omkdepend'
gcc -c -O -DDEBUG -I. -I../../../../src/tool/omkdepend -I../../../include -
I../../../../include -D__OSVERSION__=2 -D__linux__ -D__x86__ -o include.o
../../../../src/tool/omkdepend/include.c
../../../../src/tool/omkdepend/def.h:132: error: conflicting types for
'getline'
/usr/include/stdio.h:653: note: previous declaration of 'getline' was here
$ rename getline to get_line, and make
...
../../../../../src/appl/utils/catior/catior.cc: In function 'int main(int,
../../../../../src/appl/utils/catior/catior.cc:363: error: 'EOF' was not
declared in thi
../../../../../src/appl/utils/convertior/convertior.cc: In function 'int
../../../../../src/appl/utils/convertior/convertior.cc:153: error: 'EOF' was
not declared in this scope
$ man getopt
The getopt() function was once specified to return EOF instead of -1.
This was changed by IEEE Std 1003.2-1992 ("POSIX.2") to decouple getopt()
from <stdio.h>.
$ change EOF to -1 & make , Successed.
$ cvs diff -u
Index: src/appl/utils/catior/catior.cc
===================================================================
RCS file: /cvsroot/omniorb/omni/src/appl/utils/catior/Attic/catior.cc,v
retrieving revision 1.14.2.3
diff -u -r1.14.2.3 catior.cc
--- src/appl/utils/catior/catior.cc 22 May 2005 12:39:44 -0000
1.14.2.3
+++ src/appl/utils/catior/catior.cc 6 May 2009 12:38:04 -0000
@@ -360,7 +360,7 @@
int hexflag = 0;
int omniflag = 0;
- while((c = getopt(argc,argv,"xo")) != EOF) {
+ while((c = getopt(argc,argv,"xo")) != -1) {
switch(c) {
hexflag = 1;
Index: src/appl/utils/convertior/convertior.cc
===================================================================
/cvsroot/omniorb/omni/src/appl/utils/convertior/Attic/convertior.cc,v
retrieving revision 1.11.2.3
diff -u -r1.11.2.3 convertior.cc
--- src/appl/utils/convertior/convertior.cc 22 May 2005 12:39:43 -0000
1.11.2.3
+++ src/appl/utils/convertior/convertior.cc 6 May 2009 12:38:04 -0000
@@ -150,7 +150,7 @@
int c;
- while((c = getopt(argc,argv,"x")) != EOF)
+ while((c = getopt(argc,argv,"x")) != -1)
{
switch(c)
{
Index: src/tool/omkdepend/def.h
===================================================================
RCS file: /cvsroot/omniorb/omni/src/tool/omkdepend/Attic/def.h,v
retrieving revision 1.4.2.4
diff -u -r1.4.2.4 def.h
--- src/tool/omkdepend/def.h 12 Dec 2008 12:13:19 -0000 1.4.2.4
+++ src/tool/omkdepend/def.h 6 May 2009 12:38:04 -0000
@@ -129,7 +129,7 @@
char *copy();
char *base_name();
-char *getline();
+char *get_line();
struct symtab *slookup();
struct symtab *isdefined();
struct symtab *fdefined();
Index: src/tool/omkdepend/main.c
===================================================================
RCS file: /cvsroot/omniorb/omni/src/tool/omkdepend/Attic/main.c,v
retrieving revision 1.8.2.3
diff -u -r1.8.2.3 main.c
--- src/tool/omkdepend/main.c 29 Dec 2008 14:38:31 -0000 1.8.2.3
+++ src/tool/omkdepend/main.c 6 May 2009 12:38:04 -0000
@@ -470,7 +470,7 @@
* Get the next line. We only return lines beginning with '#' since that
* is all this program is ever interested in.
*/
-char *getline(filep)
+char *get_line(filep)
register struct filepointer *filep;
{
register char *p, /* walking pointer */
Index: src/tool/omkdepend/parse.c
===================================================================
RCS file: /cvsroot/omniorb/omni/src/tool/omkdepend/Attic/parse.c,v
retrieving revision 1.2.2.3
diff -u -r1.2.2.3 parse.c
--- src/tool/omkdepend/parse.c 29 Dec 2008 14:38:31 -0000 1.2.2.3
+++ src/tool/omkdepend/parse.c 6 May 2009 12:38:04 -0000
@@ -45,7 +45,7 @@
register int type;
boolean recfailOK;
- while (line = getline(filep)) {
+ while (line = get_line(filep)) {
switch(type = deftype(line, filep, file_red, file, TRUE)) {
@@ -170,7 +170,7 @@
register char *line;
register int type;
- while (line = getline(filep)) {
+ while (line = get_line(filep)) {
switch(type = deftype(line, filep, file_red, file, FALSE)) {
_______________________________________________
omniORB-list mailing list
http://www.omniorb-support.com/mailman/listinfo/omniorb-list
Jiang Wei
2009-05-11 11:26:25 UTC
Permalink
Yes ,you are right.

https://bugzilla.redhat.com/show_bug.cgi?id=493941

"getline is a standard POSIX 2008 function and we do want POSIX C 2008 stuff by
default. If you don't like it, choose a different namespace or rename your
functions."
Post by Michael
This doesn't seem to be a gcc 4.4 issue, but depend on the standard C
library shipped with your OS. Should be fixed anyway :)
Loading...