diff --git a/src/backend.c b/src/backend.c index c95a6741ae..ad1d19d913 100644 --- a/src/backend.c +++ b/src/backend.c @@ -25,10 +25,11 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_backend_class_entry; +zend_class_entry *git_backend_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_backend_read, 0, 0, 1) ZEND_ARG_INFO(0, key) @@ -60,13 +61,14 @@ int php_git_backend__exists(git_odb_backend *_backend, const git_oid *oid) TSRMLS_FETCH(); php_git_backend_internal *object = (php_git_backend_internal *)_backend; char out[GIT_OID_HEXSZ+1] = {0}; - git_oid_to_string(out,GIT_OID_HEXSZ+1,oid); zval *retval; zval *params[1]; zval func; int result; + git_oid_to_string(out,GIT_OID_HEXSZ+1,oid); + MAKE_STD_ZVAL(retval); ZVAL_NULL(retval); ZVAL_STRING(&func,"exists", 1); @@ -97,19 +99,22 @@ int php_git_backend__write(git_oid *id, git_odb_backend *_backend, git_rawobj *o zval *retval; zval *params[1]; zval func; + php_git_rawobject_t *raw; + MAKE_STD_ZVAL(retval); ZVAL_NULL(retval); ZVAL_STRING(&func,"write", 1); MAKE_STD_ZVAL(params[0]); - object_init_ex(params[0],git_rawobject_class_entry); - + object_init_ex(params[0], git_rawobject_class_entry); + add_property_stringl_ex(params[0],"data",sizeof("data"),obj->data,obj->len,1 TSRMLS_CC); add_property_long(params[0],"type",obj->type); add_property_long(params[0],"len",obj->len); - php_git_rawobject_t *raw = (php_git_rawobject_t *) zend_object_store_get_object(params[0] TSRMLS_CC); + + raw = (php_git_rawobject_t *) zend_object_store_get_object(params[0] TSRMLS_CC); raw->object = obj; if(call_user_function(NULL,&object->self,&func,retval,1,params TSRMLS_CC) == FAILURE){ @@ -123,7 +128,7 @@ int php_git_backend__write(git_oid *id, git_odb_backend *_backend, git_rawobj *o }else{ ret = GIT_ERROR; } - + zval_ptr_dtor(&retval); //do not free Git\RawObject here. //zval_ptr_dtor(¶ms[0]); @@ -135,12 +140,14 @@ int php_git_backend__read(git_rawobj *obj, git_odb_backend *_backend, const git_ { TSRMLS_FETCH(); php_git_backend_internal *object = (php_git_backend_internal *)_backend; - char out[GIT_OID_HEXSZ+1] = {0}; - git_oid_to_string(out,GIT_OID_HEXSZ+1,oid); + char out[GIT_OID_HEXSZ+1] = {0}; zval *retval; zval *params[1]; zval func; + zval *str; + + git_oid_to_string(out,GIT_OID_HEXSZ+1,oid); MAKE_STD_ZVAL(retval); ZVAL_NULL(retval); @@ -161,18 +168,18 @@ int php_git_backend__read(git_rawobj *obj, git_odb_backend *_backend, const git_ return GIT_ENOTFOUND; } - zval *str = zend_read_property(git_rawobject_class_entry, retval,"data",4, 0 TSRMLS_CC); - + str = zend_read_property(git_rawobject_class_entry, retval,"data",4, 0 TSRMLS_CC); + // do not use ecalloc. obj->data will free by git_rawobject_close() obj->data = calloc(1,strlen(Z_STRVAL_P(str))); obj->len = strlen(Z_STRVAL_P(str)); obj->type = GIT_OBJ_BLOB; memcpy(obj->data, Z_STRVAL_P(str),obj->len); - + zval_ptr_dtor(&retval); zval_ptr_dtor(¶ms[0]); zval_dtor(&func); - + return GIT_SUCCESS; } int php_git_backend__read_header(git_rawobj *obj, git_odb_backend *_backend, const git_oid *oid) @@ -180,11 +187,13 @@ int php_git_backend__read_header(git_rawobj *obj, git_odb_backend *_backend, con TSRMLS_FETCH(); char out[GIT_OID_HEXSZ+1] = {0} ; php_git_backend_internal *object = (php_git_backend_internal *)_backend; - git_oid_to_string(out,GIT_OID_HEXSZ+1,oid); zval *retval; zval *params[1]; zval func; + zval *str; + + git_oid_to_string(out,GIT_OID_HEXSZ+1,oid); MAKE_STD_ZVAL(retval); ZVAL_NULL(retval); @@ -205,20 +214,20 @@ int php_git_backend__read_header(git_rawobj *obj, git_odb_backend *_backend, con return GIT_ENOTFOUND; } - zval *str = zend_read_property(git_rawobject_class_entry, retval,"data",sizeof("data"), 0 TSRMLS_CC); - + str = zend_read_property(git_rawobject_class_entry, retval,"data",sizeof("data"), 0 TSRMLS_CC); + obj->data = NULL; obj->len = strlen(Z_STRVAL_P(str)); obj->type = GIT_OBJ_BLOB; - + zval_ptr_dtor(&retval); zval_ptr_dtor(¶ms[0]); zval_dtor(&func); - + return GIT_SUCCESS; } -void php_git_backend__free(git_odb_backend *backend) +int php_git_backend__free(git_odb_backend *backend) { TSRMLS_FETCH(); php_git_backend_internal *object = (php_git_backend_internal *)backend; @@ -239,6 +248,8 @@ void php_git_backend__free(git_odb_backend *backend) zval_ptr_dtor(&retval); zval_dtor(&func); + + return 1; } zend_object_value php_git_backend_new(zend_class_entry *ce TSRMLS_DC) @@ -278,7 +289,7 @@ PHP_METHOD(git_backend, __construct) this->backend = internal; } -PHPAPI function_entry php_git_backend_methods[] = { +static zend_function_entry php_git_backend_methods[] = { PHP_ME(git_backend, __construct, NULL, ZEND_ACC_PUBLIC) PHP_ABSTRACT_ME(git_backend, read, arginfo_git_backend_read) PHP_ABSTRACT_ME(git_backend, read_header, arginfo_git_backend_read_header) diff --git a/src/blob.c b/src/blob.c index a46e066e70..597732601f 100644 --- a/src/blob.c +++ b/src/blob.c @@ -28,7 +28,7 @@ #include #include -PHPAPI zend_class_entry *git_blob_class_entry; +zend_class_entry *git_blob_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_blob__construct, 0, 0, 1) ZEND_ARG_INFO(0, repository) @@ -41,7 +41,7 @@ ZEND_END_ARG_INFO() static void php_git_blob_free_storage(php_git_blob_t *obj TSRMLS_DC) { zend_object_std_dtor(&obj->zo TSRMLS_CC); - + //obj->object will free by git_repository. obj->object = NULL; efree(obj); @@ -49,21 +49,21 @@ static void php_git_blob_free_storage(php_git_blob_t *obj TSRMLS_DC) zend_object_value php_git_blob_new(zend_class_entry *ce TSRMLS_DC) { - zend_object_value retval; - php_git_repository_t *obj; - zval *tmp; + zend_object_value retval; + php_git_repository_t *obj; + zval *tmp; - obj = ecalloc(1, sizeof(*obj)); - zend_object_std_init( &obj->zo, ce TSRMLS_CC ); - zend_hash_copy(obj->zo.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); + obj = ecalloc(1, sizeof(*obj)); + zend_object_std_init( &obj->zo, ce TSRMLS_CC ); + zend_hash_copy(obj->zo.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); - retval.handle = zend_objects_store_put(obj, + retval.handle = zend_objects_store_put(obj, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_git_blob_free_storage, NULL TSRMLS_CC); - retval.handlers = zend_get_std_object_handlers(); + retval.handlers = zend_get_std_object_handlers(); - return retval; + return retval; } @@ -71,16 +71,19 @@ zend_object_value php_git_blob_new(zend_class_entry *ce TSRMLS_DC) PHP_METHOD(git_blob, __construct) { zval *z_repository; + php_git_repository_t *git; + php_git_blob_t *obj; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &z_repository) == FAILURE){ return; } - php_git_repository_t *git = (php_git_repository_t *) zend_object_store_get_object(z_repository TSRMLS_CC); - php_git_blob_t *obj = (php_git_blob_t *) zend_object_store_get_object(getThis() TSRMLS_CC); - - int ret = git_blob_new(&obj->object,git->repository); + git = (php_git_repository_t *) zend_object_store_get_object(z_repository TSRMLS_CC); + obj = (php_git_blob_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + + ret = git_blob_new(&obj->object,git->repository); if(ret != GIT_SUCCESS){ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Can't create new blob!"); @@ -93,15 +96,17 @@ PHP_METHOD(git_blob, setContent) { char *string; size_t string_len = 0; + php_git_blob_t *obj; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &string, &string_len) == FAILURE){ return; } - php_git_blob_t *obj = (php_git_blob_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + obj = (php_git_blob_t *) zend_object_store_get_object(getThis() TSRMLS_CC); - int ret = git_blob_set_rawcontent(obj->object,string, string_len); + ret = git_blob_set_rawcontent(obj->object,string, string_len); if(ret != GIT_SUCCESS){ php_error_docref(NULL TSRMLS_CC, E_WARNING,"Can't set content!"); return; @@ -109,7 +114,7 @@ PHP_METHOD(git_blob, setContent) add_property_string_ex(getThis(), "data", sizeof("data"),string, 1 TSRMLS_CC); } -PHPAPI function_entry php_git_blob_methods[] = { +zend_function_entry php_git_blob_methods[] = { PHP_ME(git_blob, __construct, arginfo_git_blob__construct, ZEND_ACC_PUBLIC) PHP_ME(git_blob, setContent, arginfo_git_blob_set_content, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} @@ -121,6 +126,6 @@ void git_init_blob(TSRMLS_D) INIT_NS_CLASS_ENTRY(ce, PHP_GIT_NS,"Blob", php_git_blob_methods); git_blob_class_entry = zend_register_internal_class_ex(&ce, git_object_class_entry, NULL TSRMLS_CC); - git_blob_class_entry->create_object = php_git_blob_new; + git_blob_class_entry->create_object = php_git_blob_new; } \ No newline at end of file diff --git a/src/commit.c b/src/commit.c index 74cec9b488..abd608945d 100644 --- a/src/commit.c +++ b/src/commit.c @@ -31,7 +31,7 @@ extern void create_tree_entry_from_entry(zval **object, git_tree_entry *entry); extern zend_object_value php_git_repository_new(zend_class_entry *ce TSRMLS_DC); -PHPAPI zend_class_entry *git_commit_class_entry; +zend_class_entry *git_commit_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_commit__construct, 0, 0, 1) ZEND_ARG_INFO(0, repository) @@ -56,7 +56,7 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_git_commit_set_message, 0, 0, 1) ZEND_ARG_INFO(0, message) ZEND_END_ARG_INFO() - + ZEND_BEGIN_ARG_INFO_EX(arginfo_git_commit_get_parent, 0, 0, 1) ZEND_ARG_INFO(0, offset) ZEND_END_ARG_INFO() @@ -64,7 +64,7 @@ ZEND_END_ARG_INFO() static void php_git_commit_free_storage(php_git_commit_t *obj TSRMLS_DC) { zend_object_std_dtor(&obj->zo TSRMLS_CC); - + //RepositoryでFreeされるよ obj->object = NULL; obj->repository = NULL; @@ -73,20 +73,20 @@ static void php_git_commit_free_storage(php_git_commit_t *obj TSRMLS_DC) zend_object_value php_git_commit_new(zend_class_entry *ce TSRMLS_DC) { - zend_object_value retval; - php_git_commit_t *obj; - zval *tmp; + zend_object_value retval; + php_git_commit_t *obj; + zval *tmp; - obj = ecalloc(1, sizeof(*obj)); - zend_object_std_init( &obj->zo, ce TSRMLS_CC ); - zend_hash_copy(obj->zo.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); + obj = ecalloc(1, sizeof(*obj)); + zend_object_std_init( &obj->zo, ce TSRMLS_CC ); + zend_hash_copy(obj->zo.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); - retval.handle = zend_objects_store_put(obj, + retval.handle = zend_objects_store_put(obj, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_git_commit_free_storage, NULL TSRMLS_CC); - retval.handlers = zend_get_std_object_handlers(); - return retval; + retval.handlers = zend_get_std_object_handlers(); + return retval; } PHP_METHOD(git_commit, __construct) @@ -96,16 +96,18 @@ PHP_METHOD(git_commit, __construct) git_repository *repository; zval *object = getThis(); int ret; + php_git_commit_t *cobj; + php_git_repository_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &z_repository) == FAILURE){ return; } object_init_ex(object, git_commit_class_entry); - php_git_commit_t *cobj = (php_git_commit_t *) zend_object_store_get_object(object TSRMLS_CC); - php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(z_repository TSRMLS_CC); + cobj = (php_git_commit_t *) zend_object_store_get_object(object TSRMLS_CC); + myobj = (php_git_repository_t *) zend_object_store_get_object(z_repository TSRMLS_CC); + - ret = git_commit_new(&commit,myobj->repository); if(ret != GIT_SUCCESS){ //FIXME @@ -208,13 +210,14 @@ PHP_METHOD(git_commit, setTree) git_repository *repository; git_object *git_obj; int attr; + php_git_commit_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ return; } - php_git_commit_t *myobj = (php_git_commit_t *) zend_object_store_get_object(object TSRMLS_CC); + myobj = (php_git_commit_t *) zend_object_store_get_object(object TSRMLS_CC); repository = myobj->repository; git_oid_mkstr(&oid, hash); @@ -225,11 +228,7 @@ PHP_METHOD(git_commit, setTree) //コピペ zval *git_tree; zval *entries; - git_tree_entry *entry; - MAKE_STD_ZVAL(git_tree); - MAKE_STD_ZVAL(entries); - array_init(entries); - object_init_ex(git_tree, git_tree_class_entry); + git_tree_entry *entry; int r = git_tree_entrycount(tree); int i = 0; @@ -237,6 +236,11 @@ PHP_METHOD(git_commit, setTree) char *offset; const git_oid *moid; zval *array_ptr; + + MAKE_STD_ZVAL(git_tree); + MAKE_STD_ZVAL(entries); + array_init(entries); + object_init_ex(git_tree, git_tree_class_entry); for(i; i < r; i++){ entry = git_tree_entry_byindex(tree,i); @@ -285,7 +289,7 @@ PHP_METHOD(git_commit, getMessage) { php_git_commit_t *this = (php_git_commit_t *) zend_object_store_get_object(getThis() TSRMLS_CC); const char *message; - + message = git_commit_message(this->object); RETURN_STRING(message,1); } @@ -294,7 +298,7 @@ PHP_METHOD(git_commit, getShortMessage) { php_git_commit_t *this = (php_git_commit_t *) zend_object_store_get_object(getThis() TSRMLS_CC); const char *message; - + message = git_commit_message_short(this->object); RETURN_STRING(message,1); } @@ -303,23 +307,26 @@ PHP_METHOD(git_commit, getTree) { php_git_commit_t *this = (php_git_commit_t *) zend_object_store_get_object(getThis() TSRMLS_CC); git_tree *ref_tree; + const git_oid *oid; + git_tree *tree; + int ret; + git_oid *tree_oid; + zval *git_tree; + zval *entry; + php_git_tree_t *tobj; + git_commit_tree(&ref_tree, this->object); - const git_oid *oid = git_object_id((git_object*)ref_tree); + oid = git_object_id((git_object*)ref_tree); - git_tree *tree; - int ret = git_object_lookup((git_object **)&tree, git_object_owner((git_object*)this->object),oid, GIT_OBJ_TREE); + ret = git_object_lookup((git_object **)&tree, git_object_owner((git_object*)this->object),oid, GIT_OBJ_TREE); if(ret != GIT_SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "specified tree not found."); return; - } - - git_oid *tree_oid; - zval *git_tree; - zval *entry; + } MAKE_STD_ZVAL(git_tree); object_init_ex(git_tree, git_tree_class_entry); - php_git_tree_t *tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); + tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); tobj->object = tree; /* @@ -360,14 +367,14 @@ PHP_METHOD(git_commit, getParent) "|l", &offset) == FAILURE){ return; } - + ret = git_commit_parent(&commit, this->object,offset); if(ret != GIT_SUCCESS){ php_error_docref(NULL TSRMLS_CC, E_ERROR, "specified offset not found."); RETURN_FALSE; } - + MAKE_STD_ZVAL(zcommit); object_init_ex(zcommit,git_commit_class_entry); obj = (php_git_commit_t *) zend_object_store_get_object(zcommit TSRMLS_CC); @@ -375,7 +382,7 @@ PHP_METHOD(git_commit, getParent) create_signature_from_commit(&author, git_commit_author(obj->object)); create_signature_from_commit(&committer, git_commit_committer(obj->object)); - + add_property_zval(zcommit,"author", author); add_property_zval(zcommit,"committer", committer); @@ -386,7 +393,7 @@ PHP_METHOD(git_commit, getParent) efree(committer); } -PHPAPI function_entry php_git_commit_methods[] = { +static zend_function_entry php_git_commit_methods[] = { PHP_ME(git_commit, __construct, arginfo_git_commit__construct, ZEND_ACC_PUBLIC) PHP_ME(git_commit, setTree, arginfo_git_commit_set_tree, ZEND_ACC_PUBLIC) PHP_ME(git_commit, getTree, NULL, ZEND_ACC_PUBLIC) @@ -408,7 +415,7 @@ void git_init_commit(TSRMLS_C) INIT_NS_CLASS_ENTRY(git_commit_ce, PHP_GIT_NS,"Commit", php_git_commit_methods); git_commit_class_entry = zend_register_internal_class_ex(&git_commit_ce,git_object_class_entry,NULL TSRMLS_CC); - git_commit_class_entry->create_object = php_git_commit_new; + git_commit_class_entry->create_object = php_git_commit_new; zend_declare_property_null(git_commit_class_entry, "author", sizeof("author")-1, ZEND_ACC_PUBLIC TSRMLS_CC); zend_declare_property_null(git_commit_class_entry, "committer",sizeof("committer")-1, ZEND_ACC_PUBLIC TSRMLS_CC); } \ No newline at end of file diff --git a/src/config.w32 b/src/config.w32 new file mode 100644 index 0000000000..843afa7f91 --- /dev/null +++ b/src/config.w32 @@ -0,0 +1,16 @@ +// $Id$ +// vim:ft=javascript + +ARG_ENABLE("git", "for git support", "no"); + +if (PHP_GIT != "no") { + if (CHECK_HEADER_ADD_INCLUDE("git2.h", "CFLAGS_GIT", PHP_GIT) && + CHECK_LIB("git2.lib", "git", PHP_GIT) && + CHECK_LIB("libgit2.lib", "git", PHP_GIT) + ) { + AC_DEFINE('HAVE_GIT', 1); + EXTENSION('git', 'php_git.c walker.c tree_iterator.c tree_entry.c tree.c tag.c signature.c repository.c reference_manager.c reference.c rawobject.c odb.c object.c index_iterator.c index_entry.c index.c commit.c blob.c backend.c'); + } else { + WARNING("phpgit not enabled; libraries and/or headers not found"); + } +} \ No newline at end of file diff --git a/src/index.c b/src/index.c index 9b3b1ed787..8f127ee35d 100644 --- a/src/index.c +++ b/src/index.c @@ -25,11 +25,12 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_index_class_entry; -PHPAPI zend_class_entry *git_index_iterator_class_entry; +zend_class_entry *git_index_class_entry; +zend_class_entry *git_index_iterator_class_entry; static void php_git_index_free_storage(php_git_index_t *obj TSRMLS_DC) { @@ -91,9 +92,9 @@ ZEND_END_ARG_INFO() void php_git_index_entry_create(zval **index, git_index_entry *entry) { - TSRMLS_FETCH(); - MAKE_STD_ZVAL(*index); + TSRMLS_FETCH(); char oid[GIT_OID_HEXSZ+1] = {0}; + MAKE_STD_ZVAL(*index); object_init_ex(*index,git_index_entry_class_entry); git_oid_to_string(oid,GIT_OID_HEXSZ+1,&entry->oid); @@ -127,13 +128,14 @@ PHP_METHOD(git_index, find) git_index *index = NULL; git_index_entry *entry; zval *z_git_index_entry; + php_git_index_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, &path_len) == FAILURE){ return; } - php_git_index_t *myobj = (php_git_index_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + myobj = (php_git_index_t *) zend_object_store_get_object(getThis() TSRMLS_CC); index = myobj->index; offset = git_index_find(index,path); @@ -175,20 +177,22 @@ PHP_METHOD(git_index, add) int path_len = 0; git_index *index = NULL; long stage = 0; + php_git_index_t *myobj; + int success; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|l", &path, &path_len, &stage) == FAILURE){ return; } - php_git_index_t *myobj = (php_git_index_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + myobj = (php_git_index_t *) zend_object_store_get_object(getThis() TSRMLS_CC); index = myobj->index; //FIXME: examine stage value. // 0 => new file // 1 => deleted ? // 2 => ? - int success = git_index_add(index,path,stage); + success = git_index_add(index,path,stage); if(success != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "can't add specified index."); @@ -203,20 +207,22 @@ PHP_METHOD(git_index, remove) php_git_index_t *this = (php_git_index_t *) zend_object_store_get_object(getThis() TSRMLS_CC); char *path; int path_len = 0; + int offset; + int result; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, &path_len) == FAILURE){ return; } - int offset = git_index_find(this->index,path); + offset = git_index_find(this->index,path); if(offset < 0){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "specified path does not exist."); RETURN_FALSE; } - int result = git_index_remove(this->index, offset); + result = git_index_remove(this->index, offset); if(result != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "specified offset does not exist."); @@ -254,10 +260,11 @@ PHP_METHOD(git_index, getIterator) { php_git_index_t *this = (php_git_index_t *) zend_object_store_get_object(getThis() TSRMLS_CC); zval *iterator; + php_git_index_iterator_t *obj; MAKE_STD_ZVAL(iterator); object_init_ex(iterator,git_index_iterator_class_entry); - php_git_index_iterator_t *obj = (php_git_index_iterator_t *) zend_object_store_get_object(iterator TSRMLS_CC); + obj = (php_git_index_iterator_t *) zend_object_store_get_object(iterator TSRMLS_CC); obj->index = this->index; obj->offset = 0; RETURN_ZVAL(iterator,0,0); @@ -317,7 +324,7 @@ PHP_METHOD(git_index, insert) } */ -PHPAPI function_entry php_git_index_methods[] = { +static zend_function_entry php_git_index_methods[] = { //PHP_ME(git_index, __construct, arginfo_git_index__construct,ZEND_ACC_PUBLIC) PHP_ME(git_index, getEntry, arginfo_git_index_get_entry, ZEND_ACC_PUBLIC) PHP_ME(git_index, find, arginfo_git_index_find, ZEND_ACC_PUBLIC) diff --git a/src/index_entry.c b/src/index_entry.c index f1a21bc2a8..755f10ef52 100644 --- a/src/index_entry.c +++ b/src/index_entry.c @@ -28,7 +28,7 @@ #include #include -PHPAPI zend_class_entry *git_index_entry_class_entry; +zend_class_entry *git_index_entry_class_entry; static void php_git_index_entry_free_storage(php_git_index_entry_t *obj TSRMLS_DC) { @@ -56,7 +56,7 @@ zend_object_value php_git_index_entry_new(zend_class_entry *ce TSRMLS_DC) return retval; } -PHPAPI function_entry php_git_index_entry_methods[] = { +static zend_function_entry php_git_index_entry_methods[] = { {NULL, NULL, NULL} }; diff --git a/src/index_iterator.c b/src/index_iterator.c index 08477cdc59..2d72309c9b 100644 --- a/src/index_iterator.c +++ b/src/index_iterator.c @@ -25,11 +25,12 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_index_iterator_class_entry; +zend_class_entry *git_index_iterator_class_entry; extern void php_git_index_entry_create(zval **index, git_index_entry *entry); static void php_git_index_iterator_free_storage(php_git_index_iterator_t *obj TSRMLS_DC) @@ -112,18 +113,19 @@ PHP_METHOD(git_index_iterator, __construct) { php_git_index_iterator_t *this = (php_git_index_iterator_t *) zend_object_store_get_object(getThis() TSRMLS_CC); zval *php_git_index; + php_git_index_t *idx; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &php_git_index) == FAILURE){ return; } - php_git_index_t *idx = (php_git_index_t *) zend_object_store_get_object(php_git_index TSRMLS_CC); + idx = (php_git_index_t *) zend_object_store_get_object(php_git_index TSRMLS_CC); this->index = idx->index; this->offset = 0; } -PHPAPI function_entry php_git_index_iterator_methods[] = { +static zend_function_entry php_git_index_iterator_methods[] = { PHP_ME(git_index_iterator, __construct, arginfo_git_index_iterator__construct,ZEND_ACC_PUBLIC) PHP_ME(git_index_iterator, current, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_index_iterator, key, NULL, ZEND_ACC_PUBLIC) diff --git a/src/object.c b/src/object.c index d651e10fd8..953d26ef28 100644 --- a/src/object.c +++ b/src/object.c @@ -25,10 +25,11 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_object_class_entry; +zend_class_entry *git_object_class_entry; static void php_git_object_free_storage(php_git_object_t *obj TSRMLS_DC) { @@ -102,7 +103,7 @@ PHP_METHOD(git_object, write) RETVAL_STRING(out,1); } -PHPAPI function_entry php_git_object_methods[] = { +static zend_function_entry php_git_object_methods[] = { PHP_ME(git_object, getId, NULL,ZEND_ACC_PUBLIC) PHP_ME(git_object, getType, NULL,ZEND_ACC_PUBLIC) PHP_ME(git_object, write, NULL,ZEND_ACC_PUBLIC) diff --git a/src/odb.c b/src/odb.c index 4dfa12bd0c..47a29c809a 100644 --- a/src/odb.c +++ b/src/odb.c @@ -25,10 +25,11 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_odb_class_entry; +zend_class_entry *git_odb_class_entry; int php_git_odb_add_backend(git_odb **odb, zval *backend, int priority); int php_git_odb_add_alternate(git_odb **odb, zval *backend, int priority); @@ -150,7 +151,7 @@ PHP_METHOD(git_odb, addAlternate) } -PHPAPI function_entry php_git_odb_methods[] = { +static zend_function_entry php_git_odb_methods[] = { PHP_ME(git_odb, __construct, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_odb, addBackend, arginfo_git_odb_add_backend, ZEND_ACC_PUBLIC) PHP_ME(git_odb, addAlternate, arginfo_git_odb_add_backend, ZEND_ACC_PUBLIC) diff --git a/src/php_git.c b/src/php_git.c index ff9b4243c1..050ce4938c 100644 --- a/src/php_git.c +++ b/src/php_git.c @@ -23,12 +23,13 @@ */ #include "php_git.h" +#include #include #include #include #include -PHPAPI zend_class_entry *git_class_entry; +zend_class_entry *git_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_string_to_type, 0, 0, 1) ZEND_ARG_INFO(0, string_type) @@ -108,12 +109,12 @@ PHP_FUNCTION(git_raw_to_hex) RETVAL_STRINGL(out,GIT_OID_HEXSZ,1); } -PHPAPI function_entry php_git_methods[] = { +static zend_function_entry php_git_methods[] = { {NULL, NULL, NULL} }; // Git Global Functions -PHPAPI function_entry php_git_functions[] = { +static zend_function_entry php_git_functions[] = { PHP_FE(git_hex_to_raw, arginfo_git_hex_to_raw) PHP_FE(git_raw_to_hex, arginfo_git_raw_to_hex) PHP_FE(git_type_to_string, arginfo_git_type_to_string) @@ -121,6 +122,7 @@ PHPAPI function_entry php_git_functions[] = { {NULL, NULL, NULL} }; + void git_init(TSRMLS_D) { zend_class_entry git_ce; @@ -179,12 +181,12 @@ zend_module_entry git_module_entry = { STANDARD_MODULE_HEADER, #endif PHP_GIT_EXTNAME, - php_git_functions, /* Functions */ - PHP_MINIT(git), /* MINIT */ - NULL, /* MSHUTDOWN */ - NULL, /* RINIT */ - NULL, /* RSHUTDOWN */ - PHP_MINFO(git), /* MINFO */ + php_git_functions, /* Functions */ + PHP_MINIT(git), /* MINIT */ + NULL, /* MSHUTDOWN */ + NULL, /* RINIT */ + NULL, /* RSHUTDOWN */ + PHP_MINFO(git), /* MINFO */ #if ZEND_MODULE_API_NO >= 20010901 PHP_GIT_EXTVER, #endif diff --git a/src/php_git.h b/src/php_git.h index b8d9834a50..36f558e0ff 100644 --- a/src/php_git.h +++ b/src/php_git.h @@ -33,6 +33,16 @@ #include "config.h" #endif +#ifdef PHP_WIN32 +#define PHP_GIT_API __declspec(dllexport) +#else +#define PHP_GIT_API +#endif + +#ifdef ZTS +#include "TSRM.h" +#endif + #include "php.h" #include "ext/spl/spl_exceptions.h" #include @@ -45,25 +55,45 @@ extern zend_module_entry git_module_entry; #define phpext_git_ptr &git_module_entry; #define PHP_GIT_NS "Git" -extern PHPAPI zend_class_entry *git_class_entry; -extern PHPAPI zend_class_entry *git_reference_class_entry; -extern PHPAPI zend_class_entry *git_reference_manager_class_entry; -extern PHPAPI zend_class_entry *git_repository_class_entry; -extern PHPAPI zend_class_entry *git_object_class_entry; -extern PHPAPI zend_class_entry *git_index_class_entry; -extern PHPAPI zend_class_entry *git_index_iterator_class_entry; -extern PHPAPI zend_class_entry *git_index_entry_class_entry; -extern PHPAPI zend_class_entry *git_walker_class_entry; -extern PHPAPI zend_class_entry *git_tree_class_entry; -extern PHPAPI zend_class_entry *git_tree_iterator_class_entry; -extern PHPAPI zend_class_entry *git_tree_entry_class_entry; -extern PHPAPI zend_class_entry *git_commit_class_entry; -extern PHPAPI zend_class_entry *git_signature_class_entry; -extern PHPAPI zend_class_entry *git_rawobject_class_entry; -extern PHPAPI zend_class_entry *git_tag_class_entry; -extern PHPAPI zend_class_entry *git_blob_class_entry; -extern PHPAPI zend_class_entry *git_odb_class_entry; -extern PHPAPI zend_class_entry *git_backend_class_entry; +extern zend_class_entry *git_class_entry; +extern zend_class_entry *git_reference_class_entry; +extern zend_class_entry *git_reference_manager_class_entry; +extern zend_class_entry *git_repository_class_entry; +extern zend_class_entry *git_object_class_entry; +extern zend_class_entry *git_index_class_entry; +extern zend_class_entry *git_index_iterator_class_entry; +extern zend_class_entry *git_index_entry_class_entry; +extern zend_class_entry *git_walker_class_entry; +extern zend_class_entry *git_tree_class_entry; +extern zend_class_entry *git_tree_iterator_class_entry; +extern zend_class_entry *git_tree_entry_class_entry; +extern zend_class_entry *git_commit_class_entry; +extern zend_class_entry *git_signature_class_entry; +extern zend_class_entry *git_rawobject_class_entry; +extern zend_class_entry *git_tag_class_entry; +extern zend_class_entry *git_blob_class_entry; +extern zend_class_entry *git_odb_class_entry; +extern zend_class_entry *git_backend_class_entry; + +extern void git_init_backend(TSRMLS_D); +extern void git_init_blob(TSRMLS_D); +extern void git_init_commit(TSRMLS_D); +extern void git_index_init(TSRMLS_D); +extern void git_index_entry_init(TSRMLS_D); +extern void git_index_iterator_init(TSRMLS_D); +extern void git_init_object(TSRMLS_D); +extern void git_init_odb(TSRMLS_D); +extern void git_init_rawobject(TSRMLS_D); +extern void git_init_reference(TSRMLS_D); +extern void git_init_reference_manager(TSRMLS_D); +extern void php_git_repository_init(TSRMLS_D); +extern void git_init_tag(TSRMLS_D); +extern void git_init_tree(TSRMLS_D); +extern void git_init_tree_entry(TSRMLS_D); +extern void git_tree_iterator_init(TSRMLS_D); +extern void git_init_signature(TSRMLS_D); +extern void git_init_walker(TSRMLS_D); + typedef struct{ zend_object zo; diff --git a/src/rawobject.c b/src/rawobject.c index caf30e670e..0b53726aea 100644 --- a/src/rawobject.c +++ b/src/rawobject.c @@ -28,7 +28,7 @@ #include #include -PHPAPI zend_class_entry *git_rawobject_class_entry; +zend_class_entry *git_rawobject_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_rawobject_set_content, 0, 0, 1) ZEND_ARG_INFO(0, string) @@ -81,12 +81,13 @@ PHP_METHOD(git_raw_object, __construct) int data_len = 0; int type = 0; int len = 0; + php_git_rawobject_t *this; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "lsl", &type, &data, &data_len, &len) == FAILURE){ return; } - php_git_rawobject_t *this= (php_git_rawobject_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + this = (php_git_rawobject_t *) zend_object_store_get_object(getThis() TSRMLS_CC); this->object = emalloc(sizeof(git_rawobj)); this->object->data = NULL; this->object->type = type; @@ -112,7 +113,7 @@ PHP_METHOD(git_raw_object, getId) } -PHPAPI function_entry php_git_rawobject_methods[] = { +static zend_function_entry php_git_rawobject_methods[] = { PHP_ME(git_raw_object, __construct, arginfo_git_rawobject__construct, ZEND_ACC_PUBLIC) PHP_ME(git_raw_object, getId, NULL, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} @@ -124,5 +125,5 @@ void git_init_rawobject(TSRMLS_D) INIT_NS_CLASS_ENTRY(git_rawobject_ce, PHP_GIT_NS,"RawObject", php_git_rawobject_methods); git_rawobject_class_entry = zend_register_internal_class(&git_rawobject_ce TSRMLS_CC); - git_rawobject_class_entry->create_object = php_git_rawobject_new; + git_rawobject_class_entry->create_object = php_git_rawobject_new; } \ No newline at end of file diff --git a/src/reference.c b/src/reference.c index c5c9f77503..aeca71e9a2 100644 --- a/src/reference.c +++ b/src/reference.c @@ -28,9 +28,9 @@ #include #include -PHPAPI zend_class_entry *git_reference_class_entry; +zend_class_entry *git_reference_class_entry; -ZEND_BEGIN_ARG_INFO_EX(arginfo_git_reference_set_name, 0, 0, 1) +ZEND_BEGIN_ARG_INFO_EX(arginfo_git_reference_rename, 0, 0, 1) ZEND_ARG_INFO(0, name) ZEND_END_ARG_INFO() @@ -41,11 +41,11 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_INFO_EX(arginfo_git_reference_set_oid, 0, 0, 1) ZEND_ARG_INFO(0, oid) ZEND_END_ARG_INFO() - +/* ZEND_BEGIN_ARG_INFO_EX(arginfo_git_reference__construct, 0, 0, 1) ZEND_ARG_INFO(0, repository) ZEND_END_ARG_INFO() - +*/ static void php_git_reference_free_storage(php_git_reference_t *obj TSRMLS_DC) { if(obj->object){ @@ -111,7 +111,7 @@ PHP_METHOD(git_reference, getName) RETVAL_STRING(name, 1); } -PHP_METHOD(git_reference, setName) +PHP_METHOD(git_reference, rename) { php_git_reference_t *this = (php_git_reference_t *) zend_object_store_get_object(getThis() TSRMLS_CC); char *name; @@ -122,10 +122,10 @@ PHP_METHOD(git_reference, setName) return; } - git_reference_set_name(this->object, name); + git_reference_rename(this->object, name); add_property_string_ex(getThis() ,"name",sizeof("name"),name, 1 TSRMLS_CC); } - +/* PHP_METHOD(git_reference, write) { php_git_reference_t *this = (php_git_reference_t *) zend_object_store_get_object(getThis() TSRMLS_CC); @@ -137,6 +137,7 @@ PHP_METHOD(git_reference, write) } RETURN_TRUE; } +*/ PHP_METHOD(git_reference, setTarget) @@ -171,7 +172,7 @@ PHP_METHOD(git_reference, setOID) git_reference_set_oid(this->object, &out); add_property_string_ex(getThis() ,"oid",sizeof("oid"),oid, 1 TSRMLS_CC); } - +/* PHP_METHOD(git_reference, __construct) { php_git_reference_t *this = (php_git_reference_t *) zend_object_store_get_object(getThis() TSRMLS_CC); @@ -210,7 +211,7 @@ PHP_METHOD(git_reference, __construct) this->object = refs; } } - +*/ PHP_METHOD(git_reference, getId) { php_git_reference_t *this = (php_git_reference_t *) zend_object_store_get_object(getThis() TSRMLS_CC); @@ -221,14 +222,14 @@ PHP_METHOD(git_reference, getId) RETURN_STRINGL(&out,GIT_OID_HEXSZ, 1); } -PHPAPI function_entry php_git_reference_methods[] = { - PHP_ME(git_reference, __construct, arginfo_git_reference__construct, ZEND_ACC_PUBLIC) +static zend_function_entry php_git_reference_methods[] = { + //PHP_ME(git_reference, __construct, arginfo_git_reference__construct, ZEND_ACC_PUBLIC) PHP_ME(git_reference, getTarget, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_reference, getType, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_reference, getName, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_reference, getId, NULL, ZEND_ACC_PUBLIC) - PHP_ME(git_reference, write, NULL, ZEND_ACC_PUBLIC) - PHP_ME(git_reference, setName, arginfo_git_reference_set_name, ZEND_ACC_PUBLIC) + //PHP_ME(git_reference, write, NULL, ZEND_ACC_PUBLIC) + PHP_ME(git_reference, rename, arginfo_git_reference_rename, ZEND_ACC_PUBLIC) PHP_ME(git_reference, setTarget, arginfo_git_reference_set_target, ZEND_ACC_PUBLIC) PHP_ME(git_reference, setOID, arginfo_git_reference_set_oid, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} diff --git a/src/reference_manager.c b/src/reference_manager.c index ce216df59a..1bb3422564 100644 --- a/src/reference_manager.c +++ b/src/reference_manager.c @@ -25,11 +25,12 @@ #include "php_git.h" #include #include +#include #include #include #undef lookup -PHPAPI zend_class_entry *git_reference_manager_class_entry; +zend_class_entry *git_reference_manager_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_reference_manager__construct, 0, 0, 1) ZEND_ARG_INFO(0, repository) @@ -73,6 +74,7 @@ PHP_METHOD(git_reference_manager, __construct) { php_git_reference_manager_t *this= (php_git_reference_manager_t *) zend_object_store_get_object(getThis() TSRMLS_CC); zval *repository; + php_git_repository_t *repo; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &repository) == FAILURE){ return; @@ -82,7 +84,7 @@ PHP_METHOD(git_reference_manager, __construct) "argument does not Git\\Repository"); RETURN_FALSE; } - php_git_repository_t *repo = (php_git_repository_t *) zend_object_store_get_object(repository TSRMLS_CC); + repo = (php_git_repository_t *) zend_object_store_get_object(repository TSRMLS_CC); if(repo->repository == NULL){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "repository didn't ready"); @@ -108,6 +110,7 @@ PHP_METHOD(git_reference_manager, getList) array_init(references); for(i = 0; i < list->count; i++){ zval *ref; + php_git_reference_t *refobj; // FIXME result = git_reference_lookup(&reference, this->repository, list->strings[i]); @@ -119,18 +122,19 @@ PHP_METHOD(git_reference_manager, getList) MAKE_STD_ZVAL(ref); object_init_ex(ref, git_reference_class_entry); - php_git_reference_t *refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); + refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); refobj->object = reference; add_property_string_ex(ref,"name", sizeof("name"), (char *)git_reference_name(reference), 1 TSRMLS_CC); type = git_reference_type(reference); if(type == GIT_REF_SYMBOLIC) { + int rr; const char *target = git_reference_target(reference); if(target != NULL) { add_property_string_ex(ref,"target",sizeof("target"),(char *)target, 1 TSRMLS_CC); } - int rr = git_reference_resolve(&refobj->object,reference); + rr = git_reference_resolve(&refobj->object,reference); if(rr != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "something wrong"); @@ -173,6 +177,7 @@ PHP_METHOD(git_reference_manager, lookup) git_oid *oid; git_rtype type; git_reference *reference; + php_git_reference_t *refobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE){ @@ -188,18 +193,19 @@ PHP_METHOD(git_reference_manager, lookup) MAKE_STD_ZVAL(ref); object_init_ex(ref, git_reference_class_entry); - php_git_reference_t *refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); + refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); refobj->object = reference; add_property_string_ex(ref,"name", sizeof("name"), (char *)git_reference_name(reference), 1 TSRMLS_CC); type = git_reference_type(reference); if(type == GIT_REF_SYMBOLIC) { + int rr; const char *target = git_reference_target(reference); if(target != NULL) { add_property_string_ex(ref,"target",sizeof("target"),(char *)target, 1 TSRMLS_CC); } - int rr = git_reference_resolve(&refobj->object,reference); + rr = git_reference_resolve(&refobj->object,reference); if(rr != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "something wrong"); @@ -221,6 +227,13 @@ PHP_METHOD(git_reference_manager, create) char *oid; int oid_len = 0; git_oid id; + git_odb *odb; + git_reference *reference; + int ret; + char out[GIT_OID_HEXSZ+1] = {0}; + git_rtype type; + zval *ref; + php_git_reference_t *refobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &oid, &oid_len) == FAILURE){ @@ -232,40 +245,36 @@ PHP_METHOD(git_reference_manager, create) RETURN_FALSE; } - git_oid_mkstr(&id, oid); - git_odb *odb; + git_oid_mkstr(&id, oid); odb = git_repository_database(this->repository); if(!git_odb_exists(odb,&id)){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "specified oid not found"); RETURN_FALSE; - } + } - git_reference *reference; - int ret = git_reference_create_oid(&reference, this->repository, name, &id); + ret = git_reference_create_oid(&reference, this->repository, name, &id); if(ret != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "can't add reference"); RETURN_FALSE; - } + } - char out[GIT_OID_HEXSZ+1] = {0}; - git_rtype type; - zval *ref; MAKE_STD_ZVAL(ref); object_init_ex(ref, git_reference_class_entry); - php_git_reference_t *refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); + refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); refobj->object = reference; add_property_string_ex(ref,"name", sizeof("name"), name, 1 TSRMLS_CC); type = git_reference_type(reference); if(type == GIT_REF_SYMBOLIC) { const char *target = git_reference_target(reference); + int rr; if(target != NULL) { add_property_string_ex(ref,"target",sizeof("target"),(char *)target, 1 TSRMLS_CC); } - int rr = git_reference_resolve(&refobj->object,reference); + rr = git_reference_resolve(&refobj->object,reference); if(rr != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "something wrong"); @@ -277,7 +286,7 @@ PHP_METHOD(git_reference_manager, create) RETURN_ZVAL(ref,0,0); } -PHPAPI function_entry php_git_reference_manager_methods[] = { +static zend_function_entry php_git_reference_manager_methods[] = { PHP_ME(git_reference_manager, __construct, arginfo_git_reference_manager__construct, ZEND_ACC_PUBLIC) PHP_ME(git_reference_manager, getList, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_reference_manager, lookup, arginfo_git_reference_manager_lookup, ZEND_ACC_PUBLIC) diff --git a/src/repository.c b/src/repository.c index b20d234bf9..655256bd9d 100644 --- a/src/repository.c +++ b/src/repository.c @@ -25,10 +25,11 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_repository_class_entry; +zend_class_entry *git_repository_class_entry; extern void create_signature_from_commit(zval **signature, const git_signature *sig); extern int php_git_odb_add_backend(git_odb **odb, zval *backend, int priority); @@ -130,13 +131,15 @@ PHP_METHOD(git_repository, init) int is_bare = 0; int ret; zval *obj; + int suc; + php_git_repository_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"sl", &path, &path_len, &is_bare) == FAILURE){ return; } - int suc = git_repository_init(&repository,path,is_bare); + suc = git_repository_init(&repository,path,is_bare); if(suc != GIT_SUCCESS){ php_error_docref(NULL TSRMLS_CC, E_WARNING, "can't create repository\n"); @@ -145,7 +148,7 @@ PHP_METHOD(git_repository, init) MAKE_STD_ZVAL(obj); object_init_ex(obj, git_repository_class_entry); - php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(obj TSRMLS_CC); + myobj = (php_git_repository_t *) zend_object_store_get_object(obj TSRMLS_CC); myobj->repository = repository; add_property_string_ex(obj, "path",sizeof("path"),path, 1 TSRMLS_CC); @@ -160,6 +163,7 @@ PHP_METHOD(git_repository, getIndex) zval *index_object; int ret = 0; + php_git_index_t *iobj; php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); @@ -175,7 +179,7 @@ PHP_METHOD(git_repository, getIndex) MAKE_STD_ZVAL(index_object); object_init_ex(index_object, git_index_class_entry); - php_git_index_t *iobj = (php_git_index_t *) zend_object_store_get_object(index_object TSRMLS_CC); + iobj = (php_git_index_t *) zend_object_store_get_object(index_object TSRMLS_CC); iobj->index = index; @@ -202,6 +206,8 @@ PHP_METHOD(git_repository, getObject) char *hash; int hash_len = 0; int ret = 0; + php_git_repository_t *myobj; + php_git_blob_t *blobobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ @@ -210,7 +216,7 @@ PHP_METHOD(git_repository, getObject) git_oid_mkstr(&oid, hash); - php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); + myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); repository = myobj->repository; odb = git_repository_database(repository); @@ -223,7 +229,7 @@ PHP_METHOD(git_repository, getObject) if(ret == GIT_SUCCESS){ MAKE_STD_ZVAL(git_object); object_init_ex(git_object, git_blob_class_entry); - php_git_blob_t *blobobj = (php_git_blob_t *) zend_object_store_get_object(git_object TSRMLS_CC); + blobobj = (php_git_blob_t *) zend_object_store_get_object(git_object TSRMLS_CC); blobobj->object = blob; git_rawsz = git_blob_rawsize(blob); @@ -241,9 +247,11 @@ void create_tree_entry_from_entry(zval **object, git_tree_entry *entry) TSRMLS_FETCH(); char buf[41] = {0}; const git_oid *oid; + php_git_tree_entry_t *entry_obj; + MAKE_STD_ZVAL(*object); object_init_ex(*object, git_tree_entry_class_entry); - php_git_tree_entry_t *entry_obj = (php_git_tree_entry_t *) zend_object_store_get_object(*object TSRMLS_CC); + entry_obj = (php_git_tree_entry_t *) zend_object_store_get_object(*object TSRMLS_CC); entry_obj->entry = entry; oid = git_tree_entry_id(entry); @@ -269,6 +277,8 @@ PHP_METHOD(git_repository, getCommit) char *hash; int hash_len = 0; int ret = 0; + php_git_repository_t *myobj; + php_git_commit_t *cobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ @@ -277,7 +287,7 @@ PHP_METHOD(git_repository, getCommit) git_oid_mkstr(&oid, hash); - php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); + myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); repository = myobj->repository; odb = git_repository_database(repository); @@ -297,7 +307,7 @@ PHP_METHOD(git_repository, getCommit) MAKE_STD_ZVAL(git_commit_object); object_init_ex(git_commit_object,git_commit_class_entry); - php_git_commit_t *cobj = (php_git_commit_t *) zend_object_store_get_object(git_commit_object TSRMLS_CC); + cobj = (php_git_commit_t *) zend_object_store_get_object(git_commit_object TSRMLS_CC); cobj->object = commit; add_property_zval(git_commit_object,"author", author); @@ -321,13 +331,14 @@ PHP_METHOD(git_repository, __construct) int arg_len = 0; git_repository *repository; zval *object = getThis(); + php_git_repository_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &repository_path, &arg_len) == FAILURE){ return; } - php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); + myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); if(arg_len > 0){ ret = git_repository_open(&repository,repository_path); @@ -358,6 +369,8 @@ PHP_METHOD(git_repository, getTree) php_git_tree_entry_t *te; char buf[GIT_OID_HEXSZ+1] = {0}; int i = 0; + php_git_repository_t *myobj; + php_git_tree_t *tobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ @@ -365,7 +378,7 @@ PHP_METHOD(git_repository, getTree) } git_oid_mkstr(&oid, hash); - php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); + myobj = (php_git_repository_t *) zend_object_store_get_object(object TSRMLS_CC); ret = git_tree_lookup(&tree, myobj->repository, &oid); if(ret != GIT_SUCCESS){ @@ -377,7 +390,7 @@ PHP_METHOD(git_repository, getTree) MAKE_STD_ZVAL(git_tree); object_init_ex(git_tree, git_tree_class_entry); - php_git_tree_t *tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); + tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); tobj->object = tree; RETURN_ZVAL(git_tree,0,0); @@ -389,13 +402,14 @@ PHP_METHOD(git_repository, getWalker) zval *walker_object; git_revwalk *walk; int ret = 0; + php_git_walker_t *wobj; php_git_repository_t *myobj = (php_git_repository_t *) zend_object_store_get_object(getThis() TSRMLS_CC); ret = git_revwalk_new(&walk,myobj->repository); MAKE_STD_ZVAL(walker_object); object_init_ex(walker_object, git_walker_class_entry); - php_git_walker_t *wobj = (php_git_walker_t *) zend_object_store_get_object(walker_object TSRMLS_CC); + wobj = (php_git_walker_t *) zend_object_store_get_object(walker_object TSRMLS_CC); wobj->walker = walk; RETURN_ZVAL(walker_object,0,0); @@ -409,6 +423,7 @@ PHP_METHOD(git_repository, addAlternate) git_odb *odb; git_odb_backend *odb_backend; int priority = 0; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zl", &backend, &priority) == FAILURE){ return; @@ -421,7 +436,7 @@ PHP_METHOD(git_repository, addAlternate) } odb = git_repository_database(this->repository); - int ret = php_git_odb_add_alternate(&odb, backend, priority); + ret = php_git_odb_add_alternate(&odb, backend, priority); } @@ -432,6 +447,7 @@ PHP_METHOD(git_repository, addBackend) git_odb *odb; git_odb_backend *odb_backend; int priority = 0; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zl", &backend, &priority) == FAILURE){ return; @@ -443,7 +459,7 @@ PHP_METHOD(git_repository, addBackend) } odb = git_repository_database(this->repository); - int ret = php_git_odb_add_backend(&odb, backend, priority); + ret = php_git_odb_add_backend(&odb, backend, priority); } @@ -458,6 +474,8 @@ PHP_METHOD(git_repository, lookupRef) git_oid *oid; git_rtype type; git_reference *reference; + php_git_reference_t *refobj; + int rr; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE){ @@ -473,7 +491,7 @@ PHP_METHOD(git_repository, lookupRef) MAKE_STD_ZVAL(ref); object_init_ex(ref, git_reference_class_entry); - php_git_reference_t *refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); + refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); refobj->object = reference; add_property_string_ex(ref,"name", sizeof("name"), (char *)git_reference_name(reference), 1 TSRMLS_CC); @@ -484,7 +502,7 @@ PHP_METHOD(git_repository, lookupRef) if(target != NULL) { add_property_string_ex(ref,"target",sizeof("target"),(char *)target, 1 TSRMLS_CC); } - int rr = git_reference_resolve(&refobj->object,reference); + rr = git_reference_resolve(&refobj->object,reference); if(rr != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "something wrong"); @@ -515,6 +533,8 @@ PHP_METHOD(git_repository, getReferences) array_init(references); for(i = 0; i < list->count; i++){ zval *ref; + php_git_reference_t *refobj; + int rr; // FIXME result = git_reference_lookup(&reference, this->repository, list->strings[i]); @@ -526,7 +546,7 @@ PHP_METHOD(git_repository, getReferences) MAKE_STD_ZVAL(ref); object_init_ex(ref, git_reference_class_entry); - php_git_reference_t *refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); + refobj = (php_git_reference_t *) zend_object_store_get_object(ref TSRMLS_CC); refobj->object = reference; add_property_string_ex(ref,"name", sizeof("name"), (char *)git_reference_name(reference), 1 TSRMLS_CC); @@ -537,7 +557,7 @@ PHP_METHOD(git_repository, getReferences) if(target != NULL) { add_property_string_ex(ref,"target",sizeof("target"),(char *)target, 1 TSRMLS_CC); } - int rr = git_reference_resolve(&refobj->object,reference); + rr = git_reference_resolve(&refobj->object,reference); if(rr != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "something wrong"); @@ -607,6 +627,7 @@ PHP_METHOD(git_repository, open2) int git_index_file_len = 0; int git_work_tree_len = 0; git_repository *repository; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssss", &git_dir, &git_dir_len, &git_object_directory, &git_object_directory_len, &git_index_file, &git_index_file_len, &git_work_tree, &git_work_tree_len) == FAILURE){ @@ -618,7 +639,7 @@ PHP_METHOD(git_repository, open2) return; } - int ret = git_repository_open2(&repository,git_dir, git_object_directory, git_index_file, git_work_tree); + ret = git_repository_open2(&repository,git_dir, git_object_directory, git_index_file, git_work_tree); if(ret != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC,"can't open specified directories"); RETURN_FALSE; @@ -630,7 +651,7 @@ PHP_METHOD(git_repository, open2) } -PHPAPI function_entry php_git_repository_methods[] = { +static zend_function_entry php_git_repository_methods[] = { PHP_ME(git_repository, __construct, arginfo_git_construct, ZEND_ACC_PUBLIC) PHP_ME(git_repository, getCommit, arginfo_git_get_commit, ZEND_ACC_PUBLIC) PHP_ME(git_repository, getObject, arginfo_git_get_object, ZEND_ACC_PUBLIC) diff --git a/src/signature.c b/src/signature.c index 26037f662a..4be31798af 100644 --- a/src/signature.c +++ b/src/signature.c @@ -29,7 +29,7 @@ #include #include -PHPAPI zend_class_entry *git_signature_class_entry; +zend_class_entry *git_signature_class_entry; void create_signature_from_commit(zval **signature, git_signature *sig); static void php_git_signature_free_storage(php_git_signature_t *obj TSRMLS_DC); @@ -49,7 +49,7 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_git_signature__construct, 0, 0, 3) ZEND_ARG_INFO(0, when) ZEND_END_ARG_INFO() -PHPAPI function_entry php_git_signature_methods[] = { +static zend_function_entry php_git_signature_methods[] = { PHP_ME(git_signature, __construct, arginfo_git_signature__construct, ZEND_ACC_PUBLIC) {NULL, NULL, NULL} }; @@ -61,6 +61,7 @@ PHP_METHOD(git_signature, __construct) int name_len = 0; int email_len = 0; zval *time; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssz", &name, &name_len, &email, &email_len, &time) == FAILURE){ @@ -72,7 +73,7 @@ PHP_METHOD(git_signature, __construct) return; } - int ret = php_git_signature_create(getThis(), name, name_len, email, email_len, time); + ret = php_git_signature_create(getThis(), name, name_len, email, email_len, time); if (ret != GIT_SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Git\\Signature internal error"); } @@ -95,20 +96,22 @@ void create_signature_from_commit(zval **signature, git_signature *sig) { TSRMLS_FETCH(); zval *datetime; + php_git_signature_t *object; + zval constructor; + zval method; + zval result; + zval *params[1]; + MAKE_STD_ZVAL(*signature); object_init_ex(*signature,git_signature_class_entry); - php_git_signature_t *object = (php_git_signature_t *) zend_object_store_get_object(*signature TSRMLS_CC); + object = (php_git_signature_t *) zend_object_store_get_object(*signature TSRMLS_CC); object->signature = sig; add_property_string_ex(*signature,"name",sizeof("name"), sig->name,1 TSRMLS_CC); add_property_string_ex(*signature,"email",sizeof("email"),sig->email,1 TSRMLS_CC); - MAKE_STD_ZVAL(datetime); - zval constructor; - zval method; - zval result; - zval *params[1]; + MAKE_STD_ZVAL(datetime); ZVAL_STRING(&constructor,"__construct",0); ZVAL_STRING(&method,"setTimestamp", 0); diff --git a/src/tag.c b/src/tag.c index 6a3f5fa77b..eb71d8fd07 100644 --- a/src/tag.c +++ b/src/tag.c @@ -28,7 +28,7 @@ #include #include -PHPAPI zend_class_entry *git_tag_class_entry; +zend_class_entry *git_tag_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_tag__construct, 0, 0, 1) ZEND_ARG_INFO(0, repository) @@ -60,20 +60,20 @@ static void php_git_tag_free_storage(php_git_tag_t *obj TSRMLS_DC) zend_object_value php_git_tag_new(zend_class_entry *ce TSRMLS_DC) { - zend_object_value retval; - php_git_tag_t *obj; - zval *tmp; + zend_object_value retval; + php_git_tag_t *obj; + zval *tmp; - obj = ecalloc(1, sizeof(*obj)); - zend_object_std_init( &obj->zo, ce TSRMLS_CC ); - zend_hash_copy(obj->zo.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); + obj = ecalloc(1, sizeof(*obj)); + zend_object_std_init( &obj->zo, ce TSRMLS_CC ); + zend_hash_copy(obj->zo.properties, &ce->default_properties, (copy_ctor_func_t) zval_add_ref, (void *) &tmp, sizeof(zval *)); - retval.handle = zend_objects_store_put(obj, + retval.handle = zend_objects_store_put(obj, (zend_objects_store_dtor_t)zend_objects_destroy_object, (zend_objects_free_object_storage_t)php_git_tag_free_storage, NULL TSRMLS_CC); - retval.handlers = zend_get_std_object_handlers(); - return retval; + retval.handlers = zend_get_std_object_handlers(); + return retval; } PHP_METHOD(git_tag, getMessage) @@ -95,7 +95,7 @@ PHP_METHOD(git_tag, getTarget) php_git_tag_t *tag = (php_git_tag_t *) zend_object_store_get_object(getThis() TSRMLS_CC); const git_object *object; git_otype type; - + object = git_tag_target(tag->object); type = git_object_type(object); */ @@ -105,6 +105,7 @@ PHP_METHOD(git_tag, setTarget) { php_git_tag_t *this = (php_git_tag_t *) zend_object_store_get_object(getThis() TSRMLS_CC); zval *target; + php_git_object_t *obj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &target) == FAILURE){ @@ -116,8 +117,8 @@ PHP_METHOD(git_tag, setTarget) php_error_docref(NULL TSRMLS_CC, E_WARNING, "Git\\Tag::setTarget only allow Git\\Object."); return; } - php_git_object_t *obj = (php_git_object_t *) zend_object_store_get_object(target TSRMLS_CC); - + obj = (php_git_object_t *) zend_object_store_get_object(target TSRMLS_CC); + git_tag_set_target(this->object, obj->object); } @@ -142,7 +143,7 @@ PHP_METHOD(git_tag, setName) php_git_tag_t *this = (php_git_tag_t *) zend_object_store_get_object(getThis() TSRMLS_CC); char *name; int name_len = 0; - + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE){ return; @@ -159,7 +160,8 @@ PHP_METHOD(git_tag, __construct) php_git_tag_t *this = (php_git_tag_t *) zend_object_store_get_object(getThis() TSRMLS_CC); php_git_repository_t *r_obj; zval *repository; - + int ret; + if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &repository) == FAILURE){ return; @@ -173,7 +175,7 @@ PHP_METHOD(git_tag, __construct) } r_obj = (php_git_repository_t *) zend_object_store_get_object(repository TSRMLS_CC); - int ret = git_tag_new(&this->object,r_obj->repository); + ret = git_tag_new(&this->object,r_obj->repository); if(ret != GIT_SUCCESS){ php_error_docref(NULL TSRMLS_CC, E_WARNING, "can't create Git\\Tag."); @@ -181,7 +183,7 @@ PHP_METHOD(git_tag, __construct) } -PHPAPI function_entry php_git_tag_methods[] = { +static zend_function_entry php_git_tag_methods[] = { PHP_ME(git_tag, __construct, arginfo_git_tag__construct, ZEND_ACC_PUBLIC) PHP_ME(git_tag, getMessage, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_tag, getName, NULL, ZEND_ACC_PUBLIC) diff --git a/src/tree.c b/src/tree.c index 4b51f04d27..9d3c7bcc68 100644 --- a/src/tree.c +++ b/src/tree.c @@ -25,10 +25,11 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_tree_class_entry; +zend_class_entry *git_tree_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_tree__construct, 0, 0, 1) ZEND_ARG_INFO(0, repository) @@ -95,6 +96,7 @@ PHP_METHOD(git_tree, path) git_tree_entry *entry; int ret = 0; git_object *object; + git_otype type; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, &path_len) == FAILURE){ @@ -111,7 +113,7 @@ PHP_METHOD(git_tree, path) zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC,"something uncaught error happend."); RETURN_FALSE; } - git_otype type = git_object_type(object); + type = git_object_type(object); if(type == GIT_OBJ_TREE) { // Todo: refactoring below block @@ -120,15 +122,18 @@ PHP_METHOD(git_tree, path) zval *git_tree; zval *entries; zval *entry; + php_git_tree_t *tobj; + int r; + int i; MAKE_STD_ZVAL(git_tree); MAKE_STD_ZVAL(entries); array_init(entries); object_init_ex(git_tree, git_tree_class_entry); - php_git_tree_t *tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); + tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); tobj->object = tree; - int r = git_tree_entrycount(tree); - int i = 0; + r = git_tree_entrycount(tree); + i = 0; for(i; i < r; i++){ create_tree_entry_from_entry(&entry,git_tree_entry_byindex(tree,i)); add_next_index_zval(entries, entry); @@ -139,9 +144,11 @@ PHP_METHOD(git_tree, path) }else if(type == GIT_OBJ_BLOB){ // Todo: refactoring below block zval *git_object; + php_git_blob_t *blobobj; + MAKE_STD_ZVAL(git_object); object_init_ex(git_object, git_blob_class_entry); - php_git_blob_t *blobobj = (php_git_blob_t *) zend_object_store_get_object(git_object TSRMLS_CC); + blobobj = (php_git_blob_t *) zend_object_store_get_object(git_object TSRMLS_CC); blobobj->object = (git_blob *)object; add_property_stringl_ex(git_object,"data", sizeof("data"), (char *)git_blob_rawcontent((git_blob *)object),git_blob_rawsize((git_blob *)object), 1 TSRMLS_CC); @@ -163,9 +170,12 @@ PHP_METHOD(git_tree, add) int entry_oid_len; int filename_len = 0; int attr = 0; + int ret; git_oid oid; git_tree *tree; + + php_git_tree_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ssl", &entry_oid, &entry_oid_len,&filename,&filename_len,&attr) == FAILURE){ @@ -173,8 +183,8 @@ PHP_METHOD(git_tree, add) } git_oid_mkstr(&oid, entry_oid); - php_git_tree_t *myobj = (php_git_tree_t *) zend_object_store_get_object(getThis() TSRMLS_CC); - int ret = git_tree_add_entry(&entry, myobj->object, &oid, filename, attr); + myobj = (php_git_tree_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + ret = git_tree_add_entry(&entry, myobj->object, &oid, filename, attr); if(ret != GIT_SUCCESS) { php_error_docref(NULL TSRMLS_CC, E_ERROR, "can't add tree entry"); RETURN_FALSE; @@ -186,16 +196,19 @@ PHP_METHOD(git_tree, add) PHP_METHOD(git_tree, __construct) { zval *z_repository; + php_git_repository_t *git; + php_git_tree_t *obj; + int ret; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &z_repository) == FAILURE){ return; } - php_git_repository_t *git = (php_git_repository_t *) zend_object_store_get_object(z_repository TSRMLS_CC); - php_git_tree_t *obj = (php_git_tree_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + git = (php_git_repository_t *) zend_object_store_get_object(z_repository TSRMLS_CC); + obj = (php_git_tree_t *) zend_object_store_get_object(getThis() TSRMLS_CC); - int ret = git_tree_new(&obj->object,git->repository); + ret = git_tree_new(&obj->object,git->repository); if(ret != GIT_SUCCESS){ php_error_docref(NULL TSRMLS_CC, E_ERROR, "can't create new tree"); @@ -207,10 +220,11 @@ PHP_METHOD(git_tree, getIterator) { php_git_tree_t *this = (php_git_tree_t *) zend_object_store_get_object(getThis() TSRMLS_CC); zval *iterator; + php_git_tree_iterator_t *obj; MAKE_STD_ZVAL(iterator); object_init_ex(iterator,git_tree_iterator_class_entry); - php_git_tree_iterator_t *obj = (php_git_tree_iterator_t *) zend_object_store_get_object(iterator TSRMLS_CC); + obj = (php_git_tree_iterator_t *) zend_object_store_get_object(iterator TSRMLS_CC); obj->tree = this->object; obj->offset = 0; RETURN_ZVAL(iterator,0,0); @@ -238,20 +252,22 @@ PHP_METHOD(git_tree, remove) php_git_tree_t *this = (php_git_tree_t *) zend_object_store_get_object(getThis() TSRMLS_CC); char *path; int path_len = 0; + git_tree_entry *entry; + int result; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &path, &path_len) == FAILURE){ return; } - git_tree_entry *entry = git_tree_entry_byname(this->object,path); + entry = git_tree_entry_byname(this->object,path); if(entry == NULL){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "specified path does not exist."); RETURN_FALSE; } - int result = git_tree_remove_entry_byname(this->object, path); + result = git_tree_remove_entry_byname(this->object, path); if(result != GIT_SUCCESS){ zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "can't remove tree entry"); @@ -268,9 +284,9 @@ PHP_METHOD(git_tree, getEntries) int r = git_tree_entrycount(this->object); zval *entries; - MAKE_STD_ZVAL(entries); - array_init(entries); - zval *array_ptr; + zval *array_ptr; + MAKE_STD_ZVAL(entries); + array_init(entries); for(i = 0; i < r; i++){ create_tree_entry_from_entry(&array_ptr, git_tree_entry_byindex(this->object,i)); add_next_index_zval(entries, array_ptr); @@ -280,7 +296,7 @@ PHP_METHOD(git_tree, getEntries) } -PHPAPI function_entry php_git_tree_methods[] = { +static zend_function_entry php_git_tree_methods[] = { PHP_ME(git_tree, __construct, arginfo_git_tree__construct, ZEND_ACC_PUBLIC) PHP_ME(git_tree, getEntry, arginfo_git_tree_get_entry, ZEND_ACC_PUBLIC) PHP_ME(git_tree, getEntries, NULL, ZEND_ACC_PUBLIC) diff --git a/src/tree_entry.c b/src/tree_entry.c index c50fb5336e..6a86a42a44 100644 --- a/src/tree_entry.c +++ b/src/tree_entry.c @@ -25,10 +25,11 @@ #include "php_git.h" #include #include +#include #include #include -PHPAPI zend_class_entry *git_tree_entry_class_entry; +zend_class_entry *git_tree_entry_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_tree_entry_set_id, 0, 0, 1) ZEND_ARG_INFO(0, hash) @@ -68,6 +69,7 @@ PHP_METHOD(git_tree_entry, setId) git_oid oid; int ret = 0; + char out[GIT_OID_HEXSZ+1] = {0}; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ @@ -76,7 +78,6 @@ PHP_METHOD(git_tree_entry, setId) git_oid_mkstr(&oid,hash); git_tree_entry_set_id(this->entry,&oid); - char out[GIT_OID_HEXSZ+1] = {0}; git_oid_to_string(out,GIT_OID_HEXSZ+1,git_tree_entry_id(this->entry)); add_property_string(getThis(), "oid", hash, 1); @@ -96,36 +97,40 @@ PHP_METHOD(git_tree_entry, toObject) if(ret == GIT_SUCCESS){ type = git_object_type(object); if (type == GIT_OBJ_BLOB) { - + php_git_blob_t *blobobj; zval *git_raw_object; MAKE_STD_ZVAL(git_raw_object); object_init_ex(git_raw_object, git_blob_class_entry); - php_git_blob_t *blobobj = (php_git_blob_t *) zend_object_store_get_object(git_raw_object TSRMLS_CC); + blobobj = (php_git_blob_t *) zend_object_store_get_object(git_raw_object TSRMLS_CC); blobobj->object = (git_blob *)object; add_property_stringl_ex(git_raw_object,"data", sizeof("data"), (char *)git_blob_rawcontent((git_blob *)object),git_blob_rawsize((git_blob *)object), 1 TSRMLS_CC); RETURN_ZVAL(git_raw_object,0,0); } else if(type == GIT_OBJ_TREE) { git_tree *tree = (git_tree *)object; + int r; + int i; + char buf[GIT_OID_HEXSZ+1] = {0}; + char *offset; + git_oid *moid; + zval *array_ptr; zval *git_tree; zval *entries; + php_git_tree_t *tobj; + MAKE_STD_ZVAL(git_tree); MAKE_STD_ZVAL(entries); array_init(entries); object_init_ex(git_tree, git_tree_class_entry); - int r = git_tree_entrycount(tree); - int i = 0; - char buf[GIT_OID_HEXSZ+1] = {0}; - char *offset; - git_oid *moid; - zval *array_ptr; + r = git_tree_entrycount(tree); + i = 0; for(i; i < r; i++){ create_tree_entry_from_entry(&array_ptr, git_tree_entry_byindex(tree,i)); add_next_index_zval(entries, array_ptr); } - php_git_tree_t *tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); + tobj = (php_git_tree_t *) zend_object_store_get_object(git_tree TSRMLS_CC); tobj->object = tree; add_property_zval(git_tree,"entries", entries); RETURN_ZVAL(git_tree,0,0); @@ -167,7 +172,7 @@ PHP_METHOD(git_tree_entry, isBlob) -PHPAPI function_entry php_git_tree_entry_methods[] = { +static zend_function_entry php_git_tree_entry_methods[] = { PHP_ME(git_tree_entry, __construct, NULL, ZEND_ACC_PRIVATE) PHP_ME(git_tree_entry, setId, arginfo_git_tree_entry_set_id, ZEND_ACC_PUBLIC) PHP_ME(git_tree_entry, toObject, NULL, ZEND_ACC_PUBLIC) diff --git a/src/tree_iterator.c b/src/tree_iterator.c index 287a2aa978..40c2c71f0e 100644 --- a/src/tree_iterator.c +++ b/src/tree_iterator.c @@ -25,12 +25,13 @@ #include "php_git.h" #include #include +#include #include #include extern void create_tree_entry_from_entry(zval **object, git_tree_entry *entry); -PHPAPI zend_class_entry *git_tree_iterator_class_entry; +zend_class_entry *git_tree_iterator_class_entry; extern void php_tree_index_entry_create(zval **index, git_tree_entry *entry); static void php_git_tree_iterator_free_storage(php_git_tree_iterator_t *obj TSRMLS_DC) @@ -113,19 +114,20 @@ PHP_METHOD(git_tree_iterator, __construct) { php_git_tree_iterator_t *this = (php_git_tree_iterator_t *) zend_object_store_get_object(getThis() TSRMLS_CC); zval *php_tree_index; + php_git_tree_t *tree; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &php_tree_index) == FAILURE){ return; } - php_git_tree_t *tree = (php_git_tree_t *) zend_object_store_get_object(php_tree_index TSRMLS_CC); + tree = (php_git_tree_t *) zend_object_store_get_object(php_tree_index TSRMLS_CC); this->tree = tree->object; this->offset = 0; } -PHPAPI function_entry php_git_tree_iterator_methods[] = { +static zend_function_entry php_git_tree_iterator_methods[] = { PHP_ME(git_tree_iterator, __construct, arginfo_git_tree_iterator__construct,ZEND_ACC_PUBLIC) PHP_ME(git_tree_iterator, current, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_tree_iterator, key, NULL, ZEND_ACC_PUBLIC) diff --git a/src/walker.c b/src/walker.c index fe020deb77..c4af3f5d7f 100644 --- a/src/walker.c +++ b/src/walker.c @@ -28,7 +28,7 @@ #include #include -PHPAPI zend_class_entry *git_walker_class_entry; +zend_class_entry *git_walker_class_entry; ZEND_BEGIN_ARG_INFO_EX(arginfo_git_walker_hide, 0, 0, 1) ZEND_ARG_INFO(0, hash) @@ -82,13 +82,14 @@ PHP_METHOD(git_walker, hide) git_commit *commit; git_repository *repository; git_oid oid; + php_git_walker_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ return; } - php_git_walker_t *myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); walker = myobj->walker; repository = git_revwalk_repository(walker); @@ -106,13 +107,14 @@ PHP_METHOD(git_walker, push) git_commit *head; git_revwalk *walker; git_repository *repository; + php_git_walker_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &hash, &hash_len) == FAILURE){ return; } - php_git_walker_t *myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); walker = myobj->walker; repository = git_revwalk_repository(walker); @@ -130,21 +132,22 @@ PHP_METHOD(git_walker, next) git_commit *commit; git_revwalk *walker; git_signature *signature; + int ret; + zval *author; + zval *committer; + php_git_commit_t *cobj; php_git_walker_t *myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); walker = myobj->walker; - int ret = git_revwalk_next(&oid,walker); + ret = git_revwalk_next(&oid,walker); if(ret != GIT_SUCCESS){ RETURN_FALSE; } git_object_lookup((git_object **)&commit, git_revwalk_repository(walker), &oid, GIT_OBJ_COMMIT); MAKE_STD_ZVAL(git_commit_object); - object_init_ex(git_commit_object,git_commit_class_entry); - - zval *author; - zval *committer; + object_init_ex(git_commit_object,git_commit_class_entry); create_signature_from_commit(&author, git_commit_author(commit)); create_signature_from_commit(&committer, git_commit_committer(commit)); @@ -152,7 +155,7 @@ PHP_METHOD(git_walker, next) MAKE_STD_ZVAL(git_commit_object); object_init_ex(git_commit_object,git_commit_class_entry); - php_git_commit_t *cobj = (php_git_commit_t *) zend_object_store_get_object(git_commit_object TSRMLS_CC); + cobj = (php_git_commit_t *) zend_object_store_get_object(git_commit_object TSRMLS_CC); cobj->object = commit; add_property_zval(git_commit_object,"author", author); @@ -172,18 +175,19 @@ PHP_METHOD(git_walker, reset) PHP_METHOD(git_walker, sort) { int mode = 0; + php_git_walker_t *myobj; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l", &mode) == FAILURE){ return; } - php_git_walker_t *myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); + myobj = (php_git_walker_t *) zend_object_store_get_object(getThis() TSRMLS_CC); git_revwalk_sorting(myobj->walker, mode); RETURN_TRUE; } -PHPAPI function_entry php_git_walker_methods[] = { +static zend_function_entry php_git_walker_methods[] = { PHP_ME(git_walker, __construct, NULL, ZEND_ACC_PUBLIC) PHP_ME(git_walker, push, arginfo_git_walker_push, ZEND_ACC_PUBLIC) PHP_ME(git_walker, next, NULL, ZEND_ACC_PUBLIC)