[Issue 5206] New: stat_t is not the same as struct stat
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Nov 11 21:36:02 PST 2010
http://d.puremagic.com/issues/show_bug.cgi?id=5206
Summary: stat_t is not the same as struct stat
Product: D
Version: D2
Platform: Other
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: Phobos
AssignedTo: nobody at puremagic.com
ReportedBy: Jesse.K.Phillips+D at gmail.com
CC: Jesse.K.Phillips+D at gmail.com
--- Comment #0 from Jesse Phillips <Jesse.K.Phillips+D at gmail.com> 2010-11-11 21:34:53 PST ---
The structure created by D for stat is not the same size as the one in C, and
there appears to be no communication of data between C and D. Assigns a value
to st_mode and calls a C function which prints the value and assigns its own.
At which point D prints the value (the same one it assigned). Running 32bit
Linux.
Output:
D size: 100
D Assigning 65
C Size: 88
C Found: 0
C Assign: 45
D Found 65
import core.sys.posix.sys.stat;
import std.stdio;
extern(C) void modStat(stat_t* data);
void main() {
stat_t stbuf;
writeln("D size: ", stbuf.sizeof);
writeln("D Assigning ", 65);
stbuf.st_mode = 65;
modStat(&stbuf);
writeln("D Found ", stbuf.st_mode);
}
--------------- cstat.c
#include <sys/stat.h>
#include <stdio.h>
void modStat(struct stat *stbuf) {
struct stat rrr;
printf("C Size: %d\n", sizeof(rrr));
printf("C Found: %d\n", stbuf->st_mode);
printf("C Assign: %d\n", 45);
stbuf->st_mode = 45;
}
Compiled with: gcc -g -c cstat.c && dmd -gc stat.d cstat.o
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list