Changeset 677
- Timestamp:
- 2009-08-28T04:53:53+02:00 (4 years ago)
- Location:
- branches/1.3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/1.3
-
branches/1.3/utils.c
r652 r677 840 840 } 841 841 /* }}} */ 842 843 #ifndef ZEND_ENGINE_2_3 844 size_t zend_dirname(char *path, size_t len) /* {{{ */ 845 { 846 php_dirname(path, len); 847 return strlen(path); 848 } 849 /* }}} */ 850 851 long 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 128 128 void xc_copy_internal_zend_constants(HashTable *target, HashTable *source); 129 129 #endif 130 131 #ifndef ZEND_ENGINE_2_3 132 size_t zend_dirname(char *path, size_t len); 133 long zend_atol(const char *str, int len); 134 #endif 135 136 typedef 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 162 static 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 173 static 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.

