Return to BSD News archive
Path: sserve!euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!simtel!news.sprintlink.net!dispatch.news.demon.net!demon!pencotts.demon.co.uk From: Andrew Gordon <andrew.gordon@net-tel.co.uk> Newsgroups: comp.unix.bsd.freebsd.misc Subject: Re: Simple BSD code acting funny in FreeBSD (correctly in Linux) Date: Wed, 09 Aug 1995 00:25:21 GMT Lines: 26 Message-ID: <807927921.19978@pencotts.demon.co.uk> References: <DD06CB.It1@midway.uchicago.edu> NNTP-Posting-Host: pencotts.demon.co.uk X-NNTP-Posting-Host: pencotts.demon.co.uk X-Mailer: Mozilla 1.1N (X11; I; BSD/386 uname failed) MIME-Version: 1.0 To: frank@gsb13580.uchicago.edu X-URL: news:DD06CB.It1@midway.uchicago.edu Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii frank@gsb13580.uchicago.edu (Frank S. Fejes) wrote: > Hello, I have been attempting to compile and run a simple ls-type >program under FreeBSD. It is very simple Berkeley Unix C coding, but >I have run into a small problem running it under FreeBSD (it works >perfectly in Linux, though). The problem lies in the ctime function ^^^^^ I don't think so. > > printf("%7d %.12s ", sbuf.st_size, ctime(&sbuf.st_mtime)+4); > The problem is that FreeBSD allows files larger than 4Gb, hence that sbuf.st_size is not a long but a quad (64-bit) integer. Your "%7d" format is only using up the first 32 bits and so the rest of the arguments get out of step. Your printf should look more like: printf("%7qd %.12s ", sbuf.st_size, ctime(&sbuf.st_mtime)+4); ^^ Presumably linux still has the 32-bit file size limit and so your program works OK there.