cone icon indicating copy to clipboard operation
cone copied to clipboard

Using C from Cone: calling fopen()

Open jt9897253 opened this issue 3 years ago • 1 comments
trafficstars

Hello,

when trying to call fopen() from cone, the program exits with a segmentation fault. This is tested on macOS, the code is:

import stdio::*

struct @opaque file

extern:
  fn fopen(filename &[]u8, mode &[]u8) *file

fn main():
  mut testFile = fopen("test", "w")

Is it possible to call fopen() from cone, and if yes, could you please give me a hint how to do it? Thank you!

jt9897253 avatar Oct 03 '22 16:10 jt9897253

The biggest problem I see with your code is that you define fopen as accepting two array references (slices). fopen is written to expect pointers. An array reference is a "fat pointer", composed of a pointer plus a length.

It might work better to define with fn fopen(filename *u8, mode *u8).

Let me know if that helps. If not, I can look into it more when I have time (though I don't have a macintosh).

jondgoodwin avatar Oct 08 '22 23:10 jondgoodwin