xref: /freebsd-src/sys/dev/qat/qat_api/common/utils/sal_string_parse.c (revision 71625ec9ad2a9bc8c09784fbd23b759830e0ee5f)
1*78ee8d1cSJulian Grajkowski /* SPDX-License-Identifier: BSD-3-Clause */
2*78ee8d1cSJulian Grajkowski /* Copyright(c) 2007-2022 Intel Corporation */
3*78ee8d1cSJulian Grajkowski /**
4*78ee8d1cSJulian Grajkowski  *****************************************************************************
5*78ee8d1cSJulian Grajkowski  * @file sal_string_parse.c
6*78ee8d1cSJulian Grajkowski  *
7*78ee8d1cSJulian Grajkowski  * @ingroup SalStringParse
8*78ee8d1cSJulian Grajkowski  *
9*78ee8d1cSJulian Grajkowski  * @description
10*78ee8d1cSJulian Grajkowski  *    This file contains string parsing functions for both user space and kernel
11*78ee8d1cSJulian Grajkowski  *    space
12*78ee8d1cSJulian Grajkowski  *
13*78ee8d1cSJulian Grajkowski  *****************************************************************************/
14*78ee8d1cSJulian Grajkowski #include "cpa.h"
15*78ee8d1cSJulian Grajkowski #include "lac_mem.h"
16*78ee8d1cSJulian Grajkowski #include "sal_string_parse.h"
17*78ee8d1cSJulian Grajkowski 
18*78ee8d1cSJulian Grajkowski CpaStatus
Sal_StringParsing(char * string1,Cpa32U instanceNumber,char * string2,char * result)19*78ee8d1cSJulian Grajkowski Sal_StringParsing(char *string1,
20*78ee8d1cSJulian Grajkowski 		  Cpa32U instanceNumber,
21*78ee8d1cSJulian Grajkowski 		  char *string2,
22*78ee8d1cSJulian Grajkowski 		  char *result)
23*78ee8d1cSJulian Grajkowski {
24*78ee8d1cSJulian Grajkowski 	char instNumString[SAL_CFG_MAX_VAL_LEN_IN_BYTES] = { 0 };
25*78ee8d1cSJulian Grajkowski 	Cpa32U instNumStringLen = 0;
26*78ee8d1cSJulian Grajkowski 
27*78ee8d1cSJulian Grajkowski 	snprintf(instNumString,
28*78ee8d1cSJulian Grajkowski 		 SAL_CFG_MAX_VAL_LEN_IN_BYTES,
29*78ee8d1cSJulian Grajkowski 		 "%d",
30*78ee8d1cSJulian Grajkowski 		 instanceNumber);
31*78ee8d1cSJulian Grajkowski 	instNumStringLen = strnlen(instNumString, SAL_CFG_MAX_VAL_LEN_IN_BYTES);
32*78ee8d1cSJulian Grajkowski 	if ((strnlen(string1, SAL_CFG_MAX_VAL_LEN_IN_BYTES) + instNumStringLen +
33*78ee8d1cSJulian Grajkowski 	     strnlen(string2, SAL_CFG_MAX_VAL_LEN_IN_BYTES)) >
34*78ee8d1cSJulian Grajkowski 	    SAL_CFG_MAX_VAL_LEN_IN_BYTES) {
35*78ee8d1cSJulian Grajkowski 		QAT_UTILS_LOG("Size of result too small.\n");
36*78ee8d1cSJulian Grajkowski 		return CPA_STATUS_FAIL;
37*78ee8d1cSJulian Grajkowski 	}
38*78ee8d1cSJulian Grajkowski 
39*78ee8d1cSJulian Grajkowski 	LAC_OS_BZERO(result, SAL_CFG_MAX_VAL_LEN_IN_BYTES);
40*78ee8d1cSJulian Grajkowski 	snprintf(result,
41*78ee8d1cSJulian Grajkowski 		 SAL_CFG_MAX_VAL_LEN_IN_BYTES,
42*78ee8d1cSJulian Grajkowski 		 "%s%d%s",
43*78ee8d1cSJulian Grajkowski 		 string1,
44*78ee8d1cSJulian Grajkowski 		 instanceNumber,
45*78ee8d1cSJulian Grajkowski 		 string2);
46*78ee8d1cSJulian Grajkowski 
47*78ee8d1cSJulian Grajkowski 	return CPA_STATUS_SUCCESS;
48*78ee8d1cSJulian Grajkowski }
49*78ee8d1cSJulian Grajkowski 
50*78ee8d1cSJulian Grajkowski Cpa64U
Sal_Strtoul(const char * cp,char ** endp,unsigned int cfgBase)51*78ee8d1cSJulian Grajkowski Sal_Strtoul(const char *cp, char **endp, unsigned int cfgBase)
52*78ee8d1cSJulian Grajkowski {
53*78ee8d1cSJulian Grajkowski 	Cpa64U ulResult = 0;
54*78ee8d1cSJulian Grajkowski 
55*78ee8d1cSJulian Grajkowski 	ulResult = (Cpa64U)simple_strtoull(cp, endp, cfgBase);
56*78ee8d1cSJulian Grajkowski 
57*78ee8d1cSJulian Grajkowski 	return ulResult;
58*78ee8d1cSJulian Grajkowski }
59