int main(int argc, char * argv[]) { globus_ftp_client_handle_t handle; globus_ftp_client_operationattr_t attr; globus_result_t result; globus_ftp_client_handleattr_t handle_attr; char * src; char * dst; globus_module_activate(GLOBUS_FTP_CLIENT_MODULE); globus_ftp_client_handleattr_init(&handle_attr); globus_ftp_client_operationattr_init(&attr); globus_mutex_init(&lock, GLOBUS_NULL); globus_cond_init(&cond, GLOBUS_NULL); test_parse_args(argc, argv, &handle_attr, &attr, &src, &dst); globus_ftp_client_operationattr_set_type(&attr, GLOBUS_FTP_CONTROL_TYPE_ASCII); globus_ftp_client_handle_init(&handle, &handle_attr); done = GLOBUS_FALSE; result = globus_ftp_client_mkdir(&handle, src, &attr, done_cb, 0); if(result != GLOBUS_SUCCESS) { done = GLOBUS_TRUE; } globus_mutex_lock(&lock); while(!done) { globus_cond_wait(&cond, &lock); } globus_mutex_unlock(&lock); globus_ftp_client_handle_destroy(&handle); globus_module_deactivate_all(); if(test_abort_count && error) { return 0; } return error; }
int gw_tm_ftp_transfer_mkdir(int xfr_id, const char * url_dir) { globus_result_t grc; int length; gw_tm_ftp_transfer_t * xfr; int * _xfr_id; if ( ( xfr_id < GW_TM_FTP_XFR_POOL_MAX ) && (xfr_id >= 0 ) ) if ( gw_tm_ftp_xfr_pool[xfr_id] != NULL ) xfr = gw_tm_ftp_xfr_pool[xfr_id]; else return 1; else return 1; if ( xfr->base_dir != NULL ) free(xfr->base_dir); length = strlen(url_dir); if ( url_dir[length-1] != '/' ) { xfr->base_dir = (char *) malloc ( (length + 2) * sizeof(char) ); snprintf(xfr->base_dir,(length + 2)*sizeof(char), "%s/",url_dir); } else xfr->base_dir = strdup(url_dir); xfr->base_dir_length = strlen(xfr->base_dir); _xfr_id = ( int *) malloc (sizeof(int)); *(_xfr_id) = xfr->jid; grc = globus_ftp_client_mkdir ( &(xfr->handle), xfr->base_dir, &(xfr->op_attr), gw_tm_ftp_transfer_mkdir_cb, (void *) _xfr_id); if (grc != GLOBUS_SUCCESS) { free(_xfr_id); return 1; } else return 0; }