#include <stdio.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <sys/ipc.h>
#include <unistd.h>
#include "keyid.h"

/*Unser Nachricht mit dem Typ*/
struct amsgbuf {
long mtype;
char mtext[80];
} mq_test_buf;


int main()
{
  int kennungs_id;
  int i,n;

  printf("key=%d\n", KEY);

/*Wir öffnen die Message Queue*/
  kennungs_id = msgget(KEY, 0666);
  printf("Message Queue id=%d\n", kennungs_id);
  if (kennungs_id == -1)
   {
     fprintf(stderr,"Fehler beim erstellen einer Message Queue!!\n");
     exit(0);
   }

  printf("Bitte geben sie Ihre Nachricht ein............\n ");

/*Wir geben einen Message-Typ und den Message-Text ein*/
  mq_test_buf.mtype = 123;
  while((n=read(STDIN_FILENO, &mq_test_buf.mtext, 80)) > 0)
    {
/*Wir schicken die Message an die Message Queue*/
      printf("Sende Message...(%d Bytes)\n",n+1);
      if (msgsnd(kennungs_id, (struct msgbuf *)&mq_test_buf, n + 1, 0) == -1)
        {
          perror("msgsnd");
          printf("Fehler beim senden an die Message Queue\n");
          exit(1);
        }
      printf("Bitte geben sie Ihre Nachricht ein............\n ");
      mq_test_buf.mtext[0] = 0;
    }
  return 0;
}