The Samba-Bugzilla – Attachment 17898 Details for
Bug 15378
vfs_fruit might cause a failing open for delete
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for 4.17 and 4.18 cherry-picked from master
v417,v418-bug15378.patch (text/plain), 63.93 KB, created by
Ralph Böhme
on 2023-05-26 13:51:02 UTC
(
hide
)
Description:
Patch for 4.17 and 4.18 cherry-picked from master
Filename:
MIME Type:
Creator:
Ralph Böhme
Created:
2023-05-26 13:51:02 UTC
Size:
63.93 KB
patch
obsolete
>From 71709e7f0b533956b0ae3341a5107f5d396e9a4c Mon Sep 17 00:00:00 2001 >From: Ralph Boehme <slow@samba.org> >Date: Wed, 24 May 2023 21:28:48 +0200 >Subject: [PATCH 1/6] 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 <slow@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 59eadfe21aca6d563f86ea656517216036421bca) >--- > ...t.delete_trigger_convert_sharing_violation | 4 + > source4/torture/vfs/fruit.c | 954 ++++++++++++++++++ > 2 files changed, 958 insertions(+) > create mode 100644 selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation > >diff --git a/selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation b/selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation >new file mode 100644 >index 000000000000..7af35b0d4d5a >--- /dev/null >+++ b/selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation >@@ -0,0 +1,4 @@ >+^samba3.vfs.fruit metadata_netatalk.delete_trigger_convert_sharing_violation\(nt4_dc\) >+^samba3.vfs.fruit metadata_stream.delete_trigger_convert_sharing_violation\(nt4_dc\) >+^samba3.vfs.fruit streams_depot.delete_trigger_convert_sharing_violation\(nt4_dc\) >+^samba3.vfs.fruit fruit_delete_empty_adfiles.delete_trigger_convert_sharing_violation\(nt4_dc\) >diff --git a/source4/torture/vfs/fruit.c b/source4/torture/vfs/fruit.c >index 3621fec460c7..99d63becbb4c 100644 >--- a/source4/torture/vfs/fruit.c >+++ b/source4/torture/vfs/fruit.c >@@ -7017,6 +7017,959 @@ static bool test_empty_stream(struct torture_context *tctx, > 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, >+ 0x00, 0x02, 0x00, 0x00, 0x0e, 0xe2, 0x00, 0x00, >+ 0x01, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x41, 0x54, 0x54, 0x52, >+ 0x00, 0x81, 0x71, 0x4c, 0x00, 0x00, 0x0e, 0xe2, >+ 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x39, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, >+ 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x39, >+ 0x00, 0x00, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x61, >+ 0x70, 0x70, 0x6c, 0x65, 0x2e, 0x71, 0x75, 0x61, >+ 0x72, 0x61, 0x6e, 0x74, 0x69, 0x6e, 0x65, 0x00, >+ 0x30, 0x30, 0x38, 0x31, 0x3b, 0x36, 0x32, 0x65, >+ 0x61, 0x33, 0x37, 0x66, 0x64, 0x3b, 0x43, 0x68, >+ 0x72, 0x6f, 0x6d, 0x65, 0x3b, 0x42, 0x35, 0x39, >+ 0x46, 0x42, 0x39, 0x45, 0x44, 0x2d, 0x35, 0x41, >+ 0x32, 0x39, 0x2d, 0x34, 0x45, 0x35, 0x42, 0x2d, >+ 0x38, 0x35, 0x36, 0x43, 0x2d, 0x37, 0x45, 0x44, >+ 0x30, 0x45, 0x46, 0x45, 0x41, 0x37, 0x30, 0x41, >+ 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, >+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x1e, 0x54, 0x68, 0x69, 0x73, 0x20, 0x72, >+ 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, >+ 0x66, 0x6f, 0x72, 0x6b, 0x20, 0x69, 0x6e, 0x74, >+ 0x65, 0x6e, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, >+ 0x6c, 0x79, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, >+ 0x62, 0x6c, 0x61, 0x6e, 0x6b, 0x20, 0x20, 0x20, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, >+ 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, >+ 0x00, 0x00, 0x00, 0x1c, 0x00, 0x1e, 0xff, 0xff >+}; >+ >+static bool test_delete_trigger_convert_sharing_violation( >+ struct torture_context *tctx, >+ struct smb2_tree *tree1) >+{ >+ TALLOC_CTX *mem_ctx = talloc_new(tctx); >+ const char *dirname = BASEDIR "\\dir"; >+ const char *adname = BASEDIR "\\._dir"; >+ struct smb2_handle testdirh; >+ struct smb2_create create; >+ AfpInfo *info = NULL; >+ bool ret = true; >+ NTSTATUS status; >+ >+ smb2_deltree(tree1, BASEDIR); >+ >+ status = torture_smb2_testdir(tree1, BASEDIR, &testdirh); >+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done, >+ "torture_smb2_testdir failed\n"); >+ smb2_util_close(tree1, testdirh); >+ >+ status = torture_smb2_testdir(tree1, dirname, &testdirh); >+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done, >+ "torture_smb2_testdir failed\n"); >+ smb2_util_close(tree1, testdirh); >+ >+ ret = torture_setup_file(tctx, tree1, adname, false); >+ torture_assert_goto(tctx, ret == true, ret, done, >+ "torture_setup_file failed\n"); >+ >+ ret = write_stream(tree1, __location__, tctx, mem_ctx, >+ adname, NULL, 0, >+ sizeof(osx_adouble_dir_w_xattr), >+ osx_adouble_dir_w_xattr); >+ torture_assert_goto(tctx, ret == true, ret, done, >+ "write_stream failed\n"); >+ >+ /* >+ * 1) Create a non-empty AFP_AfpInfo stream >+ */ >+ >+ info = torture_afpinfo_new(mem_ctx); >+ torture_assert_goto(tctx, info != NULL, ret, done, "torture_afpinfo_new failed"); >+ >+ /* Set "Inited" flag (any other would do too) */ >+ info->afpi_FinderInfo[8] = 0x01; >+ >+ ret = torture_write_afpinfo(tree1, tctx, mem_ctx, dirname, info); >+ torture_assert_goto(tctx, ret == true, ret, done, "torture_write_afpinfo failed"); >+ >+ ret = write_stream(tree1, __location__, tctx, mem_ctx, >+ adname, NULL, 0, >+ sizeof(osx_adouble_dir_w_xattr), >+ osx_adouble_dir_w_xattr); >+ torture_assert_goto(tctx, ret == true, ret, done, >+ "write_stream failed\n"); >+ >+ /* >+ * 2) Create a second stream >+ */ >+ >+ ret = write_stream(tree1, __location__, tctx, mem_ctx, >+ dirname, ":org.samba.boom", 0, >+ strlen("boom"), >+ "boom"); >+ torture_assert_goto(tctx, ret == true, ret, done, >+ "write_stream failed\n"); >+ >+ create = (struct smb2_create) { >+ .in.desired_access = SEC_STD_DELETE, >+ .in.create_options = NTCREATEX_OPTIONS_DIRECTORY, >+ .in.file_attributes = FILE_ATTRIBUTE_DIRECTORY, >+ .in.share_access = NTCREATEX_SHARE_ACCESS_READ, >+ .in.create_disposition = NTCREATEX_DISP_OPEN, >+ .in.impersonation_level = SMB2_IMPERSONATION_ANONYMOUS, >+ .in.fname = dirname, >+ }; >+ >+ status = smb2_create(tree1, tctx, &create); >+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done, >+ "smb2_create failed\n"); >+ >+ status = smb2_util_close(tree1, create.out.file.handle); >+ torture_assert_ntstatus_ok_goto(tctx, status, ret, done, >+ "smb2_util_close failed"); >+ >+done: >+ smb2_deltree(tree1, BASEDIR); >+ talloc_free(mem_ctx); >+ return ret; >+} >+ > /* > * Note: This test depends on "vfs objects = catia fruit streams_xattr". For > * some tests torture must be run on the host it tests and takes an additional >@@ -7063,6 +8016,7 @@ struct torture_suite *torture_vfs_fruit(TALLOC_CTX *ctx) > torture_suite_add_1smb2_test(suite, "OS X AppleDouble file conversion without embedded xattr", test_adouble_conversion_wo_xattr); > torture_suite_add_1smb2_test(suite, "empty_stream", test_empty_stream); > torture_suite_add_1smb2_test(suite, "writing_afpinfo", test_writing_afpinfo); >+ torture_suite_add_1smb2_test(suite, "delete_trigger_convert_sharing_violation", test_delete_trigger_convert_sharing_violation); > > return suite; > } >-- >2.40.0 > > >From b62542fa74de8210c7ff4ae257ec22e91e33cf7e Mon Sep 17 00:00:00 2001 >From: Ralph Boehme <slow@samba.org> >Date: Mon, 22 May 2023 19:35:33 +0200 >Subject: [PATCH 2/6] 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 <slow@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 9b91a8bad2ff8da9eb56f1f9d640bcea294a5a0a) >--- > source3/modules/vfs_fruit.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > >diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c >index 4058d4834e72..583de93a4b20 100644 >--- a/source3/modules/vfs_fruit.c >+++ b/source3/modules/vfs_fruit.c >@@ -1567,7 +1567,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; > } >-- >2.40.0 > > >From 9af921af2e64ebc4d8009b9dfc379400bd46b6a6 Mon Sep 17 00:00:00 2001 >From: Ralph Boehme <slow@samba.org> >Date: Mon, 22 May 2023 19:37:17 +0200 >Subject: [PATCH 3/6] 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 <slow@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 06f0c070a0b18313f48362aa326e3e7e6a096492) >--- > source3/modules/vfs_fruit.c | 4 ++++ > 1 file changed, 4 insertions(+) > >diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c >index 583de93a4b20..45c2f75fb42c 100644 >--- a/source3/modules/vfs_fruit.c >+++ b/source3/modules/vfs_fruit.c >@@ -3959,6 +3959,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); > >-- >2.40.0 > > >From 51723bf981e21aa20eeb489b6152d89dc9e589ea Mon Sep 17 00:00:00 2001 >From: Ralph Boehme <slow@samba.org> >Date: Tue, 23 May 2023 17:28:33 +0200 >Subject: [PATCH 4/6] 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 <slow@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 55bd10456486628cad2bd085618e873598401c3b) >--- > .../samba3.vfs.fruit.delete_trigger_convert_sharing_violation | 4 ---- > source3/lib/adouble.c | 2 +- > 2 files changed, 1 insertion(+), 5 deletions(-) > delete mode 100644 selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation > >diff --git a/selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation b/selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation >deleted file mode 100644 >index 7af35b0d4d5a..000000000000 >--- a/selftest/knownfail.d/samba3.vfs.fruit.delete_trigger_convert_sharing_violation >+++ /dev/null >@@ -1,4 +0,0 @@ >-^samba3.vfs.fruit metadata_netatalk.delete_trigger_convert_sharing_violation\(nt4_dc\) >-^samba3.vfs.fruit metadata_stream.delete_trigger_convert_sharing_violation\(nt4_dc\) >-^samba3.vfs.fruit streams_depot.delete_trigger_convert_sharing_violation\(nt4_dc\) >-^samba3.vfs.fruit fruit_delete_empty_adfiles.delete_trigger_convert_sharing_violation\(nt4_dc\) >diff --git a/source3/lib/adouble.c b/source3/lib/adouble.c >index 062c73ec7588..15f8f0aa8a90 100644 >--- a/source3/lib/adouble.c >+++ b/source3/lib/adouble.c >@@ -1222,7 +1222,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 */ >-- >2.40.0 > > >From af723629e6af12ad48073a9c30754edafe49884d Mon Sep 17 00:00:00 2001 >From: Ralph Boehme <slow@samba.org> >Date: Mon, 22 May 2023 12:25:04 +0200 >Subject: [PATCH 5/6] vfs_fruit: just log failing AppleDouble conversion > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=15378 > >Signed-off-by: Ralph Boehme <slow@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> >(cherry picked from commit 3bf97f19c36d26b4178f7cb6202bbdd44de0c1aa) >--- > source3/modules/vfs_fruit.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > >diff --git a/source3/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c >index 45c2f75fb42c..ca906feff60e 100644 >--- a/source3/modules/vfs_fruit.c >+++ b/source3/modules/vfs_fruit.c >@@ -4305,8 +4305,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)); > } > } > >@@ -4416,8 +4416,8 @@ static NTSTATUS fruit_freaddir_attr(struct 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", >+ fsp_str_dbg(fsp)); > } > > *pattr_data = talloc_zero(mem_ctx, struct readdir_attr_data); >-- >2.40.0 > > >From b08892c080e70dccb70effe28698c0c977e2449f Mon Sep 17 00:00:00 2001 >From: Ralph Boehme <slow@samba.org> >Date: Mon, 22 May 2023 12:32:00 +0200 >Subject: [PATCH 6/6] vfs_fruit: add fruit:convert_adouble parameter > >https://bugzilla.samba.org/show_bug.cgi?id=15378 > >Signed-off-by: Ralph Boehme <slow@samba.org> >Reviewed-by: Jeremy Allison <jra@samba.org> > >Autobuild-User(master): Jeremy Allison <jra@samba.org> >Autobuild-Date(master): Fri May 26 00:52:29 UTC 2023 on atb-devel-224 > >(cherry picked from commit 035f6d914d133cf3248f15b1be06a9e1837238da) >--- > docs-xml/manpages/vfs_fruit.8.xml | 13 +++++++++++ > source3/modules/vfs_fruit.c | 38 +++++++++++++++++++------------ > 2 files changed, 37 insertions(+), 14 deletions(-) > >diff --git a/docs-xml/manpages/vfs_fruit.8.xml b/docs-xml/manpages/vfs_fruit.8.xml >index 6950898a7d15..2215f0313126 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/modules/vfs_fruit.c b/source3/modules/vfs_fruit.c >index ca906feff60e..c08238cb15f4 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); >@@ -4290,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) { >@@ -4404,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(\"%s\") failed\n", >- fsp_str_dbg(fsp)); >+ 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); >-- >2.40.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Flags:
jra
:
review+
Actions:
View
Attachments on
bug 15378
: 17898