The branch, master has been updated
       via  035f6d914d1 vfs_fruit: add fruit:convert_adouble parameter
       via  3bf97f19c36 vfs_fruit: just log failing AppleDouble conversion
       via  55bd1045648 libadouble: allow FILE_SHARE_DELETE in 
ad_convert_xattr()
       via  06f0c070a0b vfs_fruit: never return AFP_Resource stream for 
directories
       via  9b91a8bad2f vfs_fruit: return ENOENT instead of EISDIR when trying 
to open AFP_Resource for a directory
       via  59eadfe21ac CI: add a test for fruit AppleDouble conversion when 
deletion triggers conversion
      from  412373984db smbd: also reset struct stat_ex.cached_dos_attributes 
in SET_STAT_INVALID()

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 035f6d914d133cf3248f15b1be06a9e1837238da
Author: Ralph Boehme <s...@samba.org>
Date:   Mon May 22 12:32:00 2023 +0200

    vfs_fruit: add fruit:convert_adouble parameter
    
    https://bugzilla.samba.org/show_bug.cgi?id=15378
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>
    
    Autobuild-User(master): Jeremy Allison <j...@samba.org>
    Autobuild-Date(master): Fri May 26 00:52:29 UTC 2023 on atb-devel-224

commit 3bf97f19c36d26b4178f7cb6202bbdd44de0c1aa
Author: Ralph Boehme <s...@samba.org>
Date:   Mon May 22 12:25:04 2023 +0200

    vfs_fruit: just log failing AppleDouble conversion
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15378
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 55bd10456486628cad2bd085618e873598401c3b
Author: Ralph Boehme <s...@samba.org>
Date:   Tue May 23 17:28:33 2023 +0200

    libadouble: allow FILE_SHARE_DELETE in ad_convert_xattr()
    
    Not specifying FILE_SHARE_DELETE wasn't done intentionally. Not setting the 
flag
    triggers the following problem:
    
    * client sends a CREATE with delete access
    
    * this triggers a call to open_streams_for_delete() where we check for
    conflicting opens on any of the streams of the file or directory
    
    * if the file (or directory) has a stream like ":com.apple.quarantine" the
    stream is opened with DELETE_ACCESS and kept open when the next step might:
    
    * if the file (or directory) has a Mac specific :AFP_AfpInfo stream, the
    ad_convert() routine in fruit_create_file() is triggered
    
    * ad_convert() checks if the file (or ...) has a sidecar ._ AppleDouble 
file, if
    it has:
    
    * in ad_convert_xattr() we unpack any set of xattrs encoded in the 
AppleDouble
    file and recreate them as streams with the VFS. Now, if any of these xattrs
    happens to be converted to a stream that we still have open in
    open_streams_for_delete() (see above) we get a NT_STATUS_SHARING_VIOLATION
    
    This error gets passed up the stack back to open_streams_for_delete() so the
    client CREATE request fails and the client is unhappy.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15378
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 06f0c070a0b18313f48362aa326e3e7e6a096492
Author: Ralph Boehme <s...@samba.org>
Date:   Mon May 22 19:37:17 2023 +0200

    vfs_fruit: never return AFP_Resource stream for directories
    
    The macOS client creates ._ AppleDouble files for directories that do 
contain
    an (empty) resource fork AppleDouble entry. So when going from a Samba 
server
    config without streams module (or when migrating data from another server
    without streams support), to a Samba config with a streams module and 
vfs_fruit,
    fruit_streaminfo() will wrongly return the AFP_Resource from the AppleDouble
    file as stream to the client.
    
    To address this, just never return an AFP_Resource stream for directories 
when
    listing streams in fruit_streaminfo(). ad_convert(), when configured with
    
      fruit:delete_empty_adfiles = true
      fruit:wipe_intentionally_left_blank_rfork = true
    
    will happily discard the AFP_Resource from the AppleDouble file.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15378
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 9b91a8bad2ff8da9eb56f1f9d640bcea294a5a0a
Author: Ralph Boehme <s...@samba.org>
Date:   Mon May 22 19:35:33 2023 +0200

    vfs_fruit: return ENOENT instead of EISDIR when trying to open AFP_Resource 
for a directory
    
    Translates to NT_STATUS_OBJECT_NAME_NOT_FOUND which is the same error macOS
    returns in this case.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15378
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

commit 59eadfe21aca6d563f86ea656517216036421bca
Author: Ralph Boehme <s...@samba.org>
Date:   Wed May 24 21:28:48 2023 +0200

    CI: add a test for fruit AppleDouble conversion when deletion triggers 
conversion
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=15378
    
    Signed-off-by: Ralph Boehme <s...@samba.org>
    Reviewed-by: Jeremy Allison <j...@samba.org>

-----------------------------------------------------------------------

Summary of changes:
 docs-xml/manpages/vfs_fruit.8.xml |  13 +
 source3/lib/adouble.c             |   2 +-
 source3/modules/vfs_fruit.c       |  48 +-
 source4/torture/vfs/fruit.c       | 954 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 999 insertions(+), 18 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/manpages/vfs_fruit.8.xml 
b/docs-xml/manpages/vfs_fruit.8.xml
index 6950898a7d1..2215f031312 100644
--- a/docs-xml/manpages/vfs_fruit.8.xml
+++ b/docs-xml/manpages/vfs_fruit.8.xml
@@ -406,6 +406,19 @@
            </listitem>
          </varlistentry>
 
+         <varlistentry>
+           <term>fruit:convert_adouble = yes | no</term>
+           <listitem>
+             <para>Whether an attempt shall be made to convert ._ AppleDouble
+             sidecar files to native streams (xattrs when using
+             vfs_streams_xattr). The main use case for this conversion is
+             transparent migration from a server config without streams support
+             where the macOS client created those AppleDouble sidecar
+             files.</para>
+             <para>The default is <emphasis>yes</emphasis>.</para>
+           </listitem>
+         </varlistentry>
+
        </variablelist>
 </refsect1>
 
diff --git a/source3/lib/adouble.c b/source3/lib/adouble.c
index ee4166f9628..3181a390d35 100644
--- a/source3/lib/adouble.c
+++ b/source3/lib/adouble.c
@@ -1236,7 +1236,7 @@ static bool ad_convert_xattr(vfs_handle_struct *handle,
                        NULL,                           /* dirfsp */
                        stream_name,                    /* fname */
                        FILE_GENERIC_WRITE,             /* access_mask */
-                       FILE_SHARE_READ | FILE_SHARE_WRITE, /* share_access */
+                       FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 
/* share_access */
                        FILE_OPEN_IF,                   /* create_disposition */
                        0,                              /* create_options */
                        0,                              /* file_attributes */
diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c
index 637e2a1a6ed..ce5ae38505e 100644
--- a/source3/modules/vfs_fruit.c
+++ b/source3/modules/vfs_fruit.c
@@ -131,6 +131,7 @@ struct fruit_config_data {
        const char *model;
        bool time_machine;
        off_t time_machine_max_size;
+       bool convert_adouble;
        bool wipe_intentionally_left_blank_rfork;
        bool delete_empty_adfiles;
 
@@ -381,6 +382,10 @@ static int init_fruit_config(vfs_handle_struct *handle)
                config->time_machine_max_size = conv_str_size(tm_size_str);
        }
 
+       config->convert_adouble = lp_parm_bool(
+               SNUM(handle->conn), FRUIT_PARAM_TYPE_NAME,
+               "convert_adouble", true);
+
        config->wipe_intentionally_left_blank_rfork = lp_parm_bool(
                SNUM(handle->conn), FRUIT_PARAM_TYPE_NAME,
                "wipe_intentionally_left_blank_rfork", false);
@@ -1567,7 +1572,7 @@ static int fruit_open_rsrc_adouble(vfs_handle_struct 
*handle,
            S_ISDIR(fsp->base_fsp->fsp_name->st.st_ex_mode))
        {
                /* sorry, but directories don't have a resource fork */
-               errno = EISDIR;
+               errno = ENOENT;
                rc = -1;
                goto exit;
        }
@@ -3959,6 +3964,10 @@ static NTSTATUS fruit_streaminfo_rsrc(vfs_handle_struct 
*handle,
        struct fruit_config_data *config = NULL;
        NTSTATUS status;
 
+       if (S_ISDIR(smb_fname->st.st_ex_mode)) {
+               return NT_STATUS_OK;
+       }
+
        SMB_VFS_HANDLE_GET_DATA(handle, config, struct fruit_config_data,
                                return NT_STATUS_INTERNAL_ERROR);
 
@@ -4286,7 +4295,10 @@ static NTSTATUS fruit_create_file(vfs_handle_struct 
*handle,
        SMB_VFS_HANDLE_GET_DATA(handle, config, struct fruit_config_data,
                                return NT_STATUS_UNSUCCESSFUL);
 
-       if (is_apple_stream(smb_fname->stream_name) && !internal_open) {
+       if (is_apple_stream(smb_fname->stream_name) &&
+           !internal_open &&
+           config->convert_adouble)
+       {
                uint32_t conv_flags  = 0;
 
                if (config->wipe_intentionally_left_blank_rfork) {
@@ -4301,8 +4313,8 @@ static NTSTATUS fruit_create_file(vfs_handle_struct 
*handle,
                                 macos_string_replace_map,
                                 conv_flags);
                if (ret != 0) {
-                       DBG_ERR("ad_convert() failed\n");
-                       return NT_STATUS_UNSUCCESSFUL;
+                       DBG_ERR("ad_convert(\"%s\") failed\n",
+                               smb_fname_str_dbg(smb_fname));
                }
        }
 
@@ -4400,20 +4412,22 @@ static NTSTATUS fruit_freaddir_attr(struct 
vfs_handle_struct *handle,
 
        DBG_DEBUG("Path [%s]\n", fsp_str_dbg(fsp));
 
-       if (config->wipe_intentionally_left_blank_rfork) {
-               conv_flags |= AD_CONV_WIPE_BLANK;
-       }
-       if (config->delete_empty_adfiles) {
-               conv_flags |= AD_CONV_DELETE;
-       }
+       if (config->convert_adouble) {
+               if (config->wipe_intentionally_left_blank_rfork) {
+                       conv_flags |= AD_CONV_WIPE_BLANK;
+               }
+               if (config->delete_empty_adfiles) {
+                       conv_flags |= AD_CONV_DELETE;
+               }
 
-       ret = ad_convert(handle,
-                        fsp->fsp_name,
-                        macos_string_replace_map,
-                        conv_flags);
-       if (ret != 0) {
-               DBG_ERR("ad_convert() failed\n");
-               return NT_STATUS_UNSUCCESSFUL;
+               ret = ad_convert(handle,
+                                fsp->fsp_name,
+                                macos_string_replace_map,
+                                conv_flags);
+               if (ret != 0) {
+                       DBG_ERR("ad_convert(\"%s\") failed\n",
+                               fsp_str_dbg(fsp));
+               }
        }
 
        *pattr_data = talloc_zero(mem_ctx, struct readdir_attr_data);
diff --git a/source4/torture/vfs/fruit.c b/source4/torture/vfs/fruit.c
index 3621fec460c..99d63becbb4 100644
--- a/source4/torture/vfs/fruit.c
+++ b/source4/torture/vfs/fruit.c
@@ -7017,6 +7017,959 @@ done:
        return ret;
 }
 
+/*
+-------------------------------------------------------------------------------
+MagicNumber: 00051607                                        : AppleDouble
+Version    : 00020000                                        : Version 2
+Filler     : 4D 61 63 20 4F 53 20 58 20 20 20 20 20 20 20 20 : Mac OS X
+Num. of ent: 0002                                            : 2
+
+-------------------------------------------------------------------------------
+Entry ID   : 00000009 : Finder Info
+Offset     : 00000032 : 50
+Length     : 00000EB0 : 3760
+
+-DInfo-----:
+Rect top   : 0000     : 0
+Rect left  : 0000     : 0
+Rect bottom: 0000     : 0
+Rect right : 0000     : 0
+isAlias    : 0
+Invisible  : 0
+hasBundle  : 0
+nameLocked : 0
+Stationery : 0
+CustomIcon : 0
+Reserved   : 0
+Inited     : 1
+NoINITS    : 0
+Shared     : 0
+SwitchLaunc: 0
+Hidden Ext : 0
+color      : 000      : none
+isOnDesk   : 0
+Location v : 0000     : 0
+Location h : 0000     : 0
+View       : 0000     : ..
+
+-DXInfo----:
+Scroll v   : 0000     : 0
+Scroll h   : 0000     : 0
+Rsvd|OpnChn: 00000000 : 0
+AreInvalid : 0
+unknown bit: 0
+unknown bit: 0
+unknown bit: 0
+unknown bit: 0
+unknown bit: 0
+unknown bit: 0
+CustomBadge: 0
+ObjctIsBusy: 0
+unknown bit: 0
+unknown bit: 0
+unknown bit: 0
+unknown bit: 0
+RoutingInfo: 0
+unknown bit: 0
+unknown bit: 0
+Comment    : 0000     : ..
+PutAway    : 00000000 : 0
+
+-EA--------:
+pad        : 0000     : ..
+magic      : 41545452 : ATTR
+debug_tag  : 0081714C : 8483148
+total_size : 00000EE2 : 3810
+data_start : 00000098 : 152
+data_length: 00000039 : 57
+reserved[0]: 00000000 : ....
+reserved[1]: 00000000 : ....
+reserved[2]: 00000000 : ....
+flags      : 0000     : ..
+num_attrs  : 0001     : 1
+-EA ENTRY--:
+offset     : 00000098 : 152
+length     : 00000039 : 57
+flags      : 0000     : ..
+namelen    : 15       : 21
+-EA NAME---:  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F : (ASCII)
+00000000   : 63 6F 6D 2E 61 70 70 6C 65 2E 71 75 61 72 61 6E : com.apple.quaran
+00000010   : 74 69 6E 65 00                                  : tine.
+-EA VALUE--:  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F : (ASCII)
+00000000   : 30 30 38 31 3B 36 32 65 61 33 37 66 64 3B 43 68 : 0081;62ea37fd;Ch
+00000010   : 72 6F 6D 65 3B 42 35 39 46 42 39 45 44 2D 35 41 : rome;B59FB9ED-5A
+00000020   : 32 39 2D 34 45 35 42 2D 38 35 36 43 2D 37 45 44 : 29-4E5B-856C-7ED
+00000030   : 30 45 46 45 41 37 30 41 43                      : 0EFEA70AC
+
+-RAW DUMP--:  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F : (ASCII)
+00000000   : 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 : ................
+00000010   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000020   : 00 00 41 54 54 52 00 81 71 4C 00 00 0E E2 00 00 : ..ATTR..qL......
+00000030   : 00 98 00 00 00 39 00 00 00 00 00 00 00 00 00 00 : .....9..........
+00000040   : 00 00 00 00 00 01 00 00 00 98 00 00 00 39 00 00 : .............9..
+00000050   : 15 63 6F 6D 2E 61 70 70 6C 65 2E 71 75 61 72 61 : .com.apple.quara
+00000060   : 6E 74 69 6E 65 00 30 30 38 31 3B 36 32 65 61 33 : ntine.0081;62ea3
+00000070   : 37 66 64 3B 43 68 72 6F 6D 65 3B 42 35 39 46 42 : 7fd;Chrome;B59FB
+00000080   : 39 45 44 2D 35 41 32 39 2D 34 45 35 42 2D 38 35 : 9ED-5A29-4E5B-85
+00000090   : 36 43 2D 37 45 44 30 45 46 45 41 37 30 41 43 00 : 6C-7ED0EFEA70AC.
+000000A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000100   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000110   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000120   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000130   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000140   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000150   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000160   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000170   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000180   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000190   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000001A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000001B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000001C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000001D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000001E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000001F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000200   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000210   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000220   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000230   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000240   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000250   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000260   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000270   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000280   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000290   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000002A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000002B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000002C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000002D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000002E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000002F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000300   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000310   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000320   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000330   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000340   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000350   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000360   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000370   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000380   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000390   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000003A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000003B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000003C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000003D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000003E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000003F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000400   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000410   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000420   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000430   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000440   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000450   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000460   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000470   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000480   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000490   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000004A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000004B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000004C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000004D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000004E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000004F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000500   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000510   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000520   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000530   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000540   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000550   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000560   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000570   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000580   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000590   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000005A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000005B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000005C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000005D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000005E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000005F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000600   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000610   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000620   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000630   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000640   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000650   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000660   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000670   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000680   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000690   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000006A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000006B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000006C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000006D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000006E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000006F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000700   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000710   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000720   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000730   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000740   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000750   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000760   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000770   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000780   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000790   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000007A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000007B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000007C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000007D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000007E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000007F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000800   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000810   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000820   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000830   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000840   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000850   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000860   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000870   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000880   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000890   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000008A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000008B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000008C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000008D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000008E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000008F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000900   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000910   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000920   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000930   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000940   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000950   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000960   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000970   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000980   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000990   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000009A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000009B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000009C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000009D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000009E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000009F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A00   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A10   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A20   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A30   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A40   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A50   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A60   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A70   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A80   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000A90   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000AA0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000AB0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000AC0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000AD0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000AE0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000AF0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B00   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B10   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B20   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B30   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B40   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B50   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B60   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B70   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B80   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000B90   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000BA0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000BB0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000BC0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000BD0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000BE0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000BF0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C00   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C10   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C20   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C30   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C40   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C50   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C60   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C70   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C80   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000C90   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000CA0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000CB0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000CC0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000CD0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000CE0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000CF0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D00   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D10   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D20   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D30   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D40   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D50   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D60   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D70   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D80   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000D90   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000DA0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000DB0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000DC0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000DD0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000DE0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000DF0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E00   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E10   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E20   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E30   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E40   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E50   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E60   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E70   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E80   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000E90   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000EA0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+
+-------------------------------------------------------------------------------
+Entry ID   : 00000002 : Resource Fork
+Offset     : 00000EE2 : 3810
+Length     : 0000011E : 286
+
+-RAW DUMP--:  0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F : (ASCII)
+00000000   : 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 1E : ................
+00000010   : 54 68 69 73 20 72 65 73 6F 75 72 63 65 20 66 6F : This resource fo
+00000020   : 72 6B 20 69 6E 74 65 6E 74 69 6F 6E 61 6C 6C 79 : rk intentionally
+00000030   : 20 6C 65 66 74 20 62 6C 61 6E 6B 20 20 20 00 00 :  left blank   ..
+00000040   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000050   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000060   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000070   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000080   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000090   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000A0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000B0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000C0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000D0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000E0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+000000F0   : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 : ................
+00000100   : 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 1E : ................
+00000110   : 00 00 00 00 00 00 00 00 00 1C 00 1E FF FF       : ..............
+*/
+
+static char osx_adouble_dir_w_xattr[] = {
+       0x00, 0x05, 0x16, 0x07, 0x00, 0x02, 0x00, 0x00,
+       0x4d, 0x61, 0x63, 0x20, 0x4f, 0x53, 0x20, 0x58,
+       0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+       0x00, 0x02, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00,
+       0x00, 0x32, 0x00, 0x00, 0x0e, 0xb0, 0x00, 0x00,


-- 
Samba Shared Repository

Reply via email to