From 85c84d992e3d0705a3f857664c419e9780d60ab5 Mon Sep 17 00:00:00 2001
From: Luiza Wille <lmwc14@inf.ufpr.br>
Date: Thu, 1 Jun 2017 11:12:06 -0300
Subject: [PATCH] fixed the mount ipxe program and created an english version
 for it

Signed-off-by: Luiza Wille <lmwc14@inf.ufpr.br>
---
 useful/mount-ipxe/makefile       |   3 +-
 useful/mount-ipxe/mountIPXE      | Bin 0 -> 19936 bytes
 useful/mount-ipxe/mountIPXE-en   | Bin 0 -> 19936 bytes
 useful/mount-ipxe/mountIPXE-en.c | 245 +++++++++++++++++++++++++++++++
 useful/mount-ipxe/mountIPXE.c    |   5 +-
 5 files changed, 249 insertions(+), 4 deletions(-)
 create mode 100755 useful/mount-ipxe/mountIPXE
 create mode 100755 useful/mount-ipxe/mountIPXE-en
 create mode 100644 useful/mount-ipxe/mountIPXE-en.c

diff --git a/useful/mount-ipxe/makefile b/useful/mount-ipxe/makefile
index ae6d7136..819d505e 100644
--- a/useful/mount-ipxe/makefile
+++ b/useful/mount-ipxe/makefile
@@ -2,6 +2,7 @@ all: mountIPXE
 
 mountIPXE: mountIPXE.c
 	gcc `pkg-config --cflags gtk+-3.0` -o mountIPXE mountIPXE.c `pkg-config --libs gtk+-3.0`
-	
+	gcc `pkg-config --cflags gtk+-3.0` -o mountIPXE-en mountIPXE-en.c `pkg-config --libs gtk+-3.0`
 clean:
 	rm mountIPXE
+	rm mountIPXE-en
diff --git a/useful/mount-ipxe/mountIPXE b/useful/mount-ipxe/mountIPXE
new file mode 100755
index 0000000000000000000000000000000000000000..7f4c555cc95af6cbc7808e31a0fbcd84f4658846
GIT binary patch
literal 19936
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
Xp!|u=ehE8}W(J0Du!x6nG3*BbGx3zE

literal 0
HcmV?d00001

diff --git a/useful/mount-ipxe/mountIPXE-en b/useful/mount-ipxe/mountIPXE-en
new file mode 100755
index 0000000000000000000000000000000000000000..3322f4344c7997e3e2cfb1f19c96e35174a26215
GIT binary patch
literal 19936
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
KMLdLyVLt$`w16A{

literal 0
HcmV?d00001

diff --git a/useful/mount-ipxe/mountIPXE-en.c b/useful/mount-ipxe/mountIPXE-en.c
new file mode 100644
index 00000000..de0454d6
--- /dev/null
+++ b/useful/mount-ipxe/mountIPXE-en.c
@@ -0,0 +1,245 @@
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+#define NUM_COUNT 5 // how many time until give up to get disks
+#define ARQUIVO "./tmp"	//	file where the script writes the returns
+
+//	global widgets
+GtkEntry *entry;
+GtkComboBoxText *comboboxtext;
+
+void remove_tmp_file (){
+	int pid, status;
+	
+	pid = fork();
+	if (pid == 0){
+    	execlp("./script.sh", "script.sh", "2", NULL); // call script to remove tmp file
+    	exit(0);
+	}	
+	waitpid(pid, &status, 0);	//	wait until remove the file
+}
+
+//	opens a file choose dialog
+static void openFileDialog (GtkWidget *widget, gpointer data)
+{
+	GtkWidget *dialog;
+	gint res;
+		
+	dialog = gtk_file_chooser_dialog_new ("Open File", NULL, GTK_FILE_CHOOSER_ACTION_OPEN, ("_Cancel"), GTK_RESPONSE_CANCEL, ("_Open"), GTK_RESPONSE_ACCEPT, NULL);
+	res = gtk_dialog_run (GTK_DIALOG(dialog));
+	if (res == GTK_RESPONSE_ACCEPT)
+  	{
+  		//	when a file is selected text in the entry has to be changed too
+		gtk_entry_set_text (GTK_ENTRY(data), gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)));
+  	}
+	gtk_widget_destroy(dialog);
+}
+
+//	gets the pen drive and the file selected, verify and call the script
+static void confirm (GObject *widget, gpointer data)
+{
+	FILE *file;
+	int resp, pid, status;
+	GtkWidget *dialog;
+	gchar *disk;
+	gchar *image;
+	
+	//	store the strings for the pen drive and the file
+	disk = gtk_combo_box_text_get_active_text(comboboxtext);
+	image = (gchar *) gtk_entry_get_text(entry);
+	
+	//	verify if a file was selected
+	if (!strcmp(image, "")){
+		dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n No file was selected.");
+				gtk_dialog_run(GTK_DIALOG(dialog));
+				gtk_widget_destroy(dialog);
+				return;
+	}
+	
+	//	verify if a pen drive was selected
+	if (disk == NULL){
+		dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n No pen drive was selected.");
+				gtk_dialog_run(GTK_DIALOG(dialog));
+				gtk_widget_destroy(dialog);
+				return;
+	}
+	
+	//	asks the user to confirm
+	dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_OK_CANCEL, "Are you sure you want to format your device?\nContinuing, all the data inside the pen drive %s will be deleted!", disk);
+	resp = gtk_dialog_run(GTK_DIALOG(dialog));
+	gtk_widget_destroy(dialog);
+	
+ 	if (resp == GTK_RESPONSE_OK){
+ 		//	after confirmation it will call the script to format the pen drive
+ 		pid = fork();
+ 		if (pid == 0){
+			execlp("./script.sh", "script.sh", "1", strtok(disk, " "), image, NULL);
+			exit(0);
+		}
+		waitpid(pid, &status, 0);	//	wait until script is finished
+		
+		//	the script will return to a file that should be created every time
+		file = fopen(ARQUIVO, "r");
+		if (file == NULL)
+			resp = 3;	//	should never go here, but strange things can happen and we must be prepared
+		else{
+			fscanf(file, "%d", &resp);	//	get the script response
+			fclose(file);
+		}		
+		
+		if (resp == 0){
+			//	format sucess
+			dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "Success!\nThe pen drive %s was formated correctly and it is ready to boot.", disk);
+			gtk_dialog_run(GTK_DIALOG(dialog));
+			gtk_widget_destroy(dialog);
+		}
+	
+		//	errors may have ocurred
+		if (resp == 1){
+			//	format error (mkfs)
+			dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n It was not possible to format the pen drive %s correctly.", disk);
+			gtk_dialog_run(GTK_DIALOG(dialog));
+			gtk_widget_destroy(dialog);
+		}
+		if (resp == 2){
+			//	error while copying the image to pen drive
+			dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n It was not possible to save the image %s in the pen drive %s", image, disk);
+			gtk_dialog_run(GTK_DIALOG(dialog));
+			gtk_widget_destroy(dialog);
+		}
+		if (resp == 3){
+			//	error while copying the image to pen drive
+			dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n Some unexpected error happened!");
+			gtk_dialog_run(GTK_DIALOG(dialog));
+			gtk_widget_destroy(dialog);
+		}
+		remove_tmp_file();
+ 	}
+}
+
+// gets all pen drives connected, has to be called after the script 
+char *get_disks(){
+	GtkWidget *dialog;
+	FILE *file;
+	int tam, cont = 0;
+	char *buf;
+	int pid, status;
+	
+	pid = fork();
+	if (pid == 0){
+    	execlp("./script.sh", "script.sh", "0", NULL); // call get_disks from the script
+    	exit(0);
+	}
+	
+	waitpid(pid, &status, 0);
+
+	//	wait until the file is created by the script with the pen drives connected
+	file = fopen(ARQUIVO, "r");
+		
+	if (file == NULL){
+		//	no pen drive connected
+		dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "Error!\n No pen drive was found. Insert one and click to refresh.");
+		gtk_dialog_run(GTK_DIALOG(dialog));
+		gtk_widget_destroy(dialog);
+		return NULL;
+	}
+	
+	//	got the file, now store all information in a string
+	fseek(file, 0, SEEK_END);
+	tam = ftell(file);
+	fseek(file, 0, SEEK_SET);
+	buf	= (char *) malloc (tam*sizeof(char));
+	fread(buf, tam, 1, file);
+	
+	fclose(file);	
+	remove_tmp_file();
+	return buf;
+}
+
+//	update the list of pen drives connected in the combo box text
+void box_update(){
+	char *usb_disks, *disk;
+		
+	//	remove all lines in combo box
+	gtk_combo_box_text_remove_all(comboboxtext);
+	
+	//	gets the new list of pen drives connected and for each one 
+	usb_disks = get_disks();
+	if (usb_disks != NULL){
+		disk = strtok(usb_disks, "\n");
+		while (disk != NULL){
+			gtk_combo_box_text_append_text(comboboxtext, disk);
+			disk = strtok(NULL, "\n");
+		}
+	
+		//	sets the first on the list as active 
+		gtk_combo_box_set_active(GTK_COMBO_BOX(comboboxtext), 0);
+	
+		free(usb_disks);
+	}
+}
+
+//	control the layout and callbacks of events
+static void activate (GtkApplication* app, gpointer user_data)
+{
+	GtkWidget *window;
+	GtkWidget *label;	
+	GtkWidget *button;
+	GtkWidget *grid;
+	
+	window = gtk_application_window_new(app);
+	gtk_window_set_title(GTK_WINDOW (window), "Create bootable USB device.");
+	//gtk_window_set_default_size(GTK_WINDOW (window), 400, 300);
+	gtk_container_set_border_width(GTK_CONTAINER (window), 10);
+	
+	grid = gtk_grid_new();
+	gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
+	gtk_grid_set_column_spacing(GTK_GRID(grid), 5);
+	gtk_container_add(GTK_CONTAINER (window), grid);
+
+	label = gtk_label_new("Select the IPXE boot file:");
+	gtk_grid_attach(GTK_GRID (grid), label, 0, 0, 1, 1);
+
+	entry = GTK_ENTRY(gtk_entry_new());
+	gtk_grid_attach(GTK_GRID (grid), GTK_WIDGET(entry), 0, 1, 6, 1);
+	
+	button = gtk_button_new_with_label("...");
+	gtk_grid_attach_next_to(GTK_GRID (grid), button, GTK_WIDGET(entry), GTK_POS_RIGHT, 1, 1);
+	g_signal_connect(button, "clicked", G_CALLBACK(openFileDialog), entry);
+	
+	label = gtk_label_new("Select the device that will be used:");
+	gtk_grid_attach(GTK_GRID (grid), label, 0, 2, 1, 1);
+	
+	comboboxtext = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new());
+	
+	gtk_grid_attach(GTK_GRID(grid), GTK_WIDGET(comboboxtext), 0, 3, 1, 1);
+	
+	button = gtk_button_new_with_label("Refresh");
+	g_signal_connect_swapped(button, "clicked", G_CALLBACK(box_update), NULL);
+	gtk_grid_attach_next_to(GTK_GRID(grid), button, GTK_WIDGET(comboboxtext), GTK_POS_RIGHT, 1, 1);
+	
+	button = gtk_button_new_with_label("Cancel");
+	g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_widget_destroy), window);
+	gtk_grid_attach(GTK_GRID(grid), button, 0, 4, 1, 1);
+	
+	button = gtk_button_new_with_label("Create");
+	g_signal_connect(button, "clicked", G_CALLBACK(confirm), NULL);
+	gtk_grid_attach(GTK_GRID(grid), button, 1, 4, 1, 1);
+			
+	gtk_widget_show_all(window);
+}
+
+int main (int argc, char **argv)
+{
+	GtkApplication *app;
+	int status;
+
+	app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
+	g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
+	status = g_application_run(G_APPLICATION(app), argc, argv);
+	g_object_unref(app);
+
+	return status;
+}
diff --git a/useful/mount-ipxe/mountIPXE.c b/useful/mount-ipxe/mountIPXE.c
index 1288de5e..3e1df76c 100644
--- a/useful/mount-ipxe/mountIPXE.c
+++ b/useful/mount-ipxe/mountIPXE.c
@@ -199,7 +199,7 @@ static void activate (GtkApplication* app, gpointer user_data)
 	gtk_grid_set_column_spacing(GTK_GRID(grid), 5);
 	gtk_container_add(GTK_CONTAINER (window), grid);
 
-	label = gtk_label_new("Selcione o arquivo de boot do IPXE:");
+	label = gtk_label_new("Selecione o arquivo de boot do IPXE:");
 	gtk_grid_attach(GTK_GRID (grid), label, 0, 0, 1, 1);
 
 	entry = GTK_ENTRY(gtk_entry_new());
@@ -209,7 +209,7 @@ static void activate (GtkApplication* app, gpointer user_data)
 	gtk_grid_attach_next_to(GTK_GRID (grid), button, GTK_WIDGET(entry), GTK_POS_RIGHT, 1, 1);
 	g_signal_connect(button, "clicked", G_CALLBACK(openFileDialog), entry);
 	
-	label = gtk_label_new("Selcione o dispositivo que serĂ¡ utilizado:");
+	label = gtk_label_new("Selecione o dispositivo que serĂ¡ utilizado:");
 	gtk_grid_attach(GTK_GRID (grid), label, 0, 2, 1, 1);
 	
 	comboboxtext = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new());
@@ -235,7 +235,6 @@ int main (int argc, char **argv)
 {
 	GtkApplication *app;
 	int status;
-
 	app = gtk_application_new("org.gtk.example", G_APPLICATION_FLAGS_NONE);
 	g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
 	status = g_application_run(G_APPLICATION(app), argc, argv);
-- 
GitLab