halt='$(ME): use STREQLEN or STRPREFIX instead of str''ncmp' \
$(_sc_search_regexp)
+# strtol and friends are too easy to misuse
+sc_prohibit_strtol:
+ @prohibit='\bstrto(u?ll?|[ui]max) *\(' \
+ exclude='exempt from syntax-check' \
+ halt='$(ME): use virStrToLong_*, not strtol variants' \
+ $(_sc_search_regexp)
+ @prohibit='\bstrto[df] *\(' \
+ exclude='exempt from syntax-check' \
+ halt='$(ME): use virStrToDouble, not strtod variants' \
+ $(_sc_search_regexp)
+
# Use virAsprintf rather than as'printf since *strp is undefined on error.
sc_prohibit_asprintf:
@prohibit='\<v?a[s]printf\>' \
exclude_file_name_regexp--sc_prohibit_strncpy = \
^(src/util/util|tools/virsh)\.c$$
+exclude_file_name_regexp--sc_prohibit_strtol = \
+ ^src/(util/sexpr|(vbox|xen|xenxs)/.*)\.c$$
+
exclude_file_name_regexp--sc_prohibit_xmlGetProp = ^src/util/xml\.c$$
exclude_file_name_regexp--sc_prohibit_xmlURI = ^src/util/viruri\.c$$
int err;
errno = 0;
- val = strtol(s, &p, base);
+ val = strtol(s, &p, base); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s || (int) val != val);
if (end_ptr)
*end_ptr = p;
int err;
errno = 0;
- val = strtoul(s, &p, base);
+ val = strtoul(s, &p, base); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s || (unsigned int) val != val);
if (end_ptr)
*end_ptr = p;
int err;
errno = 0;
- val = strtol(s, &p, base);
+ val = strtol(s, &p, base); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s);
if (end_ptr)
*end_ptr = p;
int err;
errno = 0;
- val = strtoul(s, &p, base);
+ val = strtoul(s, &p, base); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s);
if (end_ptr)
*end_ptr = p;
int err;
errno = 0;
- val = strtoll(s, &p, base);
+ val = strtoll(s, &p, base); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s);
if (end_ptr)
*end_ptr = p;
int err;
errno = 0;
- val = strtoull(s, &p, base);
+ val = strtoull(s, &p, base); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s);
if (end_ptr)
*end_ptr = p;
int err;
errno = 0;
- val = strtod(s, &p);
+ val = strtod(s, &p); /* exempt from syntax-check */
err = (errno || (!end_ptr && *p) || p == s);
if (end_ptr)
*end_ptr = p;