Kackhaufen200

task1_server.c

Apr 18th, 2020
259
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <string.h>
  7. #include <fcntl.h>
  8. #include <stdbool.h>
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12.     int fifo_server;
  13.     char choice[1000];
  14.     bool help = true;
  15.     char path[50];
  16.  
  17.     mkdir("/tmp/chat/", 0711);
  18.  
  19.     if(argc == 1) { //prints an error if there are not enough arguments
  20.         printf("ERROR: Not enough arguments!!\n");
  21.         return EXIT_FAILURE;
  22.     }
  23.  
  24.     for(int i = 0; i < argc; i++) {
  25.         if(argv[i+1] != NULL) {
  26.             strcpy(path, "/tmp/chat/");
  27.             strcat(path, argv[i+1]);
  28.  
  29.             FILE *file;
  30.             if (file = fopen(path, "r")){
  31.                 fclose(file);
  32.                 printf("Fifo for %s already exists!\n", argv[i+1]);
  33.             } else {
  34.                 mkfifo(path,0666);
  35.                 printf("Fifo for %s created!\n", argv[i+1]);
  36.             }
  37.         }
  38.     }
  39.  
  40.     printf("\n");
  41.     printf("Messages:\n");
  42.     while(help) {
  43.         for(int i = 0; i < argc; i++) {
  44.             if(argv[i+1] != NULL) {
  45.                 strcpy(path, "/tmp/chat/");
  46.                 strcat(path, argv[i+1]);
  47.                 fifo_server = open(path,O_RDONLY);
  48.                 read(fifo_server,choice,sizeof(choice));
  49.                 printf("%s: %s",argv[i+1], choice);
  50.                 close(fifo_server);
  51.             }
  52.         }
  53.     }
  54.     return EXIT_SUCCESS;
  55. }
RAW Paste Data