break; case 'w': reportWarnings++;
ProcessArgs(JSContext *cx, JSObject *obj, char **argv, int argc){    int i;    char *filename = NULL;    jsint length;    jsval *vector;    jsval *p;    JSObject *argsObj;    for (i=0; i < argc; i++) {        if (argv[i][0] == '-') {            switch (argv[i][1]) {            case 'v':                if (i+1 == argc) {                    return usage();                }                JS_SetVersion(cx, atoi(argv[i+1]));                i++;                break;            case 'f':                if (i+1 == argc) {                    return usage();                }                filename = argv[i+1];                /* "-f -" means read from stdin */                if (filename[0] == '-' && filename[1] == '\0')                    filename = NULL;                Process(cx, obj, filename);                i++;                break;            default:                return usage();            }        } else {            filename = argv[i++];            break;        }    }    length = argc - i;    vector = JS_malloc(cx, length * sizeof(jsval));    p = vector;    if (vector == NULL)        return 1;    while (i < argc) {        JSString *str = JS_NewStringCopyZ(cx, argv[i]);        if (str == NULL)            return 1;        *p++ = STRING_TO_JSVAL(str);        i++;    }    argsObj = JS_NewArrayObject(cx, length, vector);    if (argsObj == NULL)        return 1;    if (!JS_DefineProperty(cx, obj, "arguments",                           OBJECT_TO_JSVAL(argsObj), NULL, NULL, 0))        return 1;    Process(cx, obj, filename);    return 0;}