GodMode9/source/fs/fsperm.h
2017-02-16 02:26:13 +01:00

45 lines
1.8 KiB
C

#pragma once
#include "common.h"
// permission types
#define PERM_SDCARD (1<<0)
#define PERM_IMAGE (1<<1)
#define PERM_RAMDRIVE (1<<2)
#define PERM_EMU_LVL0 (1<<3)
#define PERM_EMU_LVL1 (PERM_EMU_LVL0|(1<<4))
#define PERM_SYS_LVL0 (1<<5)
#define PERM_SYS_LVL1 (PERM_SYS_LVL0|(1<<6))
#define PERM_SYS_LVL2 (PERM_SYS_LVL1|(1<<7))
#define PERM_SYS_LVL3 (PERM_SYS_LVL2|(1<<8))
#define PERM_SDDATA (PERM_SDCARD|(1<<9))
#define PERM_MEMORY (1<<10)
#define PERM_GAME (1<<11) // can't be enabled, placeholder
#define PERM_XORPAD (1<<12) // can't be enabled, placeholder
#define PERM_CART (1<<13) // can't be enabled, placeholder
#define PERM_BASE (PERM_SDCARD | PERM_IMAGE | PERM_RAMDRIVE | PERM_EMU_LVL0 | PERM_SYS_LVL0)
#ifndef SAFEMODE
#define PERM_ALL (PERM_BASE | PERM_SDDATA | PERM_EMU_LVL1 | PERM_SYS_LVL2 | PERM_MEMORY)
#else
#define PERM_ALL (PERM_BASE | PERM_SDDATA | PERM_EMU_LVL1 | PERM_SYS_LVL1)
#endif
// permission levels / colors
#define PERM_BLUE (GetWritePermissions()&PERM_MEMORY)
#define PERM_RED (GetWritePermissions()&(PERM_SYS_LVL3&~PERM_SYS_LVL2))
#define PERM_ORANGE (GetWritePermissions()&(PERM_SYS_LVL2&~PERM_SYS_LVL1))
#define PERM_YELLOW (GetWritePermissions()&((PERM_SYS_LVL1&~PERM_SYS_LVL0)|(PERM_EMU_LVL1&~PERM_EMU_LVL0)|(PERM_SDDATA&~PERM_SDCARD)))
#define PERM_GREEN (GetWritePermissions()&(PERM_SDCARD|PERM_IMAGE|PERM_RAMDRIVE|PERM_EMU_LVL0|PERM_SYS_LVL0))
/** Check if writing to this path is allowed **/
bool CheckWritePermissions(const char* path);
/** Same as above, but for all containing objects **/
bool CheckDirWritePermissions(const char* path);
/** Set new write permissions */
bool SetWritePermissions(u32 perm, bool add_perm);
/** Get write permissions */
u32 GetWritePermissions();