/*****************************/
/*  sem_client.c by IoDream  */
/* sem_server client example */
/*   Not released yet        */
/*      PUBLIC DOMAIN        */
/*****************************/

/* IoDream (IoDream@ifrance.com) */

/* C++ compilers friendly */
#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus*/

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include "sem_interface.h"

int main(int argc, char *argv[])
{
	char *requete;
	char *erreur_texte;
	short num_port;
	int res;

	if (argc != 4)
	{
		fprintf(stderr, "Usage: %s server_name port_number \"message\"\n", argv[0]);
		exit(1);
	}
	num_port = atoi(argv[2]);
	if (num_port == 0)
	{
		fprintf(stderr, "Bad port_number (%s)\n", argv[2]);
		exit(1);
	}

	res = strlen(argv[3]);
	requete = malloc(res + 2);
	memset(requete, 0, res);
	(void) strcpy(requete, argv[3]);
	requete[res] = '\n';
	res = sem_request_send_string(argv[1], num_port, requete, &erreur_texte);
	free(requete);
	switch(res)
	{
		case -2:
			fprintf(stderr, "Impossible de se connecter au serveur\n");
			exit(2);
		case -1:
			fprintf(stderr, "Erreur systeme => sortie\n");
			exit(1);
		case FALSE:
			printf("Erreur: %s", erreur_texte);
			free(erreur_texte);
			exit(1);
		case TRUE:
			printf("OK\n");
	}

	return(0);
}

/* C++ compilers friendly */
#ifdef __cplusplus
}
#endif /*__cplusplus*/
