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);
 



-- 
PHP CVS 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]

Reply via email to