Changeset 216
- Timestamp:
- 06/16/10 22:11:26 (20 months ago)
- Location:
- trunk
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
mogilefs.c (modified) (4 diffs)
-
php_mogilefs.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r125 r216 1 php-mogilefs 0.7.6: 2 * Support for large files (Alayn Gortazar <alayn@irontec.com>) 3 1 4 php-mogilefs 0.7.5 beta3: 2 5 * New API: MogileFs::isConnected() -
trunk/mogilefs.c
r214 r216 469 469 /* }}} */ 470 470 471 PHPAPI char *mogilefs_file_to_mem(char *filename, int *file_buffer_len TSRMLS_DC) /* {{{ */472 {473 php_stream *stream;474 char *data = NULL;475 476 if ((stream = php_stream_open_wrapper(filename, "rb", USE_PATH | ENFORCE_SAFE_MODE, NULL)) != NULL) {477 *file_buffer_len = php_stream_copy_to_mem(stream, &data, PHP_STREAM_COPY_ALL, 0);478 if (*file_buffer_len == 0) {479 data = estrdup("");480 }481 php_stream_close(stream);482 }483 return data;484 }485 /* }}} */486 487 471 PHPAPI char *mogilefs_create_open(MogilefsSock *mogilefs_sock, const char * const key, const char * const class, int multi_dest TSRMLS_DC) /* {{{ */ 488 472 { … … 671 655 ne_session *sess; 672 656 ne_request *req; 673 int multi_dest = 1, use_file = 1, key_len, class_len, file_buffer_len, filename_len, ret, alloc_file = 0, alloc_url = 0 ;657 int multi_dest = 1, use_file = 1, key_len, class_len, file_buffer_len, filename_len, ret, alloc_file = 0, alloc_url = 0, fd = 0; 674 658 char *key = NULL, *class = NULL, *file_buffer, *filename, *close_request; 659 FILE *f; 675 660 676 661 if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), … … 688 673 } 689 674 675 if ((close_request = mogilefs_create_open(mogilefs_sock, key, class, multi_dest TSRMLS_CC)) == NULL) { 676 RETVAL_FALSE; 677 goto end; 678 } 679 680 if (mogilefs_get_uri_path(close_request, &url TSRMLS_CC) < 0) { 681 RETVAL_FALSE; 682 goto end; 683 } 684 685 alloc_url = 1; 686 687 if (url->port == 0) { 688 url->port = ne_uri_defaultport(url->scheme); 689 } 690 if (url->scheme == NULL) { 691 url->scheme = "http"; 692 } 693 694 if ((sess = ne_session_create(url->scheme, url->host, url->port)) == NULL) { 695 RETVAL_FALSE; 696 goto end; 697 } 698 699 ne_set_read_timeout(sess, (int) MOGILEFS_DAV_SESSION_TIMEOUT); 700 690 701 if (use_file) { 691 if ((file_buffer = mogilefs_file_to_mem(filename, &file_buffer_len TSRMLS_CC)) == NULL) { 692 RETURN_FALSE; 693 } 694 alloc_file = 1; 702 f = php_stream_open_wrapper_as_file(filename, "rb", USE_PATH | ENFORCE_SAFE_MODE, NULL); 703 if (f != NULL) { 704 fd = fileno(f); 705 ret = ne_put(sess, url->path, fd); 706 close(fd); 707 } else { 708 RETVAL_FALSE; 709 goto end; 710 } 695 711 } else { 696 712 file_buffer = filename; 697 713 file_buffer_len = filename_len; 698 } 699 700 if ((close_request = mogilefs_create_open(mogilefs_sock, key, class, multi_dest TSRMLS_CC)) == NULL) { 701 RETVAL_FALSE; 702 goto end; 703 } 704 705 if (mogilefs_get_uri_path(close_request, &url TSRMLS_CC) < 0) { 706 RETVAL_FALSE; 707 goto end; 708 } 709 710 alloc_url = 1; 711 712 if (url->port == 0) { 713 url->port = ne_uri_defaultport(url->scheme); 714 } 715 if (url->scheme == NULL) { 716 url->scheme = "http"; 717 } 718 719 if ((sess = ne_session_create(url->scheme, url->host, url->port)) == NULL) { 720 RETVAL_FALSE; 721 goto end; 722 } 723 724 ne_set_read_timeout(sess, (int) MOGILEFS_DAV_SESSION_TIMEOUT); 725 req = ne_request_create(sess, "PUT", url->path); 726 ne_set_request_body_buffer(req, file_buffer, file_buffer_len); 727 ret = ne_request_dispatch(req); 728 729 ne_request_destroy(req); 714 req = ne_request_create(sess, "PUT", url->path); 715 ne_set_request_body_buffer(req, file_buffer, file_buffer_len); 716 ret = ne_request_dispatch(req); 717 ne_request_destroy(req); 718 } 719 730 720 ne_session_destroy(sess); 731 721 … … 746 736 if (close_request) { 747 737 efree(close_request); 748 }749 if (alloc_file) {750 efree(file_buffer);751 738 } 752 739 if (alloc_url) { -
trunk/php_mogilefs.h
r209 r216 115 115 PHPAPI int mogilefs_sock_write(MogilefsSock *mogilefs_sock, char *cmd, int cmd_len, short free_cmd TSRMLS_DC); 116 116 PHPAPI char * mogilefs_sock_read(MogilefsSock *mogilefs_sock, int *buf_len TSRMLS_DC); 117 PHPAPI char * mogilefs_file_to_mem(char *filename, int *file_buffer_len TSRMLS_DC);118 117 PHPAPI char * mogilefs_create_open(MogilefsSock *mogilefs_sock, const char * const key, const char * const class, int multi_dest TSRMLS_DC); 119 118 PHPAPI int mogilefs_create_close(MogilefsSock *mogilefs_sock, const char * const m_key, const char * const class, const char * const close_request TSRMLS_DC);
Note: See TracChangeset
for help on using the changeset viewer.
