aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/Utilities/StringUtils.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/Utilities/StringUtils.cs')
-rw-r--r--Ryujinx.HLE/Utilities/StringUtils.cs27
1 files changed, 26 insertions, 1 deletions
diff --git a/Ryujinx.HLE/Utilities/StringUtils.cs b/Ryujinx.HLE/Utilities/StringUtils.cs
index e8d6550a..a10273ee 100644
--- a/Ryujinx.HLE/Utilities/StringUtils.cs
+++ b/Ryujinx.HLE/Utilities/StringUtils.cs
@@ -1,5 +1,7 @@
-using System;
+using Ryujinx.HLE.HOS;
+using System;
using System.Globalization;
+using System.IO;
using System.Linq;
using System.Text;
@@ -47,5 +49,28 @@ namespace Ryujinx.HLE.Utilities
return Output;
}
+
+ public static string ReadUtf8String(ServiceCtx Context, int Index = 0)
+ {
+ long Position = Context.Request.PtrBuff[Index].Position;
+ long Size = Context.Request.PtrBuff[Index].Size;
+
+ using (MemoryStream MS = new MemoryStream())
+ {
+ while (Size-- > 0)
+ {
+ byte Value = Context.Memory.ReadByte(Position++);
+
+ if (Value == 0)
+ {
+ break;
+ }
+
+ MS.WriteByte(Value);
+ }
+
+ return Encoding.UTF8.GetString(MS.ToArray());
+ }
+ }
}
}