Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.03 KB | None | 0 0
  1. static int execute_receive(int connfd, operation_t * o) {
  2.     char * sname = o - > sname;
  3.     size_t m = (size_t) - 1;
  4.  
  5.     if (o - > n > 0) m = (ssize_t) o - > n;
  6.  
  7.     size_t c = 0;
  8.     for (size_t i = 0; i < msgcur; ++i) {
  9.         if (MSGS[i].data.buf != NULL) {
  10.             if (MSGS[i].hdr.op == FILE_MESSAGE) {
  11.                 char * filename = MSGS[i].data.buf;
  12.  
  13.                 printf("[%s vuole inviare il file '%s']\n", MSGS[i].hdr.sender, filename);
  14.  
  15.                 if (downloadFile(connfd, filename, sname) == -1) {
  16.                     fprintf(stderr, "ERRORE: cercando di scaricare il file %s\n", filename);
  17.                     return -1;
  18.                 }
  19.                 printf("[Il file '%s' e' stato scaricato correttamente]\n", filename);
  20.             } else
  21.                 printf("[%s:] %s\n", MSGS[i].hdr.sender, (char * ) MSGS[i].data.buf);
  22.  
  23.             if (++c == m) break;
  24.         }
  25.     }
  26.     for (size_t i = c; i < m; ++i) {
  27.         message_t msg;
  28.         // leggo header e data
  29.         if (readMsg(connfd, & msg) == -1) {
  30.             perror("reply data");
  31.             return -1;
  32.         }
  33.         switch (msg.hdr.op) {
  34.         case TXT_MESSAGE:
  35.             {
  36.                 printf("[%s:] %s\n", msg.hdr.sender, (char * ) msg.data.buf);
  37.             }
  38.             break;
  39.         case FILE_MESSAGE:
  40.             {
  41.                 char * filename = strdup(msg.data.buf);
  42.                 free(msg.data.buf);
  43.                 printf("[%s vuole inviare il file '%s']\n", msg.hdr.sender, filename);
  44.  
  45.                 if (downloadFile(connfd, filename, sname) == -1) {
  46.                     fprintf(stderr, "ERRORE: cercando di scaricare il file %s\n", filename);
  47.                     return -1;
  48.                 }
  49.                 printf("[Il file '%s' e' stato scaricato correttamente]\n", filename);
  50.             }
  51.             break;
  52.         default:
  53.             {
  54.                 fprintf(stderr, "ERRORE: ricevuto messaggio non valido\n");
  55.                 return -1;
  56.             }
  57.         }
  58.     }
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement