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