1 /* 2 * PROJECT: FreeLoader 3 * LICENSE: MIT (https://spdx.org/licenses/MIT) 4 * PURPOSE: Generic ARC Support Functions 5 * COPYRIGHT: Copyright 2019-2024 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org> 6 */ 7 8 /* INCLUDES ******************************************************************/ 9 10 #include <freeldr.h> 11 12 /* FUNCTIONS *****************************************************************/ 13 14 PSTR 15 GetNextArgumentValue( 16 _In_ ULONG Argc, 17 _In_ PCHAR Argv[], 18 _Inout_opt_ PULONG LastIndex, 19 _In_ PCSTR ArgumentName) 20 { 21 ULONG i; 22 SIZE_T ArgNameLen = strlen(ArgumentName); 23 24 for (i = (LastIndex ? *LastIndex : 0); i < Argc; ++i) 25 { 26 if (Argv[i] /* NULL pointer is a valid entry in Argv: skip it */ && 27 (strlen(Argv[i]) >= ArgNameLen + 1 /* Count the '=' sign */) && 28 (_strnicmp(Argv[i], ArgumentName, ArgNameLen) == 0) && 29 (Argv[i][ArgNameLen] == '=')) 30 { 31 /* Found it, return the value */ 32 if (LastIndex) *LastIndex = i; 33 return &Argv[i][ArgNameLen + 1]; 34 } 35 } 36 37 if (LastIndex) *LastIndex = (ULONG)-1; 38 return NULL; 39 } 40 41 PSTR 42 GetArgumentValue( 43 _In_ ULONG Argc, 44 _In_ PCHAR Argv[], 45 _In_ PCSTR ArgumentName) 46 { 47 return GetNextArgumentValue(Argc, Argv, NULL, ArgumentName); 48 } 49 50 /* EOF */ 51