source: roaraudio/include/libroar/error.h @ 5216:e16c15116d46

Last change on this file since 5216:e16c15116d46 was 5216:e16c15116d46, checked in by phi, 12 years ago

moved roar_err_{build,parse}msg2() -> roar_err_{build,parse}msg(), see #184

File size: 3.5 KB
Line 
1//error.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2011
5 *
6 *  This file is part of libroar a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  libroar is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 *  NOTE for everyone want's to change something and send patches:
25 *  read README and HACKING! There a addition information on
26 *  the license of this document you need to read before you send
27 *  any patches.
28 *
29 *  NOTE for uses of non-GPL (LGPL,...) software using libesd, libartsc
30 *  or libpulse*:
31 *  The libs libroaresd, libroararts and libroarpulse link this lib
32 *  and are therefore GPL. Because of this it may be illigal to use
33 *  them with any software that uses libesd, libartsc or libpulse*.
34 */
35
36#ifndef _LIBROARERROR_H_
37#define _LIBROARERROR_H_
38
39#include "libroar.h"
40
41struct roar_message;
42
43/*
44  Off Size (Byte)
45    | | /- Name
46    0 1 Version
47    1 1 Cmd
48    2 1 RA Errno
49    3 1 RA SubErrno
50    4 2 Portable Errno
51    6 2 Flags
52   (8 0 Datalen)
53    8 N Data
54 */
55
56struct roar_error_frame {
57 int version;
58 int cmd;
59 int ra_errno;
60 int ra_suberrno;
61 int p_errno;
62 uint16_t flags;
63 size_t datalen;
64 void * data;
65};
66
67struct roar_error_state {
68 size_t refc;
69 int libroar_error;
70 int system_errno;
71};
72
73struct roar_error_frame * roar_err_errorframe(void);
74
75int    roar_err_init(struct roar_error_frame * frame);
76void * roar_err_buildmsg(struct roar_message * mes, void ** data, struct roar_error_frame * frame);
77int    roar_err_parsemsg(struct roar_message * mes, void *  data, struct roar_error_frame * frame);
78
79#define roar_error (*roar_errno2())
80int *  roar_errno2(void);
81
82// clear RoarAudio's error value
83void   roar_err_clear(void);
84
85// clear system's error value (errno)
86void   roar_err_clear_errno(void);
87
88// clear all error values (to be used before calling roar_err_update())
89void   roar_err_clear_all(void);
90
91// syncs RoarAudio's and system's error values
92void   roar_err_update(void);
93
94// test of system's error value is set to 'no error'
95int    roar_err_is_errno_clear(void);
96
97// old, use roar_err_is_errno_clear().
98int    roar_err_is_errno_clean(void);
99
100// set RoarAudio's error value
101void   roar_err_set(const int error);
102
103// sync RoarAudio's error value with the value from the system
104void   roar_err_from_errno(void);
105
106// sync systen's error value with the value from RoarAudio
107void   roar_err_to_errno(void);
108
109// store a error state (both libroar and system)
110// returnes the error or ROAR_ERROR_NONE on success so it does not alter gloabl error state.
111int    roar_err_store(struct roar_error_state * state);
112
113// restore error state to values at time of call to roar_err_store()
114// returnes the error or ROAR_ERROR_NONE on success so it does not alter gloabl error state.
115int    roar_err_restore(struct roar_error_state * state);
116
117// Return a string descriping the error
118const char * roar_error2str(const int error);
119
120#endif
121
122//ll
Note: See TracBrowser for help on using the repository browser.