diff --git a/common/JackInternalClient.cpp b/common/JackInternalClient.cpp index bd521b98..e51e996d 100644 --- a/common/JackInternalClient.cpp +++ b/common/JackInternalClient.cpp @@ -200,7 +200,7 @@ JackLoadableInternalClient::JackLoadableInternalClient(JackServer* server, JackS jack_error("symbol jack_finish cannot be found in %s", so_name); throw - 1; } - + fDescriptor = (JackDriverDescFunction)GetJackProc(fHandle, "jack_get_descriptor"); if (!fDescriptor) { jack_info("No jack_get_descriptor entry-point for %s", so_name); diff --git a/common/JackNetManager.cpp b/common/JackNetManager.cpp index 4f57fc9d..d3a7738f 100644 --- a/common/JackNetManager.cpp +++ b/common/JackNetManager.cpp @@ -322,7 +322,7 @@ namespace Jack int JackNetMaster::SetProcess ( jack_nframes_t nframes, void* arg ) { - JackNetMaster* master = static_cast ( arg ); + JackNetMaster* master = static_cast ( arg ); return master->Process(); } @@ -629,12 +629,12 @@ extern "C" { jack_driver_desc_t *desc; desc = (jack_driver_desc_t*)calloc(1, sizeof(jack_driver_desc_t)); - + // TODO - + return desc; } - + EXPORT int jack_internal_initialize ( jack_client_t* jack_client, const JSList* params ) { if ( master_manager ) @@ -649,11 +649,12 @@ extern "C" return ( master_manager ) ? 0 : 1; } } - + EXPORT int jack_initialize ( jack_client_t* jack_client, const char* load_init ) { - const JSList* params = NULL; - // TODO : convert load_init to params + const JSList* params = NULL; + Jack::JackArgParser args(load_init); + const char** argv = args.GetArgv(); return jack_internal_initialize(jack_client, params); } diff --git a/common/JackNetTool.h b/common/JackNetTool.h index 5fbc92eb..acf40883 100644 --- a/common/JackNetTool.h +++ b/common/JackNetTool.h @@ -21,7 +21,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. #include "JackConstants.h" #include "JackMidiPort.h" #include "JackExports.h" -#include "JackError.h" +#include "JackError.h" +#include "JackTools.h" #include "JackPlatformNetSocket.h" #include diff --git a/common/JackTools.cpp b/common/JackTools.cpp index e47c66bd..c9351765 100644 --- a/common/JackTools.cpp +++ b/common/JackTools.cpp @@ -205,9 +205,17 @@ namespace Jack { } JackArgParser::JackArgParser(const char* arg) { + jack_log ( "JackArgParser::JackArgParser, arg : '%s'", arg ); + fArgc=0; fNumArgv=0; fArgString=string(arg); + //if empty string + if (strlen(arg)==0) { + fArgv = NULL; + return; + } + //else parse the arg string fArgString+=" "; const size_t arg_len=fArgString.length(); int i=0; @@ -226,7 +234,7 @@ namespace Jack { //no more quotes or spaces, consider the end of the string if (pos==string::npos) pos=arg_len; - //if it's a double quote + //if double quote if (fArgString.at(pos)=='\"') { //first character : copy the substring if (pos==start) { @@ -242,7 +250,7 @@ namespace Jack { start=pos; } } - //if it's a space + //if space if (fArgString.at(pos)==' ') { copy_start=start; copy_length=pos-copy_start; @@ -260,12 +268,16 @@ namespace Jack { fill_n(fArgv[i],args[i].length()+1,0); args[i].copy(fArgv[i],args[i].length()); } + + //finally count the 'real' options (the ones starting with a '-') for (i=0; i #else @@ -54,7 +56,7 @@ struct JackTools }; -class JackArgParser +class EXPORT JackArgParser { private: std::string fArgString;