08ee7bb982
There are more than 1000 NULL comparisons to be aligned to the coding style. For recurrent NULL comparison it's preferable using trivial scripts in order to minimize the review effort. Patch generated automatically with the command: sed -i PATTERN $(find src/ -type f) where PATTERN is in the list: 's/(\([a-z][a-z0-9_]*\) == NULL)/(!\1)/g' 's/(\([a-z][a-z0-9_]*->[a-z][a-z0-9_]*\) == NULL)/(!\1)/g' 's/(\([a-z][a-z0-9_]*\.[a-z][a-z0-9_]*\) == NULL)/(!\1)/g' 's/(\([a-z][a-z0-9_]*\) != NULL)/(\1)/g' 's/(\([a-z][a-z0-9_]*->[a-z][a-z0-9_]*\) != NULL)/(\1)/g' 's/(\([a-z][a-z0-9_]*\.[a-z][a-z0-9_]*\) != NULL)/(\1)/g' 's/(NULL == \([a-z][a-z0-9_]*\))/(!\1)/g' 's/(NULL == \([a-z][a-z0-9_]*->[a-z][a-z0-9_]*\))/(!\1)/g' 's/(NULL == \([a-z][a-z0-9_]*\.[a-z][a-z0-9_]*\))/(!\1)/g' 's/(NULL != \([a-z][a-z0-9_]*\))/(\1)/g' 's/(NULL != \([a-z][a-z0-9_]*->[a-z][a-z0-9_]*\))/(\1)/g' 's/(NULL != \([a-z][a-z0-9_]*\.[a-z][a-z0-9_]*\))/(\1)/g' Change-Id: Ida103e325d6d0600fb69c0b7a1557ee969db4417 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/6350 Tested-by: jenkins
83 lines
1.7 KiB
C
83 lines
1.7 KiB
C
/*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
* Copyright (c) 2018 Pengutronix, Oleksij Rempel <kernel@pengutronix.de>
|
|
*/
|
|
|
|
#include <helper/log.h>
|
|
#include <string.h>
|
|
|
|
#include "jtag_usb_common.h"
|
|
|
|
static char *jtag_usb_location;
|
|
/*
|
|
* 1 char: bus
|
|
* 2 * 7 chars: max 7 ports
|
|
* 1 char: test for overflow
|
|
* ------
|
|
* 16 chars
|
|
*/
|
|
#define JTAG_USB_MAX_LOCATION_LENGTH 16
|
|
|
|
void jtag_usb_set_location(const char *location)
|
|
{
|
|
if (strnlen(location, JTAG_USB_MAX_LOCATION_LENGTH) ==
|
|
JTAG_USB_MAX_LOCATION_LENGTH)
|
|
LOG_WARNING("usb location string is too long!!\n");
|
|
|
|
free(jtag_usb_location);
|
|
|
|
jtag_usb_location = strndup(location, JTAG_USB_MAX_LOCATION_LENGTH);
|
|
}
|
|
|
|
const char *jtag_usb_get_location(void)
|
|
{
|
|
return jtag_usb_location;
|
|
}
|
|
|
|
bool jtag_usb_location_equal(uint8_t dev_bus, uint8_t *port_path,
|
|
size_t path_len)
|
|
{
|
|
size_t path_step, string_length;
|
|
char *ptr, *loc;
|
|
bool equal = false;
|
|
|
|
/* strtok need non const char */
|
|
loc = strndup(jtag_usb_get_location(), JTAG_USB_MAX_LOCATION_LENGTH);
|
|
string_length = strnlen(loc, JTAG_USB_MAX_LOCATION_LENGTH);
|
|
|
|
ptr = strtok(loc, "-");
|
|
if (!ptr) {
|
|
LOG_WARNING("no '-' in usb path\n");
|
|
goto done;
|
|
}
|
|
|
|
string_length -= strnlen(ptr, string_length);
|
|
/* check bus mismatch */
|
|
if (atoi(ptr) != dev_bus)
|
|
goto done;
|
|
|
|
path_step = 0;
|
|
while (path_step < path_len) {
|
|
ptr = strtok(NULL, ".");
|
|
|
|
/* no more tokens in path */
|
|
if (!ptr)
|
|
break;
|
|
|
|
/* path mismatch at some step */
|
|
if (path_step < path_len && atoi(ptr) != port_path[path_step])
|
|
break;
|
|
|
|
path_step++;
|
|
string_length -= strnlen(ptr, string_length) + 1;
|
|
};
|
|
|
|
/* walked the full path, all elements match */
|
|
if (path_step == path_len && !string_length)
|
|
equal = true;
|
|
|
|
done:
|
|
free(loc);
|
|
return equal;
|
|
}
|