blob: 94a67062390efede2256068a724435693e039527 [file] [log] [blame]
/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef _CMDLINE_H_INCLUDED_
#define _CMDLINE_H_INCLUDED_
__APXBEGIN_DECLS
#define APXCMDOPT_NIL 0x00000000 /* Argopt value not needed */
#define APXCMDOPT_INT 0x00000001 /* Argopt value is unsigned integer */
#define APXCMDOPT_STR 0x00000002 /* Argopt value is string */
#define APXCMDOPT_STE 0x00000006 /* Argopt value is expandable string */
#define APXCMDOPT_MSZ 0x00000010 /* Multiline string '#' separated */
#define APXCMDOPT_BIN 0x00000020 /* Encrypted binary */
#define APXCMDOPT_REG 0x00000100 /* Save to registry */
#define APXCMDOPT_SRV 0x00000200 /* Save to service registry */
#define APXCMDOPT_USR 0x00000400 /* Save to user registry */
#define APXCMDOPT_FOUND 0x00001000 /* The option is present in cmdline as -- */
#define APXCMDOPT_ADD 0x00002000 /* The option is present in cmdline as ++ */
typedef struct APXCMDLINEOPT APXCMDLINEOPT;
struct APXCMDLINEOPT {
LPWSTR szName; /* Long Argument Name */
LPWSTR szRegistry; /* Registry Association */
LPWSTR szSubkey; /* Registry Association */
DWORD dwType; /* Argument type (string, number, multi-string */
LPWSTR szValue; /* Return string value */
DWORD dwValue; /* Return numeric value or present if NIL */
};
typedef struct APXCMDLINE {
APXCMDLINEOPT *lpOptions;
LPWSTR szArgv0;
LPWSTR szExecutable; /* Parsed argv0 */
LPWSTR szExePath; /* Parsed argv0 */
LPWSTR szApplication; /* Fist string after //CMD// */
DWORD dwCmdIndex; /* Command index */
LPWSTR *lpArgvw;
DWORD dwArgc;
APXHANDLE hPool;
} APXCMDLINE, *LPAPXCMDLINE;
LPAPXCMDLINE apxCmdlineParse(
APXHANDLE hPool,
APXCMDLINEOPT *lpOptions,
LPCWSTR *lpszCommands,
LPCWSTR *lpszAltcmds
);
void apxCmdlineLoadEnvVars(
LPAPXCMDLINE lpCmdline
);
void apxCmdlineFree(
LPAPXCMDLINE lpCmdline
);
__APXEND_DECLS
#endif /* _CMDLINE_H_INCLUDED_ */