00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __jack_varargs_h__
00021 #define __jack_varargs_h__
00022
00023 #include <stdlib.h>
00024 #include <stdarg.h>
00025
00026 #ifdef __cplusplus
00027 extern "C"
00028 {
00029 #endif
00030
00031
00032 typedef struct {
00033 char *server_name;
00034 char *load_name;
00035 char *load_init;
00036 }
00037 jack_varargs_t;
00038
00039 static const char* jack_default_server_name (void) {
00040 const char *server_name;
00041 if ((server_name = getenv("JACK_DEFAULT_SERVER")) == NULL)
00042 server_name = "default";
00043 return server_name;
00044 }
00045
00046 static inline void jack_varargs_init (jack_varargs_t *va) {
00047 memset (va, 0, sizeof(jack_varargs_t));
00048 va->server_name = (char*)jack_default_server_name();
00049 }
00050
00051 static inline void jack_varargs_parse (jack_options_t options, va_list ap, jack_varargs_t *va) {
00052
00053 jack_varargs_init (va);
00054
00055 if ((options & JackServerName)) {
00056 char *sn = va_arg(ap, char *);
00057 if (sn)
00058 va->server_name = sn;
00059 }
00060 if ((options & JackLoadName))
00061 va->load_name = va_arg(ap, char *);
00062 if ((options & JackLoadInit))
00063 va->load_init = va_arg(ap, char *);
00064 }
00065
00066 #ifdef __cplusplus
00067 }
00068 #endif
00069
00070 #endif