#include <stdio.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <unistd.h>

void error(char *msg)
{
	    perror(msg);
	        exit(1);
}


int main(int argc, char *argv[])
{
     int sockfd, newsockfd, portno, clilen;
         char buffer[256];
       struct sockaddr_in serv_addr, cli_addr;
           int n;
         if (argc < 2) {
          fprintf(stderr,"ERROR, no port provided\n");
           exit(1);
		        }
	     sockfd = socket(AF_INET, SOCK_STREAM, 0);
           if (sockfd < 0) 
           error("ERROR opening socket");
	   bzero((char *) &serv_addr, sizeof(serv_addr));
	   portno = atoi(argv[1]);
	   serv_addr.sin_family = AF_INET;
	   serv_addr.sin_addr.s_addr = INADDR_ANY;
	   serv_addr.sin_port = htons(portno);
	   if (bind(sockfd, (struct sockaddr *) &serv_addr,
	   sizeof(serv_addr)) < 0) 
	   error("ERROR cos nie tak z portem");
	   listen(sockfd,5);
	   int i=0;
	   clilen = sizeof(cli_addr);
	   newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);
	   	     if (newsockfd < 0) 
	              error("ERROR podczas akceptowania polaczenia");
	 while () {
	        bzero(buffer,256);
	      n = read(newsockfd,buffer,255);
	      if (n < 0) error("ERROR podczas czytania z sockietu");
	      printf("Here is the message: %s\n",buffer);
	      char *testt=buffer;
	      testt[strlen(testt)-2] = '\0';
	      printf("%s\n",testt);
	      execl("/usr/bin/irsend", "irsend", testt, NULL);
//	      n = write(newsockfd,"Wiadomosc odebrana\n",20);
//	      if (n < 0) error("ERROR wysylanie do socketu nieposzlo");
	};
	   return 0; 
}

