aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llinventory
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/llinventory')
-rw-r--r--linden/indra/llinventory/llcategory.cpp3
-rw-r--r--linden/indra/llinventory/llcategory.h3
-rw-r--r--linden/indra/llinventory/lleconomy.cpp15
-rw-r--r--linden/indra/llinventory/lleconomy.h5
-rw-r--r--linden/indra/llinventory/llinventory.cpp3
-rw-r--r--linden/indra/llinventory/llinventory.h3
-rw-r--r--linden/indra/llinventory/llinventorytype.cpp3
-rw-r--r--linden/indra/llinventory/llinventorytype.h3
-rw-r--r--linden/indra/llinventory/lllandmark.cpp3
-rw-r--r--linden/indra/llinventory/lllandmark.h3
-rw-r--r--linden/indra/llinventory/llnotecard.cpp3
-rw-r--r--linden/indra/llinventory/llnotecard.h3
-rw-r--r--linden/indra/llinventory/llparcel.cpp758
-rw-r--r--linden/indra/llinventory/llparcel.h41
-rw-r--r--linden/indra/llinventory/llparcelflags.h3
-rw-r--r--linden/indra/llinventory/llpermissions.cpp12
-rw-r--r--linden/indra/llinventory/llpermissions.h8
-rw-r--r--linden/indra/llinventory/llpermissionsflags.h3
-rw-r--r--linden/indra/llinventory/llsaleinfo.cpp3
-rw-r--r--linden/indra/llinventory/llsaleinfo.h3
-rw-r--r--linden/indra/llinventory/lltransactionflags.cpp3
-rw-r--r--linden/indra/llinventory/lltransactionflags.h3
-rw-r--r--linden/indra/llinventory/lltransactiontypes.h3
-rw-r--r--linden/indra/llinventory/lluserrelations.cpp3
-rw-r--r--linden/indra/llinventory/lluserrelations.h3
25 files changed, 120 insertions, 776 deletions
diff --git a/linden/indra/llinventory/llcategory.cpp b/linden/indra/llinventory/llcategory.cpp
index 9f58c6f..02c5a8e 100644
--- a/linden/indra/llinventory/llcategory.cpp
+++ b/linden/indra/llinventory/llcategory.cpp
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llcategory.h b/linden/indra/llinventory/llcategory.h
index 1692c96..c8e2dac 100644
--- a/linden/indra/llinventory/llcategory.h
+++ b/linden/indra/llinventory/llcategory.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lleconomy.cpp b/linden/indra/llinventory/lleconomy.cpp
index 5f8342d..4366d1e 100644
--- a/linden/indra/llinventory/lleconomy.cpp
+++ b/linden/indra/llinventory/lleconomy.cpp
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
@@ -73,6 +74,18 @@ void LLGlobalEconomy::processEconomyData(LLMessageSystem *msg, LLGlobalEconomy*
73 econ_data->setPricePublicObjectDelete(i); 74 econ_data->setPricePublicObjectDelete(i);
74 msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceUpload, i); 75 msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceUpload, i);
75 econ_data->setPriceUpload(i); 76 econ_data->setPriceUpload(i);
77#if LL_LINUX
78 // We can optionally fake the received upload price for testing.
79 // Note that the server is within its rights to not obey our fake
80 // price. :)
81 const char* fakeprice_str = getenv("LL_FAKE_UPLOAD_PRICE");
82 if (fakeprice_str)
83 {
84 S32 fakeprice = (S32)atoi(fakeprice_str);
85 llwarns << "LL_FAKE_UPLOAD_PRICE: Faking upload price as L$" << fakeprice << llendl;
86 econ_data->setPriceUpload(fakeprice);
87 }
88#endif
76 msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceRentLight, i); 89 msg->getS32Fast(_PREHASH_Info, _PREHASH_PriceRentLight, i);
77 econ_data->setPriceRentLight(i); 90 econ_data->setPriceRentLight(i);
78 msg->getS32Fast(_PREHASH_Info, _PREHASH_TeleportMinPrice, i); 91 msg->getS32Fast(_PREHASH_Info, _PREHASH_TeleportMinPrice, i);
diff --git a/linden/indra/llinventory/lleconomy.h b/linden/indra/llinventory/lleconomy.h
index 03db99b..2e2adc4 100644
--- a/linden/indra/llinventory/lleconomy.h
+++ b/linden/indra/llinventory/lleconomy.h
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
@@ -47,6 +48,8 @@ public:
47 // become a singleton and this pattern will more easily disambiguate them. 48 // become a singleton and this pattern will more easily disambiguate them.
48 typedef LLSingleton<LLGlobalEconomy> Singleton; 49 typedef LLSingleton<LLGlobalEconomy> Singleton;
49 50
51 void initSingleton() { }
52
50 virtual void print(); 53 virtual void print();
51 54
52 static void processEconomyData(LLMessageSystem *msg, LLGlobalEconomy* econ_data); 55 static void processEconomyData(LLMessageSystem *msg, LLGlobalEconomy* econ_data);
diff --git a/linden/indra/llinventory/llinventory.cpp b/linden/indra/llinventory/llinventory.cpp
index 2d86256..b1cfd68 100644
--- a/linden/indra/llinventory/llinventory.cpp
+++ b/linden/indra/llinventory/llinventory.cpp
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llinventory.h b/linden/indra/llinventory/llinventory.h
index 578d331..937e12d 100644
--- a/linden/indra/llinventory/llinventory.h
+++ b/linden/indra/llinventory/llinventory.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llinventorytype.cpp b/linden/indra/llinventory/llinventorytype.cpp
index 585532c..a161a0e 100644
--- a/linden/indra/llinventory/llinventorytype.cpp
+++ b/linden/indra/llinventory/llinventorytype.cpp
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llinventorytype.h b/linden/indra/llinventory/llinventorytype.h
index 51747d6..d3effc0 100644
--- a/linden/indra/llinventory/llinventorytype.h
+++ b/linden/indra/llinventory/llinventorytype.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lllandmark.cpp b/linden/indra/llinventory/lllandmark.cpp
index 234b087..13a63bc 100644
--- a/linden/indra/llinventory/lllandmark.cpp
+++ b/linden/indra/llinventory/lllandmark.cpp
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lllandmark.h b/linden/indra/llinventory/lllandmark.h
index 4bce527..cb0c11a 100644
--- a/linden/indra/llinventory/lllandmark.h
+++ b/linden/indra/llinventory/lllandmark.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llnotecard.cpp b/linden/indra/llinventory/llnotecard.cpp
index 0c33d23..9e7e043 100644
--- a/linden/indra/llinventory/llnotecard.cpp
+++ b/linden/indra/llinventory/llnotecard.cpp
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llnotecard.h b/linden/indra/llinventory/llnotecard.h
index aa4e2bd..b903f1f 100644
--- a/linden/indra/llinventory/llnotecard.h
+++ b/linden/indra/llinventory/llnotecard.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llparcel.cpp b/linden/indra/llinventory/llparcel.cpp
index d2f3a87..9c27476 100644
--- a/linden/indra/llinventory/llparcel.cpp
+++ b/linden/indra/llinventory/llparcel.cpp
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
@@ -57,8 +58,11 @@ static const std::string PARCEL_OWNERSHIP_STATUS_STRING[LLParcel::OS_COUNT+1] =
57}; 58};
58 59
59// NOTE: Adding parcel categories also requires updating: 60// NOTE: Adding parcel categories also requires updating:
60// * newview/app_settings/floater_directory.xml category combobox 61// * floater_directory.xml category combobox
62// * floater_about_land.xml category combobox
61// * Web site "create event" tools 63// * Web site "create event" tools
64// DO NOT DELETE ITEMS FROM THIS LIST WITHOUT DEEPLY UNDERSTANDING WHAT YOU'RE DOING.
65//
62static const std::string PARCEL_CATEGORY_STRING[LLParcel::C_COUNT] = 66static const std::string PARCEL_CATEGORY_STRING[LLParcel::C_COUNT] =
63{ 67{
64 "none", 68 "none",
@@ -109,37 +113,11 @@ static const std::string PARCEL_ACTION_STRING[LLParcel::A_COUNT + 1] =
109 "unknown" 113 "unknown"
110}; 114};
111 115
112// Timeouts for parcels
113// default is 21 days * 24h/d * 60m/h * 60s/m *1000000 usec/s = 1814400000000
114const U64 DEFAULT_USEC_CONVERSION_TIMEOUT = U64L(1814400000000);
115// ***** TESTING is 10 minutes
116//const U64 DEFAULT_USEC_CONVERSION_TIMEOUT = U64L(600000000);
117 116
118// group is 60 days * 24h/d * 60m/h * 60s/m *1000000 usec/s = 5184000000000
119const U64 GROUP_USEC_CONVERSION_TIMEOUT = U64L(5184000000000);
120// ***** TESTING is 10 minutes
121//const U64 GROUP_USEC_CONVERSION_TIMEOUT = U64L(600000000);
122 117
123// default sale timeout is 2 days -> 172800000000
124const U64 DEFAULT_USEC_SALE_TIMEOUT = U64L(172800000000);
125// ***** TESTING is 10 minutes
126//const U64 DEFAULT_USEC_SALE_TIMEOUT = U64L(600000000);
127
128// more grace period extensions.
129const U64 SEVEN_DAYS_IN_USEC = U64L(604800000000);
130
131// if more than 100,000s before sale revert, and no extra extension
132// has been given, go ahead and extend it more. That's about 1.2 days.
133const S32 EXTEND_GRACE_IF_MORE_THAN_SEC = 100000;
134
135
136const std::string& ownership_status_to_string(LLParcel::EOwnershipStatus status);
137LLParcel::EOwnershipStatus ownership_string_to_status(const std::string& s);
138//const char* revert_action_to_string(LLParcel::ESaleTimerExpireAction action); 118//const char* revert_action_to_string(LLParcel::ESaleTimerExpireAction action);
139//LLParcel::ESaleTimerExpireAction revert_string_to_action(const char* s); 119//LLParcel::ESaleTimerExpireAction revert_string_to_action(const char* s);
140const std::string& category_to_string(LLParcel::ECategory category);
141const std::string& category_to_ui_string(LLParcel::ECategory category); 120const std::string& category_to_ui_string(LLParcel::ECategory category);
142LLParcel::ECategory category_string_to_category(const std::string& s);
143LLParcel::ECategory category_ui_string_to_category(const std::string& s); 121LLParcel::ECategory category_ui_string_to_category(const std::string& s);
144 122
145LLParcel::LLParcel() 123LLParcel::LLParcel()
@@ -277,7 +255,7 @@ void LLParcel::setName(const std::string& name)
277 // The escaping here must match the escaping in the database 255 // The escaping here must match the escaping in the database
278 // abstraction layer. 256 // abstraction layer.
279 mName = name; 257 mName = name;
280 LLStringFn::replace_nonprintable(mName, LL_UNKNOWN_CHAR); 258 LLStringFn::replace_nonprintable_in_ascii(mName, LL_UNKNOWN_CHAR);
281} 259}
282 260
283void LLParcel::setDesc(const std::string& desc) 261void LLParcel::setDesc(const std::string& desc)
@@ -295,7 +273,7 @@ void LLParcel::setMusicURL(const std::string& url)
295 // abstraction layer. 273 // abstraction layer.
296 // This should really filter the url in some way. Other than 274 // This should really filter the url in some way. Other than
297 // simply requiring non-printable. 275 // simply requiring non-printable.
298 LLStringFn::replace_nonprintable(mMusicURL, LL_UNKNOWN_CHAR); 276 LLStringFn::replace_nonprintable_in_ascii(mMusicURL, LL_UNKNOWN_CHAR);
299} 277}
300 278
301void LLParcel::setMediaURL(const std::string& url) 279void LLParcel::setMediaURL(const std::string& url)
@@ -305,7 +283,7 @@ void LLParcel::setMediaURL(const std::string& url)
305 // abstraction layer if it's ever added. 283 // abstraction layer if it's ever added.
306 // This should really filter the url in some way. Other than 284 // This should really filter the url in some way. Other than
307 // simply requiring non-printable. 285 // simply requiring non-printable.
308 LLStringFn::replace_nonprintable(mMediaURL, LL_UNKNOWN_CHAR); 286 LLStringFn::replace_nonprintable_in_ascii(mMediaURL, LL_UNKNOWN_CHAR);
309} 287}
310 288
311void LLParcel::setMediaDesc(const std::string& desc) 289void LLParcel::setMediaDesc(const std::string& desc)
@@ -547,500 +525,6 @@ void LLParcel::setDiscountRate(F32 rate)
547// File input and output 525// File input and output
548//----------------------------------------------------------- 526//-----------------------------------------------------------
549 527
550
551// WARNING: Area will be wrong until you calculate it.
552BOOL LLParcel::importStream(std::istream& input_stream)
553{
554 U32 setting;
555 S32 secs_until_revert = 0;
556
557 skip_to_end_of_next_keyword("{", input_stream);
558 if (!input_stream.good())
559 {
560 llwarns << "LLParcel::importStream() - bad input_stream" << llendl;
561 return FALSE;
562 }
563
564 while (input_stream.good())
565 {
566 skip_comments_and_emptyspace(input_stream);
567 std::string line, keyword, value;
568 get_line(line, input_stream, MAX_STRING);
569 get_keyword_and_value(keyword, value, line);
570
571 if ("}" == keyword)
572 {
573 break;
574 }
575 else if ("parcel_id" == keyword)
576 {
577 mID.set(value);
578 }
579 else if ("status" == keyword)
580 {
581 mStatus = ownership_string_to_status(value);
582 }
583 else if ("category" == keyword)
584 {
585 mCategory = category_string_to_category(value);
586 }
587 else if ("local_id" == keyword)
588 {
589 LLStringUtil::convertToS32(value, mLocalID);
590 }
591 else if ("name" == keyword)
592 {
593 setName( value );
594 }
595 else if ("desc" == keyword)
596 {
597 setDesc( value );
598 }
599 else if ("music_url" == keyword)
600 {
601 setMusicURL( value );
602 }
603 else if ("media_url" == keyword)
604 {
605 setMediaURL( value );
606 }
607 else if ("media_desc" == keyword)
608 {
609 setMediaDesc( value );
610 }
611 else if ("media_type" == keyword)
612 {
613 setMediaType( value );
614 }
615 else if ("media_width" == keyword)
616 {
617 S32 width;
618 LLStringUtil::convertToS32(value, width);
619 setMediaWidth( width );
620 }
621 else if ("media_height" == keyword)
622 {
623 S32 height;
624 LLStringUtil::convertToS32(value, height);
625 setMediaHeight( height );
626 }
627 else if ("media_id" == keyword)
628 {
629 mMediaID.set( value );
630 }
631 else if ("media_auto_scale" == keyword)
632 {
633 LLStringUtil::convertToU8(value, mMediaAutoScale);
634 }
635 else if ("media_loop" == keyword)
636 {
637 LLStringUtil::convertToU8(value, mMediaLoop);
638 }
639 else if ("obscure_media" == keyword)
640 {
641 LLStringUtil::convertToU8(value, mObscureMedia);
642 }
643 else if ("obscure_music" == keyword)
644 {
645 LLStringUtil::convertToU8(value, mObscureMusic);
646 }
647 else if ("owner_id" == keyword)
648 {
649 mOwnerID.set( value );
650 }
651 else if ("group_owned" == keyword)
652 {
653 LLStringUtil::convertToBOOL(value, mGroupOwned);
654 }
655 else if ("clean_other_time" == keyword)
656 {
657 S32 time;
658 LLStringUtil::convertToS32(value, time);
659 setCleanOtherTime(time);
660 }
661 else if ("auth_buyer_id" == keyword)
662 {
663 mAuthBuyerID.set(value);
664 }
665 else if ("snapshot_id" == keyword)
666 {
667 mSnapshotID.set(value);
668 }
669 else if ("user_location" == keyword)
670 {
671 sscanf(value.c_str(), "%f %f %f",
672 &mUserLocation.mV[VX],
673 &mUserLocation.mV[VY],
674 &mUserLocation.mV[VZ]);
675 }
676 else if ("user_look_at" == keyword)
677 {
678 sscanf(value.c_str(), "%f %f %f",
679 &mUserLookAt.mV[VX],
680 &mUserLookAt.mV[VY],
681 &mUserLookAt.mV[VZ]);
682 }
683 else if ("landing_type" == keyword)
684 {
685 S32 landing_type = 0;
686 LLStringUtil::convertToS32(value, landing_type);
687 mLandingType = (ELandingType) landing_type;
688 }
689 else if ("join_neighbors" == keyword)
690 {
691 llinfos << "found deprecated keyword join_neighbors" << llendl;
692 }
693 else if ("revert_sale" == keyword)
694 {
695 LLStringUtil::convertToS32(value, secs_until_revert);
696 if (secs_until_revert > 0)
697 {
698 mSaleTimerExpires.start();
699 mSaleTimerExpires.setTimerExpirySec((F32)secs_until_revert);
700 }
701 }
702 else if("extended_grace" == keyword)
703 {
704 LLStringUtil::convertToS32(value, mGraceExtension);
705 }
706 else if ("user_list_type" == keyword)
707 {
708 // deprecated
709 }
710 else if("auction_id" == keyword)
711 {
712 LLStringUtil::convertToU32(value, mAuctionID);
713 }
714 else if ("allow_modify" == keyword)
715 {
716 LLStringUtil::convertToU32(value, setting);
717 setParcelFlag(PF_CREATE_OBJECTS, setting);
718 }
719 else if ("allow_group_modify" == keyword)
720 {
721 LLStringUtil::convertToU32(value, setting);
722 setParcelFlag(PF_CREATE_GROUP_OBJECTS, setting);
723 }
724 else if ("allow_all_object_entry" == keyword)
725 {
726 LLStringUtil::convertToU32(value, setting);
727 setParcelFlag(PF_ALLOW_ALL_OBJECT_ENTRY, setting);
728 }
729 else if ("allow_group_object_entry" == keyword)
730 {
731 LLStringUtil::convertToU32(value, setting);
732 setParcelFlag(PF_ALLOW_GROUP_OBJECT_ENTRY, setting);
733 }
734 else if ("allow_deed_to_group" == keyword)
735 {
736 LLStringUtil::convertToU32(value, setting);
737 setParcelFlag(PF_ALLOW_DEED_TO_GROUP, setting);
738 }
739 else if("contribute_with_deed" == keyword)
740 {
741 LLStringUtil::convertToU32(value, setting);
742 setParcelFlag(PF_CONTRIBUTE_WITH_DEED, setting);
743 }
744 else if ("allow_terraform" == keyword)
745 {
746 LLStringUtil::convertToU32(value, setting);
747 setParcelFlag(PF_ALLOW_TERRAFORM, setting);
748 }
749 else if ("allow_damage" == keyword)
750 {
751 LLStringUtil::convertToU32(value, setting);
752 setParcelFlag(PF_ALLOW_DAMAGE, setting);
753 }
754 else if ("allow_fly" == keyword)
755 {
756 LLStringUtil::convertToU32(value, setting);
757 setParcelFlag(PF_ALLOW_FLY, setting);
758 }
759 else if ("allow_landmark" == keyword)
760 {
761 LLStringUtil::convertToU32(value, setting);
762 setParcelFlag(PF_ALLOW_LANDMARK, setting);
763 }
764 else if ("sound_local" == keyword)
765 {
766 LLStringUtil::convertToU32(value, setting);
767 setParcelFlag(PF_SOUND_LOCAL, setting);
768 }
769 else if ("allow_group_scripts" == keyword)
770 {
771 LLStringUtil::convertToU32(value, setting);
772 setParcelFlag(PF_ALLOW_GROUP_SCRIPTS, setting);
773 }
774 else if ("allow_voice_chat" == keyword)
775 {
776 LLStringUtil::convertToU32(value, setting);
777 setParcelFlag(PF_ALLOW_VOICE_CHAT, setting);
778 }
779 else if ("use_estate_voice_chan" == keyword)
780 {
781 LLStringUtil::convertToU32(value, setting);
782 setParcelFlag(PF_USE_ESTATE_VOICE_CHAN, setting);
783 }
784 else if ("allow_scripts" == keyword)
785 {
786 LLStringUtil::convertToU32(value, setting);
787 setParcelFlag(PF_ALLOW_OTHER_SCRIPTS, setting);
788 }
789 else if ("for_sale" == keyword)
790 {
791 LLStringUtil::convertToU32(value, setting);
792 setParcelFlag(PF_FOR_SALE, setting);
793 }
794 else if ("sell_w_objects" == keyword)
795 {
796 LLStringUtil::convertToU32(value, setting);
797 setParcelFlag(PF_SELL_PARCEL_OBJECTS, setting);
798 }
799 else if ("use_pass_list" == keyword)
800 {
801 LLStringUtil::convertToU32(value, setting);
802 setParcelFlag(PF_USE_PASS_LIST, setting);
803 }
804 else if ("show_directory" == keyword)
805 {
806 LLStringUtil::convertToU32(value, setting);
807 setParcelFlag(PF_SHOW_DIRECTORY, setting);
808 }
809 else if ("allow_publish" == keyword)
810 {
811 LLStringUtil::convertToU32(value, setting);
812 setParcelFlag(PF_ALLOW_PUBLISH, setting);
813 }
814 else if ("mature_publish" == keyword)
815 {
816 LLStringUtil::convertToU32(value, setting);
817 setParcelFlag(PF_MATURE_PUBLISH, setting);
818 }
819 else if ("claim_date" == keyword)
820 {
821 // BUG: This will fail when time rolls over in 2038.
822 S32 time;
823 LLStringUtil::convertToS32(value, time);
824 mClaimDate = time;
825 }
826 else if ("claim_price" == keyword)
827 {
828 LLStringUtil::convertToS32(value, mClaimPricePerMeter);
829 }
830 else if ("rent_price" == keyword)
831 {
832 LLStringUtil::convertToS32(value, mRentPricePerMeter);
833 }
834 else if ("discount_rate" == keyword)
835 {
836 LLStringUtil::convertToF32(value, mDiscountRate);
837 }
838 else if ("draw_distance" == keyword)
839 {
840 LLStringUtil::convertToF32(value, mDrawDistance);
841 }
842 else if ("sale_price" == keyword)
843 {
844 LLStringUtil::convertToS32(value, mSalePrice);
845 }
846 else if ("pass_price" == keyword)
847 {
848 LLStringUtil::convertToS32(value, mPassPrice);
849 }
850 else if ("pass_hours" == keyword)
851 {
852 LLStringUtil::convertToF32(value, mPassHours);
853 }
854 else if ("box" == keyword)
855 {
856 // deprecated
857 }
858 else if ("aabb_min" == keyword)
859 {
860 sscanf(value.c_str(), "%f %f %f",
861 &mAABBMin.mV[VX], &mAABBMin.mV[VY], &mAABBMin.mV[VZ]);
862 }
863 else if ("use_access_group" == keyword)
864 {
865 LLStringUtil::convertToU32(value, setting);
866 setParcelFlag(PF_USE_ACCESS_GROUP, setting);
867 }
868 else if ("use_access_list" == keyword)
869 {
870 LLStringUtil::convertToU32(value, setting);
871 setParcelFlag(PF_USE_ACCESS_LIST, setting);
872 }
873 else if ("use_ban_list" == keyword)
874 {
875 LLStringUtil::convertToU32(value, setting);
876 setParcelFlag(PF_USE_BAN_LIST, setting);
877 }
878 else if ("group_name" == keyword)
879 {
880 llinfos << "found deprecated keyword group_name" << llendl;
881 }
882 else if ("group_id" == keyword)
883 {
884 mGroupID.set( value );
885 }
886 // TODO: DEPRECATED FLAG
887 // Flag removed from simstate files in 1.11.1
888 // Remove at some point where we have guarenteed this flag
889 // no longer exists anywhere in simstate files.
890 else if ("require_identified" == keyword)
891 {
892 // LLStringUtil::convertToU32(value, setting);
893 // setParcelFlag(PF_DENY_ANONYMOUS, setting);
894 }
895 // TODO: DEPRECATED FLAG
896 // Flag removed from simstate files in 1.11.1
897 // Remove at some point where we have guarenteed this flag
898 // no longer exists anywhere in simstate files.
899 else if ("require_transacted" == keyword)
900 {
901 // LLStringUtil::convertToU32(value, setting);
902 // setParcelFlag(PF_DENY_ANONYMOUS, setting);
903 // setParcelFlag(PF_DENY_IDENTIFIED, setting);
904 }
905 else if ("restrict_pushobject" == keyword)
906 {
907 LLStringUtil::convertToU32(value, setting);
908 setParcelFlag(PF_RESTRICT_PUSHOBJECT, setting);
909 }
910 else if ("deny_anonymous" == keyword)
911 {
912 LLStringUtil::convertToU32(value, setting);
913 setParcelFlag(PF_DENY_ANONYMOUS, setting);
914 }
915 else if ("deny_identified" == keyword)
916 {
917// LLStringUtil::convertToU32(value, setting);
918// setParcelFlag(PF_DENY_IDENTIFIED, setting);
919 }
920 else if ("deny_transacted" == keyword)
921 {
922// LLStringUtil::convertToU32(value, setting);
923// setParcelFlag(PF_DENY_TRANSACTED, setting);
924 }
925 else if ("deny_age_unverified" == keyword)
926 {
927 LLStringUtil::convertToU32(value, setting);
928 setParcelFlag(PF_DENY_AGEUNVERIFIED, setting);
929 }
930 else if ("access_list" == keyword)
931 {
932 S32 entry_count = 0;
933 LLStringUtil::convertToS32(value, entry_count);
934 for (S32 i = 0; i < entry_count; i++)
935 {
936 LLAccessEntry entry;
937 if (importAccessEntry(input_stream, &entry))
938 {
939 mAccessList[entry.mID] = entry;
940 }
941 }
942 }
943 else if ("ban_list" == keyword)
944 {
945 S32 entry_count = 0;
946 LLStringUtil::convertToS32(value, entry_count);
947 for (S32 i = 0; i < entry_count; i++)
948 {
949 LLAccessEntry entry;
950 if (importAccessEntry(input_stream, &entry))
951 {
952 mBanList[entry.mID] = entry;
953 }
954 }
955 }
956 else if ("renter_list" == keyword)
957 {
958 /*
959 S32 entry_count = 0;
960 LLStringUtil::convertToS32(value, entry_count);
961 for (S32 i = 0; i < entry_count; i++)
962 {
963 LLAccessEntry entry;
964 if (importAccessEntry(input_stream, &entry))
965 {
966 mRenterList.put(entry);
967 }
968 }*/
969 }
970 else if ("pass_list" == keyword)
971 {
972 // legacy - put into access list
973 S32 entry_count = 0;
974 LLStringUtil::convertToS32(value, entry_count);
975 for (S32 i = 0; i < entry_count; i++)
976 {
977 LLAccessEntry entry;
978 if (importAccessEntry(input_stream, &entry))
979 {
980 mAccessList[entry.mID] = entry;
981 }
982 }
983 }
984
985 else
986 {
987 llwarns << "Unknown keyword in parcel section: <"
988 << keyword << ">" << llendl;
989 }
990 }
991
992 // this code block detects if we have loaded a 1.1 simstate file,
993 // and follows the conversion rules specified in
994 // design_docs/land/pay_for_parcel.txt.
995 F32 time_to_expire = 0.0f;
996 if(mID.isNull())
997 {
998 mID.generate();
999 mStatus = OS_LEASE_PENDING;
1000 //mBuyerID = mOwnerID;
1001 if(getIsGroupOwned())
1002 {
1003 time_to_expire += GROUP_USEC_CONVERSION_TIMEOUT / SEC_TO_MICROSEC;
1004 }
1005 else
1006 {
1007 time_to_expire += DEFAULT_USEC_CONVERSION_TIMEOUT / SEC_TO_MICROSEC;
1008 }
1009 //mExpireAction = STEA_PUBLIC;
1010 mRecordTransaction = TRUE;
1011 }
1012
1013 // this code block deals with giving an extension to pending
1014 // parcels to the midday of 2004-01-19 if they were originally set
1015 // for some time on 2004-01-12.
1016 if((0 == mGraceExtension)
1017 && (EXTEND_GRACE_IF_MORE_THAN_SEC < secs_until_revert))
1018 {
1019 const S32 NEW_CONVERSION_DATE = 1074538800; // 2004-01-19T11:00:00
1020 time_t now = time(NULL); // now in epoch
1021 secs_until_revert = (S32)(NEW_CONVERSION_DATE - now);
1022 time_to_expire = (F32)secs_until_revert;
1023 mGraceExtension = 1;
1024 }
1025
1026 // This code block adds yet another week to the deadline. :(
1027 if(1 == mGraceExtension)
1028 {
1029 time_to_expire += SEVEN_DAYS_IN_USEC / SEC_TO_MICROSEC;
1030 mGraceExtension = 2;
1031 }
1032
1033 if (time_to_expire > 0)
1034 {
1035 mSaleTimerExpires.setTimerExpirySec(time_to_expire);
1036 mSaleTimerExpires.start();
1037 }
1038
1039 // successful import
1040 return TRUE;
1041}
1042
1043
1044BOOL LLParcel::importAccessEntry(std::istream& input_stream, LLAccessEntry* entry) 528BOOL LLParcel::importAccessEntry(std::istream& input_stream, LLAccessEntry* entry)
1045{ 529{
1046 skip_to_end_of_next_keyword("{", input_stream); 530 skip_to_end_of_next_keyword("{", input_stream);
@@ -1084,230 +568,6 @@ BOOL LLParcel::importAccessEntry(std::istream& input_stream, LLAccessEntry* entr
1084 return input_stream.good(); 568 return input_stream.good();
1085} 569}
1086 570
1087BOOL LLParcel::exportStream(std::ostream& output_stream)
1088{
1089 S32 setting;
1090 std::string id_string;
1091
1092 std::ios::fmtflags old_flags = output_stream.flags();
1093 output_stream.setf(std::ios::showpoint);
1094 output_stream << "\t{\n";
1095
1096 mID.toString(id_string);
1097 output_stream << "\t\t parcel_id " << id_string << "\n";
1098 output_stream << "\t\t status " << ownership_status_to_string(mStatus) << "\n";
1099 output_stream << "\t\t category " << category_to_string(mCategory) << "\n";
1100
1101 output_stream << "\t\t local_id " << mLocalID << "\n";
1102
1103 const char* name = (mName.empty() ? "" : mName.c_str() );
1104 output_stream << "\t\t name " << name << "\n";
1105
1106 const char* desc = (mDesc.empty() ? "" : mDesc.c_str() );
1107 output_stream << "\t\t desc " << desc << "\n";
1108
1109 const char* music_url = (mMusicURL.empty() ? "" : mMusicURL.c_str() );
1110 output_stream << "\t\t music_url " << music_url << "\n";
1111
1112 const char* media_url = (mMediaURL.empty() ? "" : mMediaURL.c_str() );
1113 output_stream << "\t\t media_url " << media_url << "\n";
1114
1115 const char* media_type = (mMediaType.empty() ? "" : mMediaType.c_str() );
1116 output_stream << "\t\t media_type " << media_type << "\n";
1117
1118 const char* media_desc = (mMediaDesc.empty() ? "" : mMediaDesc.c_str() );
1119 output_stream << "\t\t media_desc " << media_desc << "\n";
1120
1121 output_stream << "\t\t media_auto_scale " << (mMediaAutoScale ? 1 : 0) << "\n";
1122 output_stream << "\t\t media_loop " << (mMediaLoop ? 1 : 0) << "\n";
1123 output_stream << "\t\t obscure_media " << (mObscureMedia ? 1 : 0) << "\n";
1124 output_stream << "\t\t obscure_music " << (mObscureMusic ? 1 : 0) << "\n";
1125
1126 mMediaID.toString(id_string);
1127 output_stream << "\t\t media_id " << id_string << "\n";
1128
1129 output_stream << "\t\t media_width " << mMediaWidth << "\n";
1130 output_stream << "\t\t media_height " << mMediaHeight << "\n";
1131
1132 mOwnerID.toString(id_string);
1133 output_stream << "\t\t owner_id " << id_string << "\n";
1134 output_stream << "\t\t group_owned " << (mGroupOwned ? 1 : 0) << "\n";
1135 output_stream << "\t\t clean_other_time " << getCleanOtherTime() << "\n";
1136
1137 if(!mAuthBuyerID.isNull())
1138 {
1139 mAuthBuyerID.toString(id_string);
1140 output_stream << "\t\t auth_buyer_id " << id_string << "\n";
1141 }
1142 if (!mSnapshotID.isNull())
1143 {
1144 mSnapshotID.toString(id_string);
1145 output_stream << "\t\t snapshot_id " << id_string << "\n";
1146 }
1147 if (!mUserLocation.isExactlyZero())
1148 {
1149 output_stream << "\t\t user_location "
1150 << (F64)mUserLocation.mV[VX]
1151 << " " << (F64)mUserLocation.mV[VY]
1152 << " " << (F64)mUserLocation.mV[VZ] << "\n";
1153 output_stream << "\t\t user_look_at "
1154 << (F64)mUserLookAt.mV[VX]
1155 << " " << (F64)mUserLookAt.mV[VY]
1156 << " " << (F64)mUserLookAt.mV[VZ] << "\n";
1157 }
1158 output_stream << "\t\t landing_type " << mLandingType << "\n";
1159 //if(mJoinNeighbors)
1160 //{
1161 // output_stream << "\t\t join_neighbors " << mJoinNeighbors << "\n";
1162 //}
1163 if(mSaleTimerExpires.getStarted())
1164 {
1165 S32 dt_sec = (S32) mSaleTimerExpires.getRemainingTimeF32()+60; // Add a minute to prevent race conditions
1166 output_stream << "\t\t revert_sale " << dt_sec << "\n";
1167 //output_stream << "\t\t revert_action " << revert_action_to_string(mExpireAction) << "\n";
1168 output_stream << "\t\t extended_grace " << mGraceExtension << "\n";
1169 }
1170
1171 if(0 != mAuctionID)
1172 {
1173 output_stream << "\t\t auction_id " << mAuctionID << "\n";
1174 }
1175
1176 output_stream << "\t\t allow_modify " << getAllowModify() << "\n";
1177 output_stream << "\t\t allow_group_modify " << getAllowGroupModify() << "\n";
1178 output_stream << "\t\t allow_all_object_entry " << getAllowAllObjectEntry() << "\n";
1179 output_stream << "\t\t allow_group_object_entry " << getAllowGroupObjectEntry() << "\n";
1180 output_stream << "\t\t allow_terraform " << getAllowTerraform() << "\n";
1181 output_stream << "\t\t allow_deed_to_group " << getAllowDeedToGroup() << "\n";
1182 output_stream << "\t\t contribute_with_deed " << getContributeWithDeed() << "\n";
1183 output_stream << "\t\t allow_damage " << getAllowDamage() << "\n";
1184 output_stream << "\t\t claim_date " << (S32)mClaimDate << "\n";
1185 output_stream << "\t\t claim_price " << mClaimPricePerMeter << "\n";
1186 output_stream << "\t\t rent_price " << mRentPricePerMeter << "\n";
1187 output_stream << "\t\t discount_rate " << mDiscountRate << "\n";
1188 output_stream << "\t\t allow_fly " << (getAllowFly() ? 1 : 0) << "\n";
1189 output_stream << "\t\t allow_landmark " << (getAllowLandmark() ? 1 : 0) << "\n";
1190 output_stream << "\t\t sound_local " << (getSoundLocal() ? 1 : 0) << "\n";
1191 output_stream << "\t\t allow_scripts " << (getAllowOtherScripts() ? 1 : 0) << "\n";
1192 output_stream << "\t\t allow_group_scripts " << (getAllowGroupScripts() ? 1 : 0) << "\n";
1193 output_stream << "\t\t use_estate_voice_chan " << (getParcelFlagUseEstateVoiceChannel() ? 1 : 0) << "\n";
1194
1195 output_stream << "\t\t allow_voice_chat " << (getParcelFlagAllowVoice() ? 1 : 0) << "\n";
1196 output_stream << "\t\t use_estate_voice_chan " << (getParcelFlagUseEstateVoiceChannel() ? 1 : 0) << "\n";
1197 output_stream << "\t\t for_sale " << (getForSale() ? 1 : 0) << "\n";
1198 output_stream << "\t\t sell_w_objects " << (getSellWithObjects() ? 1 : 0) << "\n";
1199 output_stream << "\t\t draw_distance " << mDrawDistance << "\n";
1200 output_stream << "\t\t sale_price " << mSalePrice << "\n";
1201
1202 setting = (getParcelFlag(PF_USE_ACCESS_GROUP) ? 1 : 0);
1203 output_stream << "\t\t use_access_group " << setting << "\n";
1204
1205 setting = (getParcelFlag(PF_USE_ACCESS_LIST) ? 1 : 0);
1206 output_stream << "\t\t use_access_list " << setting << "\n";
1207
1208 setting = (getParcelFlag(PF_USE_BAN_LIST) ? 1 : 0);
1209 output_stream << "\t\t use_ban_list " << setting << "\n";
1210
1211 mGroupID.toString(id_string);
1212 output_stream << "\t\t group_id " << id_string << "\n";
1213
1214 //const char* group_name
1215 // = (mGroupName.isEmpty() ? "" : mGroupName.c_str() );
1216 //output_stream << "\t\t group_name " << group_name << "\n";
1217
1218 setting = (getParcelFlag(PF_USE_PASS_LIST) ? 1 : 0);
1219 output_stream << "\t\t use_pass_list " << setting << "\n";
1220
1221 output_stream << "\t\t pass_price " << mPassPrice << "\n";
1222 output_stream << "\t\t pass_hours " << mPassHours << "\n";
1223
1224 setting = (getParcelFlag(PF_SHOW_DIRECTORY) ? 1 : 0);
1225 output_stream << "\t\t show_directory " << setting << "\n";
1226
1227 setting = (getParcelFlag(PF_ALLOW_PUBLISH) ? 1 : 0);
1228 output_stream << "\t\t allow_publish " << setting << "\n";
1229
1230 setting = (getParcelFlag(PF_MATURE_PUBLISH) ? 1 : 0);
1231 output_stream << "\t\t mature_publish " << setting << "\n";
1232
1233 setting = (getParcelFlag(PF_DENY_ANONYMOUS) ? 1 : 0);
1234 output_stream << "\t\t deny_anonymous " << setting << "\n";
1235
1236// setting = (getParcelFlag(PF_DENY_IDENTIFIED) ? 1 : 0);
1237// output_stream << "\t\t deny_identified " << setting << "\n";
1238
1239// setting = (getParcelFlag(PF_DENY_TRANSACTED) ? 1 : 0);
1240// output_stream << "\t\t deny_transacted " << setting << "\n";
1241
1242 setting = (getParcelFlag(PF_DENY_AGEUNVERIFIED) ? 1 : 0);
1243 output_stream << "\t\t deny_age_unverified " << setting << "\n";
1244
1245 setting = (getParcelFlag(PF_RESTRICT_PUSHOBJECT) ? 1 : 0);
1246 output_stream << "\t\t restrict_pushobject " << setting << "\n";
1247
1248 output_stream << "\t\t aabb_min "
1249 << mAABBMin.mV[VX]
1250 << " " << mAABBMin.mV[VY]
1251 << " " << mAABBMin.mV[VZ] << "\n";
1252
1253 if (!mAccessList.empty())
1254 {
1255 output_stream << "\t\t access_list " << mAccessList.size() << "\n";
1256 access_map_const_iterator cit = mAccessList.begin();
1257 access_map_const_iterator end = mAccessList.end();
1258
1259 for ( ; cit != end; ++cit)
1260 {
1261 output_stream << "\t\t{\n";
1262 const LLAccessEntry& entry = (*cit).second;
1263 entry.mID.toString(id_string);
1264 output_stream << "\t\t\tid " << id_string << "\n";
1265 output_stream << "\t\t\ttime " << entry.mTime << "\n";
1266 output_stream << "\t\t\tflags " << entry.mFlags << "\n";
1267 output_stream << "\t\t}\n";
1268 }
1269 }
1270
1271 if (!mBanList.empty())
1272 {
1273 output_stream << "\t\t ban_list " << mBanList.size() << "\n";
1274 access_map_const_iterator cit = mBanList.begin();
1275 access_map_const_iterator end = mBanList.end();
1276
1277 for ( ; cit != end; ++cit)
1278 {
1279 output_stream << "\t\t{\n";
1280 const LLAccessEntry& entry = (*cit).second;
1281 entry.mID.toString(id_string);
1282 output_stream << "\t\t\tid " << id_string << "\n";
1283 output_stream << "\t\t\ttime " << entry.mTime << "\n";
1284 output_stream << "\t\t\tflags " << entry.mFlags << "\n";
1285 output_stream << "\t\t}\n";
1286 }
1287 }
1288
1289 /*if (mRenterList.count() > 0)
1290 {
1291 output_stream << "\t\t renter_list " << mRenterList.count() << "\n";
1292 for (i = 0; i < mRenterList.count(); i++)
1293 {
1294 output_stream << "\t\t{\n";
1295 const LLAccessEntry& entry = mRenterList.get(i);
1296 entry.mID.toString(id_string);
1297 output_stream << "\t\t\tid " << id_string << "\n";
1298 output_stream << "\t\t\ttime " << entry.mTime << "\n";
1299 output_stream << "\t\t\tflags " << entry.mFlags << "\n";
1300 output_stream << "\t\t}\n";
1301 }
1302 }*/
1303
1304 output_stream << "\t}\n";
1305 output_stream.flags(old_flags);
1306
1307 return TRUE;
1308}
1309
1310
1311// Assumes we are in a block "ParcelData" 571// Assumes we are in a block "ParcelData"
1312void LLParcel::packMessage(LLMessageSystem* msg) 572void LLParcel::packMessage(LLMessageSystem* msg)
1313{ 573{
diff --git a/linden/indra/llinventory/llparcel.h b/linden/indra/llinventory/llparcel.h
index 90d0d04..6f5ae87 100644
--- a/linden/indra/llinventory/llparcel.h
+++ b/linden/indra/llinventory/llparcel.h
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
@@ -102,6 +103,32 @@ const U32 RT_OTHER = 0x1 << 3;
102const U32 RT_LIST = 0x1 << 4; 103const U32 RT_LIST = 0x1 << 4;
103const U32 RT_SELL = 0x1 << 5; 104const U32 RT_SELL = 0x1 << 5;
104 105
106
107// Timeouts for parcels
108// default is 21 days * 24h/d * 60m/h * 60s/m *1000000 usec/s = 1814400000000
109const U64 DEFAULT_USEC_CONVERSION_TIMEOUT = U64L(1814400000000);
110// ***** TESTING is 10 minutes
111//const U64 DEFAULT_USEC_CONVERSION_TIMEOUT = U64L(600000000);
112
113// group is 60 days * 24h/d * 60m/h * 60s/m *1000000 usec/s = 5184000000000
114const U64 GROUP_USEC_CONVERSION_TIMEOUT = U64L(5184000000000);
115// ***** TESTING is 10 minutes
116//const U64 GROUP_USEC_CONVERSION_TIMEOUT = U64L(600000000);
117
118// default sale timeout is 2 days -> 172800000000
119const U64 DEFAULT_USEC_SALE_TIMEOUT = U64L(172800000000);
120// ***** TESTING is 10 minutes
121//const U64 DEFAULT_USEC_SALE_TIMEOUT = U64L(600000000);
122
123// more grace period extensions.
124const U64 SEVEN_DAYS_IN_USEC = U64L(604800000000);
125
126// if more than 100,000s before sale revert, and no extra extension
127// has been given, go ahead and extend it more. That's about 1.2 days.
128const S32 EXTEND_GRACE_IF_MORE_THAN_SEC = 100000;
129
130
131
105class LLMessageSystem; 132class LLMessageSystem;
106class LLSD; 133class LLSD;
107 134
@@ -242,7 +269,7 @@ public:
242 void setAllParcelFlags(U32 flags); 269 void setAllParcelFlags(U32 flags);
243 void setParcelFlag(U32 flag, BOOL b); 270 void setParcelFlag(U32 flag, BOOL b);
244 271
245 void setArea(S32 area, S32 sim_object_limit); 272 virtual void setArea(S32 area, S32 sim_object_limit);
246 void setDiscountRate(F32 rate); 273 void setDiscountRate(F32 rate);
247 274
248 void setAllowModify(BOOL b) { setParcelFlag(PF_CREATE_OBJECTS, b); } 275 void setAllowModify(BOOL b) { setParcelFlag(PF_CREATE_OBJECTS, b); }
@@ -270,9 +297,9 @@ public:
270 void setPassPrice(S32 price) { mPassPrice = price; } 297 void setPassPrice(S32 price) { mPassPrice = price; }
271 void setPassHours(F32 hours) { mPassHours = hours; } 298 void setPassHours(F32 hours) { mPassHours = hours; }
272 299
273 BOOL importStream(std::istream& input_stream); 300// BOOL importStream(std::istream& input_stream);
274 BOOL importAccessEntry(std::istream& input_stream, LLAccessEntry* entry); 301 BOOL importAccessEntry(std::istream& input_stream, LLAccessEntry* entry);
275 BOOL exportStream(std::ostream& output_stream); 302// BOOL exportStream(std::ostream& output_stream);
276 303
277 void packMessage(LLMessageSystem* msg); 304 void packMessage(LLMessageSystem* msg);
278 void packMessage(LLSD& msg); 305 void packMessage(LLSD& msg);
@@ -632,4 +659,10 @@ public:
632}; 659};
633 660
634 661
662const std::string& ownership_status_to_string(LLParcel::EOwnershipStatus status);
663LLParcel::EOwnershipStatus ownership_string_to_status(const std::string& s);
664LLParcel::ECategory category_string_to_category(const std::string& s);
665const std::string& category_to_string(LLParcel::ECategory category);
666
667
635#endif 668#endif
diff --git a/linden/indra/llinventory/llparcelflags.h b/linden/indra/llinventory/llparcelflags.h
index 4cc9500..a1bd85f 100644
--- a/linden/indra/llinventory/llparcelflags.h
+++ b/linden/indra/llinventory/llparcelflags.h
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llpermissions.cpp b/linden/indra/llinventory/llpermissions.cpp
index 684a618..328ed45 100644
--- a/linden/indra/llinventory/llpermissions.cpp
+++ b/linden/indra/llinventory/llpermissions.cpp
@@ -18,7 +18,8 @@
18 * There are special exceptions to the terms and conditions of the GPL as 18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception 19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or 20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 * 23 *
23 * By copying, modifying or distributing this software, you acknowledge 24 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above, 25 * that you have read and understood your obligations described above,
@@ -276,6 +277,15 @@ BOOL LLPermissions::setOwnerAndGroup(
276 return allowed; 277 return allowed;
277} 278}
278 279
280// only call this if you know what you're doing
281// there are usually perm-bit consequences when the
282// ownerhsip changes
283void LLPermissions::yesReallySetOwner(const LLUUID& owner, bool group_owned)
284{
285 mOwner = owner;
286 mIsGroupOwned = group_owned;
287}
288
279BOOL LLPermissions::deedToGroup(const LLUUID& agent, const LLUUID& group) 289BOOL LLPermissions::deedToGroup(const LLUUID& agent, const LLUUID& group)
280{ 290{
281 if(group.notNull() && (agent.isNull() || ((group == mGroup) 291 if(group.notNull() && (agent.isNull() || ((group == mGroup)
diff --git a/linden/indra/llinventory/llpermissions.h b/linden/indra/llinventory/llpermissions.h
index c1eb207..5587f8c 100644
--- a/linden/indra/llinventory/llpermissions.h
+++ b/linden/indra/llinventory/llpermissions.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
@@ -223,6 +224,11 @@ public:
223 // item. 224 // item.
224 BOOL setOwnerAndGroup(const LLUUID& agent, const LLUUID& owner, const LLUUID& group, bool is_atomic); 225 BOOL setOwnerAndGroup(const LLUUID& agent, const LLUUID& owner, const LLUUID& group, bool is_atomic);
225 226
227 // only call this if you know what you're doing
228 // there are usually perm-bit consequences when the
229 // ownerhsip changes
230 void yesReallySetOwner(const LLUUID& owner, bool group_owned);
231
226 // saves last owner, sets owner to uuid null, sets group 232 // saves last owner, sets owner to uuid null, sets group
227 // owned. group_id must be the group of the object (that's who it 233 // owned. group_id must be the group of the object (that's who it
228 // is being deeded to) and the object must be group 234 // is being deeded to) and the object must be group
diff --git a/linden/indra/llinventory/llpermissionsflags.h b/linden/indra/llinventory/llpermissionsflags.h
index 16eb444..afa2adb 100644
--- a/linden/indra/llinventory/llpermissionsflags.h
+++ b/linden/indra/llinventory/llpermissionsflags.h
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llsaleinfo.cpp b/linden/indra/llinventory/llsaleinfo.cpp
index 10182a6..11709bc 100644
--- a/linden/indra/llinventory/llsaleinfo.cpp
+++ b/linden/indra/llinventory/llsaleinfo.cpp
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/llsaleinfo.h b/linden/indra/llinventory/llsaleinfo.h
index 60dcfc6..07f4405 100644
--- a/linden/indra/llinventory/llsaleinfo.h
+++ b/linden/indra/llinventory/llsaleinfo.h
@@ -17,7 +17,8 @@
17 * There are special exceptions to the terms and conditions of the GPL as 17 * There are special exceptions to the terms and conditions of the GPL as
18 * it is applied to this Source Code. View the full text of the exception 18 * it is applied to this Source Code. View the full text of the exception
19 * in the file doc/FLOSS-exception.txt in this software distribution, or 19 * in the file doc/FLOSS-exception.txt in this software distribution, or
20 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 20 * online at
21 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
21 * 22 *
22 * By copying, modifying or distributing this software, you acknowledge 23 * By copying, modifying or distributing this software, you acknowledge
23 * that you have read and understood your obligations described above, 24 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lltransactionflags.cpp b/linden/indra/llinventory/lltransactionflags.cpp
index a3ced5c..e0f87aa 100644
--- a/linden/indra/llinventory/lltransactionflags.cpp
+++ b/linden/indra/llinventory/lltransactionflags.cpp
@@ -18,7 +18,8 @@
18 * There are special exceptions to the terms and conditions of the GPL as 18 * There are special exceptions to the terms and conditions of the GPL as
19 * it is applied to this Source Code. View the full text of the exception 19 * it is applied to this Source Code. View the full text of the exception
20 * in the file doc/FLOSS-exception.txt in this software distribution, or 20 * in the file doc/FLOSS-exception.txt in this software distribution, or
21 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 21 * online at
22 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
22 * 23 *
23 * By copying, modifying or distributing this software, you acknowledge 24 * By copying, modifying or distributing this software, you acknowledge
24 * that you have read and understood your obligations described above, 25 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lltransactionflags.h b/linden/indra/llinventory/lltransactionflags.h
index c892b3a..75f1d12 100644
--- a/linden/indra/llinventory/lltransactionflags.h
+++ b/linden/indra/llinventory/lltransactionflags.h
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lltransactiontypes.h b/linden/indra/llinventory/lltransactiontypes.h
index 48f7b39..d701098 100644
--- a/linden/indra/llinventory/lltransactiontypes.h
+++ b/linden/indra/llinventory/lltransactiontypes.h
@@ -16,7 +16,8 @@
16 * There are special exceptions to the terms and conditions of the GPL as 16 * There are special exceptions to the terms and conditions of the GPL as
17 * it is applied to this Source Code. View the full text of the exception 17 * it is applied to this Source Code. View the full text of the exception
18 * in the file doc/FLOSS-exception.txt in this software distribution, or 18 * in the file doc/FLOSS-exception.txt in this software distribution, or
19 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 19 * online at
20 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
20 * 21 *
21 * By copying, modifying or distributing this software, you acknowledge 22 * By copying, modifying or distributing this software, you acknowledge
22 * that you have read and understood your obligations described above, 23 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lluserrelations.cpp b/linden/indra/llinventory/lluserrelations.cpp
index 2905a1a..8d6bfc6 100644
--- a/linden/indra/llinventory/lluserrelations.cpp
+++ b/linden/indra/llinventory/lluserrelations.cpp
@@ -19,7 +19,8 @@
19 * There are special exceptions to the terms and conditions of the GPL as 19 * There are special exceptions to the terms and conditions of the GPL as
20 * it is applied to this Source Code. View the full text of the exception 20 * it is applied to this Source Code. View the full text of the exception
21 * in the file doc/FLOSS-exception.txt in this software distribution, or 21 * in the file doc/FLOSS-exception.txt in this software distribution, or
22 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 22 * online at
23 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 * 24 *
24 * By copying, modifying or distributing this software, you acknowledge 25 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above, 26 * that you have read and understood your obligations described above,
diff --git a/linden/indra/llinventory/lluserrelations.h b/linden/indra/llinventory/lluserrelations.h
index 669706c..1682f50 100644
--- a/linden/indra/llinventory/lluserrelations.h
+++ b/linden/indra/llinventory/lluserrelations.h
@@ -19,7 +19,8 @@
19 * There are special exceptions to the terms and conditions of the GPL as 19 * There are special exceptions to the terms and conditions of the GPL as
20 * it is applied to this Source Code. View the full text of the exception 20 * it is applied to this Source Code. View the full text of the exception
21 * in the file doc/FLOSS-exception.txt in this software distribution, or 21 * in the file doc/FLOSS-exception.txt in this software distribution, or
22 * online at http://secondlifegrid.net/programs/open_source/licensing/flossexception 22 * online at
23 * http://secondlifegrid.net/programs/open_source/licensing/flossexception
23 * 24 *
24 * By copying, modifying or distributing this software, you acknowledge 25 * By copying, modifying or distributing this software, you acknowledge
25 * that you have read and understood your obligations described above, 26 * that you have read and understood your obligations described above,