public unsafe void _IoGetstat(IsoNode IsoNode, SceIoStat *Stat) { //IsoNode.DirectoryRecord.Date Stat->Mode = 0; Stat->Mode |= SceMode.UserCanRead | SceMode.UserCanWrite | SceMode.UserCanExecute; Stat->Mode |= SceMode.GroupCanRead | SceMode.GroupCanWrite | SceMode.GroupCanExecute; Stat->Mode |= SceMode.OtherCanRead | SceMode.OtherCanWrite | SceMode.OtherCanExecute; if (IsoNode.IsDirectory) { Stat->Mode = SceMode.Directory; Stat->Attributes = IOFileModes.Directory; } else { Stat->Mode = SceMode.File; Stat->Attributes = IOFileModes.File | IOFileModes.CanRead | IOFileModes.CanWrite | IOFileModes.CanExecute; } Stat->Size = IsoNode.DirectoryRecord.Size; Stat->TimeCreation = ScePspDateTime.FromDateTime(IsoNode.DirectoryRecord.Date); Stat->TimeLastAccess = ScePspDateTime.FromDateTime(IsoNode.DirectoryRecord.Date); Stat->TimeLastModification = ScePspDateTime.FromDateTime(IsoNode.DirectoryRecord.Date); Stat->DeviceDependentData0 = IsoNode.DirectoryRecord.Extent; //Stat[0].DeviceDependentData //throw new NotImplementedException(); }
public int sceRtcGetCurrentClock(out ScePspDateTime DateTime, int TimeZone) { PspRtc.Update(); var CurrentDateTime = PspRtc.CurrentDateTime; try { CurrentDateTime += TimeSpan.FromMinutes(TimeZone); } catch { } DateTime = new ScePspDateTime() { Year = (ushort)CurrentDateTime.Year, Month = (ushort)CurrentDateTime.Month, Day = (ushort)CurrentDateTime.Day, Hour = (ushort)CurrentDateTime.Hour, Minute = (ushort)CurrentDateTime.Minute, Second = (ushort)CurrentDateTime.Second, Microsecond = (uint)(CurrentDateTime.GetTotalMicroseconds() % 1000000L), }; return(0); }
public static unsafe HleIoDirent ConvertFileSystemInfoToHleIoDirent(FileSystemInfo FileSystemInfo) { var HleIoDirent = default(HleIoDirent); var FileInfo = (FileSystemInfo as FileInfo); var DirectoryInfo = (FileSystemInfo as DirectoryInfo); { if (DirectoryInfo != null) { HleIoDirent.Stat.Size = 4096; HleIoDirent.Stat.Mode = (SceMode)4605; HleIoDirent.Stat.Attributes = IOFileModes.Directory; } else { HleIoDirent.Stat.Size = FileInfo.Length; HleIoDirent.Stat.Mode = (SceMode)8628; HleIoDirent.Stat.Attributes = IOFileModes.File; } HleIoDirent.Name = FileSystemInfo.Name.ToLower(); HleIoDirent.Stat.TimeCreation = ScePspDateTime.FromDateTime(FileSystemInfo.CreationTime); HleIoDirent.Stat.TimeLastAccess = ScePspDateTime.FromDateTime(FileSystemInfo.LastAccessTime); HleIoDirent.Stat.TimeLastModification = ScePspDateTime.FromDateTime(FileSystemInfo.LastWriteTime); HleIoDirent.Stat.DeviceDependentData0 = 10; } return(HleIoDirent); }
private void buildDotDirectoryEntry(sbyte[] directoryData, int offset, FatFileInfo fileInfo, string dotName, ScePspDateTime alternateLastModified) { storeSectorString(directoryData, offset + 0, dotName, 8 + 3); // File attributes: directory storeSectorInt8(directoryData, offset + 11, 0x10); // Has extended attributes? storeSectorInt8(directoryData, offset + 12, 0); ScePspDateTime lastModified = fileInfo.LastModified; if (lastModified == null) { // The root directory has no lastModified date/time, // rather use the date/time of the sub-directory. lastModified = alternateLastModified; } storeSectorInt8(directoryData, offset + 13, 0); // Milliseconds, always set to 0 by the PSP int createTime = lastModified.hour << 11; createTime |= lastModified.minute << 5; createTime |= lastModified.second >> 1; storeSectorInt16(directoryData, offset + 14, createTime); int createDate = (lastModified.year - 1980) << 9; createDate |= lastModified.month << 5; createDate |= lastModified.day; storeSectorInt16(directoryData, offset + 16, createDate); storeSectorInt16(directoryData, offset + 18, createDate); int[] clusters = fileInfo.Clusters; if (clusters != null) { storeSectorInt16(directoryData, offset + 20, (int)((uint)clusters[0] >> 16)); } else { storeSectorInt16(directoryData, offset + 20, 0); // Empty file } storeSectorInt16(directoryData, offset + 22, createTime); storeSectorInt16(directoryData, offset + 24, createDate); if (clusters != null) { storeSectorInt16(directoryData, offset + 26, clusters[0] & 0xFFFF); } else { storeSectorInt16(directoryData, offset + 26, 0); // Empty file } // File size storeSectorInt32(directoryData, offset + 28, 0); }
public virtual int sceRtcSetWin32FileTime(TPointer dateAddr, long time) { ScePspDateTime dateTime = ScePspDateTime.fromFILETIMETime(time); dateTime.write(dateAddr); return(0); }
public virtual int sceRtcSetDosTime(TPointer dateAddr, int time) { ScePspDateTime dateTime = ScePspDateTime.fromMSDOSTime(time); dateTime.write(dateAddr); return(0); }
public virtual int sceRtcGetCurrentClockLocalTime(TPointer addr) { ScePspDateTime pspTime = new ScePspDateTime(); pspTime.write(addr); return(0); }
public virtual int sceRtcSetTime64_t(TPointer dateAddr, long time) { ScePspDateTime dateTime = ScePspDateTime.fromUnixTime(time); dateTime.write(dateAddr); return(0); }
public virtual void init(int mode, int attr, long size, ScePspDateTime ctime, ScePspDateTime atime, ScePspDateTime mtime) { this.mode = mode; this.attr = attr; this.size = size; this.ctime = ctime; this.atime = atime; this.mtime = mtime; }
public virtual int sceRtcSetTick(TPointer timeAddr, TPointer64 ticksAddr) { long ticks = ticksAddr.Value - rtcMagicOffset; ScePspDateTime time = ScePspDateTime.fromMicros(ticks); time.write(timeAddr); return(0); }
public FatFileInfo(string deviceName, string dirName, string fileName, bool directory, bool readOnly, ScePspDateTime lastModified, long fileSize) { this.deviceName = deviceName; this.dirName = dirName; this.fileName = fileName; this.directory = directory; this.readOnly = readOnly; this.lastModified = lastModified; this.fileSize = fileSize; }
public int sceRtcSetTick(ScePspDateTime *Date, ulong *Ticks) { try { *Date = ScePspDateTime.FromDateTime(new DateTime((long)(*Ticks * 10))); return(0); } catch (Exception Exception) { Console.Error.WriteLine(Exception); return(-1); } }
public int sceRtcGetTick(ref ScePspDateTime Date, out ulong Tick) { try { Tick = (ulong)Date.ToDateTime().GetTotalMicroseconds(); return(0); } catch (Exception) { //Console.Error.WriteLine("sceRtcGetTick.Date: " + *Date); //Console.Error.WriteLine(Exception); throw new SceKernelException(SceKernelErrors.ERROR_INVALID_VALUE); } }
protected internal override void read() { mode = read32(); attr = read32(); size = read64(); ctime = new ScePspDateTime(); atime = new ScePspDateTime(); mtime = new ScePspDateTime(); read(ctime); read(atime); read(mtime); read32Array(reserved); }
public virtual int sceRtcGetTime_t(ScePspDateTime dateTime, TPointer32 timeAddr) { DateTime cal = new DateTime(); cal = new DateTime(dateTime.year, dateTime.month - 1, dateTime.day, dateTime.hour, dateTime.minute, dateTime.second); int unixtime = (int)(cal.Ticks / 1000L); //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceRtcGetTime_t returning {0:D}", unixtime)); } timeAddr.setValue(unixtime); return(0); }
public virtual int sceRtcGetTime64_t(ScePspDateTime dateTime, TPointer64 timeAddr) { DateTime cal = new DateTime(); cal = new DateTime(dateTime.year, dateTime.month - 1, dateTime.day, dateTime.hour, dateTime.minute, dateTime.second); long unixtime = cal.Ticks / 1000L; //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceRtcGetTime64_t psptime={0} returning unixtime={1:D}", dateTime, unixtime)); } timeAddr.Value = unixtime; return(0); }
public virtual int sceRtcGetWin32FileTime(ScePspDateTime dateTime, TPointer64 timeAddr) { DateTime cal = new DateTime(); cal = new DateTime(dateTime.year, dateTime.month - 1, dateTime.day, dateTime.hour, dateTime.minute, dateTime.second); int filetimetime = (int)(cal.Ticks / 1000L); //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceRtcGetWin32FileTime returning {0:D}", filetimetime)); } timeAddr.Value = filetimetime; return(0); }
public virtual int sceRtcCheckValid(ScePspDateTime time) { DateTime cal = new GregorianCalendar(time.year, time.month - 1, time.day, time.hour, time.minute, time.second); int result = 0; if (time.year < 1582 || time.year > 3000) { // What are valid years? result = PSP_TIME_INVALID_YEAR; } else if (time.month < 1 || time.month > 12) { result = PSP_TIME_INVALID_MONTH; } else if (time.day < 1 || time.day > 31) { result = PSP_TIME_INVALID_DAY; } else if (time.hour < 0 || time.hour > 23) { result = PSP_TIME_INVALID_HOUR; } else if (time.minute < 0 || time.minute > 59) { result = PSP_TIME_INVALID_MINUTES; } else if (time.second < 0 || time.second > 59) { result = PSP_TIME_INVALID_SECONDS; } else if (time.microsecond < 0 || time.microsecond >= 1000000) { result = PSP_TIME_INVALID_MICROSECONDS; } else if (cal.Day != time.day) { // Check if this is a valid day of the month result = PSP_TIME_INVALID_DAY; } //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceRtcCheckValid time={0}, cal={1}, returning 0x{2:X8}", time, cal, result)); } return(result); }
//[HlePspNotImplemented] public int sceRtcGetCurrentClockLocalTime(out ScePspDateTime Time) { PspRtc.Update(); var CurrentDateTime = PspRtc.CurrentDateTime; Time = new ScePspDateTime() { Year = (ushort)CurrentDateTime.Year, Month = (ushort)CurrentDateTime.Month, Day = (ushort)CurrentDateTime.Day, Hour = (ushort)CurrentDateTime.Hour, Minute = (ushort)CurrentDateTime.Minute, Second = (ushort)CurrentDateTime.Second, Microsecond = (uint)(CurrentDateTime.Millisecond * 1000), }; return(0); }
public virtual int sceRtcGetTick(ScePspDateTime time, TPointer64 ticksAddr) { // use java library to convert a date to seconds, then multiply it by the tick resolution DateTime cal = new GregorianCalendar(time.year, time.month - 1, time.day, time.hour, time.minute, time.second); cal.set(DateTime.MILLISECOND, time.microsecond / 1000); cal.TimeZone = ScePspDateTime.GMT; long ticks = rtcMagicOffset + (cal.Ticks * 1000L) + (time.microsecond % 1000); ticksAddr.Value = ticks; //if (log.DebugEnabled) { Console.WriteLine(string.Format("sceRtcGetTick returning {0:D}", ticks)); } return(0); }
public unsafe int IoGetstat(HleIoDrvFileArg HleIoDrvFileArg, string FileName, SceIoStat *Stat) { var RealFileName = GetFullNormalizedAndSanitizedPath(FileName); //Console.WriteLine(RealFileName); Stat->Attributes = IOFileModes.CanExecute | IOFileModes.CanRead | IOFileModes.CanWrite; Stat->Mode = 0; Stat->Mode = SceMode.UserCanExecute | SceMode.UserCanRead | SceMode.UserCanWrite; Stat->Mode = SceMode.GroupCanExecute | SceMode.GroupCanRead | SceMode.GroupCanWrite; Stat->Mode = SceMode.OtherCanExecute | SceMode.OtherCanRead | SceMode.OtherCanWrite; FileSystemInfo FileSystemInfo = null; if (File.Exists(RealFileName)) { var FileInfo = new FileInfo(RealFileName); FileSystemInfo = FileInfo; Stat->Size = FileInfo.Length; Stat->Mode |= SceMode.File; Stat->Attributes |= IOFileModes.File; } else if (Directory.Exists(RealFileName)) { var DirectoryInfo = new DirectoryInfo(RealFileName); FileSystemInfo = DirectoryInfo; Stat->Mode |= SceMode.Directory; Stat->Attributes |= IOFileModes.Directory; } else { throw(new FileNotFoundException("Can't find file '" + RealFileName + "'")); } Stat->TimeCreation = ScePspDateTime.FromDateTime(FileSystemInfo.CreationTimeUtc); Stat->TimeLastAccess = ScePspDateTime.FromDateTime(FileSystemInfo.LastAccessTimeUtc); Stat->TimeLastModification = ScePspDateTime.FromDateTime(FileSystemInfo.LastWriteTimeUtc); return(0); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in .NET: //ORIGINAL LINE: public void read(pspsharp.state.StateInputStream stream) throws java.io.IOException public virtual void read(StateInputStream stream) { stream.readVersion(STATE_VERSION); deviceName = stream.readString(); dirName = stream.readString(); fileName = stream.readString(); fileName83 = stream.readString(); directory = stream.readBoolean(); readOnly = stream.readBoolean(); int time = stream.readInt(); if (time == 0) { lastModified = null; } else { lastModified = ScePspDateTime.fromMSDOSTime(time); } fileSize = stream.readLong(); clusters = stream.readIntsWithLength(); fileData = stream.readBytesWithLength(); closeVirtualFile(); }
public override int ioGetstat(string fileName, SceIoStat stat) { File file = getFile(fileName); if (!file.exists()) { return(SceKernelErrors.ERROR_ERRNO_FILE_NOT_FOUND); } // Set attr (dir/file) and copy into mode int attr = 0; if (file.Directory) { attr |= 0x10; } if (file.File) { attr |= 0x20; } int mode = (file.canRead() ? 4 : 0) + (file.canWrite() ? 2 : 0) + (file.canExecute() ? 1 : 0); // Octal extend into user and group mode = mode + (mode << 3) + (mode << 6); mode |= attr << 8; // Java can't see file create/access time ScePspDateTime ctime = ScePspDateTime.fromUnixTime(file.lastModified()); ScePspDateTime atime = ScePspDateTime.fromUnixTime(0); ScePspDateTime mtime = ScePspDateTime.fromUnixTime(file.lastModified()); stat.init(mode, attr, file.Length(), ctime, atime, mtime); return(0); }
public int sceRtcSetTime_t(out ScePspDateTime date, uint time) { date = ScePspDateTime.FromDateTime(DateTimeRange.ConvertFromUnixTimestamp(time)); return(0); }
public int sceRtcGetTime_t(ref ScePspDateTime DateTime, out uint UnixTime) { UnixTime = (uint)DateTime.ToUnixTimestamp(); return(0); }
public int sceRtcGetTime64_t(ref ScePspDateTime DatePointer, ref long UnixTimePointer) { UnixTimePointer = DatePointer.ToUnixTimestamp(); return(0); }
public virtual int sceRtcGetDosTime_660(ScePspDateTime dateTime, TPointer32 timeAddr) { return(sceRtcGetDosTime(dateTime, timeAddr)); }
private sbyte[] addDirectoryEntry(sbyte[] directoryData, FatFileInfo fileInfo) { string fileName = fileInfo.FileName; string fileName83 = fileInfo.FileName83; string fileName8_3 = convertFileName83To8_3(fileName83); if (isLongFileName(fileName8_3, fileName)) { int checksum = getFileNameChecksum(fileName83); directoryData = addLongFileNameDirectoryEntries(directoryData, fileName, checksum); } int offset = directoryData.Length; directoryData = Utilities.extendArray(directoryData, directoryTableEntrySize); storeSectorString(directoryData, offset + 0, fileName83, 8 + 3); int fileAttributes = 0x20; // Archive attribute if (fileInfo.ReadOnly) { fileAttributes |= 0x01; // Read Only attribute } if (fileInfo.Directory) { fileAttributes |= 0x10; // Sub-directory attribute } storeSectorInt8(directoryData, offset + 11, fileAttributes); // Has extended attributes? storeSectorInt8(directoryData, offset + 12, 0); ScePspDateTime lastModified = fileInfo.LastModified; storeSectorInt8(directoryData, offset + 13, 0); // Milliseconds always set to 0 by the PSP int createTime = lastModified.hour << 11; createTime |= lastModified.minute << 5; createTime |= lastModified.second >> 1; storeSectorInt16(directoryData, offset + 14, createTime); int createDate = (lastModified.year - 1980) << 9; createDate |= lastModified.month << 5; createDate |= lastModified.day; storeSectorInt16(directoryData, offset + 16, createDate); storeSectorInt16(directoryData, offset + 18, createDate); int[] clusters = fileInfo.Clusters; if (clusters != null) { storeSectorInt16(directoryData, offset + 20, (int)((uint)clusters[0] >> 16)); } else { storeSectorInt16(directoryData, offset + 20, 0); // Empty file } storeSectorInt16(directoryData, offset + 22, createTime); storeSectorInt16(directoryData, offset + 24, createDate); if (clusters != null) { storeSectorInt16(directoryData, offset + 26, clusters[0] & 0xFFFF); } else { storeSectorInt16(directoryData, offset + 26, 0); // Empty file } int fileSize = (int)fileInfo.FileSize; if (fileInfo.Directory) { fileSize = 0; } storeSectorInt32(directoryData, offset + 28, fileSize); return(directoryData); }
public SceIoStat(int mode, int attr, long size, ScePspDateTime ctime, ScePspDateTime atime, ScePspDateTime mtime) { init(mode, attr, size, ctime, atime, mtime); }