<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/DiscIO/NANDContentLoader.cpp, branch master</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>Remove NANDContentManager</title>
<updated>2017-10-24T09:41:54+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-10-01T16:48:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=346ca009f955bdb11a528732ad8ac01074d07d63'/>
<id>346ca009f955bdb11a528732ad8ac01074d07d63</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>FileUtil: Add a class for Exists/IsDirectory/GetSize</title>
<updated>2017-06-29T17:07:29+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2017-06-29T09:20:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=5ca3aee00ac3ac1a906de68c216907a7b41825fe'/>
<id>5ca3aee00ac3ac1a906de68c216907a7b41825fe</id>
<content type='text'>
Some code was calling more than one of these functions in a row
(in particular, FileUtil.cpp itself did it a lot...), which is
a waste since it's possible to call stat a single time and then
read all three values from the stat struct. This commit adds a
File::FileInfo class that calls stat once on construction and
then lets Exists/IsDirectory/GetSize be executed very quickly.

The performance improvement mostly matters for functions that
can be handling a lot of files, such as File::ScanDirectoryTree.

I've also done some cleanup in code that uses these functions.
For instance, some code had checks like !Exists() || !IsDirectory(),
which is functionally equivalent to !IsDirectory(), and some
code was using File::GetSize even though there was an IOFile
object that the code could call GetSize on.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Some code was calling more than one of these functions in a row
(in particular, FileUtil.cpp itself did it a lot...), which is
a waste since it's possible to call stat a single time and then
read all three values from the stat struct. This commit adds a
File::FileInfo class that calls stat once on construction and
then lets Exists/IsDirectory/GetSize be executed very quickly.

The performance improvement mostly matters for functions that
can be handling a lot of files, such as File::ScanDirectoryTree.

I've also done some cleanup in code that uses these functions.
For instance, some code had checks like !Exists() || !IsDirectory(),
which is functionally equivalent to !IsDirectory(), and some
code was using File::GetSize even though there was an IOFile
object that the code could call GetSize on.
</pre>
</div>
</content>
</entry>
<entry>
<title>IOS: Use a std::array for the title key instead of vector</title>
<updated>2017-06-26T22:01:20+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-06-26T21:38:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=6d821de2b9803e2a4993ae4e6b38a4b8126a61fa'/>
<id>6d821de2b9803e2a4993ae4e6b38a4b8126a61fa</id>
<content type='text'>
The title key is always 16 bytes, so it doesn't make sense to make it
a std::vector.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The title key is always 16 bytes, so it doesn't make sense to make it
a std::vector.
</pre>
</div>
</content>
</entry>
<entry>
<title>Move IOFile to a separate file</title>
<updated>2017-06-15T19:33:50+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2017-01-15T20:46:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=f09ceaa735080b8cde5f9102e7f061530d9b474e'/>
<id>f09ceaa735080b8cde5f9102e7f061530d9b474e</id>
<content type='text'>
Reduces the number of files that need to be recompiled
when making changes to FileUtil.h.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Reduces the number of files that need to be recompiled
when making changes to FileUtil.h.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Remove C/I/S prefixes from class names</title>
<updated>2017-06-06T10:31:59+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2017-06-06T09:49:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=b2af07a7b70c7c22d2c7b180d5846136d1fa1f77'/>
<id>b2af07a7b70c7c22d2c7b180d5846136d1fa1f77</id>
<content type='text'>
These prefixes were inconsistent with the rest of Dolphin.

I'm also renaming VolumeWiiCrypted to VolumeWii because of 1113b13.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
These prefixes were inconsistent with the rest of Dolphin.

I'm also renaming VolumeWiiCrypted to VolumeWii because of 1113b13.
</pre>
</div>
</content>
</entry>
<entry>
<title>IOS/ES: Move ImportTicket write function</title>
<updated>2017-06-03T15:43:16+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-06-03T15:43:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=9d52ab5144655950a152f09a179da1ae8bb4c4e5'/>
<id>9d52ab5144655950a152f09a179da1ae8bb4c4e5</id>
<content type='text'>
This commit moves the write function to where it should be (IOS),
especially when ES::ImportTicket() is the only place to use it.

Prevents misusing the ticket import function, and removes one unsafe
direct write to the NAND that does not go through IOS.

This also fixes the destination path: the session root is the one which
should be used for determining the ticket path, not the configured one.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This commit moves the write function to where it should be (IOS),
especially when ES::ImportTicket() is the only place to use it.

Prevents misusing the ticket import function, and removes one unsafe
direct write to the NAND that does not go through IOS.

This also fixes the destination path: the session root is the one which
should be used for determining the ticket path, not the configured one.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Fix the wrong NAND root being used</title>
<updated>2017-06-03T10:36:24+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-05-26T19:29:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=62d08e2d172a072d4547f26a6b2740658054fc93'/>
<id>62d08e2d172a072d4547f26a6b2740658054fc93</id>
<content type='text'>
The whole NANDContentLoader stuff is truly awful and will be removed
as soon as possible.

For now, this fixes a bug that was exposed by std::optional::operator*.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The whole NANDContentLoader stuff is truly awful and will be removed
as soon as possible.

For now, this fixes a bug that was exposed by std::optional::operator*.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use std::optional for ESFormats/SharedContentMap</title>
<updated>2017-06-03T10:36:24+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-05-26T17:18:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=545006f6665407a5dc2cdebddcbb9e4a668a50ff'/>
<id>545006f6665407a5dc2cdebddcbb9e4a668a50ff</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Reuse the IOS code for WAD installation</title>
<updated>2017-05-14T13:30:42+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-05-13T22:15:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=c8bffb01531addda9f345c30d614500650ca82a4'/>
<id>c8bffb01531addda9f345c30d614500650ca82a4</id>
<content type='text'>
* Less code and logic duplication.

* Fixes a bug with the data dir not being created, steps being done in
  the wrong order.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Less code and logic duplication.

* Fixes a bug with the data dir not being created, steps being done in
  the wrong order.
</pre>
</div>
</content>
</entry>
<entry>
<title>IOS/ES: Implement DeleteTitleContent properly</title>
<updated>2017-05-12T22:34:58+00:00</updated>
<author>
<name>Léo Lam</name>
<email>leo@innovatetechnologi.es</email>
</author>
<published>2017-05-07T14:43:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=bacf52384ffcd83c2a8856ac4eabe63c0474d244'/>
<id>bacf52384ffcd83c2a8856ac4eabe63c0474d244</id>
<content type='text'>
Just like DeleteTitle, Using CNANDContentManager is overkill,
inefficient and useless. And it results in a few failures in
situations where a delete should just always work.

But here it gets bonus points, because it manages to actually use
the TMD for deleting contents, when IOS does none of that and just
deletes files ending with .app in the title content directory. :)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Just like DeleteTitle, Using CNANDContentManager is overkill,
inefficient and useless. And it results in a few failures in
situations where a delete should just always work.

But here it gets bonus points, because it manages to actually use
the TMD for deleting contents, when IOS does none of that and just
deletes files ending with .app in the title content directory. :)
</pre>
</div>
</content>
</entry>
</feed>
