- Fixed a bunch of compilation errors and warnings
- Added frameworks for retrieving specific filesystem information for a target platform
This commit is contained in:
45
PLANNING.md
45
PLANNING.md
@@ -63,7 +63,7 @@ This however can be achieved using events at different stages of those engines t
|
||||
- 2D Physics (`physics2d`)
|
||||
- 2D & 3D Audio (`audio`)
|
||||
|
||||
### Security Ramblings:
|
||||
### File Security Ramblings:
|
||||
|
||||
Windows is starting to piss me off, so I am considering dropping official support for MSVC. MinGW and Cygwin
|
||||
will still work for compiling on Windows if this ends up being the case. The reason for this is that there are
|
||||
@@ -85,7 +85,7 @@ This issue can be solved using `fopen("<file>", "w+")`, however this specific be
|
||||
learning how to work with file systems. We can attempt to abstract this away with another wrapper, or simply write
|
||||
the file structure to handle this behaviour properly. The downside to this method overall is that it will break
|
||||
common conventions of how humans interpret filesystems and the related control flow logic. What we can do is force the
|
||||
`'+'` flag to always be present for write operations, and raise an error, when desired, if the file is not empty. This
|
||||
`'+'` flag to always be present for write operations, and raise an error when desired, if the file is not empty. This
|
||||
unfortunately would have the downside of being unable to open a file as write only.
|
||||
|
||||
Using `"wx"` in this instance would not be sufficient since it would require a second call to fopen, which would
|
||||
@@ -99,6 +99,38 @@ debugging it, and testing for vulnerabilities. As stated above, this implementat
|
||||
so we would not have to entirely drop support for Windows. However, MSVC is the most widely used compiler for Windows
|
||||
applications and is native to Visual Studio and VSCode.
|
||||
|
||||
What is probably the best solution is to wrap everything in a file interface that does not allow the direct setting of
|
||||
these flags. Then we set our own usage type for the file that informs which flags should be used.
|
||||
|
||||
We need to be able to handle the following types of files:
|
||||
- Assets, such as scenes, audio, textures, metadata, meshes, etc.
|
||||
- Save files, setting files, etc.
|
||||
|
||||
One of the nice things about the assets is that they are guaranteed to be read-only once an application is installed
|
||||
on the computer of the end-user. Therefore, this issue only arises with save files and custom file formats.
|
||||
|
||||
When the editor is run, all these files should be opened in read/write mode.
|
||||
|
||||
Naming conventions should exist for the types of files and how they are read. For example, in release mode,
|
||||
most assets should be opened once, and then closed immediately. However, this does not make sense for formats
|
||||
that are continuous and too large to be kept around in memory, such as video formats.
|
||||
|
||||
Perhaps the following conventions:
|
||||
- Static Asset
|
||||
- Stream Asset
|
||||
- Resource
|
||||
|
||||
We can turn this into an object-oriented approach by having different formats inherit these base types. We may still
|
||||
have a base file type that wraps C functionality, but discourage developers from using the interface.
|
||||
|
||||
We could also declare the file interface extern so that only internal files know the implementation. However, I would
|
||||
not be satisfied by doing this since it would prevent developers from implementing custom file type implementations.
|
||||
|
||||
Conserving memory is not really an issue here as long as we are smart about our implementation. Files should only be
|
||||
open when necessary and be closed when it is no longer necessary to have them open.
|
||||
|
||||
When built in release mode, we also need to pack static assets into some sort of archive that is mountable to reduce
|
||||
disk space consumption of a program. I am considering encryption for archives, but there likely is not much of a point.
|
||||
|
||||
|
||||
|
||||
@@ -186,6 +218,10 @@ fennec should be able to use Doxygen and LaTeX externally. Consider including bi
|
||||
- Spreadsheets & Tables
|
||||
- ODS
|
||||
- CSV
|
||||
- Audio Formats
|
||||
- MP3
|
||||
- WAV
|
||||
- AAC
|
||||
- Graphics Formats
|
||||
- Textures
|
||||
- BMP
|
||||
@@ -200,6 +236,11 @@ fennec should be able to use Doxygen and LaTeX externally. Consider including bi
|
||||
- Models
|
||||
- FBX
|
||||
- Wavefront OBJ
|
||||
- Video Formats
|
||||
- MP4
|
||||
- AVI
|
||||
- MPG
|
||||
- MOV
|
||||
|
||||
**TODO LATER**
|
||||
* Compilation (`fproc/code`)
|
||||
|
||||
Reference in New Issue
Block a user