Пример #1
0
        public override IVirtualFile duplicate()
        {
            IVirtualFile duplicate = null;

            try
            {
                UmdIsoFile umdIsoFile = file.duplicate();
                if (umdIsoFile != null)
                {
                    duplicate = new UmdIsoVirtualFile(umdIsoFile, SectorBlockMode, iso);
                }
            }
            catch (IOException e)
            {
                Console.WriteLine("UmdIsoVirtualFile.duplicate", e);
            }

            return(duplicate);
        }
Пример #2
0
 public UmdIsoVirtualFile(UmdIsoFile file, bool sectorBlockMode, UmdIsoReader iso) : base(file)
 {
     this.file            = file;
     this.sectorBlockMode = sectorBlockMode;
     this.iso             = iso;
 }
Пример #3
0
 public UmdIsoVirtualFile(UmdIsoFile file) : base(file)
 {
     this.file            = file;
     this.sectorBlockMode = false;
     this.iso             = file.UmdIsoReader;
 }
Пример #4
0
        public override int ioGetstat(string fileName, SceIoStat stat)
        {
            int  mode        = 4;     // 4 = readable
            int  attr        = 0;
            long size        = 0;
            long timestamp   = 0;
            int  startSector = 0;

            try
            {
                // Check for files first.
                UmdIsoFile file = iso.getFile(fileName);
                attr       |= 0x20;           // Is file
                size        = file.Length();
                timestamp   = file.Timestamp.Ticks;
                startSector = file.StartSector;
            }
            catch (FileNotFoundException)
            {
                // If file wasn't found, try looking for a directory.
                try
                {
                    if (iso.isDirectory(fileName))
                    {
                        attr |= 0x10;                      // Is directory
                        mode |= 1;                         // 1 = executable
                    }
                }
                catch (FileNotFoundException)
                {
                    Console.WriteLine(string.Format("ioGetstat - '{0}' umd file/dir not found", fileName));
                    return(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND);
                }
                catch (IOException e)
                {
                    Console.WriteLine("ioGetstat", e);
                    return(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND);
                }
            }
            catch (IOException e)
            {
                Console.WriteLine("ioGetstat", e);
                return(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND);
            }

            // Octal extend into user and group
            mode  = mode + (mode << 3) + (mode << 6);
            mode |= attr << 8;

            ScePspDateTime ctime = ScePspDateTime.fromUnixTime(timestamp);
            ScePspDateTime atime = ScePspDateTime.fromUnixTime(0);
            ScePspDateTime mtime = ScePspDateTime.fromUnixTime(timestamp);

            stat.init(mode, attr, size, ctime, atime, mtime);

            if (startSector > 0)
            {
                stat.StartSector = startSector;
            }

            return(0);
        }