Hello D.,
for example look here: http://talks.somabo.de
Saturday, February 11, 2006, 5:32:33 PM, you wrote:
> On Feb 11, 2006, at 07:33 , Marcus Boerger wrote:
>> Hello D.,
>>
>> you are using the old parameter parsing api which is deprecated for
>> very long now. Maybe changing to the new one will fix your problems or
>> find you more help.
> I'm using the documentation that Wez directed me too about 8 months
> ago, where's the newer?
>> marcus
>>
>> Saturday, February 11, 2006, 1:24:04 PM, you wrote:
>>
>>> I've been coding modules using the current available API and I've
>>> recently tried compiling PHP-5.1.2 for Apache 2.0 and I'm not
>>> obtaining the expected results when a function that should return an
>>> array but doesn't.
>>
>>> Compiling PHP 5.1.2 (or any previous version) for Apache 1.3.x the
>>> module works properly and the issue only occurs when compiling for
>>> 2.0.
>>
>>> I'm not sure if there are API changes that are not in the current
>>> documentation so if someone could examine the following code and sees
>>> something obvious I'd appreciate it if you'd point it out.
>>
>>> -- Dale
>>
>>
>>
>>> PHP_FUNCTION(ram_disk_file_load)
>>> {
>>> pval *file, *args, *p_argc;
>>> pval *entry;
>>> zval *p_prcalc;
>>> HashTable *args_arr;
>>> int i, xsize, ysize, argc;
>>> double ymin,ymax;
>>> char **argv, **prcalc;
>>
>>> /*
>>> * xsize is the number of bytes per sector
>>> * ysize is the number of bytes (in kb) for the ramdisk.
>>> * argv[0] is the command to perform.
>>> * argv[1] is either 'disk' mode or 'raw' mode
>>> * argv[2] contains the file with the disk images contents
>>> to load
>>> into it
>>> */
>>
>>> if ( disk_test_error() )
>>> disk_clear_error();
>>
>>> if ( (ZEND_NUM_ARGS() >= 3 && ZEND_NUM_ARGS() <= 6) &&
>>> zend_get_parameters(ht, 3, &file, &args, &p_argc) == SUCCESS)
>>> {
>>> if ( args->type != IS_ARRAY )
>>> {
>>> php_error(E_WARNING, "2nd Variable passed
>>> to disk_config is not an
>>> array!\n");
>>> RETURN_FALSE;
>>> }
>>
>>> convert_to_long(p_argc);
>>> convert_to_string(file);
>>
>>> convert_to_array(args);
>>> args_arr = args->value.ht;
>>
>>> // here we want to raw copy our saved content file
>>> to the new ram disk
>>> argc = p_argc->value.lval + 3;
>>> argv = (char **) emalloc(argc * sizeof(char *));
>>> argv[0] = "init";
>>> argv[1] = estrdup("raw");
>>> argv[2] = estrdup(file->value.str.val);
>>
>>> for (i = 3; i < argc; i++)
>>> {
>>> pval **dataptr;
>>
>>> if ( zend_hash_get_current_data(args_arr,
>>> (void *) &dataptr) ==
>>> FAILURE )
>>> continue;
>>
>>> entry = *dataptr;
>>
>>> if ( entry->type != IS_STRING )
>>> convert_to_string(entry);
>>
>>> argv[i] = estrdup(entry->value.str.val);
>>
>>> if ( i < argc )
>>> zend_hash_move_forward(args_arr);
>>> }
>>
>>> optind = 0; opterr = 0;
>>> if (size _config(argc-1, &argv[1], &prcalc,
>>> &xsize, &ysize) != -1 )
>>> {
>>> array_init(return_value);
>>> add_assoc_long(return_value, "xsize", xsize);
>>> add_assoc_long(return_value, "ysize", ysize);
>>
>>> MAKE_STD_ZVAL(p_prcalc);
>>> array_init(p_prcalc);
>>
>>> if (prcalc)
>>> {
>>> for (i = 0; prcalc[i]; i++)
>>> {
>>> add_next_index_string
>>> (p_prcalc, prcalc[i], 1);
>>> free(prcalc[i]);
>>> }
>>> free(prcalc);
>>> }
>>> zend_hash_update(return_value->value.ht,
>>> "prcalc", sizeof("prcalc"),
>>> (void *)
>>> &p_prcalc, sizeof(zval *), NULL);
>>> }
>>> else
>>> {
>>> RETVAL_FALSE; // PROBLEM - FAILED TO
>>> PERFORM THE TASK
>>> }
>>> for (i = 1; i < argc; i++)
>>> efree(argv[i]);
>>
>>> efree(argv);
>>> }
>>> else
>>> {
>>> WRONG_PARAM_COUNT;
>>> }
>>> return;
>>> }
>>
>>
>>
>>
>> Best regards,
>> Marcus
> -- Dale
Best regards,
Marcus
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php