Skip to content
Snippets Groups Projects
Commit 90bfe904 authored by Victor Perszel's avatar Victor Perszel :top:
Browse files

continuando ls / data continua com ultimo dado

parent 0f5809cb
Branches
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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.";
}
}
......
......@@ -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;
}
}
......
......@@ -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++){
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment