diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/hardware.c | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/src/hardware.c b/src/hardware.c index 282dc77..651e666 100755 --- a/src/hardware.c +++ b/src/hardware.c @@ -441,33 +441,35 @@ static int hw_strncmp (const char *p_str1, const char *p_str2, const int len) ** Returns Returns char* (bluetooth type) ** *******************************************************************************/ -static char *hw_samsung_bluetooth_type() +static const char *hw_samsung_bluetooth_type() { char buf[10]; - int fd = open(CID_PATH, O_RDONLY); + int fd; + ssize_t nread; + + fd = open(CID_PATH, O_RDONLY); if (fd < 0) { ALOGE("Couldn't open file %s for reading", CID_PATH); return NULL; } - if (read(fd, buf, sizeof(buf)) < 0) { - close(fd); + nread = read(fd, buf, sizeof(buf)); + close(fd); + if (nread <= 0) { return NULL; } - close(fd); - if (strncmp(buf, "murata", 6) == 0) - return "_murata"; + return "murata"; if (strncmp(buf, "semcove", 7) == 0) - return "_semcove"; + return "semcove"; if (strncmp(buf, "semcosh", 7) == 0) - return "_semcosh"; + return "semcosh"; if (strncmp(buf, "wisol", 5) == 0) - return "_wisol"; + return "wisol"; return NULL; } @@ -518,26 +520,28 @@ static uint8_t hw_config_findpatch(char *p_chip_id_str) while ((dp = readdir(dirp)) != NULL) { /* Check if filename starts with chip-id name */ -#ifdef SAMSUNG_BLUETOOTH - char *type = hw_samsung_bluetooth_type(); - char samsung_patchfile_name[FW_PATCHFILE_PATH_MAXLEN] = { 0 }; - memset(samsung_patchfile_name, 0, FW_PATCHFILE_PATH_MAXLEN); - strcpy(samsung_patchfile_name, p_chip_id_str); - if (type != NULL) - { - strcat(samsung_patchfile_name, type); - } + int cmp; - if ((hw_strncmp(dp->d_name, samsung_patchfile_name, - strlen(samsung_patchfile_name))) == 0) - { - memset(p_chip_id_str, 0, FW_PATCHFILE_PATH_MAXLEN); - strcpy(p_chip_id_str, samsung_patchfile_name); -#else - if ((hw_strncmp(dp->d_name, p_chip_id_str, strlen(p_chip_id_str)) \ - ) == 0) + cmp = hw_strncmp(dp->d_name, p_chip_id_str, strlen(p_chip_id_str)); + if (cmp == 0) { +#ifdef SAMSUNG_BLUETOOTH + const char *type = hw_samsung_bluetooth_type(); + + if (type != NULL) { + const char *needle; + + BTHWDBG("Looking for Samsung %s patchfile flavour in %s", + type, + dp->d_name); + + needle = strstr(dp->d_name, type); + if (needle == NULL) { + continue; + } + } #endif + /* Check if it has .hcd extenstion */ filenamelen = strlen(dp->d_name); if ((filenamelen >= FW_PATCHFILE_EXTENSION_LEN) && |
