Revision b6e356aa

b/cmd.c
344 344
#define MEGABYTES(x)	((long long)(x) << 20)
345 345
#define KILOBYTES(x)	((long long)(x) << 10)
346 346

  
347
long long
348
cvtnum(
349
	char		*s)
350
{
351
	long long	i;
352
	char		*sp;
353
	int		c;
354

  
355
	i = strtoll(s, &sp, 0);
356
	if (i == 0 && sp == s)
357
		return -1LL;
358
	if (*sp == '\0')
359
		return i;
360

  
361
	if (sp[1] != '\0')
362
		return -1LL;
363

  
364
	c = qemu_tolower(*sp);
365
	switch (c) {
366
	default:
367
		return i;
368
	case 'k':
369
		return KILOBYTES(i);
370
	case 'm':
371
		return MEGABYTES(i);
372
	case 'g':
373
		return GIGABYTES(i);
374
	case 't':
375
		return TERABYTES(i);
376
	case 'p':
377
		return PETABYTES(i);
378
	case 'e':
379
		return  EXABYTES(i);
380
	}
381
	return -1LL;
382
}
383

  
384 347
#define TO_EXABYTES(x)	((x) / EXABYTES(1))
385 348
#define TO_PETABYTES(x)	((x) / PETABYTES(1))
386 349
#define TO_TERABYTES(x)	((x) / TERABYTES(1))
b/cmd.h
58 58
void doneline(char *input, char **vec);
59 59
char *fetchline(void);
60 60

  
61
long long cvtnum(char *s);
62 61
void cvtstr(double value, char *str, size_t sz);
63 62

  
64 63
struct timeval tsub(struct timeval t1, struct timeval t2);
b/qemu-io.c
29 29

  
30 30
static int misalign;
31 31

  
32
static int64_t cvtnum(const char *s)
33
{
34
    char *end;
35
    return strtosz_suffix(s, &end, STRTOSZ_DEFSUFFIX_B);
36
}
37

  
32 38
/*
33 39
 * Parse the pattern argument to various sub-commands.
34 40
 *

Also available in: Unified diff