hrev48063 adds 2 changesets to branch 'master' old head: 7284564eab186f28ab292522390b1b7be9573794 new head: 06f436b3ac2c073913bc7e7afb56365a2ca978eb overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=06f436b+%5E7284564 ---------------------------------------------------------------------------- 6da9451: UrlTest: cleanup IDN tests. 06f436b: Use strict mode when url-decoding file requests. We don't want '+' to become a space here. Fixes #11109. [ Adrien Destugues <pulkomandy@xxxxxxxxx> ] ---------------------------------------------------------------------------- 11 files changed, 77 insertions(+), 46 deletions(-) build/jam/ArchitectureRules | 4 ++ headers/os/locale/Collator.h | 2 - headers/os/net/HttpRequest.h | 2 +- .../kernel/drivers/midi/usb_midi/usb_midi.cpp | 12 ++-- src/apps/serialconnect/TermView.cpp | 27 +++++++-- src/data/mime_db/text/html | 2 +- src/kits/network/libnetapi/FileRequest.cpp | 2 +- src/kits/network/libnetapi/NetworkCookie.cpp | 4 +- .../UrlProtocolAsynchronousListener.cpp | 3 +- .../app/drawing/Painter/AGGTextRenderer.cpp | 2 +- src/tests/kits/net/service/UrlTest.cpp | 63 +++++++++++--------- ############################################################################ Commit: 6da9451ebaec75b9c1166e822cbfac4c819504dc URL: http://cgit.haiku-os.org/haiku/commit/?id=6da9451 Author: Adrien Destugues <pulkomandy@xxxxxxxxx> Date: Tue Oct 21 09:00:15 2014 UTC UrlTest: cleanup IDN tests. ---------------------------------------------------------------------------- diff --git a/src/tests/kits/net/service/UrlTest.cpp b/src/tests/kits/net/service/UrlTest.cpp index c5c21e2..6d151d0 100644 --- a/src/tests/kits/net/service/UrlTest.cpp +++ b/src/tests/kits/net/service/UrlTest.cpp @@ -534,41 +534,33 @@ UrlTest::RelativeUriTest() } - void UrlTest::IDNTest() { // http://www.w3.org/2004/04/uri-rel-test.html - // TODO these need to be manually UrlDecoded with our API. - // We also need to decide wether to store them as UTF-8 or IDNA/punycode. - NextSubTest(); - CPPUNIT_ASSERT_EQUAL(BUrl("http://www.w3.org";).UrlString(), - BUrl("http://www.w%33.org";).UrlString()); - NextSubTest(); - CPPUNIT_ASSERT_EQUAL( - BUrl("http://xn--rksmrgs-5wao1o.josefsson.org";).UrlString(), - BUrl("http://r%C3%A4ksm%C3%B6rg%C3%A5s.josefsson.org";).UrlString()); - NextSubTest(); - CPPUNIT_ASSERT_EQUAL( - BUrl("http://xn--rksmrgs-5wao1o.josefsson.org";).UrlString(), - BUrl("http://%E7%B4%8D%E8%B1%86.w3.mag.keio.ac.jp";).UrlString()); - NextSubTest(); - CPPUNIT_ASSERT_EQUAL( - BUrl("http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9b"; - "ya3kc6lra.w3.mag.keio.ac.jp/").UrlString(), - BUrl("http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA"; + // TODO We need to decide wether to store them as UTF-8 or IDNA/punycode. + + struct Test { + const char* escaped; + const char* decoded; + }; + + Test tests[] = { + { "http://www.w%33.org";, "http://www.w3.org"; }, + { "http://r%C3%A4ksm%C3%B6rg%C3%A5s.josefsson.org";, + "http://xn--rksmrgs-5wao1o.josefsson.org"; }, + { "http://%E7%B4%8D%E8%B1%86.w3.mag.keio.ac.jp";, + "http://xn--99zt52a.w3.mag.keio.ac.jp"; }, + { "http://www.%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA"; "%E3%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3" "%82%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82" "%81%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0" "%E3%81%AA%E3%81%8C%E3%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3" - "%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/").UrlString()); - NextSubTest(); - CPPUNIT_ASSERT_EQUAL( - BUrl("http://xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3k"; - "c6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6" - "lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lr" - "a.w3.mag.keio.ac.jp/").UrlString(), - BUrl("http://%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3"; + "%81%9F%E3%82%8A%E3%81%AA%E3%81%84.w3.mag.keio.ac.jp/", + "http://www.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9b"; + "ya3kc6lra.w3.mag.keio.ac.jp/" }, + + { "http://%E3%81%BB%E3%82%93%E3%81%A8%E3%81%86%E3%81%AB%E3%81%AA%E3"; "%81%8C%E3%81%84%E3%82%8F%E3%81%91%E3%81%AE%E3%82%8F%E3%81%8B%E3%82" "%89%E3%81%AA%E3%81%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81" "%E3%81%84%E3%81%AE%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3" @@ -584,7 +576,22 @@ UrlTest::IDNTest() "%84%E3%81%A9%E3%82%81%E3%81%84%E3%82%93%E3%82%81%E3%81%84%E3%81%AE" "%E3%82%89%E3%81%B9%E3%82%8B%E3%81%BE%E3%81%A0%E3%81%AA%E3%81%8C%E3" "%81%8F%E3%81%97%E3%81%AA%E3%81%84%E3%81%A8%E3%81%9F%E3%82%8A%E3%81" - "%AA%E3%81%84.w3.mag.keio.ac.jp/").UrlString()); + "%AA%E3%81%84.w3.mag.keio.ac.jp/", + "http://xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3k"; + "c6lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6" + "lra.xn--n8jaaaaai5bhf7as8fsfk3jnknefdde3fg11amb5gzdb4wi9bya3kc6lr" + "a.w3.mag.keio.ac.jp/" }, + { NULL, NULL } + }; + + for (int i = 0; tests[i].escaped != NULL; i++) + { + NextSubTest(); + BUrl url(tests[i].escaped); + url.UrlDecode(); + CPPUNIT_ASSERT_EQUAL(BUrl(tests[i].decoded).UrlString(), + url.UrlString()); + } } ############################################################################ Revision: hrev48063 Commit: 06f436b3ac2c073913bc7e7afb56365a2ca978eb URL: http://cgit.haiku-os.org/haiku/commit/?id=06f436b Author: Adrien Destugues <pulkomandy@xxxxxxxxx> Date: Tue Oct 21 09:12:10 2014 UTC Ticket: https://dev.haiku-os.org/ticket/11109 Use strict mode when url-decoding file requests. We don't want '+' to become a space here. Fixes #11109. ---------------------------------------------------------------------------- diff --git a/build/jam/ArchitectureRules b/build/jam/ArchitectureRules index e3ff8c1..a623835 100644 --- a/build/jam/ArchitectureRules +++ b/build/jam/ArchitectureRules @@ -483,11 +483,15 @@ rule ArchitectureSetupWarnings architecture EnableWerror src add-ons kernel bus_managers ata ; EnableWerror src add-ons kernel bus_managers config_manager ; # EnableWerror src add-ons kernel bus_managers firewire ; +# EnableWerror src add-ons kernel bus_managers ide ; EnableWerror src add-ons kernel bus_managers isa ; EnableWerror src add-ons kernel bus_managers pci ; # EnableWerror src add-ons kernel bus_managers ps2 ; # gcc2 +# EnableWerror src add-ons kernel bus_managers random ; EnableWerror src add-ons kernel bus_managers scsi ; +# EnableWerror src add-ons kernel bus_managers tty ; EnableWerror src add-ons kernel bus_managers usb ; +# EnableWerror src add-ons kernel bus_managers virtio ; EnableWerror src add-ons kernel busses agp_gart ; EnableWerror src add-ons kernel busses ata ; EnableWerror src add-ons kernel busses scsi ; diff --git a/headers/os/locale/Collator.h b/headers/os/locale/Collator.h index 6f818e6..861ccfe 100644 --- a/headers/os/locale/Collator.h +++ b/headers/os/locale/Collator.h @@ -12,10 +12,8 @@ namespace icu { class Collator; - class RuleBasedCollator; }; - class BString; class BCollatorAddOn; diff --git a/headers/os/net/HttpRequest.h b/headers/os/net/HttpRequest.h index 6ca63eb..8fd4c41 100644 --- a/headers/os/net/HttpRequest.h +++ b/headers/os/net/HttpRequest.h @@ -44,7 +44,7 @@ public: void AdoptPostFields(BHttpForm* const fields); void AdoptInputData(BDataIO* const data, const ssize_t size = -1); - void AdoptHeaders(BHttpHeaders* const headers); + void AdoptHeaders(BHttpHeaders* const headers); status_t Stop(); const BUrlResult& Result() const; diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp index 0b586c7..771b522 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp +++ b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp @@ -170,9 +170,9 @@ typedef struct driver_cookie _EXPORT int32 api_version = B_CUR_DRIVER_API_VERSION; -const char* usb_midi_driver_name = "usb_midi"; +static const char* usb_midi_driver_name = "usb_midi"; -const int CINbytes[] = { /* See USB-MIDI Spec */ +static const int CINbytes[] = { /* See USB-MIDI Spec */ 0, /* 0x0 -- undefined Misc -- Reserved */ 0, /* 0x1 -- undefined Cable -- Reserved */ 2, /* 0x2 -- 2-byte system common */ @@ -199,14 +199,16 @@ interpret_midi_buffer(usbmidi_device_info* midiDevice) { usb_midi_event_packet* packet = midiDevice->buffer; size_t bytes_left = midiDevice->actual_length; - while (bytes_left) { /* buffer may have several packets */ - int pktlen = CINbytes[packet->cin]; - usbmidi_port_info* port = midiDevice->ports[packet->cn]; + /* buffer may have several packets */ + while (bytes_left >= sizeof(usb_midi_event_packet)) { DPRINTF_DEBUG((MY_ID "received packet %x:%d %x %x %x\n", packet->cin, packet->cn, packet->midi[0], packet->midi[1], packet->midi[2])); + int pktlen = CINbytes[packet->cin]; + usbmidi_port_info* port = midiDevice->ports[packet->cn]; + /* port matching 'cable number' */ if (port == NULL) { DPRINTF_ERR((MY_ID "no port matching cable number %d!\n", diff --git a/src/apps/serialconnect/TermView.cpp b/src/apps/serialconnect/TermView.cpp index 68b9773..9fd2433 100644 --- a/src/apps/serialconnect/TermView.cpp +++ b/src/apps/serialconnect/TermView.cpp @@ -10,6 +10,7 @@ #include <Entry.h> #include <File.h> +#include <Font.h> #include <Layout.h> #include <ScrollBar.h> @@ -87,8 +88,8 @@ TermView::Draw(BRect updateRect) background.blue = cell.bg.blue; background.alpha = 255; - if ((cell.attrs.reverse != 0) ^ (pos.col == cursorPos.col - && pos.row == cursorPos.row)) { + // Draw the cursor by swapping foreground and background colors + if ((pos.col == cursorPos.col && pos.row == cursorPos.row)) { SetLowColor(foreground); SetViewColor(foreground); SetHighColor(background); @@ -103,10 +104,28 @@ TermView::Draw(BRect updateRect) y + ceil(height.descent) + ceil(height.leading)), B_SOLID_LOW); + BFont font = be_fixed_font; + if (cell.attrs.bold) + font.SetFace(B_BOLD_FACE); + if (cell.attrs.underline) + font.SetFace(B_UNDERSCORE_FACE); + if (cell.attrs.italic) + font.SetFace(B_ITALIC_FACE); + if (cell.attrs.blink) // FIXME make it actually blink + font.SetFace(B_OUTLINED_FACE); + if (cell.attrs.reverse) + font.SetFace(B_NEGATIVE_FACE); + if (cell.attrs.strike) + font.SetFace(B_STRIKEOUT_FACE); + + // TODO handle "font" (alternate fonts), dwl and dhl (double size) + + SetFont(&font); + if (cell.chars[0] == 0) { - x += fFontWidth; - MovePenTo(x, y); + DrawString(" "); pos.col ++; + x += fFontWidth; } else { char buffer[VTERM_MAX_CHARS_PER_CELL]; wcstombs(buffer, (wchar_t*)cell.chars, diff --git a/src/data/mime_db/text/html b/src/data/mime_db/text/html index 042a031..a118f19 100644 --- a/src/data/mime_db/text/html +++ b/src/data/mime_db/text/html @@ -6,7 +6,7 @@ resource(1, "META:TYPE") "text/html"; resource(2, "META:SNIFF_RULE") #'CSTR' array { "0.40 [0:512]( -i \"<HTML\" | \"<HEAD\" | \"<TITLE\" | \"<BODY\" | " "\"<TABLE\" | \"<META\" | \"<CENTER\" | \"<!DOCTYPE HTML\" | \"<SCRIPT\" | " - "\"<STYLE\" | \"<A HREF\" )" + "\"<STYLE\" | \"<A HREF\" | \"<BR/>\" )" }; resource(3, "META:S:DESC") #'MSDC' "HTML file"; diff --git a/src/kits/network/libnetapi/FileRequest.cpp b/src/kits/network/libnetapi/FileRequest.cpp index 800509c..bfa803d 100644 --- a/src/kits/network/libnetapi/FileRequest.cpp +++ b/src/kits/network/libnetapi/FileRequest.cpp @@ -23,7 +23,7 @@ BFileRequest::BFileRequest(const BUrl& url, BUrlProtocolListener* listener, BUrlRequest(url, listener, context, "BUrlProtocol.File", "file"), fResult() { - fUrl.UrlDecode(); + fUrl.UrlDecode(true); } diff --git a/src/kits/network/libnetapi/NetworkCookie.cpp b/src/kits/network/libnetapi/NetworkCookie.cpp index 50b4997..e7cc37f 100644 --- a/src/kits/network/libnetapi/NetworkCookie.cpp +++ b/src/kits/network/libnetapi/NetworkCookie.cpp @@ -19,8 +19,10 @@ #include <HttpTime.h> #include <NetworkCookie.h> + using BPrivate::BHttpTime; + static const char* kArchivedCookieName = "be:cookie.name"; static const char* kArchivedCookieValue = "be:cookie.value"; static const char* kArchivedCookieDomain = "be:cookie.domain"; @@ -159,7 +161,7 @@ BNetworkCookie::ParseCookieString(const BString& string, const BUrl& url) long maxAge = strtol(value.String(), &end, 10); if (*end == '\0') SetMaxAge((int)maxAge); - else if(errno == ERANGE && maxAge == LONG_MAX) + else if (errno == ERANGE && maxAge == LONG_MAX) SetMaxAge(INT_MAX); else SetMaxAge(-1); // cookie will expire immediately diff --git a/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp b/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp index 1de09c2..791c29f 100644 --- a/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp +++ b/src/kits/network/libnetapi/UrlProtocolAsynchronousListener.cpp @@ -26,8 +26,7 @@ BUrlProtocolAsynchronousListener::BUrlProtocolAsynchronousListener( if (be_app->Lock()) { be_app->AddHandler(this); be_app->Unlock(); - } - else + } else PRINT(("Cannot lock be_app\n")); if (transparent) { diff --git a/src/servers/app/drawing/Painter/AGGTextRenderer.cpp b/src/servers/app/drawing/Painter/AGGTextRenderer.cpp index 5ce1f5c..4324e09 100644 --- a/src/servers/app/drawing/Painter/AGGTextRenderer.cpp +++ b/src/servers/app/drawing/Painter/AGGTextRenderer.cpp @@ -316,7 +316,7 @@ public: } private: - const Transformable& fTransform; + const Transformable& fTransform; const BPoint& fTransformOffset; const IntRect& fClippingFrame; bool fDryRun;