//-------------------------------------------------------------------------- void Chat::Add(ChatMessageEventParams params) { int max_lenght = 60; int name_lenght = strlen(params.param2); int text_lenght = strlen(params.param3); int total_lenght = text_lenght + name_lenght; if (total_lenght > max_lenght) { int pos = 0; int lenght = clamp(max_lenght - name_lenght, 0, text_lenght); autoptr ChatMessageEventParams tmp = new ChatMessageEventParams(params.param1, params.param2, "", params.param4); while (pos < text_lenght) { tmp.param3 = substr(params.param3, pos, lenght); AddInternal(tmp); tmp.param2 = ""; pos += lenght; lenght = clamp(text_lenght - pos, 0, max_lenght); } } else { AddInternal(params); } }
void LookupResource::Add(const DicomTag& tag, IFindConstraint* constraint) { std::auto_ptr<IFindConstraint> c(constraint); if (!AddInternal(ResourceType_Patient, tag, c) && !AddInternal(ResourceType_Study, tag, c) && !AddInternal(ResourceType_Series, tag, c) && !AddInternal(ResourceType_Instance, tag, c)) { unoptimizedConstraints_[tag] = c.release(); } }
NS_IMETHODIMP nsPermissionManager::Add(nsIURI *aURI, const char *aType, PRUint32 aPermission, PRUint32 aExpireType, PRInt64 aExpireTime) { NS_ENSURE_ARG_POINTER(aURI); NS_ENSURE_ARG_POINTER(aType); NS_ENSURE_TRUE(aExpireType == nsIPermissionManager::EXPIRE_NEVER || aExpireType == nsIPermissionManager::EXPIRE_TIME || aExpireType == nsIPermissionManager::EXPIRE_SESSION, NS_ERROR_INVALID_ARG); nsresult rv; // Skip addition if the permission is already expired. if (aExpireType == nsIPermissionManager::EXPIRE_TIME && aExpireTime <= PR_Now() / 1000) return NS_OK; nsCAutoString host; rv = GetHost(aURI, host); NS_ENSURE_SUCCESS(rv, rv); return AddInternal(host, nsDependentCString(aType), aPermission, 0, aExpireType, aExpireTime, eNotify, eWriteToDB); }
bool CMapEventManager::Add ( CLuaMain* pLuaMain, const char* szName, const CLuaFunctionRef& iLuaFunction, bool bPropagated, EEventPriorityType eventPriority, float fPriorityMod ) { // Check for max name length if ( strlen ( szName ) <= MAPEVENT_MAX_LENGTH_NAME ) { // Make a new event CMapEvent* pEvent = new CMapEvent ( pLuaMain, szName, iLuaFunction, bPropagated, eventPriority, fPriorityMod ); // Add now AddInternal ( pEvent ); m_bHasEvents = true; return true; } return false; }
NS_IMETHODIMP nsPermissionManager::Remove(const nsACString &aHost, const char *aType) { NS_ENSURE_ARG_POINTER(aType); // AddInternal() handles removal, just let it do the work return AddInternal(PromiseFlatCString(aHost), nsDependentCString(aType), nsIPermissionManager::UNKNOWN_ACTION, 0, nsIPermissionManager::EXPIRE_NEVER, 0, eNotify, eWriteToDB); }
NS_IMETHODIMP nsDOMTokenList::Add(const nsAString& aToken) { nsresult rv = CheckToken(aToken); NS_ENSURE_SUCCESS(rv, rv); const nsAttrValue* attr = GetParsedAttr(); if (attr && attr->Contains(aToken)) { return NS_OK; } AddInternal(attr, aToken); return NS_OK; }
NS_IMETHODIMP nsDOMTokenList::Toggle(const nsAString& aToken, bool* aResult) { nsresult rv = CheckToken(aToken); NS_ENSURE_SUCCESS(rv, rv); const nsAttrValue* attr = GetParsedAttr(); if (attr && attr->Contains(aToken)) { RemoveInternal(attr, aToken); *aResult = false; } else { AddInternal(attr, aToken); *aResult = true; } return NS_OK; }
nsresult nsPermissionManager::Import() { nsresult rv; nsCOMPtr<nsIFile> permissionsFile; rv = NS_GetSpecialDirectory(NS_APP_USER_PROFILE_50_DIR, getter_AddRefs(permissionsFile)); if (NS_FAILED(rv)) return rv; rv = permissionsFile->AppendNative(NS_LITERAL_CSTRING(kHostpermFileName)); NS_ENSURE_SUCCESS(rv, rv); nsCOMPtr<nsIInputStream> fileInputStream; rv = NS_NewLocalFileInputStream(getter_AddRefs(fileInputStream), permissionsFile); if (NS_FAILED(rv)) return rv; nsCOMPtr<nsILineInputStream> lineInputStream = do_QueryInterface(fileInputStream, &rv); NS_ENSURE_SUCCESS(rv, rv); // start a transaction on the storage db, to optimize insertions. // transaction will automically commit on completion mozStorageTransaction transaction(mDBConn, PR_TRUE); /* format is: * matchtype \t type \t permission \t host * Only "host" is supported for matchtype * type is a string that identifies the type of permission (e.g. "cookie") * permission is an integer between 1 and 15 */ nsCAutoString buffer; PRBool isMore = PR_TRUE; while (isMore && NS_SUCCEEDED(lineInputStream->ReadLine(buffer, &isMore))) { if (buffer.IsEmpty() || buffer.First() == '#') { continue; } nsTArray<nsCString> lineArray; // Split the line at tabs ParseString(buffer, '\t', lineArray); if (lineArray[0].EqualsLiteral(kMatchTypeHost) && lineArray.Length() == 4) { PRInt32 error; PRUint32 permission = lineArray[2].ToInteger(&error); if (error) continue; // hosts might be encoded in UTF8; switch them to ACE to be consistent if (!IsASCII(lineArray[3])) { rv = NormalizeToACE(lineArray[3]); if (NS_FAILED(rv)) continue; } rv = AddInternal(lineArray[3], lineArray[1], permission, 0, nsIPermissionManager::EXPIRE_NEVER, 0, eDontNotify, eWriteToDB); NS_ENSURE_SUCCESS(rv, rv); } } // we're done importing - delete the old file permissionsFile->Remove(PR_FALSE); return NS_OK; }
nsresult nsPermissionManager::Read() { nsresult rv; // delete expired permissions before we read in the db { // this deletion has its own scope so the write lock is released when done. nsCOMPtr<mozIStorageStatement> stmtDeleteExpired; rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( "DELETE FROM moz_hosts WHERE expireType = ?1 AND expireTime <= ?2"), getter_AddRefs(stmtDeleteExpired)); NS_ENSURE_SUCCESS(rv, rv); rv = stmtDeleteExpired->BindInt32Parameter(0, nsIPermissionManager::EXPIRE_TIME); NS_ENSURE_SUCCESS(rv, rv); rv = stmtDeleteExpired->BindInt64Parameter(1, PR_Now() / 1000); NS_ENSURE_SUCCESS(rv, rv); PRBool hasResult; rv = stmtDeleteExpired->ExecuteStep(&hasResult); NS_ENSURE_SUCCESS(rv, rv); } nsCOMPtr<mozIStorageStatement> stmt; rv = mDBConn->CreateStatement(NS_LITERAL_CSTRING( "SELECT id, host, type, permission, expireType, expireTime " "FROM moz_hosts"), getter_AddRefs(stmt)); NS_ENSURE_SUCCESS(rv, rv); PRInt64 id; nsCAutoString host, type; PRUint32 permission; PRUint32 expireType; PRInt64 expireTime; PRBool hasResult; while (NS_SUCCEEDED(stmt->ExecuteStep(&hasResult)) && hasResult) { // explicitly set our entry id counter for use in AddInternal(), // and keep track of the largest id so we know where to pick up. id = stmt->AsInt64(0); if (id > mLargestID) mLargestID = id; rv = stmt->GetUTF8String(1, host); NS_ENSURE_SUCCESS(rv, rv); rv = stmt->GetUTF8String(2, type); NS_ENSURE_SUCCESS(rv, rv); permission = stmt->AsInt32(3); expireType = stmt->AsInt32(4); // convert into PRInt64 value (milliseconds) expireTime = stmt->AsInt64(5); rv = AddInternal(host, type, permission, id, expireType, expireTime, eDontNotify, eNoDBOperation); NS_ENSURE_SUCCESS(rv, rv); } return NS_OK; }