[gnome-games] mega-drive: Use StringInputStream in MegaDriveHeader



commit 640b6a23bf59cef989d1778339f73163f1bfee41
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Thu Jul 28 17:13:55 2016 +0200

    mega-drive: Use StringInputStream in MegaDriveHeader
    
    This makes the code easier to read and avoid duplication.

 plugins/mega-drive/src/mega-drive-header.vala |   46 ++++--------------------
 1 files changed, 8 insertions(+), 38 deletions(-)
---
diff --git a/plugins/mega-drive/src/mega-drive-header.vala b/plugins/mega-drive/src/mega-drive-header.vala
index 66828c6..ba2b52f 100644
--- a/plugins/mega-drive/src/mega-drive-header.vala
+++ b/plugins/mega-drive/src/mega-drive-header.vala
@@ -19,56 +19,27 @@ private class Games.MegaDriveHeader : Object {
                        if (_domestic_name != null)
                                return _domestic_name;
 
+                       var stream = new StringInputStream (file);
                        try {
-                               stream.seek (DOMESTIC_NAME_OFFSET, SeekType.SET);
+                               _domestic_name = stream.read_string_for_size (DOMESTIC_NAME_OFFSET, 
NAME_SIZE);
                        }
                        catch (Error e) {
                                _domestic_name = "";
-
-                               return _domestic_name;
-                       }
-
-                       var buffer = new uint8[NAME_SIZE];
-                       try {
-                               stream.read (buffer);
-                       }
-                       catch (Error e) {
-                               _domestic_name = "";
-
-                               return _domestic_name;
                        }
 
-                       _domestic_name = (string) buffer;
-
                        return _domestic_name;
                }
        }
 
-       private FileInputStream stream;
-
-       public MegaDriveHeader (File file) throws Error {
-               stream = file.read ();
+       private File file;
 
-               check_validity ();
+       public MegaDriveHeader (File file) {
+               this.file = file;
        }
 
-       public void check_validity () throws MegaDriveError {
-               try {
-                       stream.seek (MAGIC_OFFSET, SeekType.SET);
-               }
-               catch (Error e) {
-                       throw new MegaDriveError.INVALID_SIZE (_("Invalid Mega Drive/Genesis/32X header size: 
%s"), e.message);
-               }
-
-               var buffer = new uint8[MAGIC_SIZE];
-               try {
-                       stream.read (buffer);
-               }
-               catch (Error e) {
-                       throw new MegaDriveError.INVALID_SIZE (e.message);
-               }
-
-               var magic = (string) buffer;
+       public void check_validity () throws Error {
+               var stream = new StringInputStream (file);
+               var magic = stream.read_string_for_size (MAGIC_OFFSET, MAGIC_SIZE);
                magic = magic.chomp ();
                if (!(magic in MAGIC_VALUES))
                        throw new MegaDriveError.INVALID_HEADER (_("The file doesn't have a Mega 
Drive/Genesis/32X header."));
@@ -76,6 +47,5 @@ private class Games.MegaDriveHeader : Object {
 }
 
 errordomain Games.MegaDriveError {
-       INVALID_SIZE,
        INVALID_HEADER,
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]