On Mon, Nov 03, 2014 at 02:08:46PM +0000, Wiles, Roger Keith wrote: > > > On Nov 3, 2014, at 4:41 AM, Bruce Richardson <bruce.richardson at > > intel.com> wrote: > > > > On Sun, Nov 02, 2014 at 04:28:28PM -0600, Keith Wiles wrote: > >> Allow for a external parser to handle the command line if the > >> command is not found and the developer has called the routine > >> int cmdline_set_external_parser(struct cmdline * cl, > >> cmdline_external_parser_t parser); > >> function to set the function pointer. > >> > >> The function for the external parser function should return > >> CMDLINE_PARSE_NOMATCH > >> if not able to match the command requested or zero is handled. > >> > >> Prototype of external routine: > >> int (*cmdline_external_parser_t)(struct cmdline * cl, const char * buy); > >> > >> Signed-off-by: Keith Wiles <keith.wiles at windriver.com> > > > > Hi Keith, > > > > what is the expected use case for this? Is it for embedding other > > programming languages alongside the existing DPDK command-line or some > > other purpose? [Perhaps the use case could be called out in the patch > > description] > > Hi Bruce, > > I guess the external parser could be used for other programming languages, > but the case I was looking at was to provide a default escape from the > command line parser to allow my application to handle the commands not > understood by the parser. Now that you point it out I could use something > like ?%<line-of-script-code>? to execute a single line of script code, which > is a good idea (thanks). > > One case I am looking at is when you want to execute a command and do not > want to add the support into the commands.c file for every possible command. > Take the case where you have a bunch of scripts (Lua) in a directory much > like a bin directory. Then you could type foo.lua or foo on the command line > and execute the foo.lua having the application detect you want to load and > run a Lua script after it has finished parsing for the builtin commands. > > For Pktgen I had to add a command called ?run <filename> <args?>? to support > running a script with arguments. I also needed to add a argvlist type to > cmdline to not error out on that command and split up the args into a argv > list like format. (Maybe I need to submit that code??) It seemed more > straight forward to just pass the command line to the application to run the > command. I understand that seems like a minor point, but it does make it > easier to use and to support the features I want to support in my PoC. > > Using this method you can just type the name instead of something like ?run > foo.lua? or just ?run foo? and let the code figure out what to run. I have > more plans for this features as well and have not finished the basic PoC yet. > If you want a peek I can show you what I am working on currently. > > Does this help and do I really need to add all of this to the commit message > :-) > Thanks for the explanation. However, if you are looking to have the application handle a bunch of commands itself, why does it need to use the commandline library at all? Why not just have the app handle all the commands instead of some of them?
/Bruce