Make strtosz() return int64_t instead of ssize_t
strtosz() needs to return a 64 bit type even on 32 bit architectures. Otherwise qemu-img will fail to create disk images >= 2GB Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
		
							parent
							
								
									c90f1b3297
								
							
						
					
					
						commit
						70b4f4bb05
					
				
							
								
								
									
										8
									
								
								cutils.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								cutils.c
									
									
									
									
									
								
							| @ -291,9 +291,9 @@ int fcntl_setfl(int fd, int flag) | ||||
|  * value must be terminated by whitespace, ',' or '\0'. Return -1 on | ||||
|  * error. | ||||
|  */ | ||||
| ssize_t strtosz_suffix(const char *nptr, char **end, const char default_suffix) | ||||
| int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix) | ||||
| { | ||||
|     ssize_t retval = -1; | ||||
|     int64_t retval = -1; | ||||
|     char *endptr, c, d; | ||||
|     int mul_required = 0; | ||||
|     double val, mul, integral, fraction; | ||||
| @ -365,7 +365,7 @@ ssize_t strtosz_suffix(const char *nptr, char **end, const char default_suffix) | ||||
|             goto fail; | ||||
|         } | ||||
|     } | ||||
|     if ((val * mul >= ~(size_t)0) || val < 0) { | ||||
|     if ((val * mul >= INT64_MAX) || val < 0) { | ||||
|         goto fail; | ||||
|     } | ||||
|     retval = val * mul; | ||||
| @ -378,7 +378,7 @@ fail: | ||||
|     return retval; | ||||
| } | ||||
| 
 | ||||
| ssize_t strtosz(const char *nptr, char **end) | ||||
| int64_t strtosz(const char *nptr, char **end) | ||||
| { | ||||
|     return strtosz_suffix(nptr, end, STRTOSZ_DEFSUFFIX_MB); | ||||
| } | ||||
|  | ||||
| @ -4162,7 +4162,7 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, | ||||
|             break; | ||||
|         case 'o': | ||||
|             { | ||||
|                 ssize_t val; | ||||
|                 int64_t val; | ||||
|                 char *end; | ||||
| 
 | ||||
|                 while (qemu_isspace(*p)) { | ||||
|  | ||||
| @ -158,8 +158,8 @@ int fcntl_setfl(int fd, int flag); | ||||
| #define STRTOSZ_DEFSUFFIX_MB	'M' | ||||
| #define STRTOSZ_DEFSUFFIX_KB	'K' | ||||
| #define STRTOSZ_DEFSUFFIX_B	'B' | ||||
| ssize_t strtosz(const char *nptr, char **end); | ||||
| ssize_t strtosz_suffix(const char *nptr, char **end, const char default_suffix); | ||||
| int64_t strtosz(const char *nptr, char **end); | ||||
| int64_t strtosz_suffix(const char *nptr, char **end, const char default_suffix); | ||||
| 
 | ||||
| /* path.c */ | ||||
| void init_paths(const char *prefix); | ||||
|  | ||||
| @ -320,7 +320,7 @@ static int img_create(int argc, char **argv) | ||||
| 
 | ||||
|     /* Get image size, if specified */ | ||||
|     if (optind < argc) { | ||||
|         ssize_t sval; | ||||
|         int64_t sval; | ||||
|         sval = strtosz_suffix(argv[optind++], NULL, STRTOSZ_DEFSUFFIX_B); | ||||
|         if (sval < 0) { | ||||
|             error_report("Invalid image size specified! You may use k, M, G or " | ||||
|  | ||||
							
								
								
									
										4
									
								
								vl.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								vl.c
									
									
									
									
									
								
							| @ -804,7 +804,7 @@ static void numa_add(const char *optarg) | ||||
|         if (get_param_value(option, 128, "mem", optarg) == 0) { | ||||
|             node_mem[nodenr] = 0; | ||||
|         } else { | ||||
|             ssize_t sval; | ||||
|             int64_t sval; | ||||
|             sval = strtosz(option, NULL); | ||||
|             if (sval < 0) { | ||||
|                 fprintf(stderr, "qemu: invalid numa mem size: %s\n", optarg); | ||||
| @ -2245,7 +2245,7 @@ int main(int argc, char **argv, char **envp) | ||||
|                 exit(0); | ||||
|                 break; | ||||
|             case QEMU_OPTION_m: { | ||||
|                 ssize_t value; | ||||
|                 int64_t value; | ||||
| 
 | ||||
|                 value = strtosz(optarg, NULL); | ||||
|                 if (value < 0) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Jes Sorensen
						Jes Sorensen