From 9635f198600eac7d13f05aef2217a15d0780ec83 Mon Sep 17 00:00:00 2001
From: Enris Nogare von Tein <ent13@inf.ufpr.br>
Date: Thu, 30 Jun 2016 11:54:40 -0300
Subject: [PATCH] Properly documented the last bits of code and added a debug
 define that activates debugging output.

Signed-off-by: Enris Nogare von Tein <ent13@inf.ufpr.br>
---
 useful/stg312/.size.out             |   2 +-
 useful/stg312/.upid.out             |   2 +-
 useful/stg312/openslx_gui           | Bin 95098 -> 99073 bytes
 useful/stg312/openslx_gui.c         |  75 +++++++--
 useful/stg312/openslx_gui.h         |   2 +
 useful/stg312/openslx_gui_v01.glade |   2 +-
 useful/stg312/stg4.c                |  57 ++++++-
 useful/stg312/stg4.h                |   1 -
 useful/stg312/upload                | Bin 37918 -> 37874 bytes
 useful/stg312/upload-utils.c        | 253 ++++++++++++++++++++--------
 useful/stg312/upload-utils.h        |   1 -
 useful/stg312/upload.c              | 127 ++++++++++----
 useful/stg312/utils.c               | 133 +++++++++++----
 useful/stg312/utils.h               |  18 --
 14 files changed, 491 insertions(+), 182 deletions(-)

diff --git a/useful/stg312/.size.out b/useful/stg312/.size.out
index 0d998574..00ab0c33 100644
--- a/useful/stg312/.size.out
+++ b/useful/stg312/.size.out
@@ -1 +1 @@
-1729704	teste-versao-comentada.r1.tar.gz
+1729732	teste-libs-inuteis.r1.tar.gz
diff --git a/useful/stg312/.upid.out b/useful/stg312/.upid.out
index bc0a8da6..c18e0703 100644
--- a/useful/stg312/.upid.out
+++ b/useful/stg312/.upid.out
@@ -1 +1 @@
-{"uploadid":"SKwGngE2ZgVnuqkUUMZrASSGPktr5iWQQeb","status":"ok","code":"003","msg":"New upload succesful"}
\ No newline at end of file
+{"uploadid":"xKo1qTyEi3RtsCyZow6VoeOHVF2sJfzSdtP","status":"ok","code":"003","msg":"New upload succesful"}
\ No newline at end of file
diff --git a/useful/stg312/openslx_gui b/useful/stg312/openslx_gui
index a60e4435be36a17ef973b96338014689d38f500b..6bcb70548ab041c18e438a225b8f37ddeb7cd7ae 100755
GIT binary patch
delta 41010
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

delta 39065
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
HiBTT_UJo-s

diff --git a/useful/stg312/openslx_gui.c b/useful/stg312/openslx_gui.c
index d3520483..4da53e66 100644
--- a/useful/stg312/openslx_gui.c
+++ b/useful/stg312/openslx_gui.c
@@ -6,7 +6,6 @@
 #include <sys/wait.h>
 #include "utils.h"
 #include "stg4.h"
-#include <X11/Xlib.h>
 #include <gdk/gdkkeysyms.h>
 #include <unistd.h>
 #include <locale.h>
@@ -18,12 +17,18 @@
 
 //FUnção que mostra a tela de upload antigo, caso ele exista
 void tela_upload_antigo(GtkWidget *w,gpointer p){
+
     GtkWidget *window_upload_antigo, *janela_ant, *button_continua_upload, *button_nao_continua, *label_nome_imagem, *label_parte_upload;
 	GtkBuilder *builder;
     FILE *upload_in_progress;
     char *old_upload;
     old_upload = malloc(255*sizeof(char));
 
+    #ifdef DEBUG
+        puts("Entrou na tela de upload antigo");
+        puts("");
+    #endif /*DEBUG*/
+
     dados *data_ant = p; //Pega os dados recebidos pela chamada da função
     janela_ant = (GtkWidget*) data_ant->dado1; //Pega a janela antiga que chamou essa nova janela
 
@@ -36,6 +41,11 @@ void tela_upload_antigo(GtkWidget *w,gpointer p){
 	label_nome_imagem = GTK_WIDGET(gtk_builder_get_object(builder, "label_nome_imagem"));
 	label_parte_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_parte_upload"));
 
+    #ifdef DEBUG
+        puts("Vai abrir o arquivo de upload antigo");
+        puts("");
+    #endif /*DEBUG*/
+
     upload_in_progress = fopen(".progress.out", "a+"); //Abre o arquivo para ler os dados do upload antigo, abre com a+ para poder dar rewind
     printf("Linha %d\n", __LINE__);
     rewind(upload_in_progress);
@@ -59,13 +69,24 @@ void tela_upload_antigo(GtkWidget *w,gpointer p){
 
 //tela principal do programa, chamada após o login
 void tela_principal(GtkWidget *w,gpointer p){
+
 	GtkWidget *janela_principal, *janela_ant, *button_stg4, *button_ajuda_tela_principal, *button_stg4_update, *label_greeting;
 	GtkBuilder *builder;
     int status;
 
+    #ifdef DEBUG
+        puts("Entrou na tela principal");
+        puts("");
+    #endif /*DEBUG*/
+
     //Se não encontrou o arquivo .speed.out, calcula a velocidade de upload do usuário.
     if((access(".speed.out", F_OK) == -1)){
-        puts("Entrou no if");
+
+        #ifdef DEBUG
+           puts("Entrou no if");
+            puts("");
+        #endif /*DEBUG*/
+
         g_spawn_command_line_sync("speedtest-cli --bytes --simple > .speed.out", NULL, NULL, &status, NULL); // Executa o script
     }
 
@@ -89,11 +110,26 @@ void tela_principal(GtkWidget *w,gpointer p){
             gtk_widget_hide(janela_ant); //Esconde a janela anterior
         }
 
+        #ifdef DEBUG
+            puts("Vai pegar dados do usuário");
+            puts("");
+        #endif /*DEBUG*/
+
 		pega_dados_do_usuario(&dados_do_user); //Pega os dados do usuário recebidos no login
-		puts(dados_do_user.name);
-		puts(dados_do_user.login);
-		puts(dados_do_user.email);
-		puts(dados_do_user.city);
+
+		#ifdef DEBUG
+            puts(dados_do_user.name);
+            puts(dados_do_user.login);
+            puts(dados_do_user.email);
+            puts(dados_do_user.city);
+            puts("");
+        #endif /*DEBUG*/
+
+        #ifdef DEBUG
+            puts("Vai gerar arquivo de dados do usuário");
+            puts("");
+        #endif /*DEBUG*/
+
         gera_arquivo_dados_usuario(); //Cria o user_data.info
 		strcpy(greeting_text, dados_do_user.name);
 		strcat(greeting_text, "!");
@@ -125,23 +161,24 @@ void tela_principal(GtkWidget *w,gpointer p){
 
 //Função que mostra a tela de login para o usuario
 void tela_login(){
+    #ifdef DEBUG
+        puts("tela de login");
+        puts("");
+    #endif /*DEBUG*/
 
 	GtkWidget *window_login, *button_login, *entry_login, *entry_passwd, *label_login_erro;
 	GtkBuilder *builder;
 
 	builder = gtk_builder_new(); //Cria um novo Builder gtk
 	gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets
-    printf("Linha %d\n", __LINE__);
 
 	window_login = GTK_WIDGET(gtk_builder_get_object(builder, "window_login"));
 	g_signal_connect(window_login, "destroy", G_CALLBACK(sair), NULL);
-    printf("Linha %d\n", __LINE__);
 
 	button_login = GTK_WIDGET(gtk_builder_get_object(builder, "button_login"));
 	label_login_erro = GTK_WIDGET(gtk_builder_get_object(builder, "label_login_erro"));
 	entry_login = GTK_WIDGET(gtk_builder_get_object(builder, "entry_login"));
 	entry_passwd = GTK_WIDGET(gtk_builder_get_object(builder, "entry_passwd"));
-    printf("Linha %d\n", __LINE__);
 
 	struct dados *data = malloc(sizeof(*data));
 	data->dado1 = window_login;
@@ -151,21 +188,28 @@ void tela_login(){
 	data->dado4 = entry_passwd;
 	data->dado5 = label_login_erro;
 
-    printf("Linha %d\n", __LINE__);
     g_signal_connect (G_OBJECT (window_login), "key_press_event", G_CALLBACK (on_key_press), data);
-    printf("Linha %d\n", __LINE__);
     g_signal_connect(entry_passwd, "activate", G_CALLBACK(faz_login), data);
 	g_signal_connect(button_login, "clicked", G_CALLBACK(faz_login), data); //Caso ele aperte enter com o foco no password
-    printf("Linha %d\n", __LINE__);
 
 	gtk_widget_show_all(window_login);
 }
 
 // Main
 int main(int argc, char *argv[]){
-	XInitThreads();
+
+    #ifdef DEBUG
+        puts("Vai iniciar o GTK");
+        puts("");
+    #endif /*DEBUG*/
+
 	gtk_init(&argc, &argv); //Inicia o GTK
 
+
+    #ifdef DEBUG
+        puts("Vai informar os locales para a tradução");
+        puts("");
+    #endif /*DEBUG*/
 	setlocale(LC_ALL, "");
 	bindtextdomain("openslx_gui_v01", "/usr/share/locale");
 	textdomain("openslx_gui_v01");
@@ -180,6 +224,11 @@ int main(int argc, char *argv[]){
 		GdkScreen *screen;
 		GFile *css;
 
+        #ifdef DEBUG
+            puts("vai carregar os estilos css");
+            puts("");
+        #endif /*DEBUG*/
+
 		css = g_file_new_for_path("./styles.css");
 
 		provider = gtk_css_provider_new();
diff --git a/useful/stg312/openslx_gui.h b/useful/stg312/openslx_gui.h
index ddadd400..76bf7b06 100644
--- a/useful/stg312/openslx_gui.h
+++ b/useful/stg312/openslx_gui.h
@@ -7,6 +7,8 @@
 #include <curl/curl.h>
 #include <curl/easy.h>
 
+#define DEBUG //Comment this for release version
+
 // Using http://www.digip.org/jansson/ for dealing with Json packages for Login/upload. All code was found in their tutorials.
 // Using https://curl.haxx.se/libcurl/c/example.html for doing http requests for Login/upload,
 //      the documenting and debugging of this library is a hellhole, i STRONGLY recommend coding this with the one responsible for the site API next to you
diff --git a/useful/stg312/openslx_gui_v01.glade b/useful/stg312/openslx_gui_v01.glade
index 9dab03a9..43f2e439 100644
--- a/useful/stg312/openslx_gui_v01.glade
+++ b/useful/stg312/openslx_gui_v01.glade
@@ -637,7 +637,7 @@ e clique em Gerenciamento de Imagens. Edite as configurações do sistema
 que fez upload e ele estará pronta para uso!
 
 Caso o navegador não abra, entre no site:
-http://slxbox.dev.c3sl.br
+http://slxboxdev.c3sl.br
 </property>
                   </object>
                 </child>
diff --git a/useful/stg312/stg4.c b/useful/stg312/stg4.c
index da1ab36e..4a75aed3 100644
--- a/useful/stg312/stg4.c
+++ b/useful/stg312/stg4.c
@@ -5,7 +5,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
+//#include <sys/wait.h>
 #include "utils.h"
 #include "upload-utils.h"
 #include <gdk/gdkkeysyms.h>
@@ -14,12 +14,20 @@
 
 //Ultima tela do sistema, mostra ao usuario o que ele deve fazer para ter a imagem habilitada
 void stg4_tela_confirmacao_upload(GPid pid, gint status,gpointer p){
+    #ifdef DEBUG
+        puts("stg4_tela_confirmação_upload");
+       puts("");
+     #endif /*DEBUG*/
 
 	GtkWidget *window_stg4_upload_confirm, *janela_ant, *button_return_upload_confirm, *button_site;
 	GtkBuilder *builder;
 
 	dados *data_ant = p; //Pega os dados recebidos pela chamada da função
 
+    #ifdef DEBUG
+           puts("Vai fechar o processo de upload");
+       puts("");
+     #endif /*DEBUG*/
 	GtkWidget *loading;
 	loading = data_ant->dado6;
 	pid = data_ant->pid;
@@ -90,6 +98,11 @@ void stg4_tela_img_select(GtkWidget *w,gpointer p){
 // // A função que exibe a 2a tela do programa, a tela de upload
 void stg4_2a_tela(GPid pid, gint status,gpointer p){
 
+    #ifdef DEBUG
+           puts("stg4_2a_tela");
+       puts("");
+     #endif /*DEBUG*/
+
 	GtkWidget *window_stg4_final, *button_stg4_final_sair, *janela_ant, *button_help_4at, *button_stg4_upload, *label_tempo_upload;
 	GtkBuilder *builder;
     char *texto_tempo_upload, *temp;
@@ -102,7 +115,10 @@ void stg4_2a_tela(GPid pid, gint status,gpointer p){
 	builder = gtk_builder_new(); //Cria um novo Builder gtk
 	gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets
 
-
+    #ifdef DEBUG
+        puts("Vai fechar o processo de clonagem de imagem");
+       puts("");
+     #endif /*DEBUG*/
     GtkWidget *loading;
 	loading = data_ant->dado6;
 	pid = data_ant->pid;
@@ -120,6 +136,12 @@ void stg4_2a_tela(GPid pid, gint status,gpointer p){
     button_stg4_upload = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_upload"));
     label_tempo_upload = GTK_WIDGET(gtk_builder_get_object(builder, "label_tempo_upload"));
 
+
+    #ifdef DEBUG
+           puts("Vai calcular o tempo de upload estimado");
+       puts("");
+     #endif /*DEBUG*/
+
     strcpy(texto_tempo_upload, "Tempo estimado de upload: ");
     sprintf(temp, "%d",calcula_tempo_upload() ); //Estima o tempo de upload de imagem
     strcat(texto_tempo_upload, temp);
@@ -148,6 +170,10 @@ void stg4_2a_tela(GPid pid, gint status,gpointer p){
 
 //Função que chama o script que gera a imagem do usuario.
 void stg4_clique_2a_tela(GtkWidget *w,gpointer p){
+    #ifdef DEBUG
+        puts("stg4_clique_2a_tela");
+       puts("");
+     #endif /*DEBUG*/
 
 	GPid pid;
 	GChildWatchFunc handler;
@@ -177,6 +203,11 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){
 
 	struct dados *data = malloc(sizeof(*data));
 
+    #ifdef DEBUG
+        puts("Vai popular os parametros do script de clonagem da imagem");
+       puts("");
+     #endif /*DEBUG*/
+
     acha_tm_scripts(tmscripts); //Acha a pasta tm_scripts no sistema
     strcpy(version, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); //Pega o nome da imagem que o usuario informou
     strcat(version, ".r1"); //versão será lidada pela api depois, por isso é a versão .r1
@@ -203,6 +234,11 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){
 
     argv[8] =  NULL;//ESSE ULTIMO PARAMETRO DEVE SER NULO, ele é o sentinela e informa o g_spawn onde acabam os parametros de invocação
 
+    #ifdef DEBUG
+        puts("Vai spawnar o processo com o script de clonagem de imagem");
+       puts("");
+     #endif /*DEBUG*/
+
     g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL);//NAO USE FORK PARA SPAWNAR SCRIPTS, use essa função. Documentação em: https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html#g-spawn-sync
 
     data->dado6 = loading_screen;
@@ -215,6 +251,10 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){
 
     handler = stg4_2a_tela; //Função que será chamada quando o g_spawn sair
 
+    #ifdef DEBUG
+        puts("Vai adicionar o processo ao child watch");
+       puts("");
+     #endif /*DEBUG*/
     g_child_watch_add(pid, handler, data); //Chama o handler quando o spawn acabar
 
 
@@ -223,6 +263,12 @@ void stg4_clique_2a_tela(GtkWidget *w,gpointer p){
 
 // Função que exibe a segunda tela, pedindo os dados necessários ao usuário
 void stg4_clique_1a_tela(GtkWidget *w,gpointer p){
+
+    #ifdef DEBUG
+        puts("stg4_clique_1a_tela");
+       puts("");
+     #endif /*DEBUG*/
+
 	GtkWidget *window_stg4_escolha, *janela_ant, *button_clonar, *entry_imagem, *file_chooser_local, *button_help_2at, *check_button_remove;
 	GtkBuilder *builder;
 
@@ -262,6 +308,11 @@ void stg4_clique_1a_tela(GtkWidget *w,gpointer p){
 //função que exibe a primeira tela do processo de clonagem, informando o usuário que ele deve instalar os pacotes desejados
 void stg4_inicio(GtkWidget *w,gpointer p){
 
+    #ifdef DEBUG
+        puts("stg4_inicio");
+       puts("");
+     #endif /*DEBUG*/
+
 	GtkWidget *window_stg4_inic, *janela_ant, *button_geren, *button_stg4_proximo, *button_help_1at;
 	GtkBuilder *builder;
 
@@ -273,8 +324,6 @@ void stg4_inicio(GtkWidget *w,gpointer p){
 	button_stg4_proximo  = GTK_WIDGET(gtk_builder_get_object(builder, "button_stg4_proximo"));
 	window_stg4_inic = GTK_WIDGET(gtk_builder_get_object(builder, "window_stg4_inic"));
 	button_geren = GTK_WIDGET(gtk_builder_get_object(builder, "button_geren"));
-	//button_shell = GTK_WIDGET(gtk_builder_get_object(builder, "button_shell"));
-
 
 	g_signal_connect(window_stg4_inic, "destroy", G_CALLBACK(chama_tela_principal), NULL); //Chama a tela principal ao destruir essa janela
 
diff --git a/useful/stg312/stg4.h b/useful/stg312/stg4.h
index 2a866f0f..acbab847 100644
--- a/useful/stg312/stg4.h
+++ b/useful/stg312/stg4.h
@@ -5,7 +5,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
 
 
 //void stg4_tela_confirmacao_upload(GtkWidget *w,gpointer p);
diff --git a/useful/stg312/upload b/useful/stg312/upload
index 9c8adf2445df5c7a787c79480e14a9610f0dd17f..59c5cd22ecb28a43be4f8372bec1cd8958ecfd72 100755
GIT binary patch
delta 8714
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
E0ItppLjV8(

delta 8476
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
V!QIEx$vNIg&q&X7^YjVP%mAIK#vuRz

diff --git a/useful/stg312/upload-utils.c b/useful/stg312/upload-utils.c
index b6abb937..31ac060e 100644
--- a/useful/stg312/upload-utils.c
+++ b/useful/stg312/upload-utils.c
@@ -4,7 +4,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
+//#include <sys/wait.h>
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdk.h>
 #include <glib.h>
@@ -13,13 +13,18 @@
 #include <curl/easy.h>
 #include <jansson.h>
 #include <time.h>
-#include <gcrypt.h>
+//#include <gcrypt.h>
 #include <sys/types.h>
 #include <signal.h>
 
 //Função que faz logout do sistema
 void logout(){
 
+    #ifdef DEBUG
+           puts("logout");
+       puts("");
+     #endif /*DEBUG*/
+
     CURL *curl;
 
 
@@ -39,6 +44,11 @@ void logout(){
         curl_easy_setopt(curl, CURLOPT_URL, API_URL);
         curl_easy_setopt(curl, CURLOPT_POST, 1);
         curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "request=logout");
+
+        #ifdef DEBUG
+           puts("Vai fazer o logout com o curl");
+               puts("");
+         #endif /*DEBUG*/
         curl_easy_perform(curl); //faz logout
     }
 
@@ -47,10 +57,21 @@ void logout(){
 //Checa se existe algum upload antigo em progresso
 int checa_upload_antigo(){
 
+    #ifdef DEBUG
+           puts("checa_upload_antigo");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *upload_in_progress;
     char *old_upload;
     old_upload = malloc(255*sizeof(char));
 
+
+    #ifdef DEBUG
+           puts("Vai abrir arquivo de upload em progresso");
+       puts("");
+     #endif /*DEBUG*/
+
     upload_in_progress = fopen(".progress.out", "a+"); //Abre o arquivo que contem os dados do upload antigo
     printf("Linha %d\n", __LINE__);
     rewind(upload_in_progress);
@@ -67,7 +88,18 @@ int checa_upload_antigo(){
 //Estima o tempo de upload, não faz a estimativa correta, mas só deus sabe como fazer essa joça realmente. O curl faz muita coisa que demora mais que só o upload, eu assumo
 int calcula_tempo_upload(){
 
+    #ifdef DEBUG
+           puts("Calcula_tempo_upload");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *velocidade_upload;
+
+    #ifdef DEBUG
+           puts("Vai abrir arquivo contendo a velocidade de upload");
+       puts("");
+     #endif /*DEBUG*/
+
     velocidade_upload = fopen(".speed.out", "r");
 
     char *velocidade;
@@ -75,25 +107,14 @@ int calcula_tempo_upload(){
     int velocidade_f;
 
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le lixo e joga fora
-    puts(velocidade);
     fscanf(velocidade_upload, "%s", velocidade); //Le a velocidade de upload
-    puts(velocidade);
-    puts("vai calcular");
     velocidade_f = atoi(velocidade); //Transforma em float
-    puts("calculou");
-    puts("chegou aqui");
     return((1953)/velocidade_f*3); // *3 para levar em conta problemas de rede.
 }
 
@@ -101,9 +122,20 @@ int calcula_tempo_upload(){
 // sera submetido junto à imagem quando o upload for feito.
 void gera_arquivo_dados_usuario(){
 
+    #ifdef DEBUG
+        puts("gera_arquivo_dados_usuario");
+       puts("");
+    #endif /*DEBUG*/
+
     user_info dados_do_user; //Estrutura definida em openslx_gui.h para guardar os dados do usuario
     pega_dados_do_usuario(&dados_do_user); //Abre o arquivo gerado no Login e coloca os dados do usuario na estrutura dados_do_user
     FILE *user_data_file;
+
+    #ifdef DEBUG
+           puts("Abre o arquivo de dados do usuario para sobrescrever");
+       puts("");
+     #endif /*DEBUG*/
+
     user_data_file = fopen("user_data.info", "wr"); //Arquivo com os dados do usuario que será feito o upload
 
     fputs("Nome do criador da imagem: ", user_data_file);
@@ -115,96 +147,116 @@ void gera_arquivo_dados_usuario(){
     fputs("\nCidade do criador da imagem: ", user_data_file);
     fputs(dados_do_user.city, user_data_file);
 
+    #ifdef DEBUG
+           puts("Vai pegar o tempo do sistema");
+       puts("");
+     #endif /*DEBUG*/
+
     time_t timer;
     time(&timer); //pega o tempo de criação da imagem
     fputs("\nData da criação da imagem: ", user_data_file);
     fputs(ctime(&timer), user_data_file); //Coloca o tempo de criação da imagem no arquivo
 
+    #ifdef DEBUG
+           puts("Vai pegar os dados do sistema rodando o software");
+       puts("");
+     #endif /*DEBUG*/
+
     fclose(user_data_file);
     system("uname -a >> user_data.info"); //Coloca informações sobre o usuario no arquivo
     system("lsb_release -a >> user_data.info"); //Coloca informações sobre o sistema no arquivo
 
 
-
-
 }
 
 //Função que checa o arquivo .login.out para verificar o suceso do login.
 int checa_sucesso_do_login(){
 
+    #ifdef DEBUG
+        puts("checa_sucesso_do_login");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *login;
     char *user_data_str;
+
+    #ifdef DEBUG
+        puts("Vai abrir o arquivo com o resultado do login");
+       puts("");
+     #endif /*DEBUG*/
+
     login = fopen(".login.out", "r"); //Arquivo que contem a resposta do login
     user_data_str = malloc(2550*sizeof(char));
     fgets(user_data_str,2550*sizeof(char), login );
 
-    printf("%zu tamanho da string\n", strlen(user_data_str));
-    puts(user_data_str);
+   #ifdef DEBUG
+        puts("Dados lidos do pacote:");
+        puts(user_data_str);
+        puts("Vai ler o pacote json recebido pelo servidor");
+       puts("");
+     #endif /*DEBUG*/
 
     json_t *root;
     json_error_t error;
     root = json_loads(user_data_str,0, &error); //Pega os dados do arquivo em formato json
-    printf("Linha %d\n", __LINE__);
 
     if(!root){ //Caso não tenha conseguido carregar os dados
-        puts("erro ao carregar dados!");
-        //exit(0);
+        puts("Erro ao carregar dados!");
     }
-    printf("Linha %d\n", __LINE__);
 
     if(!json_is_object(root))
     {
         fprintf(stderr, "Dados não estão em formato Json\n");
         json_decref(root);
     }
-    printf("Linha %d\n", __LINE__);
 
     json_t  *sha;
-    printf("Linha %d\n", __LINE__);
 
     const char *message_text;
-    printf("Linha %d\n", __LINE__);
 
     sha = json_object_get(root, "status"); //Pega o Status da resposta
-    printf("Linha %d\n", __LINE__);
 
     if(json_is_string(sha))
     {
-        printf("Linha %d\n", __LINE__);
         message_text = json_string_value(sha); //coloca o valor de status na string
-        printf("Linha %d\n", __LINE__);
-        puts(message_text);
-        printf("Linha %d\n", __LINE__);
     }else{
-        printf("Linha %d\n", __LINE__);
-        puts("error, not string");
+        puts("Erro, o valor lido não é uma string");
         return 0;
-        printf("Linha %d\n", __LINE__);
     }
 
     if(!(strcmp("ok", message_text))){ //Caso o status seja diferente de OK
-        printf("Linha %d\n", __LINE__);
-        puts(message_text);
         return 1;
     }
 
-    printf("Linha %d\n", __LINE__);
     return 0;
-
-
 }
 
 //Função que utiliza o arquivo gerado pela chamada Curl com os dados do usuario e coloca eles na estrutura user_info *dados
 void pega_dados_do_usuario(user_info *dados){
 
+    #ifdef DEBUG
+        puts("pega_dados_do_usuario");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *user_data;
     char *user_data_str;
     user_data_str = malloc(2550*sizeof(char));
+
+    #ifdef DEBUG
+        puts("Vai abrir o arquivo com os dados do usuário");
+       puts("");
+     #endif /*DEBUG*/
+
     user_data = fopen(".data.out", "r"); //Abre arquivo contendo os dados do usuário
     fgets(user_data_str,2550*sizeof(char), user_data );
-    puts("User data: ");
-    puts(user_data_str);
-    puts("User data end ");
+
+    #ifdef DEBUG
+        puts("Dados lidos do pacote:");
+        puts(user_data_str);
+        puts("Vai ler o pacote json recebido pelo servidor");
+       puts("");
+     #endif /*DEBUG*/
 
     json_t *root;
     json_error_t error;
@@ -230,7 +282,7 @@ void pega_dados_do_usuario(user_info *dados){
         strcpy(dados->name, message_text);
     }else{
         dados->name[0] = '\0'; //Caso o campo seja nulo no banco de dados
-        puts("error, not string");
+        puts("Erro! O dado lido não é uma String.");
     }
 
     sha = json_object_get(root, "login"); //Pega nome
@@ -242,7 +294,7 @@ void pega_dados_do_usuario(user_info *dados){
 
     }else{
         dados->login[0] = '\0'; //Caso o campo seja nulo no banco de dados
-        puts("error, not string");
+        puts("Erro! O dado lido não é uma String.");
     }
 
     sha = json_object_get(root, "email"); //Pega nome
@@ -254,7 +306,7 @@ void pega_dados_do_usuario(user_info *dados){
 
     }else{
         dados->email[0] = '\0'; //Caso o campo seja nulo no banco de dados
-        puts("error, not string");
+        puts("Erro! O dado lido não é uma String.");
     }
 
     sha = json_object_get(root, "city"); //Pega nome
@@ -266,20 +318,35 @@ void pega_dados_do_usuario(user_info *dados){
 
     }else{
         dados->city[0] = '\0'; //Caso o campo seja nulo no banco de dados
-        puts("error, not string");
+        puts("Erro! O dado lido não é uma String.");
     }
 }
 
 int checa_sucesso_get_info(){
 
+    #ifdef DEBUG
+        puts("checa_sucesso_get_info");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *user_data;
     char *user_data_str;
     user_data_str = malloc(2550*sizeof(char));
+
+    #ifdef DEBUG
+        puts("Vai abrir o arquivo que contem os dados do usuário recebido.");
+       puts("");
+     #endif /*DEBUG*/
+
     user_data = fopen(".data.out", "r"); //Arquivo que contém o retorno do get info e os dados do usuário
     fgets(user_data_str,2550*sizeof(char), user_data );
-    puts("User data: ");
-    puts(user_data_str);
-    puts("User data end ");
+
+    #ifdef DEBUG
+        puts("Dados lidos do pacote:");
+        puts(user_data_str);
+        puts("Vai ler o pacote json recebido pelo servidor");
+       puts("");
+     #endif /*DEBUG*/
 
     json_t *root;
     json_error_t error;
@@ -315,14 +382,13 @@ int checa_sucesso_get_info(){
 }
 //Função que faz o Login do usuario no sistema. Utiliza a biblioteca Libcurlc para realizar as requisições http.
 // Guarda as saidas em arquivos para uso posterior. Guarda o cookie para uso posterior tbm
-int faz_login_dummy(GtkWidget *w, gpointer p){
-    dados *data_ant = p; //Pega os dados recebidos pela chamada da função
-    tela_principal(NULL, data_ant);
-    return 1;
-}
-
 int faz_login(GtkWidget *w, gpointer p){
 
+    #ifdef DEBUG
+        puts("faz_login");
+       puts("");
+     #endif /*DEBUG*/
+
     dados *data_ant = p; //Pega os dados recebidos pela chamada da função
     CURL *curl;
     char *data = malloc(255*sizeof(char));
@@ -330,19 +396,28 @@ int faz_login(GtkWidget *w, gpointer p){
     char * resp;
     FILE *dados_do_user, *login_out;
     resp = malloc(255*sizeof(char));
-    puts("teste");
-    puts(gtk_entry_get_text(GTK_ENTRY(data_ant->dado3)));
+
     strcat(data, gtk_entry_get_text(GTK_ENTRY(data_ant->dado3))); //Login do usuario
     strcat(data, "&passwd=");
     strcat(data, gtk_entry_get_text(GTK_ENTRY(data_ant->dado4))); //Senha do usuario
     strcat(data, "&request=login");
-    puts(data);
+
+    #ifdef DEBUG
+        puts("Vai abrir os arquivos de dados do usuário e de resultado do login");
+       puts("");
+     #endif /*DEBUG*/
 
     dados_do_user = fopen(".data.out", "wr");
     login_out = fopen(".login.out", "wr");
 
 
     curl = curl_easy_init();
+
+    #ifdef DEBUG
+        puts("Vai iniciar os processos de login com o curl");
+       puts("");
+     #endif /*DEBUG*/
+
     if(curl) {
 
         //para entender melhor o que é cada opção do Curl, leia: https://curl.haxx.se/libcurl/c/libcurl-tutorial.html
@@ -358,12 +433,19 @@ int faz_login(GtkWidget *w, gpointer p){
         curl_easy_setopt(curl, CURLOPT_URL, API_URL);
         curl_easy_setopt(curl, CURLOPT_POST, 1);
         curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
-        puts("Fazendo login.");
+
+        #ifdef DEBUG
+            puts("Fazendo login.");
+           puts("");
+     #endif /*DEBUG*/
         curl_easy_perform(curl); //Faz login
 
-        puts("teste 2");
         fclose(login_out);
-        printf("Linha antes checagem %d\n", __LINE__);
+
+        #ifdef DEBUG
+            puts("Vai checar o sucesso do login");
+               puts("");
+         #endif /*DEBUG*/
         if(checa_sucesso_do_login()){ //Se o login foi bem sucedido, pega as informações do usuário
 
             printf("Linha %d\n", __LINE__);
@@ -373,8 +455,11 @@ int faz_login(GtkWidget *w, gpointer p){
             curl_easy_setopt(curl, CURLOPT_VERBOSE, 0);
             curl_easy_setopt(curl, CURLOPT_HEADER, 0);
             curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data2);
-            printf("Linha %d\n", __LINE__);
-            puts("pegando informação.");
+
+            #ifdef DEBUG
+                puts("Pegando informaçes do usuário.");
+                       puts("");
+             #endif /*DEBUG*/
             curl_easy_perform(curl); //Pega informações
             fclose(dados_do_user);
             if(!(checa_sucesso_get_info())){ //nao conseguiu pegar informações
@@ -391,6 +476,10 @@ int faz_login(GtkWidget *w, gpointer p){
                 puts("Nao pegou dados");
             curl_easy_cleanup(curl);
 
+            #ifdef DEBUG
+                puts("Vai checar se tem um upload em progresso.");
+                       puts("");
+             #endif /*DEBUG*/
             if(checa_upload_antigo()){ //Verifica se existe um upload antigo nessa máquina
                 tela_upload_antigo(NULL, data_ant); //Se tiver, chama a tela de uplaod antigo
             }else{
@@ -398,11 +487,11 @@ int faz_login(GtkWidget *w, gpointer p){
             }
             return 1;
         }
-        printf("Linha %d\n", __LINE__);
+
     }
-    printf("Linha %d\n", __LINE__);
+
     gtk_label_set_text(GTK_LABEL(data_ant->dado5), "Login nao encontrado!"); //O login não foi bem sucedido
-    printf("Linha %d\n", __LINE__);
+
     return 0;
 }
 
@@ -411,6 +500,11 @@ int faz_login(GtkWidget *w, gpointer p){
 //função de teste que faz upload da imagem teste.r1
 void faz_upload_teste(GtkWidget *w, gpointer p){
 
+    #ifdef DEBUG
+        puts("faz_upload_teste");
+       puts("");
+     #endif /*DEBUG*/
+
     GtkWidget *loading;
 	GtkBuilder *builder;
 	dados *data_ant = p; //Pega os dados recebidos pela chamada da função
@@ -444,7 +538,11 @@ void faz_upload_teste(GtkWidget *w, gpointer p){
 
 void faz_upload(GtkWidget *w, gpointer p){
 
-    printf("Linha faz upload %d\n", __LINE__);
+    #ifdef DEBUG
+        puts("faz_upload");
+       puts("");
+     #endif /*DEBUG*/
+
     GtkWidget *loading;
 	dados *data_ant = p; //Pega os dados recebidos pela chamada da função
 	GtkBuilder *builder;
@@ -457,31 +555,40 @@ void faz_upload(GtkWidget *w, gpointer p){
 	for (i=0; i < 10; i++){
 		argv[i] = malloc(255*sizeof(char));
 	}
-    printf("Linha %d\n", __LINE__);
 
     builder = gtk_builder_new(); //Cria um novo Builder gtk
 	gtk_builder_add_from_file (builder, "openslx_gui_v01.glade", NULL); //Carrega as coisas do arquivo .glade para utilizar nos widgets
     loading = GTK_WIDGET(gtk_builder_get_object(builder, "loading_screen"));
 
-
-    printf("Linha %d\n", __LINE__);
-
     gtk_widget_show_all(loading);
-    printf("Linha %d\n", __LINE__);
+
+    #ifdef DEBUG
+        puts("Vai popular o vetor de argumentos para o script de upload.");
+       puts("");
+     #endif /*DEBUG*/
     strcpy(argv[0], "./upload"); //Comando a ser invocado pelo shell
     strcpy(argv[1], gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_ant->dado4))); //Caminho para a imagem criada pelo usuario
     strcpy(argv[2], gtk_entry_get_text(GTK_ENTRY(data_ant->dado3))); //Nome da imagem
     strcpy(argv[3], ".r1"); //versão, isso será depois lidado pela api, por isso o .r1
     argv[4] = NULL; //ESSE ULTIMO PARAMETRO DEVE SER NULO, ele é o sentinela e informa o g_spawn onde acabam os parametros de invocação
-    printf("Linha %d\n", __LINE__);
+
+    #ifdef DEBUG
+        puts("Vai spawnar o processo de upload.");
+       puts("");
+     #endif /*DEBUG*/
     g_spawn_async_with_pipes(NULL, argv,NULL,G_SPAWN_DO_NOT_REAP_CHILD,NULL,NULL, &pid, NULL, NULL, NULL, NULL); //NAO USE FORK PARA SPAWNAR SCRIPTS, use essa função. Documentação em: https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html#g-spawn-sync
 
-    printf("Linha %d\n", __LINE__);
+
 
     handler = stg4_tela_confirmacao_upload; //Função a ser chamada quando o g_spawn sair
     data->dado6 = loading;
     data->dado1 = data_ant->dado1;
     data->pid = pid;
-    printf("Linha %d\n", __LINE__);
+
+
+    #ifdef DEBUG
+        puts("Vai adicionar o processo ao child watch");
+       puts("");
+     #endif /*DEBUG*/
     g_child_watch_add(pid, handler, data); //Chamará a função apontada por handler ao sair do processo criado pelo g_spawn
 }
diff --git a/useful/stg312/upload-utils.h b/useful/stg312/upload-utils.h
index 1dd972c4..234b0cdd 100644
--- a/useful/stg312/upload-utils.h
+++ b/useful/stg312/upload-utils.h
@@ -4,7 +4,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
 
 //Aviso a quem vai editar esse código. Boa sorte com a libcurl, a documentação é muito escassa e mal explicada, nada faz sentido
 // a opção de debug não indica nada importante e as soluções são extremamente Cripticas se vc não tem um conhecimento grande de
diff --git a/useful/stg312/upload.c b/useful/stg312/upload.c
index a1487308..a3e1f1c4 100644
--- a/useful/stg312/upload.c
+++ b/useful/stg312/upload.c
@@ -3,7 +3,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
+//#include <sys/wait.h>
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdk.h>
 #include <glib.h>
@@ -12,7 +12,7 @@
 #include <curl/easy.h>
 #include <jansson.h>
 #include <time.h>
-#include <gcrypt.h>
+//#include <gcrypt.h>
 #include <sys/types.h>
 #include <signal.h>
 #include "upload-utils.h"
@@ -20,15 +20,28 @@
 //Função que checa o sucesso do upload feito;
 int checa_sucesso_upload(){
 
+    #ifdef DEBUG
+       puts("checa_sucesso_upload");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *user_data;
     char *user_data_str;
     user_data_str = malloc(2550*sizeof(char));
+
+    #ifdef DEBUG
+       puts("Vai abrir arquivo com a resposta do upload.");
+       puts("");
+     #endif /*DEBUG*/
     user_data = fopen(".upload.out", "r"); //Abre arquivo contendo a resposta do servidor
-    system("cat .upload.out"); //Para debug
+
     fgets(user_data_str,2550*sizeof(char), user_data );
-    puts("User data: ");
-    puts(user_data_str);
-    puts("User data end ");
+    #ifdef DEBUG
+        puts("Dados lidos do pacote:");
+        system("cat .upload.out"); //Para debug
+        puts("Vai ler o pacote json recebido pelo servidor");
+       puts("");
+     #endif /*DEBUG*/
 
     json_t *root;
     json_error_t error;
@@ -54,7 +67,7 @@ int checa_sucesso_upload(){
         message_text = json_string_value(sha); //Coloca o status no string
         puts(message_text);
     }else{
-        puts("error, not string"); //Status não é um string
+        puts("Erro! O dado lido não é uma String."); //Status não é um string
 
     }
 
@@ -68,12 +81,16 @@ int checa_sucesso_upload(){
         message_text = json_string_value(sha); //Coloca o codigo em uma string
         puts(message_text);
     }else{
-        puts("error, not string"); //O código não é uma string
+        puts("Erro! O dado lido não é uma String."); //O código não é uma string
         return 116;
     }
 
     //Para entender que erro é o que verifique documentação da API que está no Redmine (https://redmine.c3sl.ufpr.br/projects/openslx-dnbd3/files arquivo api_webservice_report) ou Taiga
-    puts("Irá procurar o erro.");
+
+    #ifdef DEBUG
+        puts("Irá procurar o erro.");
+       puts("");
+     #endif /*DEBUG*/
     if(!(strcmp(message_text, "109"))){
         puts("Erro 109: Uploadid nao informado, caso esteja vendo esse erro repita todo o processo de criação de imagem.");
         return 0;
@@ -121,14 +138,28 @@ int checa_sucesso_upload(){
 //Função que vai pegar o upload ip fornecido pela api
 int pega_upload_id(char *id){
 
+    #ifdef DEBUG
+       puts("pega_uplaod_id");
+       puts("");
+     #endif /*DEBUG*/
+
     FILE *user_data;
     char *user_data_str;
     user_data_str = malloc(2550*sizeof(char));
+
+    #ifdef DEBUG
+       puts("Vai abrir o arquivo contendo o upload id");
+       puts("");
+     #endif /*DEBUG*/
     user_data = fopen(".upid.out", "r"); //Abre o arquivo que contém o upload id
     fgets(user_data_str,2550*sizeof(char), user_data );
-    puts("User data: ");
-    puts(user_data_str);
-    puts("User data end ");
+
+    #ifdef DEBUG
+        puts("Dados lidos do pacote:");
+        puts(user_data_str);
+        puts("Vai ler o pacote json recebido pelo servidor");
+       puts("");
+     #endif /*DEBUG*/
 
     json_t *root;
     json_error_t error;
@@ -153,7 +184,7 @@ int pega_upload_id(char *id){
         message_text = json_string_value(sha);
         puts(message_text);
     }else{
-        puts("error, not string");
+        puts("Erro! O dado lido não é uma String.");
     }
 
     if(!(strcmp(message_text, "ok"))){ //Se o status estiver OK, continua
@@ -163,7 +194,7 @@ int pega_upload_id(char *id){
             message_text = json_string_value(sha);
             puts(message_text);
         }else{
-            puts("error, not string");
+            puts("Erro! O dado lido não é uma String.");
         }
 
         strcpy(id, message_text); //copia o uploadid pra id
@@ -176,7 +207,7 @@ int pega_upload_id(char *id){
         message_text = json_string_value(sha);
         puts(message_text);
     }else{
-        puts("error, not string");
+        puts("Erro! O dado lido não é uma String.");
     }
 
     if(!(strcmp(message_text, "108"))){
@@ -188,6 +219,11 @@ int pega_upload_id(char *id){
 
 int main(int argc, char *argv[]){
 
+    #ifdef DEBUG
+       puts("main do upload.c");
+       puts("");
+     #endif /*DEBUG*/
+
     system("echo n > .result.out"); //Inicia o arquivo de sucesso com falha
 
     CURL *curl;
@@ -205,6 +241,11 @@ int main(int argc, char *argv[]){
     //strcpy(version, ARQUIVO_TESTE);
 
     FILE *upid, *sha_calc, *upload_output, *upload_in_progress;
+
+    #ifdef DEBUG
+       puts("Vai abrir o arquivo para o upload id");
+       puts("");
+     #endif /*DEBUG*/
     upid = fopen(".upid.out", "wr");
 
     curl = curl_easy_init();
@@ -221,14 +262,12 @@ int main(int argc, char *argv[]){
         curl_easy_setopt(curl, CURLOPT_POST, 1);
 
         upload_in_progress = fopen(".progress.out", "a+"); //Abre o arquivo com o possível upload antigo em progresso.
-        printf("Linha %d\n", __LINE__);
         rewind(upload_in_progress);
         fscanf(upload_in_progress, "%s", old_upload);
-        printf("Linha %d\n", __LINE__);
 
         i = 0;
 
-        puts(old_upload);
+
         if(!(strcmp(old_upload, "Upload"))){ //Verifica se existe um upload antigo
             puts("Achou um upload antigo, continuando ele");
             fscanf(upload_in_progress, "%s", old_upload);
@@ -250,15 +289,22 @@ int main(int argc, char *argv[]){
             strcat(upload_name, "&version=");
             strcat(upload_name, argv[3]);
 
-            puts("Upload_name: ");
-            puts(upload_name);
+
+            #ifdef DEBUG
+                puts("Upload_name: ");
+                puts(upload_name);
+                       puts("");
+             #endif /*DEBUG*/
 
             curl_easy_setopt(curl, CURLOPT_POSTFIELDS, upload_name);
             curl_easy_setopt(curl, CURLOPT_WRITEDATA, upid);
 
-            puts("Pegando UploadId.");
+
+            #ifdef DEBUG
+                 puts("Pegando UploadId.");
+                       puts("");
+             #endif /*DEBUG*/
             curl_easy_perform(curl); //Pega o uploadid
-            printf("Linha %d\n", __LINE__);
 
             fclose(upid);
             if(!(pega_upload_id(uploadid))){
@@ -272,26 +318,26 @@ int main(int argc, char *argv[]){
         fclose(upload_in_progress);
 
         // Vai preparar pra fazer o upload.
-
-        printf("Linha %d\n", __LINE__);
         char *calculated_sha = malloc(255*sizeof(char));
         char *sha_command_line = malloc(255*sizeof(char));
-        printf("Linha %d\n", __LINE__);
+
 
         curl_easy_setopt(curl, CURLOPT_POST, 0);
         struct curl_slist *list = NULL;
         list = curl_slist_append(list, "Expect: ");
         curl_easy_setopt(curl,CURLOPT_HTTPHEADER,list);
         curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "request", CURLFORM_COPYCONTENTS,"upload",CURLFORM_END);
-        printf("Linha %d\n", __LINE__);
         curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "uploadid", CURLFORM_COPYCONTENTS, uploadid,CURLFORM_END);
 
         //começa a fazer o upload
         for(; i < NUMBER_OF_PARTS; ++i){
-            puts(version);
             strcpy(upload_name, version);
             strcat(upload_name, part_suffix);
 
+            #ifdef DEBUG
+                 puts("Vai abrir o arquivo que irá conter o upload antigo.");
+                       puts("");
+             #endif /*DEBUG*/
             upload_output = fopen(".upload.out", "wr");
 
             strcpy(sha_command_line, "openssl dgst -sha1 "); //calcula o sha do arquivo
@@ -304,19 +350,30 @@ int main(int argc, char *argv[]){
             curl_formadd(&formpost,&lastptr,CURLFORM_COPYNAME, "sha1", CURLFORM_COPYCONTENTS,calculated_sha,CURLFORM_END);
             curl_easy_setopt(curl, CURLOPT_WRITEDATA, upload_output);
             curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
-            puts("Fazendo Upload de:");
-            puts(part_suffix);
+
+            #ifdef DEBUG
+                puts("Fazendo Upload de:");
+                puts(part_suffix);
+                       puts("");
+             #endif /*DEBUG*/
 
             upload_in_progress = fopen(".progress.out", "wr"); //Abre o arquivo que conterá os dados necessários para continuar o upload caso esse falhe
             fprintf(upload_in_progress, "Upload\n%s\n%s\n%s\n%d\n%s", uploadid, upload_name, part_suffix, i, version); //Insere os dados necessários para continuar o upload em caso de falha
             fclose(upload_in_progress); //fecha o arquivo, obriga um sync dele
 
+            #ifdef DEBUG
+               puts("Vai fazer o upload usando o curl.");
+                       puts("");
+             #endif /*DEBUG*/
             curl_easy_perform(curl); //Faz o upload propriamente dito
 
             fclose(upload_output);
-            printf("Linha %d\n", __LINE__);
+
+            #ifdef DEBUG
+                puts("Vai checar o sucesos do upload:");
+                       puts("");
+             #endif /*DEBUG*/
             check_response = checa_sucesso_upload(); //Checa se o upload foi feito com sucesso
-            printf("Linha %d\n", __LINE__);
             if(check_response == 1){
                 puts("Parte enviada para o servidor com suceso.");
                 part_suffix[9]++;
@@ -338,14 +395,14 @@ int main(int argc, char *argv[]){
                     --i;
                 }
             }
-            printf("Linha %d\n", __LINE__);
+
         }
         //Fez o upload, vai atualizar o arquivo de upload em progresso
-        printf("Linha %d\n", __LINE__);
+
         upload_in_progress = fopen(".progress.out", "wr");
-        printf("Linha %d\n", __LINE__);
+
         fprintf(upload_in_progress, "Nothing to see here, move along now");
-        printf("Linha %d\n", __LINE__);
+
         curl_easy_cleanup(curl);
     }
     system("echo s > .result.out"); //Terminou tudo corretamente, atualiza o arquivo de checagem de sucesso!
diff --git a/useful/stg312/utils.c b/useful/stg312/utils.c
index 9c279842..cea7ff9d 100644
--- a/useful/stg312/utils.c
+++ b/useful/stg312/utils.c
@@ -5,7 +5,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
+//#include <sys/wait.h>
 #include <gdk/gdkkeysyms.h>
 #include <gdk/gdk.h>
 #include <glib.h>
@@ -14,35 +14,40 @@
 #include <curl/easy.h>
 #include <jansson.h>
 #include <time.h>
-#include <gcrypt.h>
+//#include <gcrypt.h>
 #include <sys/types.h>
 #include <signal.h>
 
 //FUnção que acha o caminho para o tm-scripts, utilizada no arquivo clone_stage4.sh
 void acha_tm_scripts(char *path){
-
-        char *cam_tm_scripts;
-        char *first_p;
-        char paths[1024];
-        getcwd(paths, sizeof(paths)); // Pega o current working directory
-        cam_tm_scripts = strstr(paths, "tm-scripts"); //Acha onde esta escrito tm-scripts
-        puts(cam_tm_scripts);
-        first_p = strchr(cam_tm_scripts, 'p');//acha o primeiro 'p' em tm scripts
-        first_p += 3; //anda o ponteiro
-        *first_p = '\0'; //termina a string, sim, tem um leak de memoria.
-		strcpy(path, paths);
-
+    #ifdef DEBUG
+        puts("acha_tm_scripts");
+       puts("");
+     #endif /*DEBUG*/
+
+    char *cam_tm_scripts;
+    char *first_p;
+    char paths[1024];
+    getcwd(paths, sizeof(paths)); // Pega o current working directory
+    cam_tm_scripts = strstr(paths, "tm-scripts"); //Acha onde esta escrito tm-scripts
+    puts(cam_tm_scripts);
+    first_p = strchr(cam_tm_scripts, 'p');//acha o primeiro 'p' em tm scripts
+    first_p += 3; //anda o ponteiro
+    *first_p = '\0'; //termina a string, sim, tem um leak de memoria.
+    strcpy(path, paths);
 }
 
 
 //função que lida com os inputs do teclado. Ver https://git.gnome.org/browse/gtk+/plain/gdk/gdkkeysyms.h para uma lista completa das Macros de teclas.
 gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){
-
+    #ifdef DEBUG
+        puts("on_key_press");
+       puts("");
+     #endif /*DEBUG*/
 	gpointer window, button;
 	window = w;
 	dados *data_ant = p; //Pega os dados recebidos pela chamada da função
 	button = data_ant->dado2; //Botão que da continuidade ao software, dado->2 por comodidade.
-    puts(gtk_widget_get_name(w));
 
 	switch (event->keyval){
 
@@ -51,8 +56,15 @@ gboolean on_key_press (GtkWidget *w, GdkEventKey *event, gpointer p){
 		break;
 
 		case GDK_KEY_F6: //Apertou f6
-            if(!strcmp(gtk_widget_get_name(w), "instal_window"))
+
+
+            if(!strcmp(gtk_widget_get_name(w), "instal_window")){
+                #ifdef DEBUG
+                    puts("Vai abrir o shell");
+                               puts("");
+                 #endif /*DEBUG*/
                 abre_shell(NULL, NULL);
+            }
 		break;
 
 		case GDK_KEY_Escape: //Apertou esc, destroi a janela
@@ -73,7 +85,11 @@ return FALSE;
 
 //Função que abre o software center do sistema
 void abre_software_center(GtkWidget *w, gpointer p){
-
+    #ifdef DEBUG
+        puts("abre_software_center");
+        puts("Vai abrir o synaptic.");
+       puts("");
+     #endif /*DEBUG*/
     int status;
     g_spawn_command_line_sync("synaptic", NULL, NULL, &status, NULL); //Abre o synaptic. Quando melhorarem o software center usar o software center
 
@@ -81,18 +97,24 @@ void abre_software_center(GtkWidget *w, gpointer p){
 
 //Função que abre um shell para instalar os pacotes.
 void abre_shell(GtkWidget *w, gpointer p){
-
+    #ifdef DEBUG
+        puts("abre_shell");
+        puts("Vai abrir o shell.");
+       puts("");
+     #endif /*DEBUG*/
     int status;
-
     g_spawn_command_line_sync("x-terminal-emulator", NULL, NULL, &status, NULL); // Abre o shell
 
 
 }
 
 void abre_site(GtkWidget *w, gpointer p){
-
+    #ifdef DEBUG
+        puts("abre_site");
+        puts("Vai abrir o site do openslx.");
+       puts("");
+     #endif /*DEBUG*/
     int status;
-
     g_spawn_command_line_sync("xdg-open http://slxboxdev.c3sl.ufpr.br", NULL, NULL, &status, NULL); // Abre o site.
 
 
@@ -100,16 +122,23 @@ void abre_site(GtkWidget *w, gpointer p){
 
 //Função que sai do programa, fazendo logout antes
 void sair(GtkWidget *w, gpointer p){
-
+    #ifdef DEBUG
+        puts("sair");
+        puts("Vai fazer o logout.");
+       puts("");
+     #endif /*DEBUG*/
     logout();
 	gtk_main_quit();
 
 }
 
-// Função que checa se os scripts foram rodados com sucesso. Ela é utilizada tanto na tela 2 quanto na tela 3.
+// Função que checa se os scripts foram rodados com sucesso.
 int checa_sucesso(){
 
-
+    #ifdef DEBUG
+        puts("checa_sucesso");
+       puts("");
+     #endif /*DEBUG*/
 	FILE *resultado; // Arquivo utilizado para ler o resultado do script.
 	char controle;
 
@@ -121,11 +150,19 @@ int checa_sucesso(){
 
     dialogo = GTK_WIDGET(gtk_builder_get_object(builder, "error_dialog")); //Carrega o dialogo de erro
 
+    #ifdef DEBUG
+        puts("Vai abrir o arquivo contendo o resultdo da operação");
+       puts("");
+     #endif /*DEBUG*/
 	resultado = fopen(".result.out", "r"); // .result.out é o arquivo que armazena se o script foi executado corretamente ou não
 
 	if(resultado != NULL){
 		fread(&controle, sizeof(char), 1, resultado); //Lê a saida do script
-		printf("Controle = %c\n", controle);
+
+		#ifdef DEBUG
+           printf("Controle = %c\n", controle);
+               puts("");
+         #endif /*DEBUG*/
 
 		if(controle == 's'){ //Caso o script não tenha sido executado com sucesso o programa informa o usuário por meio de uma janela de dialogo do GTK
             system("rm .result.out");
@@ -154,6 +191,11 @@ return(0);
 
 // Função que verifica se o usuário inseriu um nome com espaços no campo nome da imagem
 void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p){
+
+    #ifdef DEBUG
+           puts("stg4_clique_2a_tela_caller");
+       puts("");
+     #endif /*DEBUG*/
     GtkWidget *entry;
     dados *data_ant = p; //Pega os dados recebidos pela chamada da função
 
@@ -178,6 +220,11 @@ void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p){
 //Altera o texto da janela de ajuda
 void altera_texto_help(GtkWidget *w, gpointer p){
 
+    #ifdef DEBUG
+           puts("altera_texto_help");
+       puts("");
+     #endif /*DEBUG*/
+
 	const char *nome;
 	int nome_int;
 	GtkWidget *label;
@@ -217,6 +264,11 @@ void altera_texto_help(GtkWidget *w, gpointer p){
 
 //Janela de ajuda
 void help_screen(GtkWidget *w, gpointer p){
+
+    #ifdef DEBUG
+        puts("help_screen");
+       puts("");
+     #endif /*DEBUG*/
 	GtkWidget *window_help, *button_help_inicio, *button_help_2a_tela, *button_help_3a_tela, *button_help_4a_tela, *button_help_5a_tela, *label_help_info;
 	GtkBuilder *builder;
 
@@ -251,12 +303,21 @@ void help_screen(GtkWidget *w, gpointer p){
 //Sai do script chamado, verificando o sucesso
 void sai_do_script(GPid pid, gint status, gpointer p){
 
+    #ifdef DEBUG
+        puts("sai_do_script");
+       puts("");
+     #endif /*DEBUG*/
+
 	GtkWidget *loading;
 	dados *data_ant = p; //Pega os dados recebidos pela chamada da função
 	loading = data_ant->dado6;
 	pid = data_ant->pid;
 	gtk_widget_hide(loading); //Esconde a tela de loading
-	//gtk_widget_show(window);
+
+    #ifdef DEBUG
+        puts("Vai checar o sucesso do script");
+       puts("");
+     #endif /*DEBUG*/
 	checa_sucesso(); //Checa se o script foi executdo corretamente
 	g_spawn_close_pid(pid); //Mata o processo do script
 
@@ -264,20 +325,24 @@ void sai_do_script(GPid pid, gint status, gpointer p){
 
 //Fecha a janela que chama essa função e mostra a janela principal
 void mata_janela_e_chama_tela_principal(GtkWidget *w, gpointer p){
+
+    #ifdef DEBUG
+        puts("mata_janela_e_chama_tela_principal");
+       puts("");
+     #endif /*DEBUG*/
 	dados *data_ant = p; //Pega os dados recebidos pela chamada da função
-	puts("teste3");
 	GtkWidget *janela_ant;
-	puts("teste2");
 	janela_ant = data_ant->dado1;
-	puts("teste");
-	gtk_widget_hide(janela_ant); //Esconde a janela anterior//Nao achou isso, nao cuspiu teste 4
-	puts("teste4");
-    g_signal_emit_by_name(janela_ant, "destroy");
-    puts("teste5");
+	gtk_widget_hide(janela_ant); //Esconde a janela anterior
+    g_signal_emit_by_name(janela_ant, "destroy"); //Emite o sinal de destroy pra janela pra fazer certo as coisas quando fechar
 }
 
 //Chama a tela principal
 void chama_tela_principal(GtkWidget *w, gpointer p){
+    #ifdef DEBUG
+        puts("chama_tela_principal");
+       puts("");
+     #endif /*DEBUG*/
     struct dados *data = malloc(sizeof(*data));
     data->dado1 = NULL;
 	tela_principal(NULL,data);
diff --git a/useful/stg312/utils.h b/useful/stg312/utils.h
index 01713a92..9ed1ac75 100644
--- a/useful/stg312/utils.h
+++ b/useful/stg312/utils.h
@@ -5,7 +5,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
-#include <sys/wait.h>
 #include "openslx_gui.h"
 #include "stg4.h"
 #include "upload-utils.h"
@@ -17,23 +16,6 @@ static const int NUMBER_OF_PARTS = 10; //
 static const char CLONE_STG4_SCRIPT[] = "./clone_stage4.sh";
 static const char CLONE_STG4_SCRIPT_DUMMY[] = "./clone_stage4-dummy.sh";
 static const char ARQUIVO_TESTE[] = "/home/ent13/Desktop/pasta-teste/teste.r1";
-/*
-int calcula_tempo_upload();
-
-void pega_dados_do_usuario(user_info *dados);
-
-void gera_arquivo_dados_usuario();
-
-int faz_login_dummy(GtkWidget *w, gpointer p);
-
-int faz_login(GtkWidget *w, gpointer p);
-
-void faz_upload_dummy(GtkWidget *w, gpointer p);
-
-void faz_upload_teste(GtkWidget *w, gpointer p);
-
-void faz_upload(GtkWidget *w, gpointer p);
-*/
 
 void stg4_clique_2a_tela_caller(GtkWidget *w, gpointer p);
 
-- 
GitLab