示例#1
0
/* assumes cur_file is already pointing to proper file */
static void start_next_file() {
	printf("Starting next file: %s\n", cur_file->src_filename);
	
	struct stat s;
	if (stat(cur_file->src_filename, &s) != 0) {
	  pz_error("Cannot stat %s\n", cur_file->src_filename);
	  return;
	}
	

	/* If track is being transferred, get a new destination filename */
	if (cur_file->src_track) {
		if (cur_file->dst_filename) {
		  pz_error("Track shouldn't already have dst_filename\n");
		  abort_transfer();
		  return;
		}
		
		cur_file->dst_filename = (char *)malloc(256);
		char *dst_base = ((ipod_p)(trans_list_dst_ipod))->basePath;
	    char *extension, *p;
		extension = (char*)ipod_extension_of(cur_file->src_filename,".mp3");
		cur_file->dst_location = ipod_unique_track_location_wrapper(trans_list_dst_ipod, extension);
    	strcpy(cur_file->dst_filename, dst_base);
		strcat(cur_file->dst_filename, cur_file->dst_location);
		while((p=strpbrk(cur_file->dst_filename,":"))!=NULL) *p='/'; /* convert ':'s to '/' */
	}
	
	if (!cur_file->dst_filename) {
	  pz_error("No destination filename given!\n");
	  abort_transfer();
	  return;
	}

	srcFile = fopen(cur_file->src_filename, "r");
	if (!srcFile) {
	  pz_error("Could not open %s for reading\n", cur_file->src_filename);
	  abort_transfer();
	  return;
	}
	
	dstFile = fopen(cur_file->dst_filename, "w");
	if (!dstFile) {
	  pz_error("Could not open %s for writing\n", cur_file->dst_filename);
	  fclose(srcFile);
	  srcFile = NULL;
	  abort_transfer();
	  return;
	}
}
示例#2
0
int transfer_widget_event (PzEvent *ev) {
    switch (ev->type) {
		case PZ_EVENT_BUTTON_DOWN:
//			if (ev->arg == PZ_BUTTON_ACTION)
//				pz_dialog("title", "no press", 2, 0, "but a", "but b");
//			else 
		    if (ev->arg == PZ_BUTTON_MENU) {
			    if (rip_status == STATUS_TRANSFERRING) {
				  if (pz_dialog("Alert!", "Really abort transfer?", 2, 0, "No", "Yes") == 1)
				    abort_transfer();
			    }  
				else
				  close_transfer();  
				//pz_close_window(ev->wid->win);
			}
			break;
    	case PZ_EVENT_BUTTON_UP:
			//pz_close_window (ev->wid->win);
			break;
    	case PZ_EVENT_DESTROY:
		//	ttk_free_surface (image);
		//	free (text);
			break;
    }
    return 0;
}
示例#3
0
static void do_copy() {
    unsigned long bytesRead,bytesWritten;
    bytesRead = fread(transfer_buffer,1,BUFFER_SIZE,srcFile);
    if (bytesRead==0) {
	  pz_error("Zero bytes read!\n");
	  abort_transfer();
	  return;
	}
    
	bytesWritten = fwrite(transfer_buffer,1,bytesRead,dstFile);
    if (bytesRead != bytesWritten) {
	  pz_error("bytesRead != bytesWritten!\n");
	  abort_transfer();
	  return;
	}
    file_bytes_transferred += bytesWritten;
	total_bytes_transferred += bytesWritten;
	
    return;
}
示例#4
0
void SPI::abort_all_transfers()
{
    clear_transfer_buffer();
    abort_transfer();
}