예제 #1
0
        private PutioFsItem FindPutioFSItem(String path)
        {
            // TODO: Remove this workaround:
            if (Path.GetFileName(path) == "desktop.ini")
            {
                return(null);
            }

            PutioFolder result = this.Mounter.PutioFileSystem.Root;

            foreach (String dir_name in PutioDokanOperations.GetPathElements(Path.GetDirectoryName(path)))
            {
                result = result.GetFolder(dir_name);
                if (result == null)
                {
                    return(null);
                }
            }

            String filename = Path.GetFileName(path);

            if (filename != "")
            {
                return(result.GetItem(filename));
            }
            return((PutioFsItem)result);
        }
예제 #2
0
        public int FindFiles(String filename, ArrayList files, DokanFileInfo info)
        {
            Stopwatch sw = new Stopwatch();

            sw.Start();
            logger.Debug("FindFiles on {0} by {1}", filename, info.ProcessId);
            PutioFsItem item = this.FindPutioFSItem(filename);

            if (item == null || !item.IsDirectory)
            {
                return(DokanNet.ERROR_PATH_NOT_FOUND);
            }

            PutioFolder folder = (PutioFolder)item;

            foreach (PutioFolder f in folder.GetFolders())
            {
                FileInformation fi = new FileInformation();
                fi.FileName       = f.Name;
                fi.Attributes     = FileAttributes.Offline | FileAttributes.NotContentIndexed | FileAttributes.ReadOnly | FileAttributes.Directory;
                fi.CreationTime   = DateTime.Now;
                fi.LastAccessTime = DateTime.Now;
                fi.LastWriteTime  = DateTime.Now;
                fi.Length         = 0;
                files.Add(fi);
            }

            foreach (PutioFile file in folder.GetFiles())
            {
                FileInformation fi = new FileInformation();
                fi.FileName       = file.Name;
                fi.Attributes     = FileAttributes.Offline | FileAttributes.NotContentIndexed | FileAttributes.ReadOnly;
                fi.CreationTime   = DateTime.Now;
                fi.LastAccessTime = DateTime.Now;
                fi.LastWriteTime  = DateTime.Now;
                fi.Length         = file.Size;
                files.Add(fi);
            }

            sw.Stop();
            logger.Debug("FindFiles took {0} ms. on {1}", sw.ElapsedMilliseconds, filename);
            return(0);
        }