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;
}
Example #2
0
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;
	
}