@@ -61,6 +61,7 @@
#include <linux/workqueue.h>
#include <linux/byteorder/generic.h>
#include <linux/ctype.h>
+#include <linux/string_helpers.h>
#include <linux/io.h>
#include <linux/delay.h>
@@ -81,27 +82,6 @@
#include "hfa384x.h"
#include "prism2mgmt.h"
-/* Create a string of printable chars from something that might not be */
-/* It's recommended that the str be 4*len + 1 bytes long */
-#define wlan_mkprintstr(buf, buflen, str, strlen) \
-{ \
- int i = 0; \
- int j = 0; \
- memset(str, 0, (strlen)); \
- for (i = 0; i < (buflen); i++) { \
- if (isprint((buf)[i])) { \
- (str)[j] = (buf)[i]; \
- j++; \
- } else { \
- (str)[j] = '\\'; \
- (str)[j+1] = 'x'; \
- (str)[j+2] = hex_asc_hi((buf)[i]); \
- (str)[j+3] = hex_asc_lo((buf)[i]); \
- j += 4; \
- } \
- } \
-}
-
static char *dev_info = "prism2_usb";
static wlandevice_t *create_wlan(void);
@@ -862,8 +842,11 @@ static int prism2sta_getcardinfo(wlandevice_t *wlandev)
result = hfa384x_drvr_getconfig(hw, HFA384x_RID_NICSERIALNUMBER,
snum, HFA384x_RID_NICSERIALNUMBER_LEN);
if (!result) {
- wlan_mkprintstr(snum, HFA384x_RID_NICSERIALNUMBER_LEN,
- pstr, sizeof(pstr));
+ result = string_escape_mem(snum,
+ HFA384x_RID_NICSERIALNUMBER_LEN,
+ pstr, sizeof(pstr), ESCAPE_HEX | ESCAPE_NP,
+ NULL);
+ pstr[result] = '\0';
netdev_info(wlandev->netdev, "Prism2 card SN: %s\n", pstr);
} else {
netdev_err(wlandev->netdev, "Failed to retrieve Prism2 Card SN\n");
This is a generic function to escape strings by given criteria. Let's use it instead of custom approach. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> --- drivers/staging/wlan-ng/prism2sta.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-)