On 7/28/16, 10:29 AM, Mark Geisert wrote:

>>I am going to really try to get that Win 7 supporting build out by the
>>end
>> of Thursday (Pacific time).
>
>That's the timezone I'm in.  I'll see what's going on later tonight :) .

Ok, great. Then we should be able to do this today.

>My mistake.  I thought your FUSE implementation had to be compiled for
>Cygwin, 
>in order to make use of the cygfuse glue logic.  But instead you have a
>native 
>Windows FUSE implementation?  Won't you have ABI (not API) problems
>connecting 
>those two pieces, depending on how the FUSE guts are implemented?
>Apologies if 
>you've sorted that all out; don't want to hold you up talking about
>solved aspects.

Yes. I have a FUSE implementation that works for native and Cygwin
programs. The ABI was indeed a bit of an issue, hence my use of fsp_fuse_*
symbols vs fuse_* symbols.

Quick example: instead of offering a fuse_loop symbol, WinFsp offers an
fsp_fuse_loop symbol. Then fuse_new is coded as (for native):

    static inline int fuse_loop(struct fuse *f)
    {
        return fsp_fuse_loop(fsp_fuse_env(), f);
    }

Similar code is used in the cygfuse DLL (in fact the same fuse_loop
definition is used on native and Cygwin through macro (ab)use).

The fsp_fuse_env() captures the “environment” which includes things like
the local MSVCRT/Cygwin malloc, etc. I also make sure not to use long
anywhere (since its size is different on Win64 vs Cygwin64).

I have some more information on this scheme here:

http://www.secfs.net/winfsp/blog/files/sshfs-port-case-study-step-2.html

>I agree with how you want to adjust license and transfer ownership.  I
>don't
>have a presence on GitHub but I should be able to grab cygfuse anyway.

Excellent. I will change the project to BSD and will explicitly say that I
am assigning ownership to you in the README/LICENSE files.

Bill

Reply via email to