expand_number(3) silently truncates numeric part of the argument
to 32 bit on i386, light impact on gjournal
Alexandre "Sunny" Kovalenko
gaijin.k at gmail.com
Sun Jun 29 21:26:49 UTC 2008
I honestly don't know whether it should or should not do it, and if it
should not, what errno should be set to. Program below gives following
output on RELENG_7 as of June 28th:
sunny:RabbitsDen>./expand_number 5368709120k
Result is 1099511627776
sunny:RabbitsDen>./expand_number 5120G
Result is 5497558138880
sunny:RabbitsDen>
One of the more interesting manifestations in the userland is that
gjournal label -s 5368709120 -f /dev/da0s1a
quietly gives you 1G of the journal in the resulting file system.
Cut here>-----------------------------------------------------------
#include <ctype.h>
#include <sys/types.h>
#include <inttypes.h>
#include <errno.h>
#include <libutil.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
if(argc != 2)
{
fprintf(stderr, "Usage: %s <number>\n", argv[0]);
exit(1);
}
errno = 0;
intmax_t result;
if(expand_number(argv[1], &result) || errno)
{
perror("Expand number");
exit(1);
}
printf("Result is %jd\n", result);
exit(0);
}
Cut here>-----------------------------------------------------------
--
Alexandre "Sunny" Kovalenko (Олександр Коваленко)
More information about the freebsd-stable
mailing list