enum: Return boolean result for enum_from_name() lookup
Handling the result for enum_from_name() is difficult, as checking for negative return values requires a cast if the enum type is unsigned. The new signature clearly differentiates lookup result from lookup value. Further, this actually allows to convert real -1 enum values, which could not be distinguished from "not-found" and the -1 return value. This also fixes several clang warnings where enums are unsigned.
This commit is contained in:
@@ -53,8 +53,7 @@ static int acert()
|
||||
case 'h':
|
||||
goto usage;
|
||||
case 'g':
|
||||
digest = enum_from_name(hash_algorithm_short_names, arg);
|
||||
if (digest == -1)
|
||||
if (!enum_from_name(hash_algorithm_short_names, arg, &digest))
|
||||
{
|
||||
error = "invalid --digest type";
|
||||
goto usage;
|
||||
|
||||
@@ -106,8 +106,7 @@ static int issue()
|
||||
}
|
||||
continue;
|
||||
case 'g':
|
||||
digest = enum_from_name(hash_algorithm_short_names, arg);
|
||||
if (digest == -1)
|
||||
if (!enum_from_name(hash_algorithm_short_names, arg, &digest))
|
||||
{
|
||||
error = "invalid --digest type";
|
||||
goto usage;
|
||||
|
||||
@@ -64,8 +64,7 @@ static int req()
|
||||
}
|
||||
continue;
|
||||
case 'g':
|
||||
digest = enum_from_name(hash_algorithm_short_names, arg);
|
||||
if (digest == -1)
|
||||
if (!enum_from_name(hash_algorithm_short_names, arg, &digest))
|
||||
{
|
||||
error = "invalid --digest type";
|
||||
goto usage;
|
||||
|
||||
@@ -95,8 +95,7 @@ static int self()
|
||||
}
|
||||
continue;
|
||||
case 'g':
|
||||
digest = enum_from_name(hash_algorithm_short_names, arg);
|
||||
if (digest == -1)
|
||||
if (!enum_from_name(hash_algorithm_short_names, arg, &digest))
|
||||
{
|
||||
error = "invalid --digest type";
|
||||
goto usage;
|
||||
|
||||
@@ -142,8 +142,7 @@ static int sign_crl()
|
||||
case 'h':
|
||||
goto usage;
|
||||
case 'g':
|
||||
digest = enum_from_name(hash_algorithm_short_names, arg);
|
||||
if (digest == -1)
|
||||
if (!enum_from_name(hash_algorithm_short_names, arg, &digest))
|
||||
{
|
||||
error = "invalid --digest type";
|
||||
goto usage;
|
||||
|
||||
Reference in New Issue
Block a user