cvs: php4 /ext/fdf fdf.c

From: Date: Thu, 05 Apr 2001 05:38:19 +0000
Subject: cvs: php4 /ext/fdf fdf.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4990@lists.php.net to get a copy of this message
sniper Wed Apr 4 22:38:19 2001 EDT Modified files: /php4/ext/fdf fdf.c Log: Fix bugs: #10157, #7549 Index: php4/ext/fdf/fdf.c diff -u php4/ext/fdf/fdf.c:1.42 php4/ext/fdf/fdf.c:1.43 --- php4/ext/fdf/fdf.c:1.42 Sun Mar 18 01:25:40 2001 +++ php4/ext/fdf/fdf.c Wed Apr 4 22:38:18 2001 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: fdf.c,v 1.42 2001/03/18 09:25:40 sniper Exp $ */ +/* $Id: fdf.c,v 1.43 2001/04/05 05:38:18 sniper Exp $ */ /* FdfTk lib 2.0 is a Complete C/C++ FDF Toolkit available from http://beta1.adobe.com/ada/acrosdk/forms.html. */ @@ -337,49 +337,46 @@ /* {{{ proto string fdf_next_field_name(int fdfdoc [, string fieldname]) Gets the name of the next field name or the first field name */ -PHP_FUNCTION(fdf_next_field_name) { - pval **argv[2]; - int id, type, argc; - ASInt32 nr; - char *buffer, *fieldname; +PHP_FUNCTION(fdf_next_field_name) +{ + zval **fdfdoc, **field; + int id, type, argc=ZEND_NUM_ARGS(); + ASInt32 length=256, nr; + char *buffer=NULL, *fieldname=NULL; FDFDoc fdf; FDFErc err; FDF_TLS_VARS; - argc = ZEND_NUM_ARGS(); - if((argc > 2) || (argc < 1)) + if (argc > 2 || argc < 1 || zend_get_parameters_ex(argc, &fdfdoc, &field) == FAILURE) { WRONG_PARAM_COUNT; - - if (zend_get_parameters_array_ex(argc, argv) == FAILURE) { - WRONG_PARAM_COUNT; } - convert_to_long_ex(argv[0]); - if(argc == 2) { - convert_to_string_ex(argv[1]); - fieldname = (*argv[1])->value.str.val; - } else { - fieldname = NULL; - } - id=(*argv[0])->value.lval; + convert_to_long_ex(fdfdoc); + id=Z_LVAL_PP(fdfdoc); fdf = zend_list_find(id,&type); if(!fdf || type!=FDF_GLOBAL(le_fdf)) { php_error(E_WARNING,"Unable to find file identifier %d",id); RETURN_FALSE; } - err = FDFNextFieldName(fdf, fieldname, NULL, 0, &nr); - if(err != FDFErcOK) - printf("Aiii, error\n"); - if(nr == 0) - RETURN_STRING(empty_string, 1); - - buffer = emalloc(nr); - err = FDFNextFieldName(fdf, fieldname, buffer, nr, &nr); - if(err != FDFErcOK) - printf("Aiii, error\n"); + if(argc == 2) { + convert_to_string_ex(field); + fieldname = Z_STRVAL_PP(field); + } - RETURN_STRING(buffer, 0); + buffer = emalloc(length); + err = FDFNextFieldName(fdf, fieldname, buffer, length-1, &nr); + if(err == FDFErcBufTooShort && nr > 0 ) { + buffer = erealloc(buffer,nr+1); + err = FDFNextFieldName(fdf, fieldname, buffer, length-1,&nr); + } + if(err != FDFErcOK) { + efree(buffer); + php_error(E_WARNING,"Unable to get next fieldname"); + RETURN_FALSE; + } + RETVAL_STRING(buffer, 1); + efree(buffer); } /* }}} */ @@ -768,7 +765,7 @@ { FILE *fp; FDFDoc theFDF; - char *name=NULL,*value=NULL,*p; + char *name=NULL,*value=NULL,*p, *data; int name_len=0,value_len=0; char *lastfieldname =NULL; char *filename = NULL; @@ -785,6 +782,10 @@ } fwrite(SG(request_info).post_data,SG(request_info).post_data_length,1,fp); fclose(fp); + + /* Set HTTP_FDF_DATA variable */ + data = estrndup(SG(request_info).post_data,SG(request_info).post_data_length); + SET_VAR_STRINGL("HTTP_FDF_DATA", data, SG(request_info).post_data_length); err = FDFOpen(filename,0,&theFDF);

« previous php.cvs (#4990) next »