Changeset 677 in svn


Ignore:
Timestamp:
2009-08-28T02:53:53Z (6 years ago)
Author:
Xuefer
Message:

merged r671 from trunk

Location:
branches/1.3
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

    • Property svn:mergeinfo changed
      /trunkmerged: 671
  • branches/1.3/utils.c

    r652 r677  
    840840}
    841841/* }}} */
     842
     843#ifndef ZEND_ENGINE_2_3
     844size_t zend_dirname(char *path, size_t len) /* {{{ */
     845{
     846    php_dirname(path, len);
     847    return strlen(path);
     848}
     849/* }}} */
     850
     851long zend_atol(const char *str, int str_len) /* {{{ */
     852{
     853    long retval;
     854
     855    if (!str_len) {
     856        str_len = strlen(str);
     857    }
     858
     859    retval = strtol(str, NULL, 0);
     860    if (str_len > 0) {
     861        switch (str[str_len - 1]) {
     862        case 'g':
     863        case 'G':
     864            retval *= 1024;
     865            /* break intentionally missing */
     866        case 'm':
     867        case 'M':
     868            retval *= 1024;
     869            /* break intentionally missing */
     870        case 'k':
     871        case 'K':
     872            retval *= 1024;
     873            break;
     874        }
     875    }
     876
     877    return retval;
     878}
     879/* }}} */
     880
     881#endif
  • branches/1.3/utils.h

    r641 r677  
    128128void xc_copy_internal_zend_constants(HashTable *target, HashTable *source);
    129129#endif
     130
     131#ifndef ZEND_ENGINE_2_3
     132size_t zend_dirname(char *path, size_t len);
     133long zend_atol(const char *str, int len);
     134#endif
     135
     136typedef struct {
     137    zend_uint size;
     138    zend_uint cnt;
     139    void *data;
     140} xc_vector_t;
     141
     142#define xc_vector_init(type, vector) do { \
     143    (vector)->cnt = 0;     \
     144    (vector)->size = 0;    \
     145    (vector)->data = NULL; \
     146} while (0)
     147
     148#define xc_vector_add(type, vector, value) do { \
     149    if ((vector)->cnt == (vector)->size) { \
     150        if ((vector)->size) { \
     151            (vector)->size <<= 1; \
     152            (vector)->data = erealloc((vector)->data, sizeof(type) * (vector)->size); \
     153        } \
     154        else { \
     155            (vector)->size = 8; \
     156            (vector)->data = emalloc(sizeof(type) * (vector)->size); \
     157        } \
     158    } \
     159    ((type *) (vector)->data)[(vector)->cnt++] = value; \
     160} while (0)
     161
     162static inline void *xc_vector_detach_impl(xc_vector_t *vector)
     163{
     164    void *data = vector->data;
     165    vector->data = NULL;
     166    vector->size = 0;
     167    vector->cnt = 0;
     168    return data;
     169}
     170
     171#define xc_vector_detach(type, vector) ((type *) xc_vector_detach_impl(vector))
     172
     173static inline void xc_vector_free_impl(xc_vector_t *vector TSRMLS_DC)
     174{
     175    if (vector->data) {
     176        efree(vector->data);
     177    }
     178    vector->size = 0;
     179    vector->cnt = 0;
     180}
     181
     182#define xc_vector_free(type, vector) xc_vector_free_impl(vector TSRMLS_CC)
     183
     184>>>>>>> .merge-right.r671
Note: See TracChangeset for help on using the changeset viewer.