Description of problem: I just update glibc and now when compiling php5 I get: /home/hans/projects/fedora-extras/php/devel/php-5.2.3/ext/dba/dba.c: In function 'php_dba_open': /home/hans/projects/fedora-extras/php/devel/php-5.2.3/ext/dba/dba.c:933: error: expected identifier before '(' token Before the glibc update it compiled fine, line 933 is: if (error || hptr->open(info, &error TSRMLS_CC) != SUCCESS) { Adding "#undef open" after the #include statements fixes this. Am I the only one who things making open a macro is a bad idea? There are bound to be many pieces of software with structs, with in the struct a function pointer called open.
You can and should use (hptr->open)(info, &error TSRMLS_CC) or hptr->(open)(info, &error TSRMLS_CC) POSIX allows any standard function to be defined function-like macro and in the case of open the reason why we changed it were multiple requests from security folks - way too many packages aren't able to use open correctly with O_CREAT and pass random flags as third argument, which often is a security issue.
Hans, I've added the patch to fix this to the devel branch.