@@ -36,38 +36,35 @@ static int php_git2_treebuilder_filter_cb(const git_tree_entry *entry, void *pay
36
36
37
37
38
38
/* {{{ proto resource git_treebuilder_create([resource $source])
39
- */
39
+ */
40
40
PHP_FUNCTION (git_treebuilder_create )
41
41
{
42
+ php_git2_t * result = NULL , * _source = NULL ;
43
+ git_treebuilder * out = NULL ;
42
44
zval * source = NULL ;
43
- php_git2_t * _source , * result ;
44
- git_treebuilder * builder ;
45
45
git_tree * tree = NULL ;
46
46
int error = 0 ;
47
47
48
48
if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC ,
49
49
"|r" , & source ) == FAILURE ) {
50
50
return ;
51
51
}
52
-
53
52
if (source != NULL ) {
54
- ZEND_FETCH_RESOURCE (_source , php_git2_t * , & source , -1 , PHP_GIT2_RESOURCE_NAME , git2_resource_handle );
55
53
tree = PHP_GIT2_V (_source , tree );
56
54
}
57
55
58
- error = git_treebuilder_create (& builder , tree );
56
+ ZEND_FETCH_RESOURCE (_source , php_git2_t * , & source , -1 , PHP_GIT2_RESOURCE_NAME , git2_resource_handle );
57
+ error = git_treebuilder_create (& out , tree );
59
58
if (php_git2_check_error (error , "git_treebuilder_create" TSRMLS_CC )) {
60
59
RETURN_FALSE ;
61
60
}
62
-
63
- PHP_GIT2_MAKE_RESOURCE (result );
64
- PHP_GIT2_V (result , treebuilder ) = builder ;
65
- result -> type = PHP_GIT2_TYPE_TREEBUILDER ;
66
- result -> resource_id = PHP_GIT2_LIST_INSERT (result , git2_resource_handle );
67
- result -> should_free_v = 1 ;
68
-
69
- ZVAL_RESOURCE (return_value , result -> resource_id );
61
+ if (php_git2_make_resource (& result , PHP_GIT2_TYPE_TREEBUILDER , out , 1 TSRMLS_CC )) {
62
+ RETURN_FALSE ;
63
+ }
64
+ ZVAL_RESOURCE (return_value , GIT2_RVAL_P (result ));
70
65
}
66
+ /* }}} */
67
+
71
68
72
69
/* {{{ proto void git_treebuilder_clear(bld)
73
70
*/
@@ -135,57 +132,47 @@ PHP_FUNCTION(git_treebuilder_get)
135
132
ZEND_FETCH_RESOURCE (_bld , php_git2_t * , & bld , -1 , PHP_GIT2_RESOURCE_NAME , git2_resource_handle );
136
133
entry = git_treebuilder_get (PHP_GIT2_V (_bld , treebuilder ), filename );
137
134
if (entry != NULL ) {
138
- PHP_GIT2_MAKE_RESOURCE (result );
139
- PHP_GIT2_V (result , tree_entry ) = entry ;
140
- result -> type = PHP_GIT2_TYPE_TREE_ENTRY ;
141
- result -> resource_id = PHP_GIT2_LIST_INSERT (result , git2_resource_handle );
142
- result -> should_free_v = 0 ;
143
-
135
+ if (php_git2_make_resource (& result , PHP_GIT2_TYPE_TREE_ENTRY , entry , 0 TSRMLS_CC )) {
136
+ RETURN_FALSE ;
137
+ }
144
138
ZVAL_RESOURCE (return_value , result -> resource_id );
145
139
} else {
146
140
RETURN_FALSE ;
147
141
}
148
142
}
149
143
150
- /* {{{ proto resource git_treebuilder_insert(bld, filename, id, filemode)
151
- */
144
+ /* {{{ proto resource git_treebuilder_insert(resource $ bld, string $ filename, string $ id, $ filemode)
145
+ */
152
146
PHP_FUNCTION (git_treebuilder_insert )
153
147
{
154
- zval * bld ;
155
- php_git2_t * _bld , * result ;
156
- char * filename = {0 };
157
- int filename_len ;
158
- char * id = {0 };
159
- int id_len ;
160
- long filemode ;
161
- const git_tree_entry * entry ;
162
- int error = 0 ;
163
- git_oid oid ;
148
+ php_git2_t * result = NULL , * _bld = NULL ;
149
+ git_tree_entry * out = NULL ;
150
+ zval * bld = NULL ;
151
+ char * filename = NULL , * id = NULL ;
152
+ int filename_len = 0 , id_len = 0 , error = 0 ;
153
+ git_oid __id = {0 };
154
+ long filemode = 0 ;
164
155
165
156
if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC ,
166
157
"rssl" , & bld , & filename , & filename_len , & id , & id_len , & filemode ) == FAILURE ) {
167
158
return ;
168
159
}
169
160
170
- if (git_oid_fromstrn (& oid , id , id_len ) != GIT_OK ) {
171
- return ;
172
- }
173
-
174
161
ZEND_FETCH_RESOURCE (_bld , php_git2_t * , & bld , -1 , PHP_GIT2_RESOURCE_NAME , git2_resource_handle );
175
- error = git_treebuilder_insert (& entry , PHP_GIT2_V (_bld , treebuilder ), filename , & oid , filemode );
176
-
177
- if (php_git2_check_error (error , "git_treebuilder_write" TSRMLS_CC )) {
162
+ if (git_oid_fromstrn (& __id , id , id_len )) {
178
163
RETURN_FALSE ;
179
164
}
180
-
181
- PHP_GIT2_MAKE_RESOURCE ( result );
182
- PHP_GIT2_V ( result , tree_entry ) = entry ;
183
- result -> type = PHP_GIT2_TYPE_TREE_ENTRY ;
184
- result -> resource_id = PHP_GIT2_LIST_INSERT ( result , git2_resource_handle );
185
- result -> should_free_v = 0 ;
186
-
187
- ZVAL_RESOURCE (return_value , result -> resource_id );
165
+ error = git_treebuilder_insert ( & out , PHP_GIT2_V ( _bld , treebuilder ), filename , & __id , filemode );
166
+ if ( php_git2_check_error ( error , "git_treebuilder_insert" TSRMLS_CC )) {
167
+ RETURN_FALSE ;
168
+ }
169
+ if ( php_git2_make_resource ( & result , PHP_GIT2_TYPE_TREE_ENTRY , out , 1 TSRMLS_CC )) {
170
+ RETURN_FALSE ;
171
+ }
172
+ ZVAL_RESOURCE (return_value , GIT2_RVAL_P ( result ) );
188
173
}
174
+ /* }}} */
175
+
189
176
190
177
/* {{{ proto long git_treebuilder_remove(bld, filename)
191
178
*/
0 commit comments