]> pilppa.org Git - libplp.git/blob - src/str_util.c
api fixes and cleanups
[libplp.git] / src / str_util.c
1 /*
2  * str.c
3  *
4  *  Created on: Feb 14, 2011
5  *      Author: lamikr
6  */
7
8 #include <stdio.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <errno.h>
12 #include <stdbool.h>
13
14 #include <log.h>
15
16 char *get_as_hex_str(const char *byte_arr, int byte_count) {
17         int     ii;
18         char    *ret_val;
19         char    item[5];
20
21         ret_val = NULL;
22         if ((byte_arr != NULL) &&
23             (byte_count > 0)) {
24                 ret_val = malloc(5 * byte_count);
25                 for (ii = 0; ii < byte_count; ii++) {
26                         if (ii == 0) {
27                                 snprintf(ret_val, 5, "0x%02x", byte_arr[ii]);
28                         }
29                         else {
30                                 snprintf(item, 5, "0x%02x", byte_arr[ii]);
31                                 strcat(ret_val, item);
32                         }
33                         if (ii < (byte_count - 1)) {
34                                 strcat(ret_val, " ");
35                         }
36                 }
37         }
38         return ret_val;
39 }
40
41 bool parse_long(const char *str, long *result) {
42         int     new_result;
43         char    *endptr;
44         bool    ret_val;
45
46         ret_val         = false;
47         errno           = 0;
48         new_result      = strtol(str, &endptr, 10);
49         if (errno != 0) {
50                 log_error("invalid input %s, could not convert to integer.\n", str);
51         }
52         else {
53                 if (endptr == str) {
54                         log_error("invalid input %s, could not convert to integer.\n", str);
55                 }
56                 else {
57                         *result = new_result;
58                         ret_val = true;
59                 }
60         }
61         return ret_val;
62 }