From 90bfe9044c8ad6de1ca577bfc14042438f937ac5 Mon Sep 17 00:00:00 2001
From: Victor Perszel <vlp14@inf.ufpr.br>
Date: Thu, 3 Dec 2015 22:38:19 -0200
Subject: [PATCH] continuando ls / data continua com ultimo dado

---
 include/submessages.h |  2 +-
 src/main.cpp          |  3 ++-
 src/messages.cpp      | 21 ++++++++++++++++++++-
 src/submessages.cpp   |  3 +++
 4 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/include/submessages.h b/include/submessages.h
index be1cd5a..ea2d9ff 100644
--- a/include/submessages.h
+++ b/include/submessages.h
@@ -9,7 +9,7 @@ class SubMessage{
 	private:
 		unsigned char startMessage;    // Delimitador de início.
 		int sizSeqTyp;       // 6 bits para tamanho, 6 bits para sequencia e 4 bits para o tipo.
-		unsigned char *data;              // Área para envio dos dados.
+		unsigned char *data = NULL;              // Área para envio dos dados.
 		unsigned char parity;             // 1 Byte para a paridade vertical (detecção de erros).
 
 		// Calcula a paridade da mensagem, esse método está como privado para ser
diff --git a/src/main.cpp b/src/main.cpp
index 459b3ee..1cf10fd 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -88,7 +88,8 @@ int main(int argc, char *argv[]) {
               resposta.setData((unsigned char*)"4",0,0); // Manda um Nack
               send(soquete,resposta.objToString(),68, 0);
             } else {
-              if(mainMessage.receiveLS(resposta.getData(), currentPath)){
+              cout << "res " << serverReceive.getData() << endl;
+              if(mainMessage.receiveLS(serverReceive.getData(), currentPath)){
                 cout << "ERRO: ls remoto.";
               }
             }
diff --git a/src/messages.cpp b/src/messages.cpp
index 68eae34..bc20e5b 100644
--- a/src/messages.cpp
+++ b/src/messages.cpp
@@ -544,27 +544,41 @@ int Message::receiveLS(unsigned char* options, char* currentPath){
 	ifstream lsFile;
   unsigned char* lsData;
   int i;
-
+cout << "-1-" << endl;
   parameter = (char*)options;
+cout << "-parameter- " << parameter << endl;
 	path = currentPath;
+cout << "-3-" << endl;
 	/* Para dar um ls apenas, é necessário escrever "ls ." */
 	/* Precisamos pensar em um jeito de concertar isso. */
 	switch(lsParameter(parameter)){
 		case 1:
+cout << "-case1-" << endl;
 			lsAux = "ls > " + path + "/ls.txt";
+cout << "-case1.1-" << endl;
 			system(lsAux.c_str());
+cout << "-case1.2-" << endl;
 			break;
 		case 2:
+cout << "-case2-" << endl;
 			lsAux = "ls -a > " + path + "/ls.txt";
+cout << "-case2.1-" << endl;
 			system(lsAux.c_str());
+cout << "-case2.2-" << endl;
 			break;
 		case 3:
+cout << "-case3-" << endl;
 			lsAux = "ls -l > " + path + "/ls.txt";
+cout << "-case3.1-" << endl;
 			system(lsAux.c_str());
+cout << "-case3.2-" << endl;
 			break;
 		case 4:
+cout << "-case4-" << endl;
 			lsAux = "ls -la > " + path + "/ls.txt";
+cout << "-case4.1-" << endl;
 			system(lsAux.c_str());
+cout << "-case4.2-" << endl;
 			break;
 		case -1:
 			puts("Parâmetro de ls inválido.");
@@ -577,11 +591,13 @@ int Message::receiveLS(unsigned char* options, char* currentPath){
 	fileName = path + "/ls.txt";
 	lsFile.open(fileName.c_str(), ios::in);
 	lsFile.seekg (0);
+cout << "+1+" << endl;
 	// Leitura do arquivo.
   show += path + "\n";
 	while(getline(lsFile, temp)) {
 		show += temp + "\n";
 	}
+cout << "+2+" << endl;
 	// Remove arquivo ls.txt
 	remove(fileName.c_str());
 
@@ -589,10 +605,13 @@ int Message::receiveLS(unsigned char* options, char* currentPath){
   for(i = 0; i < show.size(); i++){
     lsData[i] = show[i];
   }
+cout << "+3+" << endl;
 
   if(sendData(lsData) == 0){
+cout << "+return 0+" << endl;
     return 0;
   }else{
+cout << "+return -1+" << endl;
     return -1;
   }
 }
diff --git a/src/submessages.cpp b/src/submessages.cpp
index c480c6c..7289c31 100644
--- a/src/submessages.cpp
+++ b/src/submessages.cpp
@@ -54,6 +54,9 @@ void SubMessage::setData(unsigned char* dataBody, int type, int seq){
   int i, tamanho = 1;
 
   while(dataBody[tamanho-1] != '\0' && tamanho<64) tamanho++;
+  cout << "AQUI" << endl;
+  delete(data);
+  cout << "FERA" << endl;
   data = new unsigned char[tamanho];
 
   for (i = 0; i < tamanho; i++){
-- 
GitLab