예제 #1
0
        public int _OnLockHandle(string file, IntPtr fi, int cmd, IntPtr lockp)
        {
            Errno errno;

            try
            {
                PathInfo info = new PathInfo();
                PathInfo.CopyFromPtr(fi, info);
                FcntlCommand _cmd = NativeConvert.ToFcntlCommand(cmd);
                Flock        @lock;
                Interop.CopyFlock(lockp, out @lock);
                errno = _filesystem.OnLockHandle(file, info, _cmd, ref @lock);
                if (errno == 0)
                {
                    Interop.CopyFlock(ref @lock, lockp);
                    PathInfo.CopyToPtr(info, fi);
                }
            }
            catch (Exception e)
            {
                Trace.WriteLine(e.ToString());
                errno = Errno.EIO;
            }
            return(Interop.ConvertErrno(errno));
        }