PUD: nmealib: get rid of NMEA_ASSERT
[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 nmeaPROPERTY * nmea_property(void) {
27     static nmeaPROPERTY prop = {
28         0, 0, NMEA_DEF_PARSEBUFF
29         };
30
31     return &prop;
32 }
33
34 void nmea_trace(const char *str, ...)
35 {
36     int size;
37     va_list arg_list;
38     char buff[NMEA_DEF_PARSEBUFF];
39     nmeaTraceFunc func = nmea_property()->trace_func;
40
41     if(func)
42     {
43         va_start(arg_list, str);
44         size = vsnprintf(&buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list);
45         va_end(arg_list);
46
47         if(size > 0)
48             (*func)(&buff[0], size);
49     }
50 }
51
52 void nmea_trace_buff(const char *buff, int buff_size)
53 {
54     nmeaTraceFunc func = nmea_property()->trace_func;
55     if(func && buff_size)
56         (*func)(buff, buff_size);
57 }
58
59 void nmea_error(const char *str, ...)
60 {
61     int size;
62     va_list arg_list;
63     char buff[NMEA_DEF_PARSEBUFF];
64     nmeaErrorFunc func = nmea_property()->error_func;
65
66     if(func)
67     {
68         va_start(arg_list, str);
69         size = vsnprintf(&buff[0], NMEA_DEF_PARSEBUFF - 1, str, arg_list);
70         va_end(arg_list);
71
72         if(size > 0)
73             (*func)(&buff[0], size);
74     }
75 }