|
Packit Service |
fa4841 |
/**
|
|
Packit Service |
fa4841 |
* WinPR: Windows Portable Runtime
|
|
Packit Service |
fa4841 |
* Command-Line Utils
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Copyright 2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
Packit Service |
fa4841 |
* you may not use this file except in compliance with the License.
|
|
Packit Service |
fa4841 |
* You may obtain a copy of the License at
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* http://www.apache.org/licenses/LICENSE-2.0
|
|
Packit Service |
fa4841 |
*
|
|
Packit Service |
fa4841 |
* Unless required by applicable law or agreed to in writing, software
|
|
Packit Service |
fa4841 |
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
Packit Service |
fa4841 |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
Packit Service |
fa4841 |
* See the License for the specific language governing permissions and
|
|
Packit Service |
fa4841 |
* limitations under the License.
|
|
Packit Service |
fa4841 |
*/
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifndef WINPR_CMDLINE_H
|
|
Packit Service |
fa4841 |
#define WINPR_CMDLINE_H
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#include <winpr/winpr.h>
|
|
Packit Service |
fa4841 |
#include <winpr/wtypes.h>
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Argument Flags */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_INPUT_FLAG_MASK 0x0000FFFF
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_OUTPUT_FLAG_MASK 0xFFFF0000
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Argument Input Flags */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_VALUE_FLAG 0x00000001
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_VALUE_REQUIRED 0x00000002
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_VALUE_OPTIONAL 0x00000004
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_VALUE_BOOL 0x00000008
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ADVANCED 0x00000100
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_PRINT 0x00000200
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_PRINT_HELP 0x00000400
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_PRINT_VERSION 0x00000800
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_PRINT_BUILDCONFIG 0x00001000
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Argument Output Flags */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ARGUMENT_PRESENT 0x80000000
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_VALUE_PRESENT 0x40000000
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Parsing Flags */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_NONE 0x00000001
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_SLASH 0x00000002
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_DASH 0x00000004
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_DOUBLE_DASH 0x00000008
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_PLUS_MINUS 0x00000010
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_ENABLE_DISABLE 0x00000020
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SIGIL_NOT_ESCAPED 0x00000040
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SEPARATOR_COLON 0x00000100
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SEPARATOR_EQUAL 0x00000200
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SEPARATOR_SPACE 0x00000400
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Supress COMMAND_LINE_ERROR_NO_KEYWORD return. */
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_IGN_UNKNOWN_KEYWORD 0x00001000
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_SILENCE_PARSER 0x00002000
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Parsing Error Codes */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR -1000
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_NO_KEYWORD -1001
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_UNEXPECTED_VALUE -1002
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_MISSING_VALUE -1003
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_MISSING_ARGUMENT -1004
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_UNEXPECTED_SIGIL -1005
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_MEMORY -1006
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ERROR_LAST -1999
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Parsing Status Codes */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_STATUS_PRINT -2001
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_STATUS_PRINT_HELP -2002
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_STATUS_PRINT_VERSION -2003
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_STATUS_PRINT_BUILDCONFIG -2004
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
/* Command-Line Macros */
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define CommandLineSwitchStart(_arg) \
|
|
Packit Service |
fa4841 |
if (0) \
|
|
Packit Service |
fa4841 |
{ \
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
#define CommandLineSwitchCase(_arg, _name) else if (strcmp(_arg->Name, _name) == 0)
|
|
Packit Service |
fa4841 |
#define CommandLineSwitchDefault(_arg) else
|
|
Packit Service |
fa4841 |
#define CommandLineSwitchEnd(_arg)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#define BoolValueTrue ((LPSTR)1)
|
|
Packit Service |
fa4841 |
#define BoolValueFalse ((LPSTR)0)
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
typedef struct _COMMAND_LINE_ARGUMENT_A COMMAND_LINE_ARGUMENT_A;
|
|
Packit Service |
fa4841 |
typedef struct _COMMAND_LINE_ARGUMENT_W COMMAND_LINE_ARGUMENT_W;
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
struct _COMMAND_LINE_ARGUMENT_A
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
LPCSTR Name;
|
|
Packit Service |
fa4841 |
DWORD Flags;
|
|
Packit Service |
fa4841 |
LPCSTR Format;
|
|
Packit Service |
fa4841 |
LPCSTR Default;
|
|
Packit Service |
fa4841 |
LPSTR Value;
|
|
Packit Service |
fa4841 |
LONG Index;
|
|
Packit Service |
fa4841 |
LPCSTR Alias;
|
|
Packit Service |
fa4841 |
LPCSTR Text;
|
|
Packit Service |
fa4841 |
};
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
struct _COMMAND_LINE_ARGUMENT_W
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
LPCWSTR Name;
|
|
Packit Service |
fa4841 |
DWORD Flags;
|
|
Packit Service |
fa4841 |
LPCSTR Format;
|
|
Packit Service |
fa4841 |
LPWSTR Default;
|
|
Packit Service |
fa4841 |
LPWSTR Value;
|
|
Packit Service |
fa4841 |
LONG Index;
|
|
Packit Service |
fa4841 |
LPCWSTR Alias;
|
|
Packit Service |
fa4841 |
LPCWSTR Text;
|
|
Packit Service |
fa4841 |
};
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifdef UNICODE
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ARGUMENT COMMAND_LINE_ARGUMENT_W
|
|
Packit Service |
fa4841 |
#else
|
|
Packit Service |
fa4841 |
#define COMMAND_LINE_ARGUMENT COMMAND_LINE_ARGUMENT_A
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
typedef int (*COMMAND_LINE_PRE_FILTER_FN_A)(void* context, int index, int argc, LPSTR* argv);
|
|
Packit Service |
fa4841 |
typedef int (*COMMAND_LINE_PRE_FILTER_FN_W)(void* context, int index, int argc, LPWSTR* argv);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
typedef int (*COMMAND_LINE_POST_FILTER_FN_A)(void* context, COMMAND_LINE_ARGUMENT_A* arg);
|
|
Packit Service |
fa4841 |
typedef int (*COMMAND_LINE_POST_FILTER_FN_W)(void* context, COMMAND_LINE_ARGUMENT_W* arg);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifdef __cplusplus
|
|
Packit Service |
fa4841 |
extern "C"
|
|
Packit Service |
fa4841 |
{
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WINPR_API int CommandLineClearArgumentsA(COMMAND_LINE_ARGUMENT_A* options);
|
|
Packit Service |
fa4841 |
WINPR_API int CommandLineClearArgumentsW(COMMAND_LINE_ARGUMENT_W* options);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WINPR_API int CommandLineParseArgumentsA(int argc, LPSTR* argv,
|
|
Packit Service |
fa4841 |
COMMAND_LINE_ARGUMENT_A* options, DWORD flags,
|
|
Packit Service |
fa4841 |
void* context, COMMAND_LINE_PRE_FILTER_FN_A preFilter,
|
|
Packit Service |
fa4841 |
COMMAND_LINE_POST_FILTER_FN_A postFilter);
|
|
Packit Service |
fa4841 |
WINPR_API int CommandLineParseArgumentsW(int argc, LPWSTR* argv,
|
|
Packit Service |
fa4841 |
COMMAND_LINE_ARGUMENT_W* options, DWORD flags,
|
|
Packit Service |
fa4841 |
void* context, COMMAND_LINE_PRE_FILTER_FN_W preFilter,
|
|
Packit Service |
fa4841 |
COMMAND_LINE_POST_FILTER_FN_W postFilter);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WINPR_API COMMAND_LINE_ARGUMENT_A* CommandLineFindArgumentA(COMMAND_LINE_ARGUMENT_A* options,
|
|
Packit Service |
fa4841 |
LPCSTR Name);
|
|
Packit Service |
fa4841 |
WINPR_API COMMAND_LINE_ARGUMENT_W* CommandLineFindArgumentW(COMMAND_LINE_ARGUMENT_W* options,
|
|
Packit Service |
fa4841 |
LPCWSTR Name);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WINPR_API COMMAND_LINE_ARGUMENT_A*
|
|
Packit Service |
fa4841 |
CommandLineFindNextArgumentA(COMMAND_LINE_ARGUMENT_A* argument);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WINPR_API char** CommandLineParseCommaSeparatedValues(const char* list, size_t* count);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
WINPR_API char** CommandLineParseCommaSeparatedValuesEx(const char* name, const char* list,
|
|
Packit Service |
fa4841 |
size_t* count);
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifdef __cplusplus
|
|
Packit Service |
fa4841 |
}
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#ifdef UNICODE
|
|
Packit Service |
fa4841 |
#define CommandLineClearArguments CommandLineClearArgumentsW
|
|
Packit Service |
fa4841 |
#define CommandLineParseArguments CommandLineParseArgumentsW
|
|
Packit Service |
fa4841 |
#define CommandLineFindArgument CommandLineFindArgumentW
|
|
Packit Service |
fa4841 |
#else
|
|
Packit Service |
fa4841 |
#define CommandLineClearArguments CommandLineClearArgumentsA
|
|
Packit Service |
fa4841 |
#define CommandLineParseArguments CommandLineParseArgumentsA
|
|
Packit Service |
fa4841 |
#define CommandLineFindArgument CommandLineFindArgumentA
|
|
Packit Service |
fa4841 |
#endif
|
|
Packit Service |
fa4841 |
|
|
Packit Service |
fa4841 |
#endif /* WINPR_CMDLINE_H */
|