public int SetAllocationSize(string filename, long length, DokanFileInfo info)
        {
            int ret = DokanNet.DOKAN_SUCCESS;

            filename = CleanFileName(filename);

            try
            {
                Debug("SetEndOfFile {0}", filename);
                string Directory = MainForm.In.mNFS.GetDirectoryName(filename);
                string FileName  = MainForm.In.mNFS.GetFileName(filename);
                string FullName  = MainForm.In.mNFS.Combine(FileName, Directory);

                NFSLibrary.Protocols.Commons.NFSAttributes attr = MainForm.In.mNFS.GetItemAttributes(FullName);
                if (attr.Size < length)
                {
                    MainForm.In.mNFS.SetFileSize(FullName, length);
                }
            }
            catch (Exception ex)
            {
                ret = DokanNet.DOKAN_ERROR;
                Debug("SetEndOfFile file {0} newfile {1} exception {2}", filename, ex.Message);
            }

            return(ret);
        }
Exemple #2
0
        NtStatus IDokanOperations.SetAllocationSize(string fileName, long length, DokanFileInfo info)
        {
            Debug("SetAllocationSize");

            fileName = CleanFileName(fileName);

            try
            {
                Debug("SetEndOfFile {0}", fileName);
                string Directory = nfsClient.GetDirectoryName(fileName);
                string FileName  = nfsClient.GetFileName(fileName);
                string FullName  = nfsClient.Combine(FileName, Directory);

                NFSLibrary.Protocols.Commons.NFSAttributes attr = nfsClient.GetItemAttributes(FullName);
                if (attr.Size < length)
                {
                    nfsClient.SetFileSize(FullName, length);
                }
            }
            catch (Exception ex)
            {
                Debug("SetEndOfFile file {0} newfile {1} exception {2}", fileName, ex.Message);
                return(Trace("SetAllocationSize", fileName, info, DokanResult.Error, length.ToString(CultureInfo.InvariantCulture)));
            }

            return(Trace("SetAllocationSize", fileName, info, DokanResult.Success, length.ToString(CultureInfo.InvariantCulture)));
        }
Exemple #3
0
        NtStatus IDokanOperations.GetFileInformation(string fileName, out FileInformation fileInfo, DokanFileInfo info)
        {
            fileName = CleanFileName(fileName);
            fileInfo = new FileInformation();

            try
            {
                Debug("GetFileInformation {0}", fileName);
                string Directory = nfsClient.GetDirectoryName(fileName);
                string FileName  = nfsClient.GetFileName(fileName);
                string FullPath  = nfsClient.Combine(FileName, Directory);

                NFSLibrary.Protocols.Commons.NFSAttributes nfsAttributes = nfsClient.GetItemAttributes(FullPath);
                if (nfsAttributes == null)
                {
                    return(Trace("GetFileInformation", fileName, info, DokanResult.Error));
                }

                if (nfsAttributes.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFDIR)
                {
                    fileInfo.Attributes = System.IO.FileAttributes.Directory;
                }
                else
                {
                    fileInfo.Attributes = System.IO.FileAttributes.Archive;
                }

                fileInfo.LastAccessTime = nfsAttributes.LastAccessedDateTime;
                fileInfo.LastWriteTime  = nfsAttributes.ModifiedDateTime;
                fileInfo.CreationTime   = nfsAttributes.CreateDateTime;
                fileInfo.Length         = (long)nfsAttributes.Size;
                fileInfo.FileName       = FileName;
                Debug("GetFileInformation {0},{1},{2}", fileInfo.FileName, fileInfo.Length, fileInfo.Attributes);
            }
            catch (Exception ex)
            {
                Debug("GetFileInformation file {0} exception {1}", fileName, ex.Message);
                return(Trace("GetFileInformation", fileName, info, DokanResult.Error));
            }

            return(Trace("GetFileInformation", fileName, info, DokanResult.Success));
        }
        public int GetFileInformation(string filename, FileInformation fileinfo, DokanFileInfo info)
        {
            int ret = DokanNet.DOKAN_SUCCESS;

            filename = CleanFileName(filename);

            try
            {
                Debug("GetFileInformation {0}", filename);
                string Directory = MainForm.In.mNFS.GetDirectoryName(filename);
                string FileName  = MainForm.In.mNFS.GetFileName(filename);
                string FullPath  = MainForm.In.mNFS.Combine(FileName, Directory);

                NFSLibrary.Protocols.Commons.NFSAttributes nfsAttributes = MainForm.In.mNFS.GetItemAttributes(FullPath);
                if (nfsAttributes == null)
                {
                    return(DokanNet.DOKAN_ERROR);
                }

                if (nfsAttributes.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFDIR)
                {
                    fileinfo.Attributes = System.IO.FileAttributes.Directory;
                }
                else
                {
                    fileinfo.Attributes = System.IO.FileAttributes.Archive;
                }

                fileinfo.LastAccessTime = nfsAttributes.LastAccessedDateTime;
                fileinfo.LastWriteTime  = nfsAttributes.ModifiedDateTime;
                fileinfo.CreationTime   = nfsAttributes.CreateDateTime;
                fileinfo.Length         = (long)nfsAttributes.Size;
            }
            catch (Exception ex)
            {
                ret = DokanNet.DOKAN_ERROR;
                Debug("GetFileInformation file {0} exception {1}", filename, ex.Message);
            }

            return(ret);
        }
Exemple #5
0
        private void showPermissionsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (listViewRemote.SelectedItems != null)
                {
                    ListViewItem lvi = listViewRemote.SelectedItems[0];

                    String SearchItem = nfsClient.Combine(lvi.Text, RemoteFolder);
                    NFSLibrary.Protocols.Commons.NFSAttributes itemAttributes =
                        nfsClient.GetItemAttributes(SearchItem);

                    MessageBox.Show(
                        String.Format("Mode: {0}{1}{2}", itemAttributes.Mode.UserAccess, itemAttributes.Mode.GroupAccess, itemAttributes.Mode.OtherAccess)
                        );
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "NFS Client");
            }
        }
Exemple #6
0
        NtStatus IDokanOperations.FindFiles(string fileName, out IList <FileInformation> files, DokanFileInfo info)
        {
            Debug("FindFiles");

            fileName = CleanFileName(fileName);
            files    = new List <FileInformation>();

            try
            {
                Debug("FindFiles {0}", fileName);
                string Directory = nfsClient.GetDirectoryName(fileName);
                string FileName  = nfsClient.GetFileName(fileName);
                string FullPath  = nfsClient.Combine(FileName, Directory);

                foreach (string strItem in nfsClient.GetItemList(FullPath))
                {
                    Debug("Found: {0}", strItem);
                    NFSLibrary.Protocols.Commons.NFSAttributes nfsAttributes = nfsClient.GetItemAttributes(nfsClient.Combine(strItem, FullPath));
                    if (nfsAttributes != null)
                    {
                        FileInformation fi = new FileInformation();
                        fi.Attributes     = nfsAttributes.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFDIR ? System.IO.FileAttributes.Directory : System.IO.FileAttributes.Normal;
                        fi.CreationTime   = nfsAttributes.CreateDateTime;
                        fi.LastAccessTime = nfsAttributes.LastAccessedDateTime;
                        fi.LastWriteTime  = nfsAttributes.ModifiedDateTime;
                        fi.Length         = (long)nfsAttributes.Size;
                        fi.FileName       = strItem;
                        files.Add(fi);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug("FindFiles file {0} exception {1}", fileName, ex.Message);
                return(Trace("FindFiles", fileName, info, DokanResult.Error));
            }

            return(Trace("FindFiles", fileName, info, DokanResult.Success));
        }
        public int FindFiles(string filename, System.Collections.ArrayList files, DokanFileInfo info)
        {
            int ret = DokanNet.DOKAN_SUCCESS;

            filename = CleanFileName(filename);

            try
            {
                Debug("FindFiles {0}", filename);
                string Directory = MainForm.In.mNFS.GetDirectoryName(filename);
                string FileName  = MainForm.In.mNFS.GetFileName(filename);
                string FullPath  = MainForm.In.mNFS.Combine(FileName, Directory);

                foreach (string strItem in MainForm.In.mNFS.GetItemList(FullPath))
                {
                    NFSLibrary.Protocols.Commons.NFSAttributes nfsAttributes = MainForm.In.mNFS.GetItemAttributes(MainForm.In.mNFS.Combine(strItem, FullPath));
                    if (nfsAttributes != null)
                    {
                        FileInformation fi = new FileInformation();
                        fi.Attributes     = nfsAttributes.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFDIR ? System.IO.FileAttributes.Directory : System.IO.FileAttributes.Normal;
                        fi.CreationTime   = nfsAttributes.CreateDateTime;
                        fi.LastAccessTime = nfsAttributes.LastAccessedDateTime;
                        fi.LastWriteTime  = nfsAttributes.ModifiedDateTime;
                        fi.Length         = (long)nfsAttributes.Size;
                        fi.FileName       = strItem;
                        files.Add(fi);
                    }
                }
            }
            catch (Exception ex)
            {
                ret = DokanNet.DOKAN_ERROR;
                Debug("FindFiles file {0} exception {1}", filename, ex.Message);
            }

            return(ret);
        }
Exemple #8
0
        void RefreshRemote()
        {
            listViewRemote.Items.Clear();
            List <string> Items = nfsClient.GetItemList(RemoteFolder);

            Items = RemoveDuplicatesAndInvalid(Items);
            Items.Insert(0, "..");
            List <ListViewItem> ItemsList = new List <ListViewItem>();

            foreach (string Item in Items)
            {
                NFSLibrary.Protocols.Commons.NFSAttributes nfsAttribute = nfsClient.GetItemAttributes(nfsClient.Combine(Item, RemoteFolder));
                if (nfsAttribute != null)
                {
                    if (nfsAttribute.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFDIR)
                    {
                        ListViewItem lvi = new ListViewItem(new string[] { Item, nfsAttribute.Size.ToString(), nfsAttribute.CreateDateTime.ToString() });
                        lvi.ImageIndex = 1;
                        ItemsList.Add(lvi);
                    }
                    else
                    if (nfsAttribute.NFSType == NFSLibrary.Protocols.Commons.NFSItemTypes.NFREG)
                    {
                        ListViewItem lvi = new ListViewItem(new string[] { Item, nfsAttribute.Size.ToString(), nfsAttribute.CreateDateTime.ToString(), nfsAttribute.ModifiedDateTime.ToString(), nfsAttribute.LastAccessedDateTime.ToString() });
                        if (Item == "..")
                        {
                            continue;
                        }

                        lvi.ImageIndex = 0;
                        ItemsList.Add(lvi);
                    }
                }
                else
                {
                    ListViewItem lvi = new ListViewItem(new string[] { Item, "", "" });
                    lvi.ImageIndex = 0;
                    ItemsList.Add(lvi);
                }
            }

            List <ListViewItem> OrderedList = new List <ListViewItem>();

            foreach (ListViewItem lvi in ItemsList)
            {
                if (lvi.Text == "..")
                {
                    if (!OrderedList.Contains(lvi))
                    {
                        OrderedList.Add(lvi);
                    }
                    break;
                }
            }

            foreach (ListViewItem lvi in ItemsList)
            {
                if (lvi.ImageIndex == 1 && lvi.Text != "..")
                {
                    if (!OrderedList.Contains(lvi))
                    {
                        OrderedList.Add(lvi);
                    }
                }
            }

            foreach (ListViewItem lvi in ItemsList)
            {
                if (lvi.ImageIndex == 0)
                {
                    if (!OrderedList.Contains(lvi))
                    {
                        OrderedList.Add(lvi);
                    }
                }
            }

            listViewRemote.Items.AddRange(OrderedList.ToArray());
        }