Implementado (fase 6). Funciona de forma transparente en todos los shares;
Mac = falselo desactiva en un share concreto.
En Mac OS clásico (System 6 a Mac OS 9) un fichero tiene:
Windows y Linux solo guardan el data fork. Si un fichero de Mac pasa por un servidor normal, pierde el resto y deja de funcionar. Por eso en esa época se viajaba codificado:
.bin): binario, una cabecera de 128 bytes y después los dos forks..hqx): texto de 7 bits, apto incluso para correo.Por eso no hace falta activarlo. Mac = false solo tiene sentido en shares que guardan .bin/.hqx como archivo (p. ej. una colección de software para emuladores), donde se quiere conservar el fichero codificado tal cual.
Cada fichero de Mac se guarda como:
nombre: el data fork, usable desde cualquier sistema;._nombre: fichero AppleDouble (versión 2) en la misma carpeta, con la entrada 9 (Finder Info, 32 bytes) y la entrada 2 (Resource Fork).Es el mismo formato que usa macOS en volúmenes que no admiten forks (FAT, SMB…), así que es compatible con macOS moderno y con otras herramientas.
._* que acompañan a un fichero, .DS_Store e Icon\r no se muestran en los listados (web, FTP, WebDAV).._.Por formulario web, por la subida por trozos de la página moderna (PUT con X-Sunfish-Upload) o por FTP (STOR):
| Llega | Se decodifica si… | Se guarda |
|---|---|---|
| MacBinary II/III | byte 0 y 74 a cero, longitud de nombre 1–63, longitudes de los forks coherentes y CRC-16 de la cabecera correcto (III: firma mBIN en el desplazamiento 102) |
nombre + ._nombre |
| MacBinary I | Sin CRC: solo si el cliente tiene perfil mac, el fichero acaba en .bin y la cabecera es coherente |
nombre + ._nombre |
| BinHex 4.0 | Línea (This file must be converted with BinHex 4.0) y CRC de las tres partes correctos |
nombre + ._nombre |
| Cualquier otra cosa | — | tal cual |
._.Overwrite, se conserva el fichero codificado tal como llegó (no se pierde nada) y el registro lo avisa. Con Overwrite, se sustituye.PUT de WebDAV normal no se decodifica: los clientes WebDAV modernos (Finder, Windows) ya escriben los forks como ._ por su cuenta, y un .bin copiado así se quiere tal cual.mac (CLIENTES.md), fichero con ._: la descarga normal se entrega en MacBinary automáticamente (application/x-macbinary). El decodificador del navegador (o el que tenga asociado) restaura los forks sin que el usuario haga nada.mac, fichero sin ._: se entrega tal cual. El Mac asigna tipo y creador por su tabla de extensiones.._, el listado lo marca y ofrece enlaces explícitos:
[.bin] → fichero?as=macbin, MacBinary III (también lo leen los decodificadores de MacBinary II);[.hqx] → fichero?as=hqx, application/mac-binhex40.Al codificar:
._;._ (enlaces explícitos), tipo y creador salen de una tabla por extensión (p. ej. .txt → TEXT, .gif → GIFf, .jpg → JPEG, .sit → SIT!, .pdf → PDF). Pendiente: ampliarla con una sección [MacTypes] en la configuración (aún no existe);Para FTP, ver FTP-Y-WEBDAV.md.
.sit) y otros formatos comprimidos de Mac: se tratan como ficheros normales.CR de los ficheros de texto de Mac (lo hace el cliente o el modo TYPE A de FTP).En tests/Sunfish.Tests/MacTests.cs:
.bin cualquiera queda intacto).0x90 (RLE) y CRC alterado.._ sigue al fichero al mover y borrar.[.bin]/[.hqx], ?as=macbin/?as=hqx, entrega automática al perfil mac, subida por formulario que se decodifica, FTP +mac (nombre.bin en el listado, SIZE, RETR, STOR que se decodifica).nombre + ._nombre y descarga .bin idéntica byte a byte.._ generados por macOS moderno.