Re: PHP extension writing

From: Date: Sat, 24 Sep 2016 16:51:40 +0000
Subject: Re: PHP extension writing
References: 1 2 3  Groups: php.general 
Request: Send a blank email to php-general+get-325744@lists.php.net to get a copy of this message
Hi Torsten! On 24.09.2016 at 18:31, Torsten Rosenberger wrote: > Am Samstag, den 24.09.2016, 17:46 +0200 schrieb Christoph M. Becker: > >> On 24.09.2016 at 16:29, Torsten Rosenberger wrote: >> >>> PHP_FUNCTION(i2c_read_value) >>> { >>> int arg_len; >>> unsigned char reg; >>> unsigned short res; >>> >>> if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &reg, >>> &arg_len) == FAILURE){ >> >> That looks wrong. reg should be declared as >> char *. > > i have seen “s”: string, expects char* and int. Indeed[1]. But all output parameters of zend_parse_parameters() have to passed as pointers (cf. &arg_len). > > but reg should be int it is a hex number for the i2c bus. Then you should parse for "l", and handle out-of-range values by throwing an error. Otherwise the API is pretty fragile at best; for instance, calling i2c_read_value('') might result in arbitrary behavior. >> There might be a permission or working directory issue. > > you are right! apache2 was not able to access /dev/i2c-1 so I add the > apache2 user to the i2c group but also had to change the acces mod to > the file. > > now it works > Thanks's a lot! Fine. You're welcome. [1] <http://php.net/manual/en/internals2.funcs.php> -- Christoph M. Becker

« previous php.general (#325744) next »