--- Begin Message ---
refere include file : sys/utsname.h !
You can see if the macro __USE_GNU is set the char returned are 
'domainname' else the char are '__domainname' #@\[@~\
You know this function can do a apache segfault ?!
Becarful cuz domainename doesn't exist on freebsd !

there is the current (PHP-4.2.0RC1) code on : ext/posix/posix.c

/* {{{ proto array posix_uname(void)
   Get system name (POSIX.1, 4.4.1) */
PHP_FUNCTION(posix_uname)
{
    struct utsname u;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE)
        return;

    if (uname(&u) < 0) {
        POSIX_G(last_error) = errno;
        RETURN_FALSE;
    }

    if (array_init(return_value) == FAILURE) {
        // TODO: Should we issue a warning here so we don't have ambiguity
        // with the above return value ?
        RETURN_FALSE;
    }

    add_assoc_string(return_value, "sysname",  u.sysname,  1);
    add_assoc_string(return_value, "nodename", u.nodename, 1);
    add_assoc_string(return_value, "release",  u.release,  1);
    add_assoc_string(return_value, "version",  u.version,  1);
    add_assoc_string(return_value, "machine",  u.machine,  1);
#ifdef _GNU_SOURCE    /* i'm okay */
    add_assoc_string(return_value, "domainname", u.domainname, 1); /* <- 
{|^@#\|^[#\ */
#endif
}
/* }}} */

/*--------------------------------------------------------Fixed 
code--------------------------------------------------*/

/* {{{ proto array posix_uname(void)
   Get system name (POSIX.1, 4.4.1) */
PHP_FUNCTION(posix_uname)
{
    struct utsname u;

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE)
        return;

    if (uname(&u) < 0) {
        POSIX_G(last_error) = errno;
        RETURN_FALSE;
    }

    if (array_init(return_value) == FAILURE) {
        // TODO: Should we issue a warning here so we don't have ambiguity
        // with the above return value ?
        RETURN_FALSE;
    }

    add_assoc_string(return_value, "sysname",  u.sysname,  1);
    add_assoc_string(return_value, "nodename", u.nodename, 1);
    add_assoc_string(return_value, "release",  u.release,  1);
    add_assoc_string(return_value, "version",  u.version,  1);
    add_assoc_string(return_value, "machine",  u.machine,  1);
#ifdef _GNU_SOURCE
    #ifdef __USE_GNU
        add_assoc_string(return_value, "domainname", u.domainname, 1);
    #else
        add_assoc_string(return_value, "domainname", u.__domainname, 1);
    #endif
#endif
}
/* }}} */


--- End Message ---
-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to