PUD: include nmealib v0.6.7
[olsrd.git] / lib / pud / nmealib / src / context.c
1 /*
2  * This file is part of nmealib.
3  *
4  * Copyright (c) 2008 Timur Sinitsyn
5  * Copyright (c) 2011 Ferry Huberts
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  */
20
21 #include <nmea/context.h>
22
23 #include <stdarg.h>
24 #include <stdio.h>
25
26 #include <nmea/config.h>
27
28 nmeaPROPERTY * nmea_property()
29 {
30     static nmeaPROPERTY prop = {
31         0, 0, NMEA_DEF_PARSEBUFF
32         };
33
34     return &prop;
35 }
36
37 void nmea_trace(const char *str, ...)
38 {
39     int size;
40     va_list arg_list;
41     char buff[NMEA_DEF_PARSEBUFF];
42     nmeaTraceFunc func = nmea_property()->trace_func;
43
44     if(func)
45     {
46         va_start(arg_list, str);
47         size = NMEA_POSIX(vsnprintf)(&buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list);
48         va_end(arg_list);
49
50         if(size > 0)
51             (*func)(&buff[0], size);
52     }
53 }
54
55 void nmea_trace_buff(const char *buff, int buff_size)
56 {
57     nmeaTraceFunc func = nmea_property()->trace_func;
58     if(func && buff_size)
59         (*func)(buff, buff_size);
60 }
61
62 void nmea_error(const char *str, ...)
63 {
64     int size;
65     va_list arg_list;
66     char buff[NMEA_DEF_PARSEBUFF];
67     nmeaErrorFunc func = nmea_property()->error_func;
68
69     if(func)
70     {
71         va_start(arg_list, str);
72         size = NMEA_POSIX(vsnprintf)(&buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list);
73         va_end(arg_list);
74
75         if(size > 0)
76             (*func)(&buff[0], size);
77     }
78 }