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 int session_id;
00039 }
00040 jack_varargs_t;
00041
00042 static const char* jack_default_server_name (void)
00043 {
00044 const char *server_name;
00045 if ((server_name = getenv("JACK_DEFAULT_SERVER")) == NULL)
00046 server_name = "default";
00047 return server_name;
00048 }
00049
00050 static inline void jack_varargs_init (jack_varargs_t *va)
00051 {
00052 memset (va, 0, sizeof(jack_varargs_t));
00053 va->server_name = (char*)jack_default_server_name();
00054 va->session_id = -1;
00055 }
00056
00057 static inline void jack_varargs_parse (jack_options_t options, va_list ap, jack_varargs_t *va)
00058 {
00059
00060 jack_varargs_init (va);
00061
00062 if ((options & JackServerName)) {
00063 char *sn = va_arg(ap, char *);
00064 if (sn)
00065 va->server_name = sn;
00066 }
00067 if ((options & JackLoadName))
00068 va->load_name = va_arg(ap, char *);
00069 if ((options & JackLoadInit))
00070 va->load_init = va_arg(ap, char *);
00071 if ((options & JackSessionID)) {
00072 char *sid = va_arg(ap, char *);
00073 if (sid)
00074 va->session_id = atoi( sid );
00075 }
00076 }
00077
00078 #ifdef __cplusplus
00079 }
00080 #endif
00081
00082 #endif