- ea = sysでかつappledoubleの場合、.AppleDouleフォルダや.Parentフォルダを作成する
- appledouble = adの場合のみ、リソースフォーク用のACLの設定をする。(添付のパッチ)
- ACLをセットする場合
- 指定されたフォルダまたは、ファイルのACLをセット
- リソースフォークもACLをセット
- appledouble = eaの場合でも.Parentや.AppleDoubleの設定を変更しようとしている。
- appledouble = adの場合のみリソースフォークのACLをセットする
- ACLの設定は、ACLの変更はAFPプロトコルの「FPSetACL」コマンドで行います。
- プロトコルについては「参考」を参照してください。
- このコマンドの処理をするのは、「afp_setacl」関数です。
- この関数は、etc/afpd/acls.cで定義されています。
- この関数では、パケットの解析を行って、ACLの設定があった場合は別の関数を呼び出します。
- 呼び出す関数の名前は、「set_acl」です。etc/afpd/acls.cで定義されています。
-
細かい解説は、(まだ全部理解していないので)割愛します
-
対象のファイルまたはフォルダのaclをacl_set_fileでセットします。
-
acl_set_file関数は、OSで用意されているaclを変更するための関数です。
-
拡張属性内にACLの設定をします。
-
リソースフォークも同様の設定をします。
-
リソースフォークを設定するために、RF_posix_acl関数を呼び出します。
-
この関数は、「libatalk/vfs/vfs.c」で定義されています。
- 設定する対象がディレクトリの場合
- ディレクトリ/.AppleDoubleにACLの設定をします。
- .Parentの設定もあわせて行います。
* .リソースフォーク用のファイルにACLの設定をします。