From 41faf78f9faca8bf1bc2eea98d2be3ae93c72544 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 20 Apr 2020 18:05:39 +0200 Subject: [PATCH] Using strtol --- inc/lektor/macro.h | 8 ++++++++ src/mkv/write.c | 7 +++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/inc/lektor/macro.h b/inc/lektor/macro.h index 468f1de0..f5a32090 100644 --- a/inc/lektor/macro.h +++ b/inc/lektor/macro.h @@ -64,3 +64,11 @@ #define GOTO_UNLESS(cond, msg, label) GOTO_IF(!(cond), msg, ret) #define RETURN_UNLESS(cond, msg, ret) RETURN_IF(!(cond), msg, ret) #define NOTHING /* Usefull to return nothing. */ + +#define STRTOL(ret, str, endptr, err_flag) \ +{ \ + err_flag = 0; \ + errno = 0; \ + ret = str == NULL ? 0 : strtol(str, &(endptr), 0); \ + err_flag = errno != 0 || endptr == str; \ +} diff --git a/src/mkv/write.c b/src/mkv/write.c index 08d2764f..4ebd6b9c 100644 --- a/src/mkv/write.c +++ b/src/mkv/write.c @@ -147,6 +147,7 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta) regmatch_t pmatch[nmatch]; int reti, sta = false; char msgbuf[LEKTOR_TAG_MAX]; + char *endptr; static const char *rgx = "^/(.+)/(vo|va|amv|cdg|autres|vocaloid)/" @@ -178,10 +179,8 @@ metadata_from_path(char *const mkvfile, struct kara_metadata *meta) goto error; } - if (msgbuf[0] != '\0') { - meta->song_number = atoi(msgbuf); /* TODO: Use strtol */ - meta->song_number = MAX(1, meta->song_number); - } else + STRTOL(meta->song_number, msgbuf, endptr, reti); + if (reti || meta->song_number <= 0) meta->song_number = 1; sta = true; -- GitLab