I've got this piece of code:
using Posix;
int fuseguifs_getattr(string path, Posix.Stat *stbuf)
{
int res;
res = Posix.lstat(path, stbuf);
if (res == -1)
return -Posix.errno;
return 0;
}
static int main(string [] args)
{
Posix.Stat *a;
fuseguifs_getattr("/home/leon", a);
return 0;
}
When I'm trying to compile it I get this error:
test.vala:6.26-6.30: error: Argument 2: Cannot convert from
`Posix.Stat' to `Posix.Stat*'
res = Posix.lstat(path, stbuf);
^^^^^
Compilation failed: 1 error(s), 0 warning(s)
I've tried changing this: fuseguifs_getattr("/home/leon", a); to fuseguifs_getattr("/home/leon", *a);
But then I get an error: "Cannot pass value to reference or output parameter"
I've tried adding "out": res = Posix.lstat(path, out *stbuf);
That gives this error: error: ref and out method arguments can only be used with fields, parameters, local variables, and array element access
I can't change the fuseguifs_getattr method parameters because that's part of how the fuse bindings expect it.
I'm really stuck. Does anyone how I can solve this?
This seems to solve it:
int fuseguifs_getattr(string path, Posix.Stat *stbuf)
{
int res;
Posix.Stat a;
res = Posix.lstat(path, stbuf);
if (res == -1) {
return -Posix.errno;
}
*stbuf = a;
return 0;
}
Would that be the right way to go?