1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
//! Filesystem helper functions. use crate::c_char; // makes rustdoc link properly! #[allow(unused)] use crate::stdinc::*; extern "C" { /// Get the path where the application resides. /// /// This is the directory where the application was run from, which is /// probably the installation directory, and may or may not be the process's /// current working directory. /// /// This returns an absolute path in UTF-8 encoding, and is guaranteed to end /// with a path separator ('\\' on Windows, '/' most other places). /// /// **The pointer returned by this function is owned by you.** Please call /// [`SDL_free`] on the pointer when you are done with it, or it will be a /// memory leak. This is not necessarily a fast call, though, so you should /// call this once near startup and save the string if you need it. /// /// Some platforms can't determine the application's path, and on other /// platforms, this might be meaningless. In such cases, this function will /// return NULL. /// /// **Returns:** String of base dir in UTF-8 encoding, or NULL on error. /// /// See Also: [`SDL_GetPrefPath`] pub fn SDL_GetBasePath() -> *mut c_char; /// Get the user-and-app-specific path where files can be written. /// /// This is meant to be where users can write personal files (preferences and /// save games, etc) that are specific to your application. This directory is /// unique per user, per application. /// /// This function will decide the appropriate location in the native /// filesystem, create the directory if necessary, and return a string of the /// absolute path to the directory in UTF-8 encoding. /// /// * On Windows, the string might look like: /// "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\" /// * On Linux, the string might look like: "/home/bob/.local/share/My Program /// Name/" /// * On Mac OS X, the string might look like: "/Users/bob/Library/Application /// Support/My Program Name/" /// * (etc.) /// /// You specify the name of your organization (if it's not a real /// organization, your name or an Internet domain you own might do) and the /// name of your application. These should be untranslated proper names. /// /// Both the org and app strings may become part of a directory name, so /// please follow these rules: /// /// * Try to use the same org string (including case-sensitivity) for all your /// applications that use this function. /// * Always use a unique app string for each one, and make sure it never /// changes for an app once you've decided on it. /// * Unicode characters are legal, as long as it's UTF-8 encoded, but... /// * ...only use letters, numbers, and spaces. Avoid punctuation like "Game /// Name 2: Bad Guy's Revenge!", just "Game Name 2" is sufficient. /// /// This returns an absolute path in UTF-8 encoding, and is guaranteed to end /// with a path separator ('\\' on Windows, '/' most other places). /// /// **The pointer returned by this function is owned by you.** Please call /// [`SDL_free`] on the pointer when you are done with it, or it will be a /// memory leak. This is not necessarily a fast call, though, so you should /// call this once near startup and save the string if you need it. /// /// You should assume the path returned by this function is the only safe /// place to write files (and that [`SDL_GetBasePath`], while it might be /// writable, or even the parent of the returned path, is not where you should /// be writing things). /// /// Some platforms can't determine the pref path, and on other platforms, this /// might be meaningless. In such cases, this function will return NULL. /// /// * `org` The name of your organization. /// * `app` The name of your application. /// /// **Returns:** UTF-8 string of user dir in platform-dependent notation. NULL /// if there's a problem (creating directory failed, etc). /// /// See Also: [`SDL_GetBasePath`] pub fn SDL_GetPrefPath(org: *const c_char, app: *const c_char) -> *mut c_char; }