Hello, It's come to my attention that it's not possible to the Sybase extension and the IBM DB2 extension into PHP at the same time because they have conflicting declarations of `RETCODE'. Both of these extensions are built on top of legacy, proprietary APIs which it's not possible to change, so the respective RETCODE declarations must be respected. However, there's no technical reason two extensions should *ever* conflict unless the corresponding libraries use identical symbol names. The below patch cleans up ext/sybase so that the namespace in main/internal_functions.c isn't cluttered by header files internal to this extension. With this change, it should be possible to statically include both the IBM DB2 and Sybase extensions in a single PHP build. Regards, Steve Langasek postmodern programmer Index: ext/sybase/php_sybase_db.c =================================================================== RCS file: /repository/php4/ext/sybase/php_sybase_db.c,v retrieving revision 1.28 diff -u -w -r1.28 php_sybase_db.c --- ext/sybase/php_sybase_db.c 11 Aug 2001 12:02:15 -0000 1.28 +++ ext/sybase/php_sybase_db.c 4 Sep 2001 03:02:49 -0000 @@ -43,6 +43,43 @@ #include "http_log.h" #endif +/* Move these structures/defines into the .c file (or into a *private* header), + because leaving them in php_sybase_db.h causes namespace pollution in + main/internal_functions.c. */ + +#define coltype(j) dbcoltype(sybase_ptr->link,j) +#define intcol(i) ((int) *(DBINT *) dbdata(sybase_ptr->link,i)) +#define smallintcol(i) ((int) *(DBSMALLINT *) dbdata(sybase_ptr->link,i)) +#define tinyintcol(i) ((int) *(DBTINYINT *) dbdata(sybase_ptr->link,i)) +#define anyintcol(j) +(coltype(j)==SYBINT4?intcol(j):(coltype(j)==SYBINT2?smallintcol(j):tinyintcol(j))) +#define charcol(i) ((DBCHAR *) dbdata(sybase_ptr->link,i)) +#define floatcol(i) ((float) *(DBFLT8 *) dbdata(sybase_ptr->link,i)) + +typedef struct sybase_link_struct sybase_link; + +struct sybase_link_struct { + LOGINREC *login; + DBPROCESS *link; + int valid; +}; + +#define SYBASE_ROWS_BLOCK 128 + +typedef struct { + char *name,*column_source; + int max_length, numeric; + int type; +} sybase_field; + +typedef struct { + pval ***data; + sybase_field *fields; + sybase_link *sybase_ptr; + int cur_row,cur_field; + int num_rows,num_fields; +} sybase_result; + + function_entry sybase_functions[] = { PHP_FE(sybase_connect, NULL) PHP_FE(sybase_pconnect, NULL) Index: ext/sybase/php_sybase_db.h =================================================================== RCS file: /repository/php4/ext/sybase/php_sybase_db.h,v retrieving revision 1.5 diff -u -w -r1.5 php_sybase_db.h --- ext/sybase/php_sybase_db.h 16 Mar 2001 01:21:31 -0000 1.5 +++ ext/sybase/php_sybase_db.h 4 Sep 2001 03:02:49 -0000 @@ -63,21 +63,6 @@ PHP_FUNCTION(sybase_field_flags); - -#include <sybfront.h> -#include <sybdb.h> -#include <syberror.h> - -#define coltype(j) dbcoltype(sybase_ptr->link,j) -#define intcol(i) ((int) *(DBINT *) dbdata(sybase_ptr->link,i)) -#define smallintcol(i) ((int) *(DBSMALLINT *) dbdata(sybase_ptr->link,i)) -#define tinyintcol(i) ((int) *(DBTINYINT *) dbdata(sybase_ptr->link,i)) -#define anyintcol(j) (coltype(j)==SYBINT4?intcol(j):(coltype(j)==SYBINT2?smallintcol(j):tinyintcol(j))) -#define charcol(i) ((DBCHAR *) dbdata(sybase_ptr->link,i)) -#define floatcol(i) ((float) *(DBFLT8 *) dbdata(sybase_ptr->link,i)) - -typedef struct sybase_link_struct sybase_link; - typedef struct { long default_link; long num_links,num_persistent; @@ -90,29 +75,6 @@ long cfg_min_error_severity,cfg_min_message_severity; long compatability_mode; } sybase_module; - -struct sybase_link_struct { - LOGINREC *login; - DBPROCESS *link; - int valid; -}; - -#define SYBASE_ROWS_BLOCK 128 - -typedef struct { - char *name,*column_source; - int max_length, numeric; - int type; -} sybase_field; - -typedef struct { - pval ***data; - sybase_field *fields; - sybase_link *sybase_ptr; - int cur_row,cur_field; - int num_rows,num_fields; -} sybase_result; - extern sybase_module php_sybase_module; -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]