]>
Commit | Line | Data |
---|---|---|
5e993f12 | 1 | diff --git a/configure.in b/configure.in |
2 | index 0b6734c..647c0c6 100644 | |
3 | --- a/configure.in | |
4 | +++ b/configure.in | |
5 | @@ -46,20 +46,10 @@ AC_ARG_WITH([pid-file], | |
6 | AS_HELP_STRING([--with-pid-file=<file>], | |
7 | [PID file for HAL daemon])) | |
8 | ||
9 | -AC_ARG_WITH([hwdata], | |
10 | - AS_HELP_STRING([--with-hwdata=<dir>], | |
11 | - [Where PCI and USB IDs are found])) | |
12 | -AC_ARG_WITH([pci-ids], | |
13 | - AS_HELP_STRING([--with-pci-ids=<dir>], | |
14 | - [Where PCI IDs are found (overrides --with-hwdata)])) | |
15 | AC_ARG_WITH([usb-ids], | |
16 | AS_HELP_STRING([--with-usb-ids=<dir>], | |
17 | [Where USB IDs are found (overrides --with-hwdata)])) | |
18 | ||
19 | -AC_ARG_ENABLE([pci-ids], | |
20 | - AS_HELP_STRING([--disable-pci-ids], | |
21 | - [Do not build with PCI IDs support]), | |
22 | - [enable_pci_ids=$enableval], [enable_pci_ids=yes]) | |
23 | AC_ARG_ENABLE([usb-ids], | |
24 | AS_HELP_STRING([--disable-usb-ids], | |
25 | [Do not build with USB IDs support]), | |
26 | @@ -73,34 +63,10 @@ AC_ARG_WITH([socket-dir], | |
27 | AS_HELP_STRING([--with-socket-dir=<dir>], | |
28 | [Location of the HAL D-BUS listening sockets (auto)])) | |
29 | ||
30 | -if ! test -z "$with_hwdata" ; then | |
31 | - PCI_IDS_DIR="$with_hwdata" | |
32 | - USB_IDS_DIR="$with_hwdata" | |
33 | -fi | |
34 | -if ! test -z "$with_pci_ids" ; then | |
35 | - PCI_IDS_DIR="$with_pci_ids" | |
36 | -fi | |
37 | if ! test -z "$with_usb_ids" ; then | |
38 | USB_IDS_DIR="$with_usb_ids" | |
39 | fi | |
40 | ||
41 | -if test "x$enable_pci_ids" = "xno" ; then | |
42 | - USE_PCI_IDS=no | |
43 | -else | |
44 | - if test -z "$PCI_IDS_DIR"; then | |
45 | - for dir in /usr/share/hwdata /usr/share/misc /usr/share /var/lib/misc; do | |
46 | - AC_CHECK_FILE([$dir/pci.ids], [PCI_IDS_DIR=$dir]) | |
47 | - done | |
48 | - if test -z "$PCI_IDS_DIR"; then | |
49 | - AC_MSG_ERROR([cannot find pci.ids. Use --with-pci-ids to specify location]) | |
50 | - else | |
51 | - AC_MSG_WARN([autodetected pci.ids in $PCI_IDS_DIR]) | |
52 | - fi | |
53 | - fi | |
54 | - USE_PCI_IDS=yes | |
55 | - AC_DEFINE([USE_PCI_IDS], [1], [Whether pci.ids is to be used]) | |
56 | -fi | |
57 | - | |
58 | if test "x$enable_usb_ids" = "xno" ; then | |
59 | USE_USB_IDS=no | |
60 | else | |
61 | @@ -125,9 +91,7 @@ else | |
62 | AC_DEFINE([USE_PNP_IDS], [1], [Whether builtin PNP IDs are to be used]) | |
63 | fi | |
64 | ||
65 | -AC_SUBST(PCI_IDS_DIR) | |
66 | AC_SUBST(USB_IDS_DIR) | |
67 | -AC_SUBST(USE_PCI_IDS) | |
68 | AC_SUBST(USE_USB_IDS) | |
69 | AC_SUBST(USE_PNP_IDS) | |
70 | ||
71 | @@ -422,11 +386,13 @@ AC_ARG_WITH([libpci], | |
72 | [], [with_libpci=yes]) | |
73 | ||
74 | USE_LIBPCI="no" | |
75 | +PCI_LIBS="" | |
76 | if test "x$with_libpci" != xno ; then | |
77 | dnl check for libpci | |
78 | AC_CHECK_HEADERS([pci/pci.h], | |
79 | - [AC_CHECK_LIB([pci], [pci_init], [USE_LIBPCI="yes"], [], [-lz])]) | |
80 | -fi | |
81 | + [AC_CHECK_LIB([pci], [pci_init], [USE_LIBPCI="yes" PCI_LIBS="-lpci -lz"], [], [-lz])]) | |
82 | +fi | |
83 | +AC_SUBST([PCI_LIBS]) | |
84 | AM_CONDITIONAL([HAVE_LIBPCI], [test "x$USE_LIBPCI" = "xyes"]) | |
85 | ||
86 | AC_ARG_WITH([backend], | |
87 | @@ -979,7 +945,6 @@ echo " | |
88 | localstatedir: ${localstatedir} | |
89 | docdir: ${docdir} | |
90 | dbus-1 system.d dir: ${DBUS_SYS_DIR} | |
91 | - pci.ids dir: ${PCI_IDS_DIR} | |
92 | usb.ids dir: ${USB_IDS_DIR} | |
93 | ||
94 | compiler: ${CC} | |
95 | diff --git a/hald/Makefile.am b/hald/Makefile.am | |
96 | index ea396f6..fbf2d5d 100644 | |
97 | --- a/hald/Makefile.am | |
98 | +++ b/hald/Makefile.am | |
99 | @@ -12,7 +12,6 @@ AM_CPPFLAGS = \ | |
100 | -DPACKAGE_SCRIPT_DIR=\""$(libdir)/hal/scripts"\" \ | |
101 | -DHALD_SOCKET_DIR=\""$(HALD_SOCKET_DIR)"\" \ | |
102 | -DHALD_PID_FILE=\""$(HALD_PID_FILE)"\" \ | |
103 | - -DPCI_IDS_DIR=\""$(PCI_IDS_DIR)"\" \ | |
104 | -DUSB_IDS_DIR=\""$(USB_IDS_DIR)"\" \ | |
105 | -I$(top_srcdir) \ | |
106 | @GLIB_CFLAGS@ @DBUS_CFLAGS@ @POLKIT_CFLAGS@ | |
107 | @@ -73,7 +72,7 @@ if HAVE_CONKIT | |
108 | hald_SOURCES += ck-tracker.h ck-tracker.c | |
109 | endif | |
110 | ||
111 | -hald_LDADD = @GLIB_LIBS@ @DBUS_LIBS@ @POLKIT_LIBS@ -lm @HALD_OS_LIBS@ $(top_builddir)/hald/$(HALD_BACKEND)/libhald_$(HALD_BACKEND).la | |
112 | +hald_LDADD = @PCI_LIBS@ @GLIB_LIBS@ @DBUS_LIBS@ @POLKIT_LIBS@ -lm @HALD_OS_LIBS@ $(top_builddir)/hald/$(HALD_BACKEND)/libhald_$(HALD_BACKEND).la | |
113 | ||
114 | #### Init scripts fun | |
115 | SCRIPT_IN_FILES=haldaemon.in | |
116 | diff --git a/hald/ids.c b/hald/ids.c | |
117 | index 9949eab..b8dc344 100644 | |
118 | --- a/hald/ids.c | |
119 | +++ b/hald/ids.c | |
120 | @@ -44,72 +44,17 @@ | |
121 | ||
122 | #include "ids.h" | |
123 | ||
124 | -#ifdef USE_PCI_IDS | |
125 | -/** Pointer to where the pci.ids file is loaded */ | |
126 | -static char *pci_ids = NULL; | |
127 | - | |
128 | -/** Length of data store at at pci_ids */ | |
129 | -static size_t pci_ids_len; | |
130 | +#ifdef HAVE_PCI | |
131 | ||
132 | -/** Iterator position into pci_ids */ | |
133 | -static size_t pci_ids_iter_pos; | |
134 | +#include <pci/pci.h> | |
135 | ||
136 | -/** Initialize the pci.ids line iterator to the beginning of the file */ | |
137 | -static void | |
138 | -pci_ids_line_iter_init () | |
139 | -{ | |
140 | - pci_ids_iter_pos = 0; | |
141 | -} | |
142 | +/** Pointer to where the pci.ids file is loaded */ | |
143 | +static struct pci_access *pacc = NULL; | |
144 | ||
145 | /** Maximum length of lines in pci.ids */ | |
146 | #define PCI_IDS_MAX_LINE_LEN 512 | |
147 | ||
148 | -/** | |
149 | - * pci_ids_line_iter_get_line: | |
150 | - * @line_len: Pointer to where number of bytes in line will | |
151 | - * be stored | |
152 | - * Returns: Pointer to the line; only valid until the | |
153 | - * next invocation of this function | |
154 | - * | |
155 | - * Get the next line from pci.ids | |
156 | - */ | |
157 | -static char * | |
158 | -pci_ids_line_iter_get_line (unsigned int *line_len) | |
159 | -{ | |
160 | - unsigned int i; | |
161 | - static char line[PCI_IDS_MAX_LINE_LEN]; | |
162 | - | |
163 | - for (i = 0; | |
164 | - pci_ids_iter_pos < pci_ids_len && | |
165 | - i < PCI_IDS_MAX_LINE_LEN - 1 && | |
166 | - pci_ids[pci_ids_iter_pos] != '\n'; i++, pci_ids_iter_pos++) { | |
167 | - line[i] = pci_ids[pci_ids_iter_pos]; | |
168 | - } | |
169 | - | |
170 | - line[i] = '\0'; | |
171 | - if (line_len != NULL) | |
172 | - *line_len = i; | |
173 | - | |
174 | - pci_ids_iter_pos++; | |
175 | - | |
176 | - return line; | |
177 | -} | |
178 | - | |
179 | -/** | |
180 | - * pci_ids_line_iter_has_more: | |
181 | - * | |
182 | - * Returns: #TRUE iff there are more lines to process | |
183 | - * | |
184 | - * See if there are more lines to process in pci.ids | |
185 | - */ | |
186 | -static dbus_bool_t | |
187 | -pci_ids_line_iter_has_more () | |
188 | -{ | |
189 | - return pci_ids_iter_pos < pci_ids_len; | |
190 | -} | |
191 | - | |
192 | - | |
193 | -/** | |
194 | +/** | |
195 | * ids_find_pci: | |
196 | * @vendor_id: PCI vendor id or 0 if unknown | |
197 | * @product_id: PCI product id or 0 if unknown | |
198 | @@ -131,199 +76,64 @@ ids_find_pci (int vendor_id, int product_id, | |
199 | char **vendor_name, char **product_name, | |
200 | char **subsys_vendor_name, char **subsys_product_name) | |
201 | { | |
202 | - char *line; | |
203 | - unsigned int i; | |
204 | - unsigned int line_len; | |
205 | - unsigned int num_tabs; | |
206 | - char rep_vi[8]; | |
207 | - char rep_pi[8]; | |
208 | - char rep_svi[8]; | |
209 | - char rep_spi[8]; | |
210 | - dbus_bool_t vendor_matched = FALSE; | |
211 | - dbus_bool_t product_matched = FALSE; | |
212 | static char store_vn[PCI_IDS_MAX_LINE_LEN]; | |
213 | static char store_pn[PCI_IDS_MAX_LINE_LEN]; | |
214 | static char store_svn[PCI_IDS_MAX_LINE_LEN]; | |
215 | static char store_spn[PCI_IDS_MAX_LINE_LEN]; | |
216 | ||
217 | - snprintf (rep_vi, 8, "%04x", vendor_id); | |
218 | - snprintf (rep_pi, 8, "%04x", product_id); | |
219 | - snprintf (rep_svi, 8, "%04x", subsys_vendor_id); | |
220 | - snprintf (rep_spi, 8, "%04x", subsys_product_id); | |
221 | - | |
222 | *vendor_name = NULL; | |
223 | *product_name = NULL; | |
224 | *subsys_vendor_name = NULL; | |
225 | *subsys_product_name = NULL; | |
226 | ||
227 | - for (pci_ids_line_iter_init (); pci_ids_line_iter_has_more ();) { | |
228 | - line = pci_ids_line_iter_get_line (&line_len); | |
229 | - | |
230 | - /* skip lines with no content */ | |
231 | - if (line_len < 4) | |
232 | - continue; | |
233 | - | |
234 | - /* skip comments */ | |
235 | - if (line[0] == '#') | |
236 | - continue; | |
237 | - | |
238 | - /* count number of tabs */ | |
239 | - num_tabs = 0; | |
240 | - for (i = 0; i < line_len; i++) { | |
241 | - if (line[i] != '\t') | |
242 | - break; | |
243 | - num_tabs++; | |
244 | - } | |
245 | - | |
246 | - switch (num_tabs) { | |
247 | - case 0: | |
248 | - /* vendor names */ | |
249 | - vendor_matched = FALSE; | |
250 | - | |
251 | - /* first check subsys_vendor_id, if haven't done | |
252 | - * already */ | |
253 | - if (*subsys_vendor_name == NULL | |
254 | - && subsys_vendor_id != 0) { | |
255 | - if ((*((dbus_uint32_t *) line)) == | |
256 | - (*((dbus_uint32_t *) rep_svi))) { | |
257 | - /* found it */ | |
258 | - for (i = 4; i < line_len; i++) { | |
259 | - if (!isspace (line[i])) | |
260 | - break; | |
261 | - } | |
262 | - strncpy (store_svn, line + i, | |
263 | - PCI_IDS_MAX_LINE_LEN); | |
264 | - *subsys_vendor_name = store_svn; | |
265 | - } | |
266 | - } | |
267 | - | |
268 | - /* check vendor_id */ | |
269 | - if (vendor_id != 0) { | |
270 | - if (memcmp (line, rep_vi, 4) == 0) { | |
271 | - /* found it */ | |
272 | - vendor_matched = TRUE; | |
273 | - | |
274 | - for (i = 4; i < line_len; i++) { | |
275 | - if (!isspace (line[i])) | |
276 | - break; | |
277 | - } | |
278 | - strncpy (store_vn, line + i, | |
279 | - PCI_IDS_MAX_LINE_LEN); | |
280 | - *vendor_name = store_vn; | |
281 | - } | |
282 | - } | |
283 | - | |
284 | - break; | |
285 | - | |
286 | - case 1: | |
287 | - product_matched = FALSE; | |
288 | - | |
289 | - /* product names */ | |
290 | - if (!vendor_matched) | |
291 | - continue; | |
292 | - | |
293 | - /* check product_id */ | |
294 | - if (product_id != 0) { | |
295 | - if (memcmp (line + 1, rep_pi, 4) == 0) { | |
296 | - /* found it */ | |
297 | - | |
298 | - product_matched = TRUE; | |
299 | - | |
300 | - for (i = 5; i < line_len; i++) { | |
301 | - if (!isspace (line[i])) | |
302 | - break; | |
303 | - } | |
304 | - strncpy (store_pn, line + i, | |
305 | - PCI_IDS_MAX_LINE_LEN); | |
306 | - *product_name = store_pn; | |
307 | - } | |
308 | - } | |
309 | - break; | |
310 | - | |
311 | - case 2: | |
312 | - /* subsystem_vendor subsystem_product */ | |
313 | - if (!vendor_matched || !product_matched) | |
314 | - continue; | |
315 | - | |
316 | - /* check product_id */ | |
317 | - if (subsys_vendor_id != 0 | |
318 | - && subsys_product_id != 0) { | |
319 | - if (memcmp (line + 2, rep_svi, 4) == 0 | |
320 | - && memcmp (line + 7, rep_spi, | |
321 | - 4) == 0) { | |
322 | - /* found it */ | |
323 | - for (i = 11; i < line_len; i++) { | |
324 | - if (!isspace (line[i])) | |
325 | - break; | |
326 | - } | |
327 | - strncpy (store_spn, line + i, | |
328 | - PCI_IDS_MAX_LINE_LEN); | |
329 | - *subsys_product_name = store_spn; | |
330 | - } | |
331 | - } | |
332 | - | |
333 | - break; | |
334 | - | |
335 | - default: | |
336 | - break; | |
337 | - } | |
338 | - | |
339 | - } | |
340 | + if (vendor_id == 0) | |
341 | + return; | |
342 | + *vendor_name = pci_lookup_name (pacc, store_vn, sizeof(store_vn), | |
343 | + PCI_LOOKUP_VENDOR, vendor_id, product_id); | |
344 | + if (*vendor_name == NULL) | |
345 | + return; | |
346 | + | |
347 | + if (product_id == 0) | |
348 | + return; | |
349 | + *product_name = pci_lookup_name (pacc, store_pn, sizeof(store_pn), | |
350 | + PCI_LOOKUP_DEVICE, vendor_id, product_id); | |
351 | + if (*product_name == NULL) | |
352 | + return; | |
353 | + | |
354 | + if (subsys_vendor_id == 0) | |
355 | + return; | |
356 | + *subsys_vendor_name = pci_lookup_name (pacc, store_svn, sizeof(store_svn), | |
357 | + PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_VENDOR, subsys_vendor_id); | |
358 | + if (*subsys_vendor_name == NULL) | |
359 | + return; | |
360 | + | |
361 | + if (subsys_product_id == 0) | |
362 | + return; | |
363 | + *subsys_product_name = pci_lookup_name (pacc, store_spn, sizeof(store_spn), | |
364 | + PCI_LOOKUP_SUBSYSTEM | PCI_LOOKUP_DEVICE, subsys_vendor_id, subsys_product_id); | |
365 | + if (*subsys_product_name == NULL) | |
366 | + return; | |
367 | } | |
368 | ||
369 | - | |
370 | -/** | |
371 | - * pci_ids_load: | |
372 | - * @path: Path of the pci.ids file, e.g. /usr/share/hwdata/pci.ids | |
373 | - * | |
374 | - * Returns: #TRUE if the file was succesfully loaded | |
375 | - * | |
376 | - * Load the PCI database used for mapping vendor, product, subsys_vendor | |
377 | - * and subsys_product numbers into names. | |
378 | - */ | |
379 | -static dbus_bool_t | |
380 | -pci_ids_load (const char *path) | |
381 | +static void | |
382 | +pci_ids_error (char *msg, ...) | |
383 | { | |
384 | - int fd; | |
385 | - struct stat statbuf; | |
386 | - gboolean ret; | |
387 | - | |
388 | - ret = FALSE; | |
389 | - | |
390 | - if (stat (path, &statbuf) != 0) { | |
391 | - HAL_WARNING (("Couldn't stat pci.ids file '%s', errno=%d: %s", path, errno, strerror (errno))); | |
392 | - goto out; | |
393 | - } | |
394 | - pci_ids_len = statbuf.st_size; | |
395 | - | |
396 | - fd = open (path, O_RDONLY); | |
397 | - if (fd < 0) { | |
398 | - HAL_WARNING (("Couldn't open pci.ids file '%s', errno=%d: %s", path, errno, strerror (errno))); | |
399 | - goto out; | |
400 | - } | |
401 | - | |
402 | - pci_ids = mmap (NULL, pci_ids_len, PROT_READ, MAP_SHARED, fd, 0); | |
403 | - if (pci_ids == MAP_FAILED) { | |
404 | - HAL_WARNING (("Couldn't mmap pci.ids file '%s', errno=%d: %s", path, errno, strerror (errno))); | |
405 | - close (fd); | |
406 | - goto out; | |
407 | - } | |
408 | - | |
409 | - ret = TRUE; | |
410 | - | |
411 | - close (fd); | |
412 | -out: | |
413 | - return ret; | |
414 | + va_list args; | |
415 | + va_start (args, msg); | |
416 | + logger_setup (HAL_LOGPRI_ERROR, __FILE__, __LINE__, __FUNCTION__); | |
417 | + logger_emit_var (msg, args); | |
418 | + va_end (args); | |
419 | } | |
420 | ||
421 | void | |
422 | pci_ids_init (void) | |
423 | { | |
424 | - /* Load /usr/share/hwdata/pci.ids */ | |
425 | - pci_ids_load (PCI_IDS_DIR "/pci.ids"); | |
426 | + pacc = pci_alloc(); | |
427 | + pacc->error = pci_ids_error; | |
428 | + pci_init(pacc); | |
429 | } | |
430 | ||
431 | -#endif /*USE_PCI_IDS*/ | |
432 | +#endif /*HAVE_PCI*/ | |
433 | ||
434 | /*==========================================================================*/ | |
435 | ||
436 | diff --git a/hald/ids.h b/hald/ids.h | |
437 | index 7773211..e0a8679 100644 | |
438 | --- a/hald/ids.h | |
439 | +++ b/hald/ids.h | |
440 | @@ -28,7 +28,7 @@ | |
441 | ||
442 | #include <glib.h> | |
443 | ||
444 | -#ifdef USE_PCI_IDS | |
445 | +#ifdef HAVE_PCI | |
446 | ||
447 | void pci_ids_init (void); | |
448 | ||
449 | @@ -38,7 +38,7 @@ ids_find_pci (int vendor_id, int product_id, | |
450 | char **vendor_name, char **product_name, | |
451 | char **subsys_vendor_name, char **subsys_product_name); | |
452 | ||
453 | -#else /*USE_PCI_IDS*/ | |
454 | +#else /*HAVE_PCI*/ | |
455 | static inline void pci_ids_init (void) {return;}; | |
456 | ||
457 | static inline void | |
458 | @@ -46,7 +46,7 @@ ids_find_pci (int vendor_id, int product_id, | |
459 | int subsys_vendor_id, int subsys_product_id, | |
460 | char **vendor_name, char **product_name, | |
461 | char **subsys_vendor_name, char **subsys_product_name) {return;} | |
462 | -#endif /*USE_PCI_IDS*/ | |
463 | +#endif /*HAVE_PCI*/ | |
464 | ||
465 | #ifdef USE_PNP_IDS | |
466 | ||
467 | diff --git a/hald/logger.c b/hald/logger.c | |
468 | index a2d04b5..c23ea71 100644 | |
469 | --- a/hald/logger.c | |
470 | +++ b/hald/logger.c | |
471 | @@ -138,16 +138,15 @@ logger_setup (int _priority, const char *_file, int _line, const char *_function | |
472 | } | |
473 | ||
474 | /** | |
475 | - * logger_emit: | |
476 | + * logger_emit_var: | |
477 | * @format: Message format string, printf style | |
478 | - * @...: Parameters for message, printf style | |
479 | + * @args: Parameters for message, vprintf style | |
480 | * | |
481 | * Emit logging entry | |
482 | */ | |
483 | void | |
484 | -logger_emit (const char *format, ...) | |
485 | +logger_emit_var (const char *format, va_list args) | |
486 | { | |
487 | - va_list args; | |
488 | char buf[512]; | |
489 | char *pri; | |
490 | char tbuf[256]; | |
491 | @@ -160,7 +159,6 @@ logger_emit (const char *format, ...) | |
492 | if (!is_enabled) | |
493 | return; | |
494 | ||
495 | - va_start (args, format); | |
496 | vsnprintf (buf, sizeof (buf), format, args); | |
497 | ||
498 | switch (priority) { | |
499 | @@ -213,7 +211,21 @@ logger_emit (const char *format, ...) | |
500 | break; | |
501 | } | |
502 | } | |
503 | +} | |
504 | ||
505 | +/** | |
506 | + * loger_emit: | |
507 | + * @format: Message format string, printf style | |
508 | + * @...: Parameters for message, printf style | |
509 | + * | |
510 | + * Emit logging entry | |
511 | + */ | |
512 | +void | |
513 | +logger_emit (const char *format, ...) | |
514 | +{ | |
515 | + va_list args; | |
516 | + va_start (args, format); | |
517 | + logger_emit_var (format, args); | |
518 | va_end (args); | |
519 | } | |
520 | ||
521 | diff --git a/hald/logger.h b/hald/logger.h | |
522 | index f32216c..dd55eb5 100644 | |
523 | --- a/hald/logger.h | |
524 | +++ b/hald/logger.h | |
525 | @@ -30,6 +30,7 @@ extern "C" { | |
526 | #ifndef LOGGER_H | |
527 | #define LOGGER_H | |
528 | ||
529 | +#include <stdarg.h> | |
530 | #include <stdio.h> | |
531 | #include <stdlib.h> | |
532 | ||
533 | @@ -45,6 +46,7 @@ enum { | |
534 | void logger_setup (int priority, const char *file, int line, const char *function); | |
535 | ||
536 | void logger_emit (const char *format, ...); | |
537 | +void logger_emit_var (const char *format, va_list args); | |
538 | /* void logger_forward_debug (const char *format, va_list args); */ | |
539 | void logger_forward_debug (const char *format, ...); | |
540 | ||
541 | @@ -72,7 +74,7 @@ void setup_logger (void); | |
542 | /** Warning level logging macro */ | |
543 | #define HAL_WARNING(expr) do {logger_setup(HAL_LOGPRI_WARNING, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0) | |
544 | ||
545 | -/** Error leve logging macro */ | |
546 | +/** Error level logging macro */ | |
547 | #define HAL_ERROR(expr) do {logger_setup(HAL_LOGPRI_ERROR, __FILE__, __LINE__, __FUNCTION__); logger_emit expr; } while(0) | |
548 | ||
549 | /** Macro for terminating the program on an unrecoverable error */ |