I'm -indefinite until the html gets out of it. There are no
    error messages which do html on their own (if so, they are
    bogus and need to be fixed). Command line does not use
    <b>..</b> anymore (has been fixed).

On Tue, Mar 12, 2002 at 02:02:30PM -0800, Daniel Ceregatti wrote : 
> Hi,
> 
> Andi, thanks for the feedback. I've changed the patch to include emalloc
> and efree.
> 
> I actually use PHP from the command line a lot and I've noticed that
> warnings always get wrapped in <b>, so I figured it was ok to do HTML
> here too.
> 
> I've modified the patch to also include an "offset" element in the array
> returned by OCIError. This will allow someone to "roll their own" method
> for displaying the error.
> 
> I've decided to leave the code that produces "sqltext" in, because I
> have a feeling the lazy programmers (i.e. ME) will be happy with that
> instead.
> 
> New patch attached.
> 
> Daniel
> 
> >
> >-----Original Message-----
> >From: Andi Gutmans [mailto:[EMAIL PROTECTED]] 
> >Sent: Tuesday, March 12, 2002 13:08
> >To: Walter A. Boring IV; [EMAIL PROTECTED]
> >Subject: Re: [PHP-DEV] OCIError patch
> >
> >Hey,
> >
> >I'm not quite sure it's correct for the error message to print HTML
> >itself. 
> >It's probably more correct to do this from user land.
> >In any case, you should not be using malloc()/free() but
> >emalloc()/efree(). 
> >If the request gets interrupted the memory will be freed if you're using
> >
> >emalloc().
> >
> >Andi
> >
> >At 12:59 12/03/2002 -0800, Walter A. Boring IV wrote:
> >
> >>Ahh.  very kewl patch Dan.
> >>
> >>Walt
> >>
> >>On Tue, 2002-03-12 at 12:48, Daniel Ceregatti wrote:
> >>
> >>>Hi,
> >>>
> >>>I wrote a small patch to oci8.c's OCIError function which places the
> >>>following tag:
> >>>
> >>><span style="color:#FF0000; font-weight:bold">&lt;ERROR&gt;</span>
> >>>
> >>>just before an error in a sql statement and adds the modified
> >>>
> >statement
> >
> >>>text into a new element called "sqltext" to the array returned by
> >>>OCIError, much the same way sqlplus adds an asterisk under an error.
> >>>
> >>>I find this very useful, and I'm hoping you will too. I've attached
> >>>
> >the
> >
> >>>patch.
> >>>
> >>>Thanks,
> >>>
> >>>Daniel Ceregatti
> >>>----
> >>>
> >>>--- php-4.1.2/ext/oci8/oci8.c.orig    Tue Mar 12 11:56:17 2002
> >>>+++ php-4.1.2/ext/oci8/oci8.c Tue Mar 12 12:23:35 2002
> >>>@@ -4090,10 +4090,13 @@
> >>>     zval **arg;
> >>>     oci_statement *statement;
> >>>     oci_connection *connection;
> >>>-    text errbuf[512];
> >>>-    sb4 errcode = 0;
> >>>+     text errbuf[512];
> >>>+     sb4 errcode = 0;
> >>>     sword error = 0;
> >>>     dvoid *errh = NULL;
> >>>+     ub2 errorofs = 0;
> >>>+     text *sqltext;
> >>>+     char *retsql;
> >>>
> >>>     if (zend_get_parameters_ex(1, &arg) == SUCCESS) {
> >>>             statement = (oci_statement *) zend_fetch_resource(arg 
> >>>
> >>TSRMLS_CC, -1, NULL, NULL, 1, le_stmt);
> >>
> >>>@@ -4130,10 +4133,33 @@
> >>>                             (ub4) sizeof(errbuf),
> >>>                             (ub4) OCI_HTYPE_ERROR));
> >>>
> >>>+     CALL_OCI_RETURN(statement->error, OCIAttrGet(
> >>>+                             (dvoid *)statement->pStmt,
> >>>+                             OCI_HTYPE_STMT,
> >>>+                             (text *) &sqltext,
> >>>+                             (ub4 *)0,
> >>>+                             OCI_ATTR_STATEMENT,
> >>>+                             statement->pError));
> >>>+
> >>>+     CALL_OCI_RETURN(statement->error, OCIAttrGet(
> >>>+                             (dvoid *)statement->pStmt,
> >>>+                             OCI_HTYPE_STMT,
> >>>+                             (ub2 *)&errorofs,
> >>>+                             (ub4 *)0,
> >>>+                             OCI_ATTR_PARSE_ERROR_OFFSET,
> >>>+                             statement->pError));
> >>>+
> >>>     if (errcode) {
> >>>+             retsql = (char *) malloc (strlen (sqltext) + 100);
> >>>+             memset (retsql, 0, strlen (sqltext) + 100);
> >>>+             strncat (retsql, sqltext, (int) errorofs);
> >>>+             strcat (retsql, "<span style=\"color:#FF0000; 
> >>>
> >>font-weight:bold\">&lt;ERROR&gt;</span>");
> >>
> >>>+             strcat (retsql, (char *) sqltext + (int) errorofs);
> >>>             array_init(return_value);
> >>>             add_assoc_long(return_value, "code", errcode);
> >>>+             add_assoc_string(return_value, "sqltext", (char *) 
> >>>
> >>retsql, 1);
> >>
> >>>             add_assoc_string(return_value, "message", (char*)
> >>>
> >errbuf, 1);
> >
> >>>+             free (retsql);
> >>>     } else {
> >>>             RETURN_FALSE;
> >>>     }
> >>>
> >>>----
> >>>
> >>>--
> >>>PHP Development Mailing List <http://www.php.net/>
> >>>To unsubscribe, visit: http://www.php.net/unsub.php
> >>>
> >>
> >>--
> >>PHP Development Mailing List <http://www.php.net/>
> >>To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >
> >
> >
> 
> -- 
> 
> Daniel Ceregatti - Programmer
> Omnis Networks, LLC
> 
> Q:    What's a WASP's idea of open-mindedness?
> A:    Dating a Canadian.
> 
> 

> --- php-4.1.2/ext/oci8/oci8.c.orig    Tue Mar 12 11:56:17 2002
> +++ php-4.1.2/ext/oci8/oci8.c Tue Mar 12 13:49:07 2002
> @@ -4090,10 +4090,13 @@
>       zval **arg;
>       oci_statement *statement;
>       oci_connection *connection;
> -    text errbuf[512];
> -    sb4 errcode = 0;
> +     text errbuf[512];
> +     sb4 errcode = 0;
>       sword error = 0;
>       dvoid *errh = NULL;
> +     ub2 errorofs = 0;
> +     text *sqltext;
> +     char *retsql;
>  
>       if (zend_get_parameters_ex(1, &arg) == SUCCESS) {
>               statement = (oci_statement *) zend_fetch_resource(arg TSRMLS_CC, -1, 
>NULL, NULL, 1, le_stmt);
> @@ -4130,10 +4133,34 @@
>                               (ub4) sizeof(errbuf),
>                               (ub4) OCI_HTYPE_ERROR));
>  
> +     CALL_OCI_RETURN(statement->error, OCIAttrGet(
> +                             (dvoid *)statement->pStmt,
> +                             OCI_HTYPE_STMT,
> +                             (text *) &sqltext,
> +                             (ub4 *)0,
> +                             OCI_ATTR_STATEMENT,
> +                             statement->pError));
> +
> +     CALL_OCI_RETURN(statement->error, OCIAttrGet(
> +                             (dvoid *)statement->pStmt,
> +                             OCI_HTYPE_STMT,
> +                             (ub2 *)&errorofs,
> +                             (ub4 *)0,
> +                             OCI_ATTR_PARSE_ERROR_OFFSET,
> +                             statement->pError));
> +
>       if (errcode) {
> +             retsql = (char *) emalloc (strlen (sqltext) + 100);
> +             memset (retsql, 0, strlen (sqltext) + 100);
> +             strncat (retsql, sqltext, (int) errorofs);
> +             strcat (retsql, "<span style=\"color:#FF0000; 
>font-weight:bold\">&lt;ERROR&gt;</span>");
> +             strcat (retsql, (char *) sqltext + (int) errorofs);
>               array_init(return_value);
>               add_assoc_long(return_value, "code", errcode);
> +             add_assoc_long(return_value, "offset", errorofs);
> +             add_assoc_string(return_value, "sqltext", (char *) retsql, 1);
>               add_assoc_string(return_value, "message", (char*) errbuf, 1);
> +             efree (retsql);
>       } else {
>               RETURN_FALSE;
>       }
> 

> -- 
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php

-- 
Please always Cc to me when replying to me on the lists.
GnuPG Key: http://guru.josefine.at/~mfischer/C2272BD0.asc

-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to