void Shelf::StartConfig(BView *view) { PRINT(("%p:%s()\n", this, __FUNCTION__)); fInConfig = true; BStringView* titleString = new BStringView("Title", B_TRANSLATE("Shelf")); titleString->SetFont(be_bold_font); BStringView* copyrightString = new BStringView("Copyright", B_TRANSLATE("© 2012 François Revol.")); BTextView* helpText = new BTextView("Help Text"); helpText->MakeEditable(false); helpText->SetViewColor(view->ViewColor()); rgb_color textColor = ui_color(B_PANEL_TEXT_COLOR); helpText->SetFontAndColor(be_plain_font, B_FONT_ALL, &textColor); BString help; help << B_TRANSLATE("Drop replicants on the full-screen window " "behind the preferences panel."); //help << "\n\n"; //help << B_TRANSLATE("You can also drop colors."); helpText->SetText(help.String()); BLayoutBuilder::Group<>(view, B_VERTICAL, B_USE_HALF_ITEM_SPACING) .SetInsets(B_USE_DEFAULT_SPACING) .Add(titleString) .Add(copyrightString) .AddStrut(roundf(be_control_look->DefaultItemSpacing() / 2)) .Add(helpText) .AddGlue() .End(); BScreen screen; fConfigWindow = new BWindow(screen.Frame(), "Shelf Config", B_UNTYPED_WINDOW, B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_ZOOMABLE | B_NOT_MINIMIZABLE | B_NOT_RESIZABLE | B_AVOID_FRONT | B_AVOID_FOCUS); BView *shelfView = new BView(fConfigWindow->Bounds(), "ShelfView", B_FOLLOW_NONE, B_WILL_DRAW | B_FRAME_EVENTS); shelfView->SetViewColor(216, 216, 216, 0); fConfigWindow->AddChild(shelfView); fShelfData.Seek(SEEK_SET, 0LL); fShelf = new BShelf(&fShelfData, shelfView); fShelf->SetDisplaysZombies(true); fShelfData.Seek(SEEK_SET, 0LL); // start the Looper fConfigWindow->Show(); fConfigWindow->Lock(); fConfigWindow->SendBehind(view->Window()); fConfigWindow->Unlock(); //"\nDrop replicants on me!" }
void MallocBufferLengthTest::PerformTest(void) { BMallocIO mem; size_t size; size_t bufLen; status_t error; off_t offset; char writeBuf[11] = "0123456789"; NextSubTest(); bufLen = mem.BufferLength(); CPPUNIT_ASSERT(bufLen == 0); NextSubTest(); size = mem.Write(writeBuf, 10); bufLen = mem.BufferLength(); CPPUNIT_ASSERT(bufLen == 10); CPPUNIT_ASSERT(size = 10); NextSubTest(); error = mem.SetSize(0); bufLen = mem.BufferLength(); CPPUNIT_ASSERT(bufLen == 0); CPPUNIT_ASSERT(error == B_OK); //This is for the BResource crashing bug NextSubTest(); error = mem.SetSize(200); bufLen = mem.BufferLength(); offset = mem.Seek(0, SEEK_END); CPPUNIT_ASSERT(bufLen == 200); CPPUNIT_ASSERT(error == B_OK); CPPUNIT_ASSERT(offset == 200); NextSubTest(); offset = mem.Seek(0, SEEK_END); error = mem.SetSize(100); bufLen = mem.BufferLength(); CPPUNIT_ASSERT(bufLen == 100); CPPUNIT_ASSERT(mem.Position() == offset); }
BEmailMessage * BEmailMessage::ForwardMessage(bool accountFromMail, bool includeAttachments) { BString header = "------ Forwarded Message: ------\n"; header << "To: " << To() << '\n'; header << "From: " << From() << '\n'; if (CC() != NULL) { // Can use CC rather than "Cc" since display only. header << "CC: " << CC() << '\n'; } header << "Subject: " << Subject() << '\n'; header << "Date: " << Date() << "\n\n"; if (_text_body != NULL) header << _text_body->Text() << '\n'; BEmailMessage *message = new BEmailMessage(); message->SetBodyTextTo(header.String()); // set the subject BString subject = Subject(); if (subject.IFindFirst("fwd") == B_ERROR && subject.IFindFirst("forward") == B_ERROR && subject.FindFirst("FW") == B_ERROR) subject << " (fwd)"; message->SetSubject(subject.String()); if (includeAttachments) { for (int32 i = 0; i < CountComponents(); i++) { BMailComponent *cmpt = GetComponent(i); if (cmpt == _text_body || cmpt == NULL) continue; //---I am ashamed to have the written the code between here and the next comment // ... and you still managed to get it wrong ;-)), axeld. // we should really move this stuff into copy constructors // or something like that BMallocIO io; cmpt->RenderToRFC822(&io); BMailComponent *clone = cmpt->WhatIsThis(); io.Seek(0, SEEK_SET); clone->SetToRFC822(&io, io.BufferLength(), true); message->AddComponent(clone); } } if (accountFromMail) message->SendViaAccountFrom(this); return message; }
BPicture * FlattenPictureTest::SaveAndRestore(BPicture *picture) { BMallocIO *data = new BMallocIO(); AutoDelete<BMallocIO> _data(data); TEST_AND_RETURN(data == NULL, "BMallocIO could not be allocated for flattening the picture!" , NULL); picture->Flatten(data); data->Seek(0, SEEK_SET); BPicture *archivedPicture = new BPicture(); TEST_AND_RETURN(archivedPicture == NULL, "BPicture could not be allocated for unflattening the picture!" , NULL); archivedPicture->Unflatten(data); return archivedPicture; }
status_t Shelf::StartSaver(BView *view, bool preview) { PRINT(("%p:%s(, %d)\n", this, __FUNCTION__, preview)); if (!preview) { view->SetViewColor(216, 216, 216, 0); fShelfData.Seek(SEEK_SET, 0LL); fShelf = new BShelf(&fShelfData, view); } BString s; s << "preview: " << preview << " "; s << "BView:Name: " << view->Name() << " "; s << "BApp:Name: " << be_app->Name(); PRINT(("%p:%s:%s\n", this, __FUNCTION__, s.String())); //BAlert *a = new BAlert("debug", s.String(), "Ok"); //a->Go(); return B_ERROR; #if 0 float width = view->Bounds().Width(); float height = view->Bounds().Height(); BFont font; view->GetFont(&font); font.SetSize(height / 2.5); view->SetFont(&font); BRect rect; escapement_delta delta; delta.nonspace = 0; delta.space = 0; // If anyone has suggestions for how to clean this up, speak up font.GetBoundingBoxesForStrings(&fLine1, 1, B_SCREEN_METRIC, &delta, &rect); float y = ((height - (rect.Height() * 2 + height / 10)) / 2) + rect.Height(); fLine1Start.Set((width - rect.Width()) / 2, y); font.GetBoundingBoxesForStrings(&fLine2, 1, B_SCREEN_METRIC, &delta, &rect); fLine2Start.Set((width - rect.Width()) / 2, y + rect.Height() + height / 10); #endif return B_OK; }
int32 DeriveKey(const void *key, int32 keyLen, const uchar *magic, int32 magicLen, uchar **result) { uchar hash1[EVP_MAX_MD_SIZE]; uchar hash2[EVP_MAX_MD_SIZE]; uchar hash3[EVP_MAX_MD_SIZE]; uchar hash4[EVP_MAX_MD_SIZE]; unsigned int hash1Len = 0; unsigned int hash2Len = 0; unsigned int hash3Len = 0; unsigned int hash4Len = 0; int32 length = B_ERROR; BMallocIO temp; // HMAC-SHA1(magic) HMAC(EVP_sha1(), key, keyLen, magic, magicLen, hash1, &hash1Len); // Key 2 is HMAC-SHA1(HMAC-SHA1(magic) + magic) temp.Write(hash1, hash1Len); temp.Write(magic, magicLen); HMAC(EVP_sha1(), key, keyLen, (uchar *)temp.Buffer(), temp.BufferLength(), hash2, &hash2Len); // HMAC-SHA1(HMAC-SHA1(magic)) HMAC(EVP_sha1(), key, keyLen, hash1, hash1Len, hash3, &hash3Len); // Clear the BMallocIO and reset the position to 0 temp.SetSize(0); temp.Seek(0, SEEK_SET); // Key 4 is HMAC-SHA1(HMAC-SHA1(HMAC-SHA1(magic)) + magic) temp.Write(hash3, hash3Len); temp.Write(magic, magicLen); HMAC(EVP_sha1(), key, keyLen, (uchar *)temp.Buffer(), temp.BufferLength(), hash4, &hash4Len); // The key is Hash2 followed by the first four bytes of Hash4 length = hash2Len + 4; *result = (uchar *)calloc(length, sizeof(uchar)); memcpy(*result, hash2, hash2Len); memcpy(*result + hash2Len, hash4, 4); return length; };
void PictureView::AllAttached() { BeginPicture(new BPicture); DrawStuff(this); BPicture *picture = EndPicture(); if (picture == NULL) return; BMessage message; picture->Archive(&message); message.PrintToStream(); BMallocIO stream; status_t status = picture->Flatten(&stream); delete picture; if (status != B_OK) printf("Error flattening BPicture: %s\n", strerror(status)); if (status == B_OK) { stream.Seek(0, SEEK_SET); fPicture = new BPicture(); status = fPicture->Unflatten(&stream); if (status != B_OK) { printf("Error unflattening BPicture: %s\n", strerror(status)); return; } } BMessage message2; fPicture->Archive(&message2); message2.PrintToStream(); }
void CMOVAtom::OnProcessMetaData() { BMallocIO *theUncompressedData; uint8 *outBuffer; CMVDAtom *aCMVDAtom = NULL; uint32 compressionID = 0; uint64 descBytesLeft; uint32 Size; descBytesLeft = GetAtomSize(); // Check for Compression Type while (descBytesLeft > 0) { AtomBase *aAtomBase = GetAtom(theStream); aAtomBase->OnProcessMetaData(); if (aAtomBase->GetAtomSize() > 0) { descBytesLeft = descBytesLeft - aAtomBase->GetAtomSize(); } else { printf("Invalid Atom found when reading Compressed Headers\n"); descBytesLeft = 0; } if (dynamic_cast<DCOMAtom *>(aAtomBase)) { // DCOM atom compressionID = dynamic_cast<DCOMAtom *>(aAtomBase)->GetCompressionID(); delete aAtomBase; } else { if (dynamic_cast<CMVDAtom *>(aAtomBase)) { // CMVD atom aCMVDAtom = dynamic_cast<CMVDAtom *>(aAtomBase); descBytesLeft = 0; } } } // Decompress data if (compressionID == 'zlib') { Size = aCMVDAtom->GetUncompressedSize(); outBuffer = (uint8 *)(malloc(Size)); printf("Decompressing %ld bytes to %ld bytes\n",aCMVDAtom->GetBufferSize(),Size); int result = uncompress(outBuffer, &Size, aCMVDAtom->GetCompressedData(), aCMVDAtom->GetBufferSize()); if (result != Z_OK) { printf("Failed to decompress headers uncompress returned "); switch (result) { case Z_MEM_ERROR: DEBUGGER("Lack of Memory Error\n"); break; case Z_BUF_ERROR: DEBUGGER("Lack of Output buffer space Error\n"); break; case Z_DATA_ERROR: DEBUGGER("Input Data is corrupt or not a compressed set Error\n"); break; } } // Copy uncompressed data into BMAllocIO theUncompressedData = new BMallocIO(); theUncompressedData->SetSize(Size); theUncompressedData->WriteAt(0L,outBuffer,Size); free(outBuffer); delete aCMVDAtom; // reset position on BMAllocIO theUncompressedData->Seek(SEEK_SET,0L); // Assign to Stream theUncompressedStream = theUncompressedData; // All subsequent reads should use theUncompressedStream } }