<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=LlGetInventoryPermMask_Test</id>
	<title>LlGetInventoryPermMask Test - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=LlGetInventoryPermMask_Test"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetInventoryPermMask_Test&amp;action=history"/>
	<updated>2026-07-24T11:47:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetInventoryPermMask_Test&amp;diff=67635&amp;oldid=prev</id>
		<title>Cogsworth Linden at 21:23, 16 May 2008</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetInventoryPermMask_Test&amp;diff=67635&amp;oldid=prev"/>
		<updated>2008-05-16T21:23:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:23, 16 May 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l119&quot;&gt;Line 119:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 119:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list itemTypes = &quot;clothing&quot;,&quot;gesture&quot;,&quot;image&quot;,&quot;landmark&quot;,&quot;note&quot;,&quot;object&quot;,&quot;script&quot;,&quot;shape&quot;,&quot;sound&quot;;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list itemTypes = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/ins&gt;&quot;clothing&quot;,&quot;gesture&quot;,&quot;image&quot;,&quot;landmark&quot;,&quot;note&quot;,&quot;object&quot;,&quot;script&quot;,&quot;shape&quot;,&quot;sound&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list maskTypes = MASK_BASE,MASK_OWNER,MASK_GROUP,MASK_EVERYONE,MASK_NEXT;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list maskTypes = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/ins&gt;MASK_BASE,MASK_OWNER,MASK_GROUP,MASK_EVERYONE,MASK_NEXT&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list maskNames = &quot;base&quot;,&quot;owner&quot;,&quot;group&quot;,&quot;everyone&quot;,&quot;next&quot;;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list maskNames = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/ins&gt;&quot;base&quot;,&quot;owner&quot;,&quot;group&quot;,&quot;everyone&quot;,&quot;next&quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list permTypes = PERM_MOVE,PERM_MODIFY,PERM_COPY,PERM_TRANSFER,PERM_ALL;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;list permTypes = &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[&lt;/ins&gt;PERM_MOVE,PERM_MODIFY,PERM_COPY,PERM_TRANSFER,PERM_ALL&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]&lt;/ins&gt;;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;say(string what)  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;say(string what)  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Cogsworth Linden</name></author>
	</entry>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=LlGetInventoryPermMask_Test&amp;diff=18789&amp;oldid=prev</id>
		<title>Milo Linden at 01:05, 27 April 2007</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=LlGetInventoryPermMask_Test&amp;diff=18789&amp;oldid=prev"/>
		<updated>2007-04-27T01:05:28Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[LLGetInventoryPermMaskTest]&lt;br /&gt;
&lt;br /&gt;
[VERSION] 0.2&lt;br /&gt;
&lt;br /&gt;
[LENGTH] 01:30&lt;br /&gt;
&lt;br /&gt;
[TESTERS] 2&lt;br /&gt;
&lt;br /&gt;
[OVERVIEW] This test has been designed to test if permissions are transferred correctly &lt;br /&gt;
between users inventorys. It also tests the functionality of the llGetInventoryPermMask &lt;br /&gt;
LSL Function.&lt;br /&gt;
&lt;br /&gt;
[SETUP] This test requires 2 users and rezzable land&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[0010] Tester 1: Create 8 simple cubes on the ground, name them &amp;quot;Object1&amp;quot; through &amp;quot;Object8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[0020] Tester 1: Set the Permissions for each as follows: (not shared with group, not &lt;br /&gt;
anyone can copy, not anyone can move unless stated)&lt;br /&gt;
&lt;br /&gt;
[0030] full permissions, shared with group, anyone can copy, anyone can move&lt;br /&gt;
&lt;br /&gt;
[0040] full permissions&lt;br /&gt;
&lt;br /&gt;
[0050] no copy&lt;br /&gt;
&lt;br /&gt;
[0060] no mod&lt;br /&gt;
&lt;br /&gt;
[0070] no copy, no mod&lt;br /&gt;
&lt;br /&gt;
[0080] no mod, no transfer&lt;br /&gt;
&lt;br /&gt;
[0090] no transfer&lt;br /&gt;
&lt;br /&gt;
[0100] full permissions, locked&lt;br /&gt;
&lt;br /&gt;
[0110] Tester 1: Create and Add the script to each item. (unlock the locked box and relock &lt;br /&gt;
it after)&lt;br /&gt;
&lt;br /&gt;
[SCRIPT] llGetInventoryPermMaskScript&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[NOTES] Make sure the script is full permissions for the next user: copyable, modable, &lt;br /&gt;
transferrable !!!&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[0120] Tester 1: Create 8 folders in your inventory, one for each of the permissions &lt;br /&gt;
created above&lt;br /&gt;
&lt;br /&gt;
[0130] Tester 1: In each folder, place a copy of one of each item:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;clothing&amp;quot;,&amp;quot;gesture&amp;quot;,&amp;quot;image&amp;quot;,&amp;quot;landmark&amp;quot;,&amp;quot;note&amp;quot;,&amp;quot;object&amp;quot;,&amp;quot;script&amp;quot;,&amp;quot;shape&amp;quot;,&amp;quot;sound&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[NOTES] Make sure each item is new, not an old library object !!!&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[0140] Tester 1: Rename each item in the folders by its type, Example: landmark, note etc, &lt;br /&gt;
case-sensitive. (You may want to create one set of 8, name them, then copy to the other 7 &lt;br /&gt;
folders to save time.)&lt;br /&gt;
&lt;br /&gt;
[0150] Tester 1: Change the permissions of each 8 items in each folder appropriate to the &lt;br /&gt;
permission types being tested above. (In the case of &amp;quot;full permissions, locked&amp;quot;, just have &lt;br /&gt;
each of the items in the folder be full permissions.)&lt;br /&gt;
&lt;br /&gt;
[0160] Tester 1: Drag each folder to its appropriately permissioned object1-8.&lt;br /&gt;
&lt;br /&gt;
[0170] Tester 1: Take a copy of each object1-8 and give each to Tester 2:&lt;br /&gt;
&lt;br /&gt;
[0180] Tester 1: Leave the objects1-8 on the ground in a row to make it easier to test all &lt;br /&gt;
at once.&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[NOTES] At this point you should have 8 objects on the ground each with 1 of each of 8 &lt;br /&gt;
different types of items in the Contents, all with permissions set to the types being &lt;br /&gt;
tested.&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[0190] Tester 2: Accept all objects from Tester 1:&lt;br /&gt;
&lt;br /&gt;
[0200] Tester 2: Rez the items on the ground next to Tester 1&amp;#039;s items.&lt;br /&gt;
&lt;br /&gt;
[0210] Tester 2: Close the Edit Window if it is open.&lt;br /&gt;
&lt;br /&gt;
[0220] Tester 2: One at a time, left-click each box to touch it.&lt;br /&gt;
&lt;br /&gt;
[0230] Observe the output for each. Compare the perms reported with the actual perms of &lt;br /&gt;
the contents.&lt;br /&gt;
&lt;br /&gt;
[0240] Verify all permissions reported match up; on failures, indicate which object and &lt;br /&gt;
which permissions.&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[NOTES] Output will be grouped by item, then by which mask type, then a 5-digit number &lt;br /&gt;
corresponding to permissions: PERM_MOVE,PERM_MODIFY,PERM_COPY,PERM_TRANSFER,PERM_ALL&lt;br /&gt;
&lt;br /&gt;
So for example - gesture:owner:10100 means that the owner has PERM_MOVE and PERM_COPY for &lt;br /&gt;
the gesture in the box.&lt;br /&gt;
&lt;br /&gt;
[*]&lt;br /&gt;
&lt;br /&gt;
[NOTES] (Base permissions are the least restrictive that the object has, owner permissions &lt;br /&gt;
are what permissions the owner of the object has, group permissions are what permissions &lt;br /&gt;
the group has, which should only work with shared with group, everyone permissions are &lt;br /&gt;
what anyone can do, NEXT permissions are what the next owner can do.)&lt;br /&gt;
&lt;br /&gt;
[END]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[llGetInventoryPermMaskScript]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
list itemTypes = &amp;quot;clothing&amp;quot;,&amp;quot;gesture&amp;quot;,&amp;quot;image&amp;quot;,&amp;quot;landmark&amp;quot;,&amp;quot;note&amp;quot;,&amp;quot;object&amp;quot;,&amp;quot;script&amp;quot;,&amp;quot;shape&amp;quot;,&amp;quot;sound&amp;quot;; &lt;br /&gt;
list maskTypes = MASK_BASE,MASK_OWNER,MASK_GROUP,MASK_EVERYONE,MASK_NEXT; &lt;br /&gt;
list maskNames = &amp;quot;base&amp;quot;,&amp;quot;owner&amp;quot;,&amp;quot;group&amp;quot;,&amp;quot;everyone&amp;quot;,&amp;quot;next&amp;quot;; &lt;br /&gt;
list permTypes = PERM_MOVE,PERM_MODIFY,PERM_COPY,PERM_TRANSFER,PERM_ALL; &lt;br /&gt;
&lt;br /&gt;
say(string what) &lt;br /&gt;
{ &lt;br /&gt;
llWhisper(0,what); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
doPermIter(integer perm, string which) &lt;br /&gt;
{ &lt;br /&gt;
string output=which+&amp;quot;:&amp;quot;; &lt;br /&gt;
integer e; &lt;br /&gt;
for (e=0;e&amp;lt;llGetListLength(permTypes);++e) &lt;br /&gt;
{ &lt;br /&gt;
if(llList2Integer(permTypes,e) &amp;amp; perm) &lt;br /&gt;
output+=&amp;quot;1&amp;quot;; &lt;br /&gt;
else &lt;br /&gt;
output+=&amp;quot;0&amp;quot;; &lt;br /&gt;
} &lt;br /&gt;
say(output); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
doContentIter(string item) &lt;br /&gt;
{ &lt;br /&gt;
integer d; &lt;br /&gt;
for(d=0;d&amp;lt;llGetListLength(maskTypes);++d) &lt;br /&gt;
{ &lt;br /&gt;
integer theperm = llGetInventoryPermMask(item, llList2Integer(maskTypes,d)); &lt;br /&gt;
doPermIter(theperm,item+&amp;quot;:&amp;quot;+llList2String(maskNames,d)); &lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
default &lt;br /&gt;
{ &lt;br /&gt;
touch_start(integer total_number) &lt;br /&gt;
{ &lt;br /&gt;
if(llDetectedKey(0)==llGetOwner()) &lt;br /&gt;
{ &lt;br /&gt;
&lt;br /&gt;
say(&amp;quot;Beginning llObjectPermMark test!&amp;quot;); &lt;br /&gt;
say(&amp;quot;Testing Base Permissions...&amp;quot;); &lt;br /&gt;
string theitem; &lt;br /&gt;
integer c; &lt;br /&gt;
for(c=0;c&amp;lt;llGetListLength(itemTypes);++c) &lt;br /&gt;
{ &lt;br /&gt;
theitem = llList2String(itemTypes,c); &lt;br /&gt;
if(theitem!=&amp;quot;&amp;quot;) &lt;br /&gt;
doContentIter(theitem); &lt;br /&gt;
else &lt;br /&gt;
say(&amp;quot;Item type &amp;quot;+(string)c+&amp;quot; is blank. Skipping test.&amp;quot;); &lt;br /&gt;
} &lt;br /&gt;
} // end if key = owner &lt;br /&gt;
} // end touch &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:QA Portal]]&lt;br /&gt;
[[Category:Quality Assurance]]&lt;/div&gt;</summary>
		<author><name>Milo Linden</name></author>
	</entry>
</feed>