-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmessage.c
executable file
·58 lines (50 loc) · 1.47 KB
/
message.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
to 0 otherwise. */
#define HAVE_MALLOC 1
/* Define to 1 if you have the <malloc.h> header file. */
/* #undef HAVE_MALLOC_H */
#if defined(HAVE_MALLOC_H)
#include <malloc.h>
#endif
/**
* Decoupe du message
* Retourne 1 si il n'y a pas eu de problème
* Retourne 0 si il y a eu un problème - errno est mis à EINVAL dans ce cas.
* ATTENTION:
* Les variables emeteur, destinataire, commande, identifiant
* et sms doivent être allouées avant l'appel à decoupe
*/
int decoupe(char *message, /* Source a découper */
char *cb, /* no de carte concernee */
char *type, /* Type du message */
char *valeur /* Valeur associée au message */
)
{
int nb=sscanf(message, "|%[^|]|%[^|]|%[^|]|\n",
cb, type, valeur);
if (nb == 3)
return 1;
else {
errno = EINVAL;
return 0;
}
}
/**
* Construction du message
* Retourne le message construit suivant le protocole
* a partir des arguments
* Le message est alloué dans la fonction
*/
char* message(char *cb, char *type, char * valeur)
{
int longueur = strlen(cb) + strlen(type) + strlen(valeur) + 1 + 5 + 1;
char *mess = calloc(longueur,sizeof(char));
if (mess == NULL)
return NULL;
sprintf(mess, "|%s|%s|%s|\n", cb, type, valeur);
return mess;
}