zip_file_get_external_attributes |
ZIP : Demande les attributs externes de fichier |
|---|---|
| libzip | |
Syntaxe
| int zip_file_get_external_attributes(zip_t *archive, zip_uint64_t index, zip_flags_t flags, zip_uint8_t *opsys, zip_uint32_t *attributes); |
Retour
En cas de réussite, la valeur renvoyée est 0. En cas d'erreur, la valeur renvoyée est -1 et le code d'erreur dans l'archive est défini pour indiquer l'erreur.
Description
Cette fonction permet de récupérer les attributs externes d'un fichier dans une archive ZIP.
Remarques
- La fonction zip_file_get_external_attributes() renvoie le système d'exploitation et les attributs externes du fichier à la position index dans l'archive zip. Les attributs externes contiennent généralement les autorisations de fichier spécifiques au système d'exploitation. Si flags est défini sur ZIP_FL_UNCHANGED, les valeurs d'origine inchangées sont renvoyées. Si opsys ou les attributs sont NULL, ils ne sont pas renseignés.
- Les systèmes d'exploitation suivants sont définis par la spécification zip :
Nom Description ZIP_OPSYS_ACORN_RISC Système d'exploitation RISC OS utilisé sur les ordinateurs Acorn. ZIP_OPSYS_ALTERNATE_MVS Variante du système MVS d'IBM, utilisé principalement sur les mainframes. ZIP_OPSYS_AMIGA Système d'exploitation AmigaOS, utilisé sur les ordinateurs Amiga. ZIP_OPSYS_ATARI_ST Système d'exploitation TOS utilisé sur les ordinateurs Atari ST. ZIP_OPSYS_BEOS Système BeOS, conçu pour le multimédia et utilisé sur certains ordinateurs personnels. ZIP_OPSYS_CPM Système CP/M (Control Program for Microcomputers), un OS historique utilisé sur les micro-ordinateurs des années 1970 à 1980. ZIP_OPSYS_DOS Système MS-DOS et compatibles PC DOS, utilisé sur les premiers IBM PC et leurs clones. ZIP_OPSYS_MACINTOSH Ancien système d'exploitation Mac OS Classic utilisé sur les Macintosh avant macOS. ZIP_OPSYS_MVS MVS (Multiple Virtual Storage), un OS utilisé sur les mainframes IBM. ZIP_OPSYS_OPENVMS Système OpenVMS, utilisé sur les ordinateurs VAX, Alpha et Itanium de Digital/Compaq/HP. ZIP_OPSYS_OS_2 Système OS/2 développé par IBM, conçu comme un successeur de DOS. ZIP_OPSYS_OS_400 Système IBM OS/400, utilisé sur les serveurs IBM AS/400 (iSeries). ZIP_OPSYS_OS_X Ancien nom de macOS, le système d'exploitation moderne d'Apple basé sur Unix. ZIP_OPSYS_TANDEM Système utilisé sur les serveurs Tandem (maintenant sous HP NonStop). ZIP_OPSYS_UNIX Famille de systèmes Unix, incluant Linux, BSD, et autres variantes. ZIP_OPSYS_VFAT Variante du système de fichiers FAT prenant en charge les noms de fichiers longs (VFAT). ZIP_OPSYS_VM_CMS Système VM/CMS d'IBM, utilisé sur les mainframes. ZIP_OPSYS_VSE Système VSE d'IBM (Virtual Storage Extended), conçu pour les systèmes mainframe. ZIP_OPSYS_WINDOWS_NTFS Système de fichiers NTFS de Windows NT (peu courant, ZIP_OPSYS_DOS est recommandé à la place). ZIP_OPSYS_Z_SYSTEM Système z/OS utilisé sur les mainframes IBM zSeries. Les définitions ci-dessus suivent la note d'application PKWARE Inc. ; veuillez noter que la note d'application InfoZIP a une cartographie légèrement différent.
Erreurs
zip_file_get_external_attributes() échoue si :
| Nom | Description |
|---|---|
| ZIP_ER_INVAL | index n'est pas un index de fichier valide dans l'archive. |
Historique
zip_file_get_external_attributes() a été ajouté dans libzip 0.11.2.
Exemples
Le code suivant peut être utilisé pour développer des attributs si le système d'exploitation est ZIP_OPSYS_DOS :
- #include <sys/stat.h>
-
- #define FA_RDONLY 0x01 // FILE_ATTRIBUTE_READONLY
- #define FA_DIREC 0x10 // FILE_ATTRIBUTE_DIRECTORY
-
- static mode_t
- _zip_dos_attr2mode(zip_uint32_t attr) {
- mode_t m = S_IRUSR | S_IRGRP | S_IROTH;
- if (0 == (attr & FA_RDONLY))
- m |= S_IWUSR | S_IWGRP | S_IWOTH;
-
- if (attr & FA_DIREC)
- m = (S_IFDIR | (m & ~S_IFMT)) | S_IXUSR | S_IXGRP | S_IXOTH;
-
- return m;
- }
Voir également
libzip(), zip_file_set_external_attributes()
Dernière mise à jour : Mercredi, le 5 Février 2025