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_rmdir(&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;
}
Esempio n. 2
0
void gw_tm_ftp_transfer_rmdir_cb(
        void *                         user_arg,
        globus_ftp_client_handle_t *   handle,
        globus_object_t *              err)
{
	gw_tm_ftp_transfer_t *  xfr;
	gw_tm_ftp_stack_t *     file;
    globus_result_t         grc;
    int                     xfr_id;
    
	xfr_id = *( (int *) user_arg );
	
	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
	    {
	    	/*printf("RMDIR %d - FAILURE transfer does not exisit.\n", xfr_id);*/
	    	
	    	free(user_arg);
	    	return;
	    }
	else
	{
	    /*printf("RMDIR %d - FAILURE invalid transfer id in callback.\n", xfr_id);*/
	    			
    	free(user_arg);
		return;	
	}
    
    if(err != GLOBUS_SUCCESS) /* ERROR RMDIR OR EXPAND */
    {
		printf("RMDIR %d - FAILURE ftp_client_delete/rmdir command.\n",xfr->jid);
		
		free(user_arg);
		return;
    }

	file = gw_tm_ftp_stack_pop(&(xfr->file_stack));
	
	if( file != NULL )
	{
		if ( (file->type == GW_TM_FTP_DIR) && (file->expanded == GW_FALSE) )
		{
			
			gw_tm_ftp_transfer_flush (xfr);
			gw_tm_ftp_transfer_expand_url (xfr_id, file->file_name, 
					gw_tm_ftp_transfer_rmdir_cb);
					
			free(file->file_name);
			free(file);
			free(user_arg);
			return;						
		}
		else
		{
			if ( file->type == GW_TM_FTP_FILE )
				grc = globus_ftp_client_delete (&(xfr->handle),
        										file->file_name,
        								    	&(xfr->op_attr),
									        	gw_tm_ftp_transfer_rmdir_cb,
									        	user_arg);
			else
				grc = globus_ftp_client_rmdir ( &(xfr->handle),
												file->file_name,
												&(xfr->op_attr),
									        	gw_tm_ftp_transfer_rmdir_cb,
									        	user_arg);
									        	
			if ( grc != GLOBUS_SUCCESS )
			{
				printf("RMDIR %d - FAILURE ftp_client_delete/rmdir command\n", xfr->jid);
				free(user_arg);
			}					
				      
			free(file->file_name);
			free(file);
			return;
		}
	}
	
	printf("RMDIR %d - SUCCESS -\n", xfr->jid);	
	free(user_arg);
}