Steve,
I commited your patch. Please check out the latest CVS and test that it's
OK. I can't check it.
Andi
At 06:52 PM 9/3/2001 -0500, Steve Langasek wrote:
>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]
--
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]