Syscall BSD#220
svc · unix #220
getattrlist
Lit en un seul appel système un ensemble sélectionné d'attributs de fichier via un attrlist compact (spécifique macOS).
Prototype
int getattrlist(const char *path, struct attrlist *alist, void *attributeBuffer, size_t bufferSize, u_long options);Retour: int
Arguments
| Name | Type | Dir | Description |
|---|---|---|---|
| path | const char | - | |
| alist | struct attrlist | - | |
| attributeBuffer | void | - | |
| bufferSize | size_t | - | |
| options | u_long | - |
Historique des versions
| XNU tag | macOS | # |
|---|---|---|
| xnu-1456.1.26 | macOS 10.6 Snow Leopard | 220 |
| xnu-1486.2.11 | — | 220 |
| xnu-1504.15.3 | — | 220 |
| xnu-1504.3.12 | — | 220 |
| xnu-1504.7.4 | — | 220 |
| xnu-1504.9.17 | — | 220 |
| xnu-1504.9.26 | — | 220 |
| xnu-1504.9.37 | — | 220 |
Exemples
C — read common attributes
struct attrlist al = {0};
al.bitmapcount = ATTR_BIT_MAP_COUNT;
al.commonattr = ATTR_CMN_NAME | ATTR_CMN_MODTIME;
char buf[1024];
getattrlist(path, &al, buf, sizeof buf, 0);Notes
Bien plus efficace que plusieurs appels stat/xattr lorsque de nombreux attributs sont nécessaires. Supporte les groupes common, volume, dir, file et forkattr. Beaucoup d'attributs spécifiques APFS (statut de clone, état scellé, détection « dataless ») ne sont accessibles que via cette API.
Détection
syscall::getattrlist:entry en DTrace; la struct attrlist se décode depuis arg1.
API associées
fgetattrlistsetattrlistgetattrlistatgetattrlistbulkstat