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 #include <string.h>
00026 #include "types.h"
00027
00028 #ifdef __cplusplus
00029 extern "C"
00030 {
00031 #endif
00032
00033
00034 typedef struct {
00035 char *server_name;
00036 char *load_name;
00037 char *load_init;
00038 }
00039 jack_varargs_t;
00040
00041 static const char* jack_default_server_name (void)
00042 {
00043 const char *server_name;
00044 if ((server_name = getenv("JACK_DEFAULT_SERVER")) == NULL)
00045 server_name = "default";
00046 return server_name;
00047 }
00048
00049 static inline void jack_varargs_init (jack_varargs_t *va)
00050 {
00051 memset (va, 0, sizeof(jack_varargs_t));
00052 va->server_name = (char*)jack_default_server_name();
00053 }
00054
00055 static inline void jack_varargs_parse (jack_options_t options, va_list ap, jack_varargs_t *va)
00056 {
00057
00058 jack_varargs_init (va);
00059
00060 if ((options & JackServerName)) {
00061 char *sn = va_arg(ap, char *);
00062 if (sn)
00063 va->server_name = sn;
00064 }
00065 if ((options & JackLoadName))
00066 va->load_name = va_arg(ap, char *);
00067 if ((options & JackLoadInit))
00068 va->load_init = va_arg(ap, char *);
00069 }
00070
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074
00075 #endif