LLUUID LLLocalInventory::addItem(std::string name, int type, LLUUID asset_id)
{
    LLUUID item_id;
    item_id.generate();
    LLPermissions* perms = new LLPermissions();
    perms->set(LLPermissions::DEFAULT);
    perms->setOwnerAndGroup(LLUUID::null, LLUUID::null, LLUUID::null, false);
    perms->setMaskBase(0);
    perms->setMaskEveryone(0);
    perms->setMaskGroup(0);
    perms->setMaskNext(0);
    perms->setMaskOwner(0);
    LLViewerInventoryItem* item = new LLViewerInventoryItem(
        item_id,
        gSystemFolderAssets,
        *perms,
        asset_id,
        (LLAssetType::EType)type,
        (LLInventoryType::EType)type,
        name,
        "",
        LLSaleInfo::DEFAULT,
        0,
        time_corrected());
    addItem(item);
    return item_id;
}
// <edit>
void temp_upload_callback(const LLUUID& uuid, void* user_data, S32 result, LLExtStat ext_status) // StoreAssetData callback (fixed)
{
	LLResourceData* data = (LLResourceData*)user_data;
	
	if(result >= 0)
	{
		LLUUID item_id;
		item_id.generate();
		LLPermissions* perms = new LLPermissions();
		perms->set(LLPermissions::DEFAULT);
		perms->setOwnerAndGroup(gAgentID, gAgentID, gAgentID, false);


		perms->setMaskBase(PERM_ALL);
		perms->setMaskOwner(PERM_ALL);
		perms->setMaskEveryone(PERM_ALL);
		perms->setMaskGroup(PERM_ALL);
		perms->setMaskNext(PERM_ALL);
		
		LLUUID destination = gInventory.findCategoryUUIDForType(LLFolderType::FT_TEXTURE);
		BOOL bUseSystemInventory = (gSavedSettings.getBOOL("AscentUseSystemFolder") && gSavedSettings.getBOOL("AscentSystemTemporary"));
		if (bUseSystemInventory)
		{
			destination = gSystemFolderAssets;
		}
		LLViewerInventoryItem* item = new LLViewerInventoryItem(
				item_id,
				destination,
				*perms,
				uuid,
				(LLAssetType::EType)data->mAssetInfo.mType,
				(LLInventoryType::EType)data->mInventoryType,
				data->mAssetInfo.getName(),
				data->mAssetInfo.getDescription(),
				LLSaleInfo::DEFAULT,
				0,
				time_corrected());
		if (bUseSystemInventory)
		{
			LLLocalInventory::addItem(item);
		}
		else
		{
			item->updateServer(TRUE);
			gInventory.updateItem(item);
			gInventory.notifyObservers();
		}
	}
	else 
	{
		LLSD args;
		args["FILE"] = LLInventoryType::lookupHumanReadable(data->mInventoryType);
		args["REASON"] = std::string(LLAssetStorage::getErrorString(result));
		LLNotificationsUtil::add("CannotUploadReason", args);
	}

	LLUploadDialog::modalUploadFinished();
	delete data;
}
void LLViewerInventoryCategory::createBasicHair()
{
	LLUUID item_id = LLUUID("30d1d71b-38a6-4956-b27e-3bbcc17da0e2"); //lolhack, it's my UUID?
	
	//Make some hair just in case, using the library item so we're not hacking.
	LLUUID folder_id(gInventory.findCategoryUUIDForType(LLAssetType::AT_BODYPART));
	LLPermissions* perms = new LLPermissions();
	perms->set(LLPermissions::DEFAULT);
	perms->setOwnerAndGroup(LLUUID::null, LLUUID::null, LLUUID::null, false);
	perms->setMaskBase(0);
	perms->setMaskEveryone(0);
	perms->setMaskGroup(0);
	perms->setMaskNext(0);
	perms->setMaskOwner(0);
	LLViewerInventoryItem* item = new LLViewerInventoryItem(
			item_id,
			folder_id,
			*perms,
			LLUUID("f0581d0d-d7c4-2573-b2ce-7a5d6ded3851"),
			LLAssetType::AT_BODYPART,
			LLInventoryType::IT_WEARABLE,
			"RuthHairFix",
			"",
			LLSaleInfo::DEFAULT,
			0,
			0);

	//Update some stuff I guess
	LLInventoryModel::update_map_t update;
	++update[item->getParentUUID()];
	gInventory.accountForUpdate(update);
	gInventory.updateItem(item);
	gInventory.notifyObservers();
	

	wear_inventory_item_on_avatar(item);
}