source: roaraudio/include/libroar/libroar.h @ 4998:b404387a2080

Last change on this file since 4998:b404387a2080 was 4998:b404387a2080, checked in by phi, 13 years ago

Updated roar_panic() (Closes: #132)

File size: 6.1 KB
RevLine 
[0]1//libroar.h:
2
[690]3/*
[4708]4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008-2011
[690]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
[3517]21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
[690]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
[0]36#ifndef _LIBROAR_H_
37#define _LIBROAR_H_
38
[4299]39//#define ROAR_DBG_PREFIX  "libroar"
[0]40
[474]41#include <roaraudio.h>
42
[1351]43#include <stdarg.h>
44
[1386]45#ifdef ROAR_HAVE_WAIT
[1254]46#include <sys/wait.h>
[1386]47#endif
[1254]48
[1425]49#ifdef ROAR_HAVE_H_FCNTL
[0]50#include <fcntl.h>
[1425]51#endif
[1374]52
[3056]53#ifdef ROAR_HAVE_H_SIGNAL
[1418]54#include <signal.h>
55#endif
56
[3611]57#ifdef ROAR_HAVE_SYSLOG
58#include <syslog.h>
59#endif
60
[1374]61#ifdef ROAR_HAVE_BSDSOCKETS
62
[1075]63#ifndef ROAR_TARGET_WIN32
[4554]64#ifdef ROAR_HAVE_H_SYS_SOCKET
[322]65#include <sys/socket.h>
[4554]66#endif
[1374]67#ifdef ROAR_HAVE_IPV4
[726]68#include <netinet/in_systm.h>
[322]69#include <netinet/in.h>
70#include <netinet/ip.h>
[1374]71#endif
[902]72#include <sys/uio.h>
[3805]73
74#ifdef ROAR_HAVE_UNIX
75#include <sys/un.h>
[1075]76#endif
[3805]77#endif
78
[501]79#ifdef ROAR_HAVE_LIBDNET
80#include <netdnet/dn.h>
81#include <netdnet/dnetdb.h>
82#endif
[3805]83
[529]84#ifdef ROAR_HAVE_IPX
[528]85#include <netipx/ipx.h>
86#endif
[0]87
[1374]88#endif /* ROAR_HAVE_BSDSOCKETS */
89
[1322]90#ifdef ROAR_HAVE_LIBSSL
91#include <openssl/bio.h>
92#include <openssl/evp.h>
93#endif
94
[1996]95#ifdef ROAR_HAVE_LIBSLP
96#include <slp.h>
[3203]97#ifdef ROAR_HAVE_H_SYS_TIME
98#include <sys/time.h>
99#endif
[4943]100#endif
101
[3203]102#ifdef ROAR_HAVE_H_TIME
103#include <time.h>
104#endif
[1996]105
[3297]106#if defined(ROAR_HAVE_LIBDL)
107#include <dlfcn.h>
108#endif
109
[3371]110#ifdef ROAR_HAVE_LIBX11
111#include <X11/Xlib.h>
112#include <X11/Xatom.h>
113#endif
114
[4597]115#include "roarfeatures.h"
[797]116#include "error.h"
[4779]117#include "trap.h"
[2477]118#include "config.h"
[4524]119#include "roarfloat.h"
[4585]120#include "crc.h"
[4586]121#include "base64.h"
[3376]122#include "keyval.h"
[3958]123#include "env.h"
[3297]124#include "roardl.h"
[2648]125#include "debug.h"
[2976]126#include "memmgr.h"
[1280]127#include "stack.h"
[1297]128#include "buffer.h"
[4454]129#include "crypto.h"
[4446]130#include "random.h"
131#include "hash.h"
[4457]132#include "hash_tiger.h"
[2812]133#include "nnode.h"
[2058]134#include "vio_ctl.h"
[588]135#include "vio.h"
[3969]136#include "vio_buffer.h"
[3994]137#include "vio_buffer_store.h"
[1255]138#include "vio_cmd.h"
[4956]139#include "vio_zlib.h"
[1274]140#include "vio_ops.h"
[2060]141#include "vio_string.h"
[1274]142#include "vio_magic.h"
[1347]143#include "vio_bio.h"
[2059]144#include "vio_stdio.h"
[1347]145#include "vio_stack.h"
[2981]146#include "vio_jumbo.h"
[1300]147#include "vio_pipe.h"
[1331]148#include "vio_socket.h"
[3315]149#include "vio_winsock.h"
[1347]150#include "vio_proto.h"
[3272]151#include "vio_rtp.h"
[1506]152#include "vio_select.h"
[1326]153// dstr needs to have access to all other VIOs, so it must be included last
[1321]154#include "vio_dstr.h"
[3109]155#include "vio_tantalos.h"
[4533]156#include "vio_stdvios.h"
[4824]157#include "vio_misc.h"
[2812]158#include "client.h"
[0]159#include "basic.h"
[4426]160#include "serverinfo.h"
[0]161#include "stream.h"
162#include "simple.h"
[808]163#include "cdrom.h"
[4483]164#include "authfile.h"
[0]165#include "auth.h"
166#include "socket.h"
167#include "ctl.h"
[4497]168#include "caps.h"
[94]169#include "meta.h"
[320]170#include "file.h"
[347]171#include "acl.h"
[1232]172#include "pinentry.h"
[1288]173#include "sshaskpass.h"
[4462]174#include "passwordapi.h"
[2000]175#include "roarslp.h"
[3632]176#include "display.h"
[3370]177#include "roarx11.h"
[3567]178#include "beep.h"
[4263]179#include "ltm.h"
[4172]180#include "vs.h"
[4300]181#include "enumdev.h"
[4302]182#include "notify.h"
[4314]183#include "notify_proxy.h"
[4341]184#include "asyncctl.h"
[0]185
[2067]186// some basic macros:
187#define ROAR_MAX2(a,b) ((a) > (b) ? (a) : (b))
188#define ROAR_MIN2(a,b) ((a) < (b) ? (a) : (b))
189
190#define ROAR_MAX3(a,b,c) ROAR_MAX2(ROAR_MAX2(a,b),c)
191#define ROAR_MIN3(a,b,c) ROAR_MIN2(ROAR_MIN2(a,b),c)
192
193#define ROAR_MAX4(a,b,c,d) ROAR_MAX2(ROAR_MAX2(a,b),ROAR_MAX2(c,d))
194#define ROAR_MIN4(a,b,c,d) ROAR_MIN2(ROAR_MIN2(a,b),ROAR_MIN2(c,d))
195
196#define ROAR_MAX ROAR_MAX2
197#define ROAR_MIN ROAR_MIN2
198
[4913]199int roar_usleep(uint_least32_t t);
200int roar_sleep(int t);
[4896]201
[4965]202// call this function after we fork/exec()ed or similar.
203int roar_reset(int forked);
204
[4970]205// fatal probelms:
206enum roar_fatal_error {
207 ROAR_FATAL_ERROR_NONE = 0,          // ???
208 ROAR_FATAL_ERROR_UNKNOWN,           // Unknown error
[4998]209#define ROAR_FATAL_ERROR_UNKNOWN ROAR_FATAL_ERROR_UNKNOWN
[4970]210 ROAR_FATAL_ERROR_MEMORY_CORRUPTION, // some structure has been corrupted
[4998]211#define ROAR_FATAL_ERROR_MEMORY_CORRUPTION ROAR_FATAL_ERROR_MEMORY_CORRUPTION
[4970]212 ROAR_FATAL_ERROR_MEMORY_CORRUPTION_GUARD, // memory was corruppted but no data has been harmed (yet)
[4998]213#define ROAR_FATAL_ERROR_MEMORY_CORRUPTION_GUARD ROAR_FATAL_ERROR_MEMORY_CORRUPTION_GUARD
214 ROAR_FATAL_ERROR_CPU_FAILURE,      // CPU general CPU failure
215#define ROAR_FATAL_ERROR_CPU_FAILURE ROAR_FATAL_ERROR_CPU_FAILURE
216 ROAR_FATAL_ERROR_CPU_FAILTURE = ROAR_FATAL_ERROR_CPU_FAILURE,
217 ROAR_FATAL_ERROR_MEMORY_USED_AFTER_FREE,
218#define ROAR_FATAL_ERROR_MEMORY_USED_AFTER_FREE ROAR_FATAL_ERROR_MEMORY_USED_AFTER_FREE
219 ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE,
220#define ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE ROAR_FATAL_ERROR_MEMORY_DOUBLE_FREE
[4970]221
222 ROAR_FATAL_ERROR_EOL
223};
224
225#if __STDC_VERSION__ < 199901L
226#if __GNUC__ >= 2
227#define __roar_func__ __FUNCTION__
228#else
229#define __roar_func__ NULL
230#endif
231#else
232#define __roar_func__ __func__
233#endif
234
235#define roar_panic(err,info) roar_panic_real((err), (info), __LINE__, __FILE__, ROAR_DBG_PREFIX, __roar_func__)
236void roar_panic_real(enum roar_fatal_error error, const char * info,
237                     unsigned long int line, const char * file, const char * prefix, const char * func);
238
[4976]239// version stuff:
240const char * roar_version_string(void);
241uint32_t     roar_version_num(void);
242
[0]243#endif
244
245//ll
Note: See TracBrowser for help on using the repository browser.