Thread overview
[phobos] phobos commit, revision 1890
Aug 17, 2010
dsource.org
Aug 17, 2010
SHOO
Aug 17, 2010
SHOO
August 17, 2010
phobos commit, revision 1890


user: andrei

msg:
Now large files work with both osx and linux

http://www.dsource.org/projects/phobos/changeset/1890

August 18, 2010
(2010/08/18 0:26), dsource.org wrote:
> phobos commit, revision 1890
>
>
> user: andrei
>
> msg:
> Now large files work with both osx and linux
>
> http://www.dsource.org/projects/phobos/changeset/1890

I noticed some errors on Windows:

std\stdio.d(529): Error: undefined identifier off_t, did you mean
variable offset?
std\stdio.d(530): Error: undefined identifier fseeko, did you mean
function fseek?

Are off_t and fseeko only Posix?
August 17, 2010
Please update and build druntime too.

Andrei

SHOO wrote:
> (2010/08/18 0:26), dsource.org wrote:
>> phobos commit, revision 1890
>>
>>
>> user: andrei
>>
>> msg:
>> Now large files work with both osx and linux
>>
>> http://www.dsource.org/projects/phobos/changeset/1890
> 
> I noticed some errors on Windows:
> 
> std\stdio.d(529): Error: undefined identifier off_t, did you mean
> variable offset?
> std\stdio.d(530): Error: undefined identifier fseeko, did you mean
> function fseek?
> 
> Are off_t and fseeko only Posix?
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
August 17, 2010
Wait, SHOO's question was for Windows, your latest druntime commit seems to only affect linux...

Walter, is there an equivalent fseeko for DMC?

BTW, nice work finding that Andrei, I think this solves the problem (On Linux/MacOS at least).  Or at least pushes off the eventual change to purely D I/O ;)

-Steve



----- Original Message ----
> From: Andrei Alexandrescu <andrei at erdani.com>
> To: Discuss the phobos library for D <phobos at puremagic.com>
> Sent: Tue, August 17, 2010 12:13:30 PM
> Subject: Re: [phobos] phobos commit, revision 1890
> 
> Please update and build druntime too.
> 
> Andrei
> 
> SHOO wrote:
> >  (2010/08/18 0:26), dsource.org wrote:
> >> phobos commit, revision 1890
> >> 
> >> 
> >> user: andrei
> >> 
> >> msg:
> >> Now large  files work with both osx and linux
> >> 
> >>  http://www.dsource.org/projects/phobos/changeset/1890
> > 
> > I noticed  some errors on Windows:
> > 
> > std\stdio.d(529): Error: undefined  identifier off_t, did you mean variable
>offset?
> > std\stdio.d(530): Error:  undefined identifier fseeko, did you mean function
>fseek?
> > 
> > Are  off_t and fseeko only Posix?
> >  _______________________________________________
> > phobos mailing  list
> > phobos at puremagic.com
> >  http://lists.puremagic.com/mailman/listinfo/phobos
> _______________________________________________
> phobos  mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
> 



August 18, 2010
(2010/08/18 1:13), Andrei Alexandrescu wrote:
> Please update and build druntime too.
>
> Andrei
>

Though I do `svn up` both a combination of druntime and phobos, this symptom does not fade away.

Now, druntime's revision is r370, Phobos's revision is r1890.

On Windows, these lines are compiled:

L528:    enforce(isOpen, "Attempting to seek() in an unopened file");
L529:    static assert(off_t.sizeof == 8);
L530:    errnoEnforce(fseeko(p.handle, offset, origin) == 0,
L531:            "Could not seek in file `"~p.name~"'");

Is this correct?
August 17, 2010
Try now. I've reverted back to the old 32-bit routines for Windows.

To work with large files on win32 one must use _fseeki64 and _ftelli64. However, if I try to link such functions I get linker errors. Furthermore, grepping the windows/lib/ files for either symbol yields no results.

I've searched around and it looks like those functions are defined in libcmt.lib. Are we allowed to distrubute that? Otherwise, Walter, can you define 64-bit seek and tell routines in your stdio implementation?


Thanks,

Andrei

SHOO wrote:
> (2010/08/18 1:13), Andrei Alexandrescu wrote:
>> Please update and build druntime too.
>>
>> Andrei
>>
> 
> Though I do `svn up` both a combination of druntime and phobos, this symptom does not fade away.
> 
> Now, druntime's revision is r370, Phobos's revision is r1890.
> 
> On Windows, these lines are compiled:
> 
> L528:    enforce(isOpen, "Attempting to seek() in an unopened file");
> L529:    static assert(off_t.sizeof == 8);
> L530:    errnoEnforce(fseeko(p.handle, offset, origin) == 0,
> L531:            "Could not seek in file `"~p.name~"'");
> 
> Is this correct?
> _______________________________________________
> phobos mailing list
> phobos at puremagic.com
> http://lists.puremagic.com/mailman/listinfo/phobos
August 17, 2010



----- Original Message ----
> From: Andrei Alexandrescu <andrei at erdani.com>
> To: Discuss the phobos library for D <phobos at puremagic.com>
> Sent: Tue, August 17, 2010 12:47:20 PM
> Subject: Re: [phobos] phobos commit, revision 1890
> 
> Try now. I've reverted back to the old 32-bit routines for Windows.
> 
> To  work with large files on win32 one must use _fseeki64 and _ftelli64.
>However, if  I try to link such functions I get linker errors. Furthermore, grepping the  windows/lib/ files for either symbol yields no results.
> 
> I've searched  around and it looks like those functions are defined in
>libcmt.lib. Are we  allowed to distrubute that?

This will not work.  You cannot mix C runtime libraries.  In general, you cannot call any microsoft C runtime library functions.  However, system calls are still fine as the DMC runtime is built on top of those.

> Otherwise, Walter, can you define 64-bit seek and  tell routines in your stdio
>implementation?

This is an option, another is to implement the appropriate fseek and ftell functions in D, and use those instead.  This is what I had to resort to for the HANDLE <==> file descriptor functions that I need for std.process.

-Steve




August 17, 2010
On 08/17/2010 11:54 AM, Steve Schveighoffer wrote:
>> Otherwise, Walter, can you define 64-bit seek and  tell routines in your stdio implementation?
>
> This is an option, another is to implement the appropriate fseek and ftell functions in D, and use those instead.  This is what I had to resort to for the HANDLE<==>  file descriptor functions that I need for std.process.

Makes sense. Let's wait for Walter's opinion.

Andrei