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:
Jes Sorensen 2011-01-05 11:41:02 +01:00 committed by Kevin Wolf
parent c90f1b3297
commit 70b4f4bb05
5 changed files with 10 additions and 10 deletions

View file

@ -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);
}