summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZdenek Kabelac <zkabelac@redhat.com>2017-01-03 13:02:52 +0100
committerZdenek Kabelac <zkabelac@redhat.com>2017-01-03 14:55:16 +0100
commit9f65a3f0c54fc349da279f9a9e8f1b214945489e (patch)
tree9aafa936dcd0c8fa4d3c5311c2de7ff2e41e8ad3
parente75f0b7c771ac6b3a2925af92a9f3098fa8381a7 (diff)
downloadlvm2-9f65a3f0c54fc349da279f9a9e8f1b214945489e.tar.gz
lvmcmdline: support uint32
Add simple function to wrap usage for only uint32 numbers. Unlike 'int_arg' which accepts full range of 64bit number this function will error on numbers out of this range: <0, UINT32_MAX>
-rw-r--r--tools/lvmcmdline.c8
-rw-r--r--tools/tools.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index 9a4deb7d5..ae26957e9 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -554,6 +554,14 @@ int int_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_values *
return 1;
}
+int uint32_arg(struct cmd_context *cmd, struct arg_values *av)
+{
+ if (!int_arg(cmd, av) || (av->ui64_value > UINT32_MAX))
+ return 0;
+
+ return 1;
+}
+
int int_arg_with_sign(struct cmd_context *cmd __attribute__((unused)), struct arg_values *av)
{
char *ptr;
diff --git a/tools/tools.h b/tools/tools.h
index f6d224fb1..1419af9f5 100644
--- a/tools/tools.h
+++ b/tools/tools.h
@@ -144,6 +144,7 @@ int size_kb_arg(struct cmd_context *cmd, struct arg_values *av);
int size_mb_arg(struct cmd_context *cmd, struct arg_values *av);
int size_mb_arg_with_percent(struct cmd_context *cmd, struct arg_values *av);
int int_arg(struct cmd_context *cmd, struct arg_values *av);
+int uint32_arg(struct cmd_context *cmd, struct arg_values *av);
int int_arg_with_sign(struct cmd_context *cmd, struct arg_values *av);
int int_arg_with_sign_and_percent(struct cmd_context *cmd, struct arg_values *av);
int major_arg(struct cmd_context *cmd, struct arg_values *av);