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