jdk/src/windows/bin/cmdtoargs.c
author ksrini
Fri, 01 Feb 2013 07:25:51 -0800
changeset 15523 cc0ee864bfb5
parent 13410 e667545511c7
child 17714 04271182b2c1
permissions -rw-r--r--
8006536: [launcher] removes trailing slashes on arguments Reviewed-by: ksrini, akhil Contributed-by: jviswana@linux.vnet.ibm.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13410
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     1
/*
15523
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
     2
 * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
13410
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     4
 *
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    10
 *
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    15
 * accompanied this code).
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    16
 *
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    20
 *
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    23
 * questions.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    24
 */
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    25
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    26
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    27
/*
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    28
 * Converts a single string command line to the traditional argc, argv.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    29
 * There are rules which govern the breaking of the the arguments, and
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    30
 * these rules are embodied in the regression tests below, and duplicated
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    31
 * in the jdk regression tests.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    32
 */
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    33
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    34
#ifndef IDE_STANDALONE
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    35
#include "java.h"
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    36
#include "jli_util.h"
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    37
#else /* IDE_STANDALONE */
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    38
// The defines we need for stand alone testing
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    39
#include <stdio.h>
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    40
#include <stdlib.h>
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    41
#include <Windows.h>
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    42
#define JNI_TRUE       TRUE
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    43
#define JNI_FALSE      FALSE
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    44
#define JLI_MemRealloc realloc
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    45
#define JLI_StringDup  _strdup
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    46
#define JLI_MemFree    free
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    47
#define jboolean       boolean
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    48
typedef struct  {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    49
    char* arg;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    50
    boolean has_wildcard;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    51
} StdArg ;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    52
#endif
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    53
static StdArg *stdargs;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    54
static int    stdargc;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    55
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    56
static char* next_arg(char* cmdline, char* arg, jboolean* wildcard) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    57
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    58
    char* src = cmdline;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    59
    char* dest = arg;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    60
    jboolean separator = JNI_FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    61
    int quotes = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    62
    int slashes = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    63
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    64
    char prev = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    65
    char ch = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    66
    int i;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    67
    jboolean done = JNI_FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    68
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    69
    *wildcard = JNI_FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    70
    while ((ch = *src) != 0 && !done) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    71
        switch (ch) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    72
        case '"':
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    73
            if (separator) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    74
                done = JNI_TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    75
                break;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    76
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    77
            if (prev == '\\') {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    78
                for (i = 1; i < slashes; i += 2) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    79
                    *dest++ = prev;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    80
                }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    81
                if (slashes % 2 == 1) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    82
                    *dest++ = ch;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    83
                } else {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    84
                    quotes++;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    85
                }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    86
            } else if (prev == '"' && quotes % 2 == 0) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    87
                quotes++;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    88
                *dest++ = ch; // emit every other consecutive quote
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    89
            } else if (quotes == 0) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    90
                quotes++; // starting quote
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    91
            } else {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    92
                quotes--; // matching quote
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    93
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    94
            slashes = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    95
            break;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    96
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    97
        case '\\':
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    98
            slashes++;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
    99
            if (separator) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   100
                done = JNI_TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   101
                separator = JNI_FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   102
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   103
            break;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   104
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   105
        case ' ':
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   106
        case '\t':
15523
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   107
            if (prev == '\\') {
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   108
                for (i = 0 ; i < slashes; i++) {
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   109
                   *dest++ = prev;
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   110
                }
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   111
            }
13410
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   112
            if (quotes % 2 == 1) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   113
                *dest++ = ch;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   114
            } else {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   115
                separator = JNI_TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   116
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   117
            slashes = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   118
            break;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   119
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   120
        case '*':
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   121
        case '?':
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   122
            if (separator) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   123
                done = JNI_TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   124
                separator = JNI_FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   125
                break;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   126
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   127
            if (quotes % 2 == 0) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   128
                *wildcard = JNI_TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   129
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   130
            if (prev == '\\') {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   131
                *dest++ = prev;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   132
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   133
            *dest++ = ch;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   134
            break;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   135
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   136
        default:
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   137
            if (prev == '\\') {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   138
                for (i = 0 ; i < slashes ; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   139
                   *dest++ = prev;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   140
                }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   141
                *dest++ = ch;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   142
            } else if (separator) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   143
                done = JNI_TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   144
            } else {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   145
                *dest++ = ch;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   146
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   147
            slashes = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   148
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   149
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   150
        if (!done) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   151
            prev = ch;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   152
            src++;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   153
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   154
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   155
    if (prev == '\\') {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   156
        for (i = 0; i < slashes; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   157
            *dest++ = prev;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   158
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   159
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   160
    *dest = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   161
    return done ? src : NULL;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   162
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   163
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   164
int JLI_GetStdArgc() {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   165
    return stdargc;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   166
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   167
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   168
StdArg* JLI_GetStdArgs() {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   169
    return stdargs;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   170
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   171
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   172
void JLI_CmdToArgs(char* cmdline) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   173
    int nargs = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   174
    StdArg* argv = NULL;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   175
    jboolean wildcard = JNI_FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   176
    char* src = cmdline;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   177
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   178
    // allocate arg buffer with sufficient space to receive the largest arg
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   179
    char* arg = JLI_StringDup(cmdline);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   180
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   181
    do {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   182
        src = next_arg(src, arg, &wildcard);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   183
        // resize to accommodate another Arg
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   184
        argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   185
        argv[nargs].arg = JLI_StringDup(arg);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   186
        argv[nargs].has_wildcard = wildcard;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   187
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   188
        nargs++;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   189
    } while (src != NULL);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   190
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   191
    stdargc = nargs;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   192
    stdargs = argv;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   193
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   194
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   195
#ifdef IDE_STANDALONE
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   196
void doexit(int rv) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   197
    printf("Hit any key to quit\n");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   198
    int c = getchar();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   199
    exit(rv);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   200
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   201
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   202
void doabort() {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   203
    doexit(1);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   204
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   205
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   206
class Vector {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   207
public:
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   208
    char* cmdline;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   209
    int argc;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   210
    char* argv[10];
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   211
    boolean wildcard[10];
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   212
    boolean enabled;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   213
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   214
    Vector(){}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   215
    // Initialize our test vector with the program name, argv[0]
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   216
    // and the single string command line.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   217
    Vector(char* pname, char* cline) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   218
        argv[0] = pname;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   219
        wildcard[0] = FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   220
        cmdline = cline;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   221
        argc = 1;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   222
        enabled = TRUE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   223
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   224
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   225
    // add our expected strings, the program name has already been
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   226
    // added so ignore that
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   227
    void add(char* arg, boolean w) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   228
        argv[argc] = arg;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   229
        wildcard[argc] = w;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   230
        argc++;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   231
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   232
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   233
    void disable() {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   234
        enabled = FALSE;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   235
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   236
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   237
    // validate the returned arguments with the expected arguments, using the
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   238
    // new CmdToArgs method.
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   239
    bool check() {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   240
        // "pgmname" rest of cmdline ie. pgmname + 2 double quotes + space + cmdline from windows
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   241
        char* cptr = (char*) malloc(strlen(argv[0]) + sizeof(char) * 3 + strlen(cmdline) + 1);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   242
        _snprintf(cptr, MAX_PATH, "\"%s\" %s", argv[0], cmdline);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   243
        JLI_CmdToArgs(cptr);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   244
        free(cptr);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   245
        StdArg *kargv = JLI_GetStdArgs();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   246
        int     kargc = JLI_GetStdArgc();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   247
        bool retval = true;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   248
        printf("\n===========================\n");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   249
        printf("cmdline=%s\n", cmdline);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   250
        if (argc != kargc) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   251
            printf("*** argument count does not match\n");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   252
            printme();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   253
            printtest(kargc, kargv);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   254
            doabort();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   255
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   256
        for (int i = 0 ; i < argc && retval == true ; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   257
            if (strcmp(argv[i], kargv[i].arg) != 0) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   258
                printf("*** argument at [%d] don't match\n  got: %s\n  exp: %s\n",
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   259
                       i, kargv[i].arg, argv[i]);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   260
                doabort();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   261
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   262
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   263
        for (int i = 0 ; i < argc && retval == true ; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   264
            if (wildcard[i] != kargv[i].has_wildcard) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   265
                printf("*** expansion flag at [%d] doesn't match\n  got: %d\n  exp: %d\n",
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   266
                       i, kargv[i].has_wildcard, wildcard[i]);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   267
                doabort();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   268
            }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   269
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   270
        for (int i = 0 ; i < kargc ; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   271
            printf("k[%d]=%s\n", i, kargv[i].arg);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   272
            printf(" [%d]=%s\n", i, argv[i]);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   273
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   274
        return retval;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   275
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   276
    void printtest(int kargc, StdArg* kargv) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   277
        for (int i = 0 ; i < kargc ; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   278
            printf("k[%d]=%s\n", i, kargv[i].arg);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   279
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   280
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   281
    void printme() {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   282
        for (int i = 0 ; i < argc ; i++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   283
            printf(" [%d]=%s\n", i, argv[i]);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   284
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   285
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   286
};
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   287
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   288
void dotest(Vector** vectors) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   289
    Vector* v = vectors[0];
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   290
    for (int i = 0 ; v != NULL;) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   291
        if (v->enabled) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   292
            v->check();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   293
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   294
        v = vectors[++i];
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   295
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   296
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   297
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   298
#define MAXV 128
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   299
int main(int argc, char* argv[]) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   300
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   301
    int n;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   302
    for (n=1; n < argc; n++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   303
        printf("%d %s\n", n, argv[n]);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   304
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   305
    if (n > 1) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   306
        JLI_CmdToArgs(GetCommandLine());
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   307
        for (n = 0; n < stdargc; n++) {
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   308
            printf(" [%d]=%s\n", n, stdargs[n].arg);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   309
            printf(" [%d]=%s\n", n, stdargs[n].has_wildcard ? "TRUE" : "FALSE");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   310
        }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   311
        doexit(0);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   312
    }
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   313
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   314
    Vector *vectors[MAXV];
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   315
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   316
    memset(vectors, 0, sizeof(vectors));
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   317
    int i = 0;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   318
    Vector* v = new Vector(argv[0], "abcd");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   319
    v->add("abcd", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   320
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   321
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   322
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   323
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   324
    v = new Vector(argv[0], "\"a b c d\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   325
    v->add("a b c d", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   326
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   327
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   328
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   329
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   330
    v = new Vector(argv[0], "a\"b c d\"e");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   331
    v->add("ab c de", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   332
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   333
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   334
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   335
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   336
    v = new Vector(argv[0], "ab\\\"cd");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   337
    v->add("ab\"cd", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   338
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   339
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   340
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   341
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   342
    v = new Vector(argv[0], "\"a b c d\\\\\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   343
    v->add("a b c d\\", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   344
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   345
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   346
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   347
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   348
    v = new Vector(argv[0], "ab\\\\\\\"cd");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   349
    v->add("ab\\\"cd", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   350
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   351
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   352
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   353
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   354
    // Windows tests
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   355
    v = new Vector(argv[0], "a\\\\\\c");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   356
    v->add("a\\\\\\c", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   357
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   358
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   359
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   360
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   361
    v = new Vector(argv[0], "\"a\\\\\\d\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   362
    v->add("a\\\\\\d", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   363
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   364
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   365
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   366
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   367
    v = new Vector(argv[0], "\"a b c\" d e");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   368
    v->add("a b c", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   369
    v->add("d", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   370
    v->add("e", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   371
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   372
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   373
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   374
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   375
    v = new Vector(argv[0], "\"ab\\\"c\"  \"\\\\\"  d");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   376
    v->add("ab\"c", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   377
    v->add("\\", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   378
    v->add("d", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   379
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   380
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   381
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   382
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   383
    v = new Vector(argv[0], "a\\\\\\c d\"e f\"g h");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   384
    v->add("a\\\\\\c", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   385
    v->add("de fg", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   386
    v->add("h", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   387
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   388
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   389
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   390
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   391
    v = new Vector(argv[0], "a\\\\\\\"b c d");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   392
    v->add("a\\\"b", FALSE); // XXX "a\\\\\\\"b"
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   393
    v->add("c", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   394
    v->add("d", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   395
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   396
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   397
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   398
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   399
    v = new Vector(argv[0], "a\\\\\\\\\"g c\" d e"); // XXX "a\\\\\\\\\"b c\" d e"
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   400
    v->add("a\\\\\g c", FALSE); // XXX "a\\\\\\\\\"b c"
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   401
    v->add("d", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   402
    v->add("e", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   403
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   404
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   405
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   406
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   407
    // Additional tests
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   408
    v = new Vector(argv[0], "\"a b c\"\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   409
    v->add("a b c\"", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   410
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   411
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   412
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   413
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   414
    v = new Vector(argv[0], "\"\"a b c\"\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   415
    v->add("a", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   416
    v->add("b", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   417
    v->add("c", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   418
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   419
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   420
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   421
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   422
    v = new Vector(argv[0], "\"\"\"a b c\"\"\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   423
    v->add("\"a b c\"", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   424
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   425
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   426
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   427
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   428
    v = new Vector(argv[0], "\"\"\"\"a b c\"\"\"\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   429
    v->add("\"a", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   430
    v->add("b", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   431
    v->add("c\"", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   432
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   433
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   434
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   435
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   436
    v = new Vector(argv[0], "\"\"\"\"\"a b c\"\"\"\"\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   437
    v->add("\"\"a b c\"\"", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   438
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   439
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   440
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   441
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   442
    v = new Vector(argv[0], "\"C:\\TEST A\\\\\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   443
    v->add("C:\\TEST A\\", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   444
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   445
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   446
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   447
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   448
    v = new Vector(argv[0], "\"\"C:\\TEST A\\\\\"\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   449
    v->add("C:\\TEST", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   450
    v->add("A\\", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   451
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   452
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   453
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   454
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   455
    // test if a wildcard is present
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   456
    v = new Vector(argv[0], "abc*def");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   457
    v->add("abc*def", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   458
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   459
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   460
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   461
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   462
    v = new Vector(argv[0], "\"abc*def\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   463
    v->add("abc*def", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   464
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   465
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   466
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   467
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   468
    v = new Vector(argv[0], "*.abc");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   469
    v->add("*.abc", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   470
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   471
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   472
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   473
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   474
    v = new Vector(argv[0], "\"*.abc\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   475
    v->add("*.abc", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   476
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   477
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   478
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   479
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   480
    v = new Vector(argv[0], "x.???");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   481
    v->add("x.???", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   482
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   483
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   484
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   485
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   486
    v = new Vector(argv[0], "\"x.???\"");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   487
    v->add("x.???", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   488
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   489
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   490
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   491
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   492
    v = new Vector(argv[0], "Debug\\*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   493
    v->add("Debug\\*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   494
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   495
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   496
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   497
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   498
    v = new Vector(argv[0], "Debug\\f?a");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   499
    v->add("Debug\\f?a", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   500
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   501
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   502
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   503
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   504
    v = new Vector(argv[0], "Debug\\?a.java");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   505
    v->add("Debug\\?a.java", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   506
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   507
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   508
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   509
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   510
    v = new Vector(argv[0], "foo *.noexts");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   511
    v->add("foo", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   512
    v->add("*.noexts", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   513
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   514
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   515
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   516
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   517
    v = new Vector(argv[0], "X\\Y\\Z");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   518
    v->add("X\\Y\\Z", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   519
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   520
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   521
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   522
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   523
    v = new Vector(argv[0], "\\X\\Y\\Z");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   524
    v->add("\\X\\Y\\Z", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   525
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   526
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   527
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   528
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   529
    v = new Vector(argv[0], "a b");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   530
    v->add("a", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   531
    v->add("b", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   532
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   533
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   534
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   535
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   536
    v = new Vector(argv[0], "a\tb");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   537
    v->add("a", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   538
    v->add("b", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   539
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   540
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   541
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   542
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   543
    v = new Vector(argv[0], "a \t b");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   544
    v->add("a", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   545
    v->add("b", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   546
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   547
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   548
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   549
    v = new Vector(argv[0], "*\\");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   550
    v->add("*\\", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   551
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   552
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   553
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   554
    v = new Vector(argv[0], "*/");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   555
    v->add("*/", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   556
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   557
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   558
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   559
    v = new Vector(argv[0], ".\\*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   560
    v->add(".\\*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   561
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   562
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   563
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   564
    v = new Vector(argv[0], "./*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   565
    v->add("./*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   566
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   567
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   568
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   569
    v = new Vector(argv[0], ".\\*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   570
    v->add(".\\*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   571
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   572
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   573
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   574
    v = new Vector(argv[0], ".//*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   575
    v->add(".//*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   576
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   577
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   578
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   579
    v = new Vector(argv[0], "..\\..\\*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   580
    v->add("..\\..\\*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   581
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   582
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   583
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   584
    v = new Vector(argv[0], "../../*");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   585
    v->add("../../*", TRUE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   586
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   587
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   588
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   589
    v = new Vector(argv[0], "..\\..\\");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   590
    v->add("..\\..\\", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   591
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   592
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   593
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   594
    v = new Vector(argv[0], "../../");
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   595
    v->add("../../", FALSE);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   596
    // v->disable();
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   597
    vectors[i++] = v;
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   598
15523
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   599
    v= new Vector(argv[0], "a b\\\\ d");
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   600
    v->add("a", FALSE);
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   601
    v->add("b\\\\", FALSE);
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   602
    v->add("d", FALSE);
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   603
    vectors[i++] = v;
cc0ee864bfb5 8006536: [launcher] removes trailing slashes on arguments
ksrini
parents: 13410
diff changeset
   604
13410
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   605
    dotest(vectors);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   606
    printf("All tests pass [%d]\n", i);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   607
    doexit(0);
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   608
}
e667545511c7 7188114: (launcher) need an alternate command line parser for Windows
ksrini
parents:
diff changeset
   609
#endif /* IDE_STANDALONE */