On Fri, Dec 06, 2019 at 06:49:52PM +0100, Klemens Nanni wrote:
> The parse_size() wrapper around scan_scaled(3) writes its intermediate
> result to the function argument which is always passed as literal zero.
>
> This seems odd, the function parameter has no meaning but merely serves
> as storage, so let's use a proper function scoped variable instead.
>
> OK?
Ping.
Index: main.c
===================================================================
RCS file: /cvs/src/usr.sbin/vmctl/main.c,v
retrieving revision 1.59
diff -u -p -r1.59 main.c
--- main.c 27 Oct 2019 08:59:48 -0000 1.59
+++ main.c 16 Dec 2019 22:41:18 -0000
@@ -407,8 +407,10 @@ parse_network(struct parse_result *res,
}
int
-parse_size(struct parse_result *res, char *word, long long val)
+parse_size(struct parse_result *res, char *word)
{
+ long long val = 0;
+
if (word != NULL) {
if (scan_scaled(word, &val) != 0) {
warn("invalid size: %s", word);
@@ -576,7 +578,7 @@ ctl_create(struct parse_result *res, int
err(1, "unveil");
break;
case 's':
- if (parse_size(res, optarg, 0) != 0)
+ if (parse_size(res, optarg) != 0)
errx(1, "invalid size: %s", optarg);
break;
default:
@@ -872,7 +874,7 @@ ctl_start(struct parse_result *res, int
case 'm':
if (res->size)
errx(1, "memory specified multiple times");
- if (parse_size(res, optarg, 0) != 0)
+ if (parse_size(res, optarg) != 0)
errx(1, "invalid memory size: %s", optarg);
break;
case 'n':
Index: vmctl.h
===================================================================
RCS file: /cvs/src/usr.sbin/vmctl/vmctl.h,v
retrieving revision 1.32
diff -u -p -r1.32 vmctl.h
--- vmctl.h 11 May 2019 23:07:46 -0000 1.32
+++ vmctl.h 16 Dec 2019 22:41:18 -0000
@@ -77,7 +77,7 @@ struct imsgbuf *ibuf;
int vmmaction(struct parse_result *);
int parse_ifs(struct parse_result *, char *, int);
int parse_network(struct parse_result *, char *);
-int parse_size(struct parse_result *, char *, long long);
+int parse_size(struct parse_result *, char *);
int parse_disktype(const char *, const char **);
int parse_disk(struct parse_result *, char *, int);
int parse_vmid(struct parse_result *, char *, int);