Exemplo n.º 1
0
int irecv_list(struct usb_dev_handle* handle, char* filename) {

	if (handle == NULL) {
		printf("irecv_list: Device has not been initialized!\n");
		return -1;
	}

	//max command length
	char line[0x200];
	FILE* script = fopen(filename, "rb");

	if (script == NULL) {
		printf("irecv_list: unable to find file!\n");
		return -1;
	}

	printf("\n");

	//irecv_command(handle, temp_len, &line);
	while (fgets(line, 0x200, script) != NULL) {
  
    		if(!((line[0]=='/') && (line[1]=='/'))) {
      
      			if(line[0] == '/') {
      
        			printf("irecv_list: handling> %s", line);
        			char byte;
        			int offset=strlen(line)-1;
        
        			while(offset>0) {
        
         			if (line[offset]==0x0D || line[offset]==0x0A) line[offset--]=0x00;
          			else break;
              
        			};

        			irecv_parse(handle, &line[1]);
      
      			} else {

        			printf("irecv_list: sending> %s", line);
        			char *command[1];
        			command[0] = line;
        			irecv_command(handle, 1, command);

      			}
    
    		}
    
	}

	fclose(script);
}
Exemplo n.º 2
0
int irecv_console(struct usb_dev_handle *handle, char* logfile) {
	if(usb_set_configuration(handle, 1) < 0) {
	    printf("irecv_console: Error setting configuration!\n");
		return -1;
	}

	if(usb_claim_interface(handle, 1) < 0) {
	    printf("irecv_console: Error claiming interface!\n");
		return -1;
	}

	if(usb_set_altinterface(handle, 1) < 0) {
	    printf("irecv_console: Error setting alt interface!\n");
		return -1;
	}

	char* buffer = malloc(BUF_SIZE);
	if(buffer == NULL) {
		printf("irecv_console: Error allocating memory!\n");
		return -1;
	}
	
	FILE* fd = NULL;
	if(logfile != NULL) {
	    fd = fopen(logfile, "w");
	    if(fd == NULL) {
	        printf("irecv_console: Unable to open log file!\n");
	        free(buffer);
	        return -1;
	    }
	}

	while(1) {
		int bytes = 0;
		while(bytes >= 0) {
			memset(buffer, 0, BUF_SIZE);
			bytes = usb_bulk_read(handle, 0x81, buffer, BUF_SIZE, 500);
			int i;
			for(i = 0; i < bytes; ++i)
			{
				fprintf(stdout, "%c", buffer[i]);
				if(fd) fprintf(fd, "%c", buffer[i]);
			}
		}

		char* command = readline("iRecovery> ");
		if(command && *command) {
			add_history(command);
		}

        if(command[0] == '/') {
            if(irecv_parse(handle, &command[1]) < 0) {
                free(command);
                break;
            }
            
        } else {
            if(irecv_command(handle, 1, &command) < 0) {
                free(command);
                break;
            }
        }

		free(command);
	}
	
	free(buffer);
	if(fd) fclose(fd);
	usb_release_interface(handle, 1);
}