diff --git a/src/messages.cpp b/src/messages.cpp index 5c9da6237f89bed86fe888836f2fbfcb5e14330d..df99bf0241d24e96fb200644d152d3f82fb641d0 100644 --- a/src/messages.cpp +++ b/src/messages.cpp @@ -522,6 +522,30 @@ int Message::receiveCD(unsigned char* intendedDirectory){ } } +int Message::receiveGET(unsigned char* fileName){ + SubMessage resposta; + FILE *file; + char* tam; + int fileSize; + + if(access((char*)fileName, F_OK) == -1){ // Verifica se o arquivo existe + resposta.setData((unsigned char*)'0',14,0); // Manda um Erro + send(soquete,resposta.objToString(),resposta.getSize()+4, 0); + } else if (access((char*)fileName, R_OK) == -1){ // Verifica permissão de copiar o arquivo + resposta.setData((unsigned char*)'1',14,0); // Manda um Erro + send(soquete,resposta.objToString(),resposta.getSize()+4, 0); + } else { + // Calcula o tamanho do arquivo + file = fopen((char*)fileName, "r"); + fseek(file, 0, SEEK_END); + fileSize = ftell(file); + // Manda o tamanho do arquivo + sprintf(tam, "%d", fileSize); + resposta.setData((unsigned char*)tam,9,0); + send(soquete, resposta.objToString(), resposta.getSize()+4, 0); + } + +} int Message::receiveData(unsigned char* fileName, int size){ int numberOfMessages, messagesCounter = 0, seqCounter;