| 9 | u8 __CARDPermMask = 28; |
| 10 | |
| 11 | s32 CARDSetAttributesAsync(s32 channel, s32 cardFile, u8 permissions, CARDCallback callback) |
| 12 | { |
| 13 | CARDDir dir; |
| 14 | s32 res; |
| 15 | if (permissions & ~__CARDPermMask) |
| 16 | { |
| 17 | return CARD_RESULT_NOPERM; |
| 18 | } |
| 19 | |
| 20 | res = __CARDGetStatusEx(channel, cardFile, &dir); |
| 21 | if (res < 0) |
| 22 | { |
| 23 | return res; |
| 24 | } |
| 25 | |
| 26 | if (((dir.permission & 0x20u) && !(permissions & 0x20u)) || |
| 27 | ((dir.permission & 0x40u) && !(permissions & 0x40u))) |
| 28 | { |
| 29 | return CARD_RESULT_NOPERM; |
| 30 | } |
| 31 | |
| 32 | if (((permissions & 0x20u) && (permissions & 0x40u)) || |
| 33 | ((permissions & 0x20u) && (dir.permission & 0x40u)) || |
| 34 | ((permissions & 0x40u) && (dir.permission & 0x20u))) |
| 35 | { |
| 36 | return CARD_RESULT_NOPERM; |
| 37 | } |
| 38 | |
| 39 | dir.permission = permissions; |
| 40 | return __CARDSetStatusExAsync(channel, cardFile, &dir, callback); |
| 41 | } |
| 42 | |
| 43 | s32 CARDSetAttributes(s32 chan, s32 fileNo, u8 attr) |
| 44 | { |
no test coverage detected