[PHP-DEV] Patch to interbase module.
Please apply this patch to the CVS archive, or give me a CVS account. This fixes a critical bug in interbase. Summary of changes: * The CVS version doesn't compile right now because of ibase_globals weirdness. I fixed that. * If a bind parameter (i.e. ? in a query) is NULL then pass a NULL to the database instead of an empty string. * If a date is not parsable, give a helpful error. * If a string is passed as a bind parameter to a blob field, and the string is not a blob handle, then create a new blob, write the string to it, and give the database that blob handle. * The MS Visual Studio .dsp file doesn't support building the Debug_TS config. I fixed it. * IBG(v) was defined twice in php_interbase.h and I removed one. If this patch is not applied, tell me why. I'm just going to keep posting it until someone adds it. This is really important stuff to anyone that is going to use interbase in any serious way. -- Jeremy Bettis [EMAIL PROTECTED] begin 666 php.diff M26YD97@Z(5X=]I;G1EF)AV4O:6YT97)B87-E+F,-/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/0U20U,@9FEL93H@+W)E]S:71OGDOAP-]E'0O:6YT M97)B87-E+VEN=5R8F%S92YC+'8-F5TFEE=FEN9R!R979IVEO;B Q+C8X M#61I9F8@+74@+7(Q+C8X(EN=5R8F%S92YC#2TM+2!E'0O:6YT97)B87-E M+VEN=5R8F%S92YC3$S($%U9R R,# Q(# W.C4U.C,S(TP,# P3$N-C@- M*RLK(5X=]I;G1EF)AV4O:6YT97)B87-E+F,),S$@075G(#(P,#$@,3Z M-#0Z-3$@+3 P,# -0$ @+3(U+#8@*S(U+#$R($! #2 -(\J#2 )0VAA;F=E MSH-*PD),C P,2TP-2TS,3H@2F5R96UY($)E='1IR \:F5R96UY01E861B M965F+F-O;3X-*PD)2T@268@82!B;]B(AA;F1L92!W87,@97AP96-T960@ M86YD('-O;65T:EN9R!E;'-E('=APTK0D)(!R96-E:79E9!CF5A=4@ M82!B;]B(%N9!A90@=AE('9A;'5E('1O(ET+@TK0D)+2!)9B!T:4@ M:6YC;VUI;F@87)G=6UE;G0@=\@82!B:6YD('!AF%M971EB!IR!.54Q, M#2L)0D@('1H96X@W1OF4@82!.54Q,(EN('1H92!D871A8F%S92X-*PD) M2T@36]R92!V97)B;W-E(1A=4@97)R;W)S+@T@0DQ.3DY+3 Y+3(Q.@E) M=F\@4%N86-E:R \:79O$!R96=I;VYE=YCCX-( D)2T@861D960@0T]- M4$E,15]$3!S96-T:6]N#2 )0DM(UOF4@=F5R8F]S92!P:'!?:6YF;U]I M8F%S92!F=6YC=EO;@U 0 M-#@T+#$S(LT.3 L,3,@0$ -( D@4U1$7U!( M4%])3DE?14Y44EDH(FEB87-E+G1I;65F;W)M870B+ B)4@Z)4TZ)5,B+!0 M2%!?24Y)7T%,3P@3VY51A=53=')I;FL(-F9U]T:6UE9F]R;6%T+!Z M96YD7VEB87-E7V=L;V)A;',L(EB87-E7V=L;V)A;',I#2!02%!?24Y)7T5. M1@I#2 -+7-T871I8R!V;VED('!H%]I8F%S95]I;FET7V=L;V)A;',H5%-2 M34Q37T0I#2MS=%T:6,@=F]I9!P:'!?:6)AV5?:6YI=%]G;]B86QS*'IE M;F1?:6)AV5?9VQO8F%LR J:6)AV5?9VQO8F%LRD-('L-+0E)0DH=EM M97-T86UP9F]R;6%T*2 ]($Y53$P[#2T)24)'*1A=5F;W)M870I(#T@3E5, M3#L-+0E)0DH=EM969OFUA=D@/2!.54Q,.PTM4E1RAEG)MVI(#T@ M3E5,3#L-+0E)0DH;G5M7W!EG-IW1E;G0I(#T@,#L-*PEI8F%S95]G;]B M86QS+3YT:6UEW1A;7!F;W)M870@/2!.54Q,.PTK6EB87-E7V=L;V)A;',M M/F1A=5F;W)M870@/2!.54Q,.PTK6EB87-E7V=L;V)A;',M/G1I;65F;W)M M870@/2!.54Q,.PTK6EB87-E7V=L;V)A;',M/F5RFUS9R ]($Y53$P[#2L) M:6)AV5?9VQO8F%LRT^;G5M7W!EG-IW1E;G0@/2 P.PT@?0T@#2!02%!? M34E.251?1E5.0U1)3TXH:6)AV4I#4! (TQ,3$X+#@*S$Q,C0L-R! 0 T@ M#2 O*B![WL@7W!H%]I8F%S95]B:6YD*D-( @($)I;F0@%R86UE=5R M('!L86-E:]L95RR!I;B!A('!R979I;W5S;'D@')E%R960@75EGD@ M*B\-+7-T871I8R!I;G0@7W!H%]I8F%S95]B:6YD*%A344Q$02 JW%L9$L M('!V86P@*BIB7W9AG,L($))3D1?0E5(IB=68I#2MS=%T:6,@:6YT(%]P M:'!?:6)AV5?8FEN9A84U%,1$$@*G-Q;1A+!P=F%L(HJ8E]V87)S+! M24Y$7T)51B J8G5F+!I8F%S95]Q=65R2 J:6)?75EGDI#2![#2 )6%-1 M3%9!4B J=F%R.PT@7!V86P@*F)?=F%R.PU 0 M,3$S,2PV(LQ,3,W+#$U M($! #2 )79ABT^W%L:6YD2 ](9B=69;:5TNW%L:6YD.PT@0EB7W9A MB ]()?=F%RUMI73L-( D)#2L)6EF(AB7W9ABT^='EP92 ]/2!)4U]. M54Q,*2![#2L)0ES=%T:6,@8VAAB!N;W1H:6YG6S8T73L-*PD)7-T871I M8R!S:]R=!N=6QL7V9L86@/2 M,3L-*PD)79ABT^W%L9%T82 ](YO M=AI;F[#2L)0EV87(M/G-Q;'1Y4@?#T@,3L-*PD)79ABT^W%L:6YD M(#T@)FYU;Q?9FQA9SL-*PD)6EF(AV87(M/G-Q;QE;B ^(#8T*0TK0D) M79ABT^W%L;5N(#T@-C0[#2L)7T@96QS90T@0ES=VET8V@H=F%R+3YS M6QT7!E(8@?C$I('L-( D)6-AV4@4U%,7U1%6%0Z0D)( @+RH@9ER M96-T('1O('9AFEA8FQE(HO#2 )0EC87-E(%-13%]605)924Y'.@U 0 M M,3(P.PW(LQ,C(S+#@0$ -( D)0D);B ]('-S8V%N9BAB7W9ABT^=F%L M=64NW1R+G9A;P@(B5D)2I;+UTE94J6R]=)60@)60E*ELZ725D)2I;.ETE M9(L#2 )0D)0D@( F=YT;5]M;VXL(9T+G1M7VUD87DL(9T+G1M7WEE M87(L( F=YT;5]H;W5R+ F=YT;5]M:6XL(9T+G1M7W-E8RD[#2 )0D) M6EF*X@(3T@,R F)B!N($](#8IPTM0D)0D)7W!H%]I8F%S95]M;V1U M;5?97)R;W(H(FEN=F%L:60@9%T92]T:6UE(9OFUA=(I.PTK0D)0D) M7W!H%]I8F%S95]M;V1U;5?97)R;W(H(FEN=F%L:60@9%T92]T:6UE(9O MFUA=#H@17AP96-T960@,R!OB V(9I96QDRP@9V]T(5D+B!5V4@9F]R M;6%T(TO9]9($@Z:3IS+B!9;W4@9V%V92 G)7,G(BP@;BP@8E]V87(M/G9A M;'5E+G-TBYV86PI.PT@0D)0D)F5T=7)N($9!24Q54D4[#2 )0D)7T- M( D)0D)=YT;5]Y96%R(T](#$Y,# [#4! (TQ,C8V+#$R(LQ,C@Q+#,X M($! #2 )0D)6EF(AB7W9ABT^='EP92 A/2!)4U]35%))3D-( D)0D) M7Q\()?=F%R+3YV86QU92YS='(N;5N($]('-IF5O9BAI8F%S95]B;]B M7VAA;F1L92D-( D)0D)7Q\(@H:6)AV5?8FQO8E]H86YD;4@*BDH8E]V M87(M/G9A;'5E+G-TBYV86PI*2T^8FQ?:%N9QE($](# I('L-*PD)0D) M6EB87-E7V)L;V)?:%N9QE(II8E]B;]B.PTK0D)0D)5%-234Q37T9% M5$-(*D[#2L-*PD)0D)6EB7V)L;V(@/2 H:6)AV5?8FQO8E]H86YD;4@ M*BD@96UA;QO8RAS:7IE;V8H:6)AV5?8FQO8E]H86YD;4I*3L-*PD)0D) M6EB7V)L;V(M/G1R86YS7VAA;F1L92 ](EB7W%U97)Y+3YTF%NSL-*PD) M0D)6EB7V)L;V(M/FQI;FL@/2!I8E]Q=65R2T^;EN:SL-*PD)0D)6EB M7V)L;V(M/F)L7VAA;F1L92 ]($Y53$P[#2L)0D)0EI9B H:7-C7V-R96%T M95]B;]B*$E7U-405154RP@)FEB7V)L;V(M/FQI;FLL(9I8E]B;]B+3YT MF
Re: [PHP-DEV] Patch to interbase module.
Ok, I'll try it again. The first post was just what cvs diff gave me. Here is one with the line endings converted. I'll attach it and copy-paste it. Index: ext/interbase/interbase.c === RCS file: /repository/php4/ext/interbase/interbase.c,v retrieving revision 1.68 diff -u -r1.68 interbase.c --- ext/interbase/interbase.c 13 Aug 2001 07:55:33 - 1.68 +++ ext/interbase/interbase.c 31 Aug 2001 17:44:51 - @@ -25,6 +25,12 @@ /* Changes: + 2001-05-31: Jeremy Bettis [EMAIL PROTECTED] + - If a blob handle was expected and something else was + received create a blob and add the value to it. + - If the incoming argument to a bind parameter is NULL + then store a NULL in the database. + - More verbose date errors. 1999-09-21: Ivo Panacek [EMAIL PROTECTED] - added COMPILE_DL section - more verbose php_info_ibase function @@ -484,13 +490,13 @@ STD_PHP_INI_ENTRY(ibase.timeformat, %H:%M:%S, PHP_INI_ALL, OnUpdateString, cfg_timeformat, zend_ibase_globals, ibase_globals) PHP_INI_END() -static void php_ibase_init_globals(TSRMLS_D) +static void php_ibase_init_globals(zend_ibase_globals *ibase_globals) { - IBG(timestampformat) = NULL; - IBG(dateformat) = NULL; - IBG(timeformat) = NULL; - IBG(errmsg) = NULL; - IBG(num_persistent) = 0; + ibase_globals-timestampformat = NULL; + ibase_globals-dateformat = NULL; + ibase_globals-timeformat = NULL; + ibase_globals-errmsg = NULL; + ibase_globals-num_persistent = 0; } PHP_MINIT_FUNCTION(ibase) @@ -1118,7 +1124,7 @@ /* {{{ _php_ibase_bind() Bind parameter placeholders in a previously prepared query */ -static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf) +static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_query *ib_query) { XSQLVAR *var; pval *b_var; @@ -1131,6 +1137,15 @@ var-sqlind = buf[i].sqlind; b_var = b_vars[i]; + if (b_var-type == IS_NULL) { + static char nothing[64]; + static short null_flag = -1; + var-sqldata = nothing; + var-sqltype |= 1; + var-sqlind = null_flag; + if (var-sqllen 64) +var-sqllen = 64; + } else switch(var-sqltype ~1) { case SQL_TEXT: /* direct to variable */ case SQL_VARYING: @@ -1208,7 +1223,7 @@ n = sscanf(b_var-value.str.val, %d%*[/]%d%*[/]%d %d%*[:]%d%*[:]%d, t.tm_mon, t.tm_mday, t.tm_year, t.tm_hour, t.tm_min, t.tm_sec); if(n != 3 n != 6){ - _php_ibase_module_error(invalid date/time format); + _php_ibase_module_error(invalid date/time format: Expected 3 or 6 fields, got %d. Use format m/d/Y H:i:s. You gave '%s', n, b_var-value.str.val); return FAILURE; } t.tm_year -= 1900; @@ -1266,12 +1281,38 @@ if (b_var-type != IS_STRING || b_var-value.str.len != sizeof(ibase_blob_handle) || ((ibase_blob_handle *)(b_var-value.str.val))-bl_handle != 0) { + ibase_blob_handle *ib_blob; + TSRMLS_FETCH(); + + ib_blob = (ibase_blob_handle *) emalloc(sizeof(ibase_blob_handle)); + ib_blob-trans_handle = ib_query-trans; + ib_blob-link = ib_query-link; + ib_blob-bl_handle = NULL; + if (isc_create_blob(IB_STATUS, ib_blob-link, ib_blob-trans_handle, ib_blob-bl_handle, ib_blob-bl_qd)) { + efree(ib_blob); + _php_ibase_error(); + return FAILURE; + } + convert_to_string(b_var); + if (isc_put_segment(IB_STATUS, ib_blob-bl_handle, (unsigned short) b_var-value.str.len, b_var-value.str.val)) { + _php_ibase_error(); + return FAILURE; + } + if (isc_close_blob(IB_STATUS, ib_blob-bl_handle)) { + _php_ibase_error(); + return FAILURE; + } + ib_blob_id = ib_blob; + var-sqldata = (void ISC_FAR *)ib_blob_id-bl_qd; +/* _php_ibase_module_error(invalid blob id string); return FAILURE; - } - ib_blob_id = (ibase_blob_handle *)b_var-value.str.val; +*/ + } else { + ib_blob_id = (ibase_blob_handle *)b_var-value.str.val; - var-sqldata = (void ISC_FAR *)ib_blob_id-bl_qd; + var-sqldata = (void ISC_FAR *)ib_blob_id-bl_qd; + } } break; case SQL_ARRAY: @@ -1383,7 +1424,7 @@ in_sqlda = emalloc(XSQLDA_LENGTH(ib_query-in_sqlda-sqld)); memcpy(in_sqlda, ib_query-in_sqlda, XSQLDA_LENGTH(ib_query-in_sqlda-sqld)); bind_buf = emalloc(sizeof(BIND_BUF) * ib_query-in_sqlda-sqld); - if (_php_ibase_bind(in_sqlda, args, bind_buf) == FAILURE) { + if (_php_ibase_bind(in_sqlda, args, bind_buf, ib_query) == FAILURE) { IBDEBUG(Could not bind input XSQLDA... (_php_ibase_exec)); goto _php_ibase_exec_error; } Index: ext/interbase/interbase.dsp === RCS file: /repository/php4/ext/interbase/interbase.dsp,v retrieving revision 1.5 diff -u -r1.5 interbase.dsp --- ext/interbase/interbase.dsp 24 Aug 2000 18:58:50 - 1.5 +++ ext/interbase/interbase.dsp 31 Aug 2001 17:44:51 - @@ -44,7 +44,7
[PHP-DEV] object to string convertion patch
I changed php (current CVS) to add another magic method to Objects, __toString(). Whenever an object needs to be converted to a string, then it will first try to call __toString() and if it can't, then it will just return Object like now. Please look over my patch and see if I did it correctly, and could someone please put it in cvs? If someone will include this in CVS I will followup with __toDouble() and __toLong() and __toBoolean() and __toArray() My goal is to make Objects more useful as regular data types. For example I could introduce a new Class called Date which would act just like a string in all string contexts and act just like a number of seconds from 1970 in numeric contexts. I have one thing that is confusing to me, look at this test script: ?php class foo { var $fooval; function foo() { $this-fooval=foofoo; } } class bar extends foo { function __toString() { return 5; } } class baz extends foo { function __toString() { return $this-fooval; } } echo brbrbrbr\n; $foo=new foo(); $bar=new bar(); $baz=new baz(); var_dump(5); var_dump(strval(5)); echo print_r(\$foo): ; print_r($foo); echo br\n; echo \$foo: , $foo, br\n; echo strval(\$foo): , strval($foo), br\n; echo var_dump(strval(\$foo)): ; var_dump(strval($foo)); echo br\n; echo print_r(strval(\$foo)): ; print_r(strval($foo)); echo br\n; echo print_r(\$bar): ; print_r($bar); echo br\n; echo \$bar: , $bar, br\n; echo strval(\$bar): , strval($bar), br\n; echo var_dump(strval(\$bar)): ; var_dump(strval($bar)); echo br\n; echo print_r(strval(\$bar)): ; print_r(strval($bar)); echo br\n; echo print_r(\$baz): ; print_r($baz); echo br\n; echo \$baz: , $baz, br\n; echo strval(\$baz): , strval($baz), br\n; echo var_dump(strval(\$baz)): ; var_dump(strval($baz)); echo br\n; echo print_r(strval(\$baz)): ; print_r(strval($baz)); echo br\n; ? Everything works as expected except for the var_dump and print_r calls. Here is the output: Notice the the print_r calls are showing the whole object and not just the strval. int(5) string(1) 5 print_r($foo): foo Object ( [fooval] = foofoo ) $foo: Warning: Object to string conversion in c:\inetpub\wwwroot\default.php on line 37 Object strval($foo): Warning: Object to string conversion in c:\inetpub\wwwroot\default.php on line 38 Object var_dump(strval($foo)): Warning: Object to string conversion in c:\inetpub\wwwroot\default.php on line 39 string(6) Object print_r(strval($foo)): Warning: Object to string conversion in c:\inetpub\wwwroot\default.php on line 40 Object print_r($bar): bar Object ( [fooval] = foofoo ) $bar: 5 strval($bar): 5 var_dump(strval($bar)): object(bar)(1) { [fooval]= string(6) foofoo } print_r(strval($bar)): bar Object ( [fooval] = foofoo ) print_r($baz): baz Object ( [fooval] = foofoo ) $baz: foofoo strval($baz): foofoo var_dump(strval($baz)): object(baz)(1) { [fooval]= string(6) foofoo } print_r(strval($baz)): baz Object ( [fooval] = foofoo ) begin 666 foo.txt M26YD97@Z(%IE;F0OF5N9YC#3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T-4D-3 M(9I;4Z(]R97!OVET;W)Y+UIE;F0OF5N9YC+'8-F5TFEE=FEN9R!R M979IVEO;B Q+C$S-@UD:69F(UU(UR,2XQ,S8@F5N9YC#2TM+2!:96YD M+WIE;F0N8PDR,# Q+S X+S$Q(#$U.C4W.C W3$N,3,V#2LK*R!:96YD+WIE M;F0N8PDR,# Q+S X+S(R(#$V.C,Y.C0T#4! (TQ-#L,3 @*S$T-RPQ,B! M0 T@0D)97APE]C;W!Y+3YV86QU92YS='(N;5N(#T@VEZ96]F*)!G)A M2(I+3$[#2 )0EE'!R7V-O'DM/G9A;'5E+G-TBYV86P@/2!EW1R;F1U M@B07)R87DB+!E'!R7V-O'DM/G9A;'5E+G-TBYL96XI.PT@0D)8G)E M86L[#2LC:68@, T@0EC87-E($E37T]2D5#5#H-( D)65X')?8V]P2T^ M=F%L=64NW1R+FQE;B ]('-IF5O9B@B3V)J96-T(BDM,3L-( D)65X')? M8V]P2T^=F%L=64NW1R+G9A; ](5S=')N9'5P*)/8FIE8W0B+!E'!R M7V-O'DM/G9A;'5E+G-TBYL96XI.PT@0D)8G)E86L[#2LC96YD:68-( D) M95F875L=#H-( D)2IE'!R7V-O'D@/2 J97APCL-( D)7IV86Q?8V]P M5]C=]R*5X')?8V]P2D[#4EN95X.B!:96YD+WIE;F1?;W!EF%T;W)S M+F,-/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T] M/3T]/3T]/3T]/3T]/3T]/3T]/3T]/3T]/0U20U,@9FEL93H@+W)E]S:71O MGDO6F5N9]Z96YD7V]P97)A=]RRYC+'8-F5TFEE=FEN9R!R979IVEO M;B Q+C$Q,@UD:69F(UU(UR,2XQ,3(@F5N9%]O5R871OG,N8PTM+2T@ M6F5N9]Z96YD7V]P97)A=]RRYC3(P,#$O,#@O,30@,3$Z,34Z,#@),2XQ M,3(-*RLK(%IE;F0OF5N9%]O5R871OG,N8PDR,# Q+S X+S(R(#$V.C,Y M.C0U#4! (TT-C8L,3$@*S0V-BPR.! 0 T@0D)F5N9%]EG)OBA%7TY/ M5$E#12P@(D%RF%Y('1O('-TFEN9R!C;VYV97)S:6]N(BD[#2 )0EBF5A M:SL-( D)8V%S92!)4U]/0DI%0U0Z#2T)0EZ=F%L7V1T;W(H;W I.PTM0D) M;W M/G9A;'5E+G-TBYV86P@/2!EW1R;F1U%]R96PH(D]B:F5C=(L('-I MF5O9B@B3V)J96-T(BDM,2D[#2T)0EOT^=F%L=64NW1R+FQE;B ]('-I MF5O9B@B3V)J96-T(BDM,3L-+0D)7IE;F1?97)R;W(H15].3U1)0T4L()/ M8FIE8W0@=\@W1R:6YG(-O;G9EG-I;VXB*3L-*PD)PTK0D@( @G9A M; JW1R=F%L.PTK0D@( @G9A; J9G5N8U]N86UE.PTK( @( @( @ M( @04Q,3T-?6E9!3AF=6YC7VYA;64I.PTK( @( @( @( @04Q,3T-? M6E9!3AS=')V86PI.PTK0D@( @6E9!3%]35%))3DH9G5N8U]N86UE+ B M7U]T;U-TFEN9R(L(#$I.PTK( @( @( @( @:68H8V%L;%]UV5R7V9U M;F-T:6]N7V5X*$Y53$PL(9OP@9G5N8U]N86UE+ FW1R=F%L+ P+!. M54Q,+ P+!.54Q,(%134DU,4U]#0RD@(3T@4U5#0T534R!\?!S=')V86PM M/G1Y4@/3T@25-?3T)*14-4*0TK( @( @( @( @PTK0D)( @('IV
Re: [PHP-DEV] object to string convertion patch
My implementation does not have these inconsistencies (I looked in the archives). The only wierd thing is print_r and dump_var. Zeev Suraski [EMAIL PROTECTED] wrote in message 5.1.0.14.2.20010822195524.03aeb4c8@localhost">news:5.1.0.14.2.20010822195524.03aeb4c8@localhost... At 19:53 22-08-01, Andrei Zmievski wrote: On Wed, 22 Aug 2001, Jeremy Bettis wrote: I changed php (current CVS) to add another magic method to Objects, __toString(). Whenever an object needs to be converted to a string, then it will first try to call __toString() and if it can't, then it will just return Object like now. Good luck trying to get this in. I implemented this once, and it was even in for several mini versions. But it causes inconsistencies, and it was thus removed (I don't remember what the inconsistencies were, look up the archives...) Zeev -- 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-DEV] Is there any value in having functions defined which do nothing.
Why is the habit of PHP modules to define functions that might or might not work depending on library dependancies. For example, ImageCopyResampled gives this error if libgd 2.0: ImageCopyResampled required libgd 2.0 But that makes this code useless: if (function_exists('ImageCopyResampled')) { // doit the good way ImageCopyResampled(.); } else { ImageCopyResized(.); } My point was to have the php script work regardless of what version of php was installed, but even if the function exists, it might not work. Wouldn't it have been better if the function just didn't exist at all? -- Jeremy Bettis [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]
Re: [PHP-DEV] Transparent use of blobs in Interbase
Can you send this patch to the list as an attachment? It's a little messed up due to line endings. Here you are. Index: ext/interbase/interbase.c === RCS file: /repository/php4/ext/interbase/interbase.c,v retrieving revision 1.58 diff -u -r1.58 interbase.c --- ext/interbase/interbase.c 2001/06/09 09:30:42 1.58 +++ ext/interbase/interbase.c 2001/07/06 14:59:01 @@ -25,6 +25,15 @@ /* Changes: + 2001-06-13: Jeremy Bettis [EMAIL PROTECTED] + - Return the text of blobs in _php_ibase_fetch_hash, not the blob + handles, even if the BLOB is not of TEXT type + 2001-05-31: Jeremy Bettis [EMAIL PROTECTED] + - If a blob handle was expected and something else was + received create a blob and add the value to it. + - If the incoming argument to a bind parameter is NULL + then store a NULL in the database. + - More verbose date errors. 1999-09-21: Ivo Panacek [EMAIL PROTECTED] - added COMPILE_DL section - more verbose php_info_ibase function @@ -1130,7 +1139,7 @@ /* {{{ _php_ibase_bind() Bind parameter placeholders in a previously prepared query */ -static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf) +static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_query +*ib_query) { XSQLVAR *var; pval *b_var; @@ -1143,6 +1152,15 @@ var-sqlind = buf[i].sqlind; b_var = b_vars[i]; + if (b_var-type == IS_NULL) { + static char nothing[64]; + static short null_flag = -1; + var-sqldata = nothing; + var-sqltype |= 1; + var-sqlind = null_flag; + if (var-sqllen 64) + var-sqllen = 64; + } else switch(var-sqltype ~1) { case SQL_TEXT: /* direct to variable */ case SQL_VARYING: @@ -1220,7 +1238,7 @@ n = sscanf(b_var-value.str.val,%d%*[/]%d%*[/]%d %d%*[:]%d%*[:]%d, t.tm_mon, t.tm_mday, t.tm_year, t.tm_hour, t.tm_min, t.tm_sec); if(n != 3 n != 6){ - _php_ibase_module_error(invalid date/time format); + _php_ibase_module_error(invalid +date/time format: Expected 3 or 6 fields, got %d. Use format m/d/Y H:i:s. You gave +'%s', n, b_var-value.str.val); return FAILURE; } t.tm_year -= 1900; @@ -1278,12 +1296,36 @@ if (b_var-type != IS_STRING || b_var-value.str.len != sizeof(ibase_blob_handle) || ((ibase_blob_handle *)(b_var-value.str.val))-bl_handle != 0) { + IBLS_FETCH(); + ibase_blob_handle *ib_blob; + ib_blob = (ibase_blob_handle *) +emalloc(sizeof(ibase_blob_handle)); + ib_blob-trans_handle = +ib_query-trans; + ib_blob-link = ib_query-link; + ib_blob-bl_handle = NULL; + if (isc_create_blob(IB_STATUS, +ib_blob-link, ib_blob-trans_handle, ib_blob-bl_handle, ib_blob-bl_qd)) { + efree(ib_blob); + _php_ibase_error(); + return FAILURE; + } + convert_to_string(b_var); + if (isc_put_segment(IB_STATUS, +ib_blob-bl_handle, (unsigned short) b_var-value.str.len, b_var-value.str.val)) { + _php_ibase_error(); + return FAILURE; + } + if (isc_close_blob(IB_STATUS, +ib_blob-bl_handle)) { + _php_ibase_error(); + return FAILURE
[PHP-DEV] Re: Bug #11819 Updated: Bug with ibase_execute()
The patch that I just posted to the list fixes this problem. Nulls passed as ? parameters were being sent to interbase as 0's. -- Jeremy Bettis [EMAIL PROTECTED] [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED]... ID: 11819 User Update by: [EMAIL PROTECTED] Status: Bogus Bug Type: InterBase related Operating system: Windows 2000 PHP Version: 4.0.6 Description: Bug with ibase_execute() -- 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-DEV] Building PHP with freetype and libgd 1.8
I had trouble building cvs version of PHP with libfreetype. Right now HAVE_LIBFREETYPE only works if HAVE_LIBGD20, this patch fixes that. Index: ext/gd/gd.c === RCS file: /repository/php4/ext/gd/gd.c,v retrieving revision 1.138 diff -u -r1.138 gd.c --- ext/gd/gd.c 2001/07/02 12:49:21 1.138 +++ ext/gd/gd.c 2001/07/05 19:12:41 @@ -2659,7 +2659,7 @@ fontname = (unsigned char *) Z_STRVAL_PP(FONTNAME); #ifdef USE_GD_IMGSTRTTF -# if HAVE_LIBGD20 HAVE_LIBFREETYPE +# if HAVE_LIBFREETYPE error = gdImageStringFT(im, brect, col, fontname, ptsize, angle, x, y, str); # else error = gdImageStringTTF(im, brect, col, fontname, ptsize, angle, x, y, str); -- Jeremy Bettis [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]
[PHP-DEV] Transparent use of blobs in Interbase
This patch will make it so that no special effort is required to use blobs in interbase. Since the blob functions don't seem to work right anyway, I see no reason that you should not include this patch. (patch against current cvs) Index: ext/interbase/interbase.c === RCS file: /repository/php4/ext/interbase/interbase.c,v retrieving revision 1.58 diff -u -r1.58 interbase.c --- ext/interbase/interbase.c 2001/06/09 09:30:42 1.58 +++ ext/interbase/interbase.c 2001/07/05 19:12:46 @@ -25,6 +25,15 @@ /* Changes: + 2001-06-13: Jeremy Bettis [EMAIL PROTECTED] + - Return the text of blobs in _php_ibase_fetch_hash, not the blob + handles, even if the BLOB is not of TEXT type + 2001-05-31: Jeremy Bettis [EMAIL PROTECTED] + - If a blob handle was expected and something else was + received create a blob and add the value to it. + - If the incoming argument to a bind parameter is NULL + then store a NULL in the database. + - More verbose date errors. 1999-09-21: Ivo Panacek [EMAIL PROTECTED] - added COMPILE_DL section - more verbose php_info_ibase function @@ -1130,7 +1139,7 @@ /* {{{ _php_ibase_bind() Bind parameter placeholders in a previously prepared query */ -static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf) +static int _php_ibase_bind(XSQLDA *sqlda, pval **b_vars, BIND_BUF *buf, ibase_query *ib_query) { XSQLVAR *var; pval *b_var; @@ -1143,6 +1152,15 @@ var-sqlind = buf[i].sqlind; b_var = b_vars[i]; + if (b_var-type == IS_NULL) { + static char nothing[64]; + static short null_flag = -1; + var-sqldata = nothing; + var-sqltype |= 1; + var-sqlind = null_flag; + if (var-sqllen 64) +var-sqllen = 64; + } else switch(var-sqltype ~1) { case SQL_TEXT: /* direct to variable */ case SQL_VARYING: @@ -1220,7 +1238,7 @@ n = sscanf(b_var-value.str.val,%d%*[/]%d%*[/]%d %d%*[:]%d%*[:]%d, t.tm_mon, t.tm_mday, t.tm_year, t.tm_hour, t.tm_min, t.tm_sec); if(n != 3 n != 6){ - _php_ibase_module_error(invalid date/time format); + _php_ibase_module_error(invalid date/time format: Expected 3 or 6 fields, got %d. Use format m/d/Y H:i:s. You gave '%s', n, b_var-value.str.val); return FAILURE; } t.tm_year -= 1900; @@ -1278,12 +1296,36 @@ if (b_var-type != IS_STRING || b_var-value.str.len != sizeof(ibase_blob_handle) || ((ibase_blob_handle *)(b_var-value.str.val))-bl_handle != 0) { + IBLS_FETCH(); + ibase_blob_handle *ib_blob; + ib_blob = (ibase_blob_handle *) emalloc(sizeof(ibase_blob_handle)); + ib_blob-trans_handle = ib_query-trans; + ib_blob-link = ib_query-link; + ib_blob-bl_handle = NULL; + if (isc_create_blob(IB_STATUS, ib_blob-link, ib_blob-trans_handle, ib_blob-bl_handle, ib_blob-bl_qd)) { + efree(ib_blob); + _php_ibase_error(); + return FAILURE; + } + convert_to_string(b_var); + if (isc_put_segment(IB_STATUS, ib_blob-bl_handle, (unsigned short) b_var-value.str.len, b_var-value.str.val)) { + _php_ibase_error(); + return FAILURE; + } + if (isc_close_blob(IB_STATUS, ib_blob-bl_handle)) { + _php_ibase_error(); + return FAILURE; + } + ib_blob_id = ib_blob; + var-sqldata = (void ISC_FAR *)ib_blob_id-bl_qd; +/* _php_ibase_module_error(invalid blob id string); return FAILURE; +*/ + } else { + ib_blob_id = (ibase_blob_handle *)b_var-value.str.val; + var-sqldata = (void ISC_FAR *)ib_blob_id-bl_qd; } - ib_blob_id = (ibase_blob_handle *)b_var-value.str.val; - - var-sqldata = (void ISC_FAR *)ib_blob_id-bl_qd; } break; case SQL_ARRAY: @@ -1395,7 +1437,7 @@ in_sqlda = emalloc(XSQLDA_LENGTH(ib_query-in_sqlda-sqld)); memcpy(in_sqlda, ib_query-in_sqlda, XSQLDA_LENGTH(ib_query-in_sqlda-sqld)); bind_buf = emalloc(sizeof(BIND_BUF) * ib_query-in_sqlda-sqld); - if (_php_ibase_bind(in_sqlda, args, bind_buf) == FAILURE) { + if (_php_ibase_bind(in_sqlda, args, bind_buf, ib_query) == FAILURE) { IBDEBUG(Could not bind input XSQLDA... (_php_ibase_exec)); goto _php_ibase_exec_error; } @@ -1961,7 +2003,7 @@ _php_ibase_var_pval(tmp, var-sqldata, var-sqltype, var-sqllen, var-sqlscale, flag); break; case SQL_BLOB: - if (flag PHP_IBASE_TEXT) { /* text ? */ + if (1 /*flag PHP_IBASE_TEXT*/) { /* text ? */ int stat; isc_blob_handle bl_handle = NULL; ISC_LONG max_len = 0, cur_len = 0; -- Jeremy Bettis [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]