qemu-io: Make cvtnum() a wrapper around strtosz_suffix()
No reason to implement the same thing multiple times. A nice side effect is that fractional numbers like 0.5M can be used in qemu-io now. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
		
							parent
							
								
									5e00984aef
								
							
						
					
					
						commit
						b6e356aa25
					
				
							
								
								
									
										37
									
								
								cmd.c
								
								
								
								
							
							
						
						
									
										37
									
								
								cmd.c
								
								
								
								
							| 
						 | 
				
			
			@ -344,43 +344,6 @@ doneline(
 | 
			
		|||
#define MEGABYTES(x)	((long long)(x) << 20)
 | 
			
		||||
#define KILOBYTES(x)	((long long)(x) << 10)
 | 
			
		||||
 | 
			
		||||
long long
 | 
			
		||||
cvtnum(
 | 
			
		||||
	char		*s)
 | 
			
		||||
{
 | 
			
		||||
	long long	i;
 | 
			
		||||
	char		*sp;
 | 
			
		||||
	int		c;
 | 
			
		||||
 | 
			
		||||
	i = strtoll(s, &sp, 0);
 | 
			
		||||
	if (i == 0 && sp == s)
 | 
			
		||||
		return -1LL;
 | 
			
		||||
	if (*sp == '\0')
 | 
			
		||||
		return i;
 | 
			
		||||
 | 
			
		||||
	if (sp[1] != '\0')
 | 
			
		||||
		return -1LL;
 | 
			
		||||
 | 
			
		||||
	c = qemu_tolower(*sp);
 | 
			
		||||
	switch (c) {
 | 
			
		||||
	default:
 | 
			
		||||
		return i;
 | 
			
		||||
	case 'k':
 | 
			
		||||
		return KILOBYTES(i);
 | 
			
		||||
	case 'm':
 | 
			
		||||
		return MEGABYTES(i);
 | 
			
		||||
	case 'g':
 | 
			
		||||
		return GIGABYTES(i);
 | 
			
		||||
	case 't':
 | 
			
		||||
		return TERABYTES(i);
 | 
			
		||||
	case 'p':
 | 
			
		||||
		return PETABYTES(i);
 | 
			
		||||
	case 'e':
 | 
			
		||||
		return  EXABYTES(i);
 | 
			
		||||
	}
 | 
			
		||||
	return -1LL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define TO_EXABYTES(x)	((x) / EXABYTES(1))
 | 
			
		||||
#define TO_PETABYTES(x)	((x) / PETABYTES(1))
 | 
			
		||||
#define TO_TERABYTES(x)	((x) / TERABYTES(1))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										1
									
								
								cmd.h
								
								
								
								
							
							
						
						
									
										1
									
								
								cmd.h
								
								
								
								
							| 
						 | 
				
			
			@ -58,7 +58,6 @@ char **breakline(char *input, int *count);
 | 
			
		|||
void doneline(char *input, char **vec);
 | 
			
		||||
char *fetchline(void);
 | 
			
		||||
 | 
			
		||||
long long cvtnum(char *s);
 | 
			
		||||
void cvtstr(double value, char *str, size_t sz);
 | 
			
		||||
 | 
			
		||||
struct timeval tsub(struct timeval t1, struct timeval t2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue