Date: Tue, 23 Nov 1999 12:57:36 +0800 From: Peter Wemm <peter@netplex.com.au> To: Bjoern Fischer <bfischer@Techfak.Uni-Bielefeld.DE> Cc: freebsd-hackers@FreeBSD.ORG, freebsd-stable@FreeBSD.ORG Subject: Re: stat(2) weirdness Message-ID: <19991123045736.C76D71C6D@overcee.netplex.com.au> In-Reply-To: Message from Bjoern Fischer <bfischer@Techfak.Uni-Bielefeld.DE> of "Tue, 23 Nov 1999 05:20:09 %2B0100." <19991123051328.A292@frolic.no-support.loc>
next in thread | previous in thread | raw e-mail | index | archive | help
Bjoern Fischer wrote: > Hello, > > recently while debugging a problem in wwwoffle-2.5b I realized, > that stat(2) behaves at least extremely strange on 3.3-STABLE: > > This small example... > > #include <stdio.h> > #include <sys/types.h> > #include <sys/stat.h> > > int main(int argc, char *argv[]) { > > char *fname = argv[0]; > struct stat sb; > int res = stat(argv[0], &sb); > > printf("filename : %s\n" \ > "st_size : %d\n" \ > "st_blocks : %d\n" \ > "st_blksize : %d\n", > fname, sb.st_size, sb.st_blocks, sb.st_blksize); > > return res; > > } > > would emerge this when run: > > filename : ./a.out > st_size : 3342 > st_blocks : 0 > st_blksize : 8 > > Any idea why st_blocks is always zero? This can't be correct. > st_blksize seems to be the number of blocks allocated for > filename, although assuming a blocksize of 512 the object > would fit into 7 blocks. Maybe that's the result of the > underlying FFS's fsize (1024). > > Björn > > -- > -----BEGIN GEEK CODE BLOCK----- > GCS d--(+) s++: a- C+++(-) UB++++OSI++++$ P+++(-) L---(++) !E W- N+ o>+ > K- !w !O !M !V PS++ PE- PGP++ t+++ !5 X++ tv- b+++ D++ G e+ h-- y+ > ------END GEEK CODE BLOCK------ > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message peter@overcee[12:55pm]/tmp-158> cc -Wall -o stat stat.c stat.c: In function `main': stat.c:15: warning: int format, different type arg (arg 3) stat.c:15: warning: int format, different type arg (arg 4) You are mixing int and 'long long' arg types. If it's fixed, eg: printf("filename : %s\n" \ "st_size : %lld\n" \ "st_blocks : %lld\n" \ "st_blksize : %d\n", fname, sb.st_size, sb.st_blocks, sb.st_blksize); Then: peter@overcee[12:56pm]/tmp-162> cc -Wall -o xx xx.c peter@overcee[12:56pm]/tmp-163> ./xx filename : ./xx st_size : 3522 st_blocks : 7 st_blksize : 4096 Cheers, -Peter -- Peter Wemm - peter@FreeBSD.org; peter@yahoo-inc.com; peter@netplex.com.au To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19991123045736.C76D71C6D>