2
* Copyright (c) 2011 Josua Dietze, usb_modeswitch version 1.2.0
4
* Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org>
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
10
* 1. Redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer.
12
* 2. Redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution.
16
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37
/* RAW is defined to the complete Tcl code in that file: */
38
#include "usb_modeswitch.string"
40
#define MAX_ARGSIZE 1024
42
int main(int argc, char **argv)
45
char arg[MAX_ARGSIZE];
46
char arglist[MAX_ARGSIZE];
53
for (i=1; i<argc; i++) {
54
if (strlen(argv[i]) > MAX_ARGSIZE-4) {
55
printf("Argument #%d extends maximum size, skip it\n", i);
58
if ( (strlen(arglist) + strlen(argv[i])) > MAX_ARGSIZE-4) {
59
printf("Argument #%d would extend maximum list size, skip it\n", i);
62
sprintf(arg,"{%s} ",argv[i]);
63
strncat(arglist,arg,MAX_ARGSIZE);
66
char code[sizeof(RAW) + sizeof(arglist)];
67
sprintf(code, RAW, arglist, argc-1);
69
/* Create Jim instance */
70
interp = Jim_CreateInterp();
71
assert(interp != NULL && "Could not create interpreter!");
73
/* Register base commands, actually implementing Tcl */
74
Jim_RegisterCoreCommands(interp);
76
/* Initialize any static extensions */
77
Jim_InitStaticExtensions(interp);
79
/* Evaluate the script that's now in "code" */
80
retval = Jim_Eval(interp, code);
82
printf("Evaluation returned error %d\n", retval);
84
/* Free the interpreter */
85
Jim_FreeInterp(interp);
86
return (EXIT_SUCCESS);