{"id":21074061,"url":"https://github.com/fgenesis/ttvfs","last_synced_at":"2025-05-16T06:31:04.585Z","repository":{"id":1547502,"uuid":"1885456","full_name":"fgenesis/ttvfs","owner":"fgenesis","description":"[old/obsolete] Tiny tree virtual file system - a small C++ library for app-internal VFS support. Like PhysicsFS.","archived":false,"fork":false,"pushed_at":"2017-01-14T17:39:29.000Z","size":276,"stargazers_count":126,"open_issues_count":6,"forks_count":26,"subscribers_count":24,"default_branch":"master","last_synced_at":"2023-11-07T20:43:29.581Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fgenesis.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2011-06-12T18:13:14.000Z","updated_at":"2023-11-01T13:52:36.000Z","dependencies_parsed_at":"2022-07-12T14:55:42.640Z","dependency_job_id":null,"html_url":"https://github.com/fgenesis/ttvfs","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgenesis%2Fttvfs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgenesis%2Fttvfs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgenesis%2Fttvfs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fgenesis%2Fttvfs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fgenesis","download_url":"https://codeload.github.com/fgenesis/ttvfs/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225411520,"owners_count":17470245,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T19:14:20.992Z","updated_at":"2024-11-19T19:14:21.659Z","avatar_url":"https://github.com/fgenesis.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nttvfs -- tiny tree virtual file system\n\n----------[ TL;DR ]------------\n** Modify VFSDefines.h to your needs, or set the defines in your build system.\n** See the examples for reference. Documentation is in the header files.\n** #include \u003cttvfs.h\u003e\n** ???\n** Profit\n** You are encouraged to link this library statically.\n** Supported and tested: Windows, Linux, MacOSX, FreeBSD, Haiku (maybe), POSIX.\n\n----------[ Intro ]------------\nttvfs is a small C++ library designed to provide virtual file system support\ninside of an application.\n\nttvfs provides some commonly used platform-dependent operations such as\nenumerating files and directories, querying the size of files efficiently,\nobtaining safe-to-write per-user directories, support for wildcards,\nignore case on otherwise case-sensitive file systems, and more.\n\nttvfs organizes files and directories in a tree structure.\nBy mounting, multiple directories can be mirrored inside one,\nmaking runtime-replacing older files with updated ones trivial.\n\nWith the built-in zip extension, zip files can be accessed like directories:\n    path/to/data.zip/file.txt.\n\nOther archives are not supported out of the box, but it is easy to add\nan extension that provides support for other archive types.\nBy adding custom file loaders, it is possible to load files from anywhere,\nnot only the local file system.\n\nThis library is licensed under the MIT license (see below).\nIf you use this code and like it, feel free to send me an email to\ngooglemail.com with false.genesis@ prepended.\n- that'd make me happy.\nPatches/improvements are welcome!\n\n----------[ Howto ]------------\n\nBuild project/makefiles with CMake. It has sort of sane defaults so it should\nbuild out of the box.\nSome compile flags can be set with CMake, or simply by editing VFSDefines.h.\n\n$ mkdir build\n$ cd build\n$ cmake ..\n$ make\n\nttvfs core has no dependencies except the STL containers.\nSee VFSFile.h, VFSDir.h, VFSLoader.h for infos about how to write your own\nclasses that add functionality.\nThe zip extension uses miniz (https://code.google.com/p/miniz/) and should be\na good reference how to write your own extension.\nTo add ttvfs to your project, just copy the ttvfs/ subdir,\nwhich is the best way in case you are using CMake; if not, copy all files\nand add them to your build system of choice, or whatever.\n\nNote that ttvfs is not thread safe - adding this would bloat it too much.\nYou probably have your own threading library if you care about thread safety.\nThe rules are simple:\n* There is no global state, but be careful with ttvfs::Root objects.\n* Do not access a ttvfs::Root object from multiple threads at the same time,\n  even for reading. The tree is possibly modified by read operations.\n* Same for individual ttvfs directory and file objects.\n\nThere is also no explicit support for UTF8. This may be a problem if\ncase insensitivity is enabled and file names are compared.\nThis can be avoided by either leaving case insensitivity disabled,\nor by making sure that all relevant files have ASCII-only names.\n\n\n------- [ Extensions ]--------\n\n* liblvpa: https://github.com/fgenesis/liblvpa\n-\u003e contains bindings that add support for reading/writing LVPA files\n   (a container file format optimized for games)\n\n\nMade an extension? Let me know, send a mail!\n\n---------[ License ]----------\n\nMIT License\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n\n-------------------------------\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffgenesis%2Fttvfs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffgenesis%2Fttvfs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffgenesis%2Fttvfs/lists"}