mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-10-29 05:40:25 -04:00
conf: introduce safe_strtol_base()
It is useful to parse hexadecimal strings, too. Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
0e2b167e93
commit
f547b2e35f
3 changed files with 5 additions and 9 deletions
|
|
@ -232,7 +232,8 @@ size_t page_align(size_t size);
|
||||||
size_t page_size(void);
|
size_t page_size(void);
|
||||||
size_t page_ptr(size_t object_offset, size_t object_size, size_t *offset, size_t *mmap_offset);
|
size_t page_ptr(size_t object_offset, size_t object_size, size_t *offset, size_t *mmap_offset);
|
||||||
|
|
||||||
int safe_strtol(const char *str, long *val);
|
int safe_strtol_base(const char *str, long *val, int base);
|
||||||
|
static inline int safe_strtol(const char *str, long *val) { return safe_strtol_base(str, val, 0); }
|
||||||
|
|
||||||
int snd_send_fd(int sock, void *data, size_t len, int fd);
|
int snd_send_fd(int sock, void *data, size_t len, int fd);
|
||||||
int snd_receive_fd(int sock, void *data, size_t len, int *fd);
|
int snd_receive_fd(int sock, void *data, size_t len, int *fd);
|
||||||
|
|
|
||||||
|
|
@ -668,14 +668,14 @@ static int safe_strtoll(const char *str, long long *val)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int safe_strtol(const char *str, long *val)
|
int safe_strtol_base(const char *str, long *val, int base)
|
||||||
{
|
{
|
||||||
char *end;
|
char *end;
|
||||||
long v;
|
long v;
|
||||||
if (!*str)
|
if (!*str)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
errno = 0;
|
errno = 0;
|
||||||
v = strtol(str, &end, 0);
|
v = strtol(str, &end, base);
|
||||||
if (errno)
|
if (errno)
|
||||||
return -errno;
|
return -errno;
|
||||||
if (*end)
|
if (*end)
|
||||||
|
|
|
||||||
|
|
@ -811,7 +811,6 @@ void uc_mgr_card_close(snd_use_case_mgr_t *uc_mgr)
|
||||||
*/
|
*/
|
||||||
const char *uc_mgr_alibcfg_by_device(snd_config_t **top, const char *name)
|
const char *uc_mgr_alibcfg_by_device(snd_config_t **top, const char *name)
|
||||||
{
|
{
|
||||||
char buf[7];
|
|
||||||
long card_num;
|
long card_num;
|
||||||
snd_config_t *config;
|
snd_config_t *config;
|
||||||
snd_use_case_mgr_t *uc_mgr;
|
snd_use_case_mgr_t *uc_mgr;
|
||||||
|
|
@ -819,11 +818,7 @@ const char *uc_mgr_alibcfg_by_device(snd_config_t **top, const char *name)
|
||||||
|
|
||||||
if (strncmp(name, "_ucm", 4) || strlen(name) < 12 || name[8] != '.')
|
if (strncmp(name, "_ucm", 4) || strlen(name) < 12 || name[8] != '.')
|
||||||
return NULL;
|
return NULL;
|
||||||
buf[0] = '0';
|
err = safe_strtol_base(name, &card_num, 16);
|
||||||
buf[1] = 'x';
|
|
||||||
strncpy(buf + 2, name + 4, 4);
|
|
||||||
buf[6] = '\0';
|
|
||||||
err = safe_strtol(buf, &card_num);
|
|
||||||
if (err < 0 || card_num < 0 || card_num > 0xffff)
|
if (err < 0 || card_num < 0 || card_num > 0xffff)
|
||||||
return NULL;
|
return NULL;
|
||||||
config = NULL;
|
config = NULL;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue