diff options
author | drochner <drochner@pkgsrc.org> | 2010-04-12 21:12:12 +0000 |
---|---|---|
committer | drochner <drochner@pkgsrc.org> | 2010-04-12 21:12:12 +0000 |
commit | 4c660b712eb7a1cf32dfcb40db62b07c771d4c32 (patch) | |
tree | 0eaf09ecff2e9e0a7ed74406e2a2379eb1a2c13a /www/webkit-gtk | |
parent | 5f48447f4d252004b5c5f3d761fade7eee751bde (diff) | |
download | pkgsrc-4c660b712eb7a1cf32dfcb40db62b07c771d4c32.tar.gz |
-fix jit on netbsd/x86 (at least I hope so -- midori and epiphany work
well for me now)
-update to 1.2.0 -- sorry, no concise changelog available
Diffstat (limited to 'www/webkit-gtk')
-rw-r--r-- | www/webkit-gtk/Makefile | 5 | ||||
-rw-r--r-- | www/webkit-gtk/PLIST | 88 | ||||
-rw-r--r-- | www/webkit-gtk/distinfo | 12 | ||||
-rw-r--r-- | www/webkit-gtk/patches/patch-ad | 30 | ||||
-rw-r--r-- | www/webkit-gtk/patches/patch-af | 22 | ||||
-rw-r--r-- | www/webkit-gtk/patches/patch-ca | 273 |
6 files changed, 126 insertions, 304 deletions
diff --git a/www/webkit-gtk/Makefile b/www/webkit-gtk/Makefile index fcc63db098b..e57aa0e24f7 100644 --- a/www/webkit-gtk/Makefile +++ b/www/webkit-gtk/Makefile @@ -1,8 +1,7 @@ -# $NetBSD: Makefile,v 1.21 2010/04/12 02:26:39 obache Exp $ +# $NetBSD: Makefile,v 1.22 2010/04/12 21:12:12 drochner Exp $ -DISTNAME= webkit-1.1.15.4 +DISTNAME= webkit-1.2.0 PKGNAME= ${DISTNAME:S/webkit/webkit-gtk/} -PKGREVISION= 2 CATEGORIES= www MASTER_SITES= http://www.webkitgtk.org/ diff --git a/www/webkit-gtk/PLIST b/www/webkit-gtk/PLIST index 48ca4c8a4e2..1f18c4547d3 100644 --- a/www/webkit-gtk/PLIST +++ b/www/webkit-gtk/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.12 2009/11/21 00:13:58 snj Exp $ +@comment $NetBSD: PLIST,v 1.13 2010/04/12 21:12:12 drochner Exp $ bin/jsc include/webkit-1.0/JavaScriptCore/JSBase.h include/webkit-1.0/JavaScriptCore/JSContextRef.h @@ -15,6 +15,7 @@ include/webkit-1.0/webkit/webkitdefines.h include/webkit-1.0/webkit/webkitdownload.h include/webkit-1.0/webkit/webkitenumtypes.h include/webkit-1.0/webkit/webkiterror.h +include/webkit-1.0/webkit/webkitgeolocationpolicydecision.h include/webkit-1.0/webkit/webkithittestresult.h include/webkit-1.0/webkit/webkitnetworkrequest.h include/webkit-1.0/webkit/webkitnetworkresponse.h @@ -35,17 +36,26 @@ include/webkit-1.0/webkit/webkitwebview.h include/webkit-1.0/webkit/webkitwebwindowfeatures.h lib/libwebkit-1.0.la lib/pkgconfig/webkit-1.0.pc +share/locale/cs/LC_MESSAGES/webkit.mo share/locale/de/LC_MESSAGES/webkit.mo share/locale/en_GB/LC_MESSAGES/webkit.mo share/locale/es/LC_MESSAGES/webkit.mo +share/locale/et/LC_MESSAGES/webkit.mo +share/locale/gu/LC_MESSAGES/webkit.mo +share/locale/he/LC_MESSAGES/webkit.mo share/locale/it/LC_MESSAGES/webkit.mo share/locale/lt/LC_MESSAGES/webkit.mo +share/locale/lv/LC_MESSAGES/webkit.mo share/locale/nl/LC_MESSAGES/webkit.mo +share/locale/pa/LC_MESSAGES/webkit.mo +share/locale/pt/LC_MESSAGES/webkit.mo share/locale/pt_BR/LC_MESSAGES/webkit.mo share/locale/ru/LC_MESSAGES/webkit.mo +share/locale/sl/LC_MESSAGES/webkit.mo share/locale/sr/LC_MESSAGES/webkit.mo share/locale/sr@latin/LC_MESSAGES/webkit.mo share/locale/sv/LC_MESSAGES/webkit.mo +share/locale/uk/LC_MESSAGES/webkit.mo share/locale/vi/LC_MESSAGES/webkit.mo share/locale/zh_CN/LC_MESSAGES/webkit.mo share/webkit-1.0/images/deleteButton.png @@ -55,19 +65,28 @@ share/webkit-1.0/images/panIcon.png share/webkit-1.0/images/textAreaResizeCorner.png share/webkit-1.0/images/urlIcon.png share/webkit-1.0/resources/error.html +share/webkit-1.0/webinspector/AbstractTimelinePanel.js +share/webkit-1.0/webinspector/AuditCategories.js +share/webkit-1.0/webinspector/AuditLauncherView.js +share/webkit-1.0/webinspector/AuditResultView.js +share/webkit-1.0/webinspector/AuditRules.js +share/webkit-1.0/webinspector/AuditsPanel.js share/webkit-1.0/webinspector/BottomUpProfileDataGridTree.js share/webkit-1.0/webinspector/Breakpoint.js share/webkit-1.0/webinspector/BreakpointsSidebarPane.js share/webkit-1.0/webinspector/CallStackSidebarPane.js share/webkit-1.0/webinspector/Callback.js share/webkit-1.0/webinspector/ChangesView.js +share/webkit-1.0/webinspector/Checkbox.js share/webkit-1.0/webinspector/Color.js +share/webkit-1.0/webinspector/ConsolePanel.js share/webkit-1.0/webinspector/ConsoleView.js +share/webkit-1.0/webinspector/ContextMenu.js share/webkit-1.0/webinspector/CookieItemsView.js share/webkit-1.0/webinspector/DOMAgent.js share/webkit-1.0/webinspector/DOMStorage.js -share/webkit-1.0/webinspector/DOMStorageDataGrid.js share/webkit-1.0/webinspector/DOMStorageItemsView.js +share/webkit-1.0/webinspector/DOMSyntaxHighlighter.js share/webkit-1.0/webinspector/DataGrid.js share/webkit-1.0/webinspector/Database.js share/webkit-1.0/webinspector/DatabaseQueryView.js @@ -75,13 +94,22 @@ share/webkit-1.0/webinspector/DatabaseTableView.js share/webkit-1.0/webinspector/Drawer.js share/webkit-1.0/webinspector/ElementsPanel.js share/webkit-1.0/webinspector/ElementsTreeOutline.js +share/webkit-1.0/webinspector/EventListenersSidebarPane.js share/webkit-1.0/webinspector/FontView.js share/webkit-1.0/webinspector/ImageView.js +share/webkit-1.0/webinspector/Images/auditsIcon.png share/webkit-1.0/webinspector/Images/back.png +share/webkit-1.0/webinspector/Images/breakpointBorder.png +share/webkit-1.0/webinspector/Images/breakpointConditionalBorder.png +share/webkit-1.0/webinspector/Images/breakpointConditionalCounterBorder.png +share/webkit-1.0/webinspector/Images/breakpointCounterBorder.png +share/webkit-1.0/webinspector/Images/breakpointsActivateButtonGlyph.png +share/webkit-1.0/webinspector/Images/breakpointsDeactivateButtonGlyph.png share/webkit-1.0/webinspector/Images/checker.png share/webkit-1.0/webinspector/Images/clearConsoleButtonGlyph.png share/webkit-1.0/webinspector/Images/closeButtons.png share/webkit-1.0/webinspector/Images/consoleButtonGlyph.png +share/webkit-1.0/webinspector/Images/consoleIcon.png share/webkit-1.0/webinspector/Images/cookie.png share/webkit-1.0/webinspector/Images/database.png share/webkit-1.0/webinspector/Images/databaseTable.png @@ -105,9 +133,11 @@ share/webkit-1.0/webinspector/Images/enableOutlineButtonGlyph.png share/webkit-1.0/webinspector/Images/enableSolidButtonGlyph.png share/webkit-1.0/webinspector/Images/errorIcon.png share/webkit-1.0/webinspector/Images/errorMediumIcon.png +share/webkit-1.0/webinspector/Images/errorRedDot.png share/webkit-1.0/webinspector/Images/excludeButtonGlyph.png share/webkit-1.0/webinspector/Images/focusButtonGlyph.png share/webkit-1.0/webinspector/Images/forward.png +share/webkit-1.0/webinspector/Images/gearButtonGlyph.png share/webkit-1.0/webinspector/Images/glossyHeader.png share/webkit-1.0/webinspector/Images/glossyHeaderPressed.png share/webkit-1.0/webinspector/Images/glossyHeaderSelected.png @@ -115,6 +145,7 @@ share/webkit-1.0/webinspector/Images/glossyHeaderSelectedPressed.png share/webkit-1.0/webinspector/Images/goArrow.png share/webkit-1.0/webinspector/Images/graphLabelCalloutLeft.png share/webkit-1.0/webinspector/Images/graphLabelCalloutRight.png +share/webkit-1.0/webinspector/Images/grayConnectorPoint.png share/webkit-1.0/webinspector/Images/largerResourcesButtonGlyph.png share/webkit-1.0/webinspector/Images/localStorage.png share/webkit-1.0/webinspector/Images/nodeSearchButtonGlyph.png @@ -124,11 +155,14 @@ share/webkit-1.0/webinspector/Images/paneGrowHandleLine.png share/webkit-1.0/webinspector/Images/paneSettingsButtons.png share/webkit-1.0/webinspector/Images/pauseOnExceptionButtonGlyph.png share/webkit-1.0/webinspector/Images/percentButtonGlyph.png +share/webkit-1.0/webinspector/Images/popoverArrows.png +share/webkit-1.0/webinspector/Images/popoverBackground.png share/webkit-1.0/webinspector/Images/profileGroupIcon.png share/webkit-1.0/webinspector/Images/profileIcon.png share/webkit-1.0/webinspector/Images/profileSmallIcon.png share/webkit-1.0/webinspector/Images/profilesIcon.png share/webkit-1.0/webinspector/Images/profilesSilhouette.png +share/webkit-1.0/webinspector/Images/programCounterBorder.png share/webkit-1.0/webinspector/Images/radioDot.png share/webkit-1.0/webinspector/Images/recordButtonGlyph.png share/webkit-1.0/webinspector/Images/recordToggledButtonGlyph.png @@ -156,6 +190,7 @@ share/webkit-1.0/webinspector/Images/segmentHoverEnd.png share/webkit-1.0/webinspector/Images/segmentSelected.png share/webkit-1.0/webinspector/Images/segmentSelectedEnd.png share/webkit-1.0/webinspector/Images/sessionStorage.png +share/webkit-1.0/webinspector/Images/spinner.gif share/webkit-1.0/webinspector/Images/splitviewDimple.png share/webkit-1.0/webinspector/Images/splitviewDividerBackground.png share/webkit-1.0/webinspector/Images/statusbarBackground.png @@ -166,6 +201,22 @@ share/webkit-1.0/webinspector/Images/statusbarMenuButtonSelected.png share/webkit-1.0/webinspector/Images/statusbarResizerHorizontal.png share/webkit-1.0/webinspector/Images/statusbarResizerVertical.png share/webkit-1.0/webinspector/Images/storageIcon.png +share/webkit-1.0/webinspector/Images/successGreenDot.png +share/webkit-1.0/webinspector/Images/thumbActiveHoriz.png +share/webkit-1.0/webinspector/Images/thumbActiveVert.png +share/webkit-1.0/webinspector/Images/thumbHoriz.png +share/webkit-1.0/webinspector/Images/thumbHoverHoriz.png +share/webkit-1.0/webinspector/Images/thumbHoverVert.png +share/webkit-1.0/webinspector/Images/thumbVert.png +share/webkit-1.0/webinspector/Images/timelineBarBlue.png +share/webkit-1.0/webinspector/Images/timelineBarGray.png +share/webkit-1.0/webinspector/Images/timelineBarGreen.png +share/webkit-1.0/webinspector/Images/timelineBarOrange.png +share/webkit-1.0/webinspector/Images/timelineBarPurple.png +share/webkit-1.0/webinspector/Images/timelineBarRed.png +share/webkit-1.0/webinspector/Images/timelineBarYellow.png +share/webkit-1.0/webinspector/Images/timelineCheckmarks.png +share/webkit-1.0/webinspector/Images/timelineDots.png share/webkit-1.0/webinspector/Images/timelineHollowPillBlue.png share/webkit-1.0/webinspector/Images/timelineHollowPillGray.png share/webkit-1.0/webinspector/Images/timelineHollowPillGreen.png @@ -173,6 +224,7 @@ share/webkit-1.0/webinspector/Images/timelineHollowPillOrange.png share/webkit-1.0/webinspector/Images/timelineHollowPillPurple.png share/webkit-1.0/webinspector/Images/timelineHollowPillRed.png share/webkit-1.0/webinspector/Images/timelineHollowPillYellow.png +share/webkit-1.0/webinspector/Images/timelineIcon.png share/webkit-1.0/webinspector/Images/timelinePillBlue.png share/webkit-1.0/webinspector/Images/timelinePillGray.png share/webkit-1.0/webinspector/Images/timelinePillGreen.png @@ -180,11 +232,9 @@ share/webkit-1.0/webinspector/Images/timelinePillOrange.png share/webkit-1.0/webinspector/Images/timelinePillPurple.png share/webkit-1.0/webinspector/Images/timelinePillRed.png share/webkit-1.0/webinspector/Images/timelinePillYellow.png -share/webkit-1.0/webinspector/Images/tipBalloon.png -share/webkit-1.0/webinspector/Images/tipBalloonBottom.png -share/webkit-1.0/webinspector/Images/tipIcon.png -share/webkit-1.0/webinspector/Images/tipIconPressed.png share/webkit-1.0/webinspector/Images/toolbarItemSelected.png +share/webkit-1.0/webinspector/Images/trackHoriz.png +share/webkit-1.0/webinspector/Images/trackVert.png share/webkit-1.0/webinspector/Images/treeDownTriangleBlack.png share/webkit-1.0/webinspector/Images/treeDownTriangleWhite.png share/webkit-1.0/webinspector/Images/treeRightTriangleBlack.png @@ -197,9 +247,14 @@ share/webkit-1.0/webinspector/Images/userInputPreviousIcon.png share/webkit-1.0/webinspector/Images/userInputResultIcon.png share/webkit-1.0/webinspector/Images/warningIcon.png share/webkit-1.0/webinspector/Images/warningMediumIcon.png +share/webkit-1.0/webinspector/Images/warningOrangeDot.png share/webkit-1.0/webinspector/Images/warningsErrors.png +share/webkit-1.0/webinspector/Images/whiteConnectorPoint.png +share/webkit-1.0/webinspector/InjectedFakeWorker.js share/webkit-1.0/webinspector/InjectedScript.js share/webkit-1.0/webinspector/InjectedScriptAccess.js +share/webkit-1.0/webinspector/InspectorBackendStub.js +share/webkit-1.0/webinspector/InspectorFrontendHostStub.js share/webkit-1.0/webinspector/KeyboardShortcut.js share/webkit-1.0/webinspector/MetricsSidebarPane.js share/webkit-1.0/webinspector/Object.js @@ -208,7 +263,7 @@ share/webkit-1.0/webinspector/ObjectProxy.js share/webkit-1.0/webinspector/Panel.js share/webkit-1.0/webinspector/PanelEnablerView.js share/webkit-1.0/webinspector/Placard.js -share/webkit-1.0/webinspector/Popup.js +share/webkit-1.0/webinspector/Popover.js share/webkit-1.0/webinspector/ProfileDataGridTree.js share/webkit-1.0/webinspector/ProfileView.js share/webkit-1.0/webinspector/ProfilesPanel.js @@ -222,22 +277,41 @@ share/webkit-1.0/webinspector/ScopeChainSidebarPane.js share/webkit-1.0/webinspector/Script.js share/webkit-1.0/webinspector/ScriptView.js share/webkit-1.0/webinspector/ScriptsPanel.js +share/webkit-1.0/webinspector/Section.js +share/webkit-1.0/webinspector/Settings.js share/webkit-1.0/webinspector/SidebarPane.js share/webkit-1.0/webinspector/SidebarTreeElement.js +share/webkit-1.0/webinspector/SourceCSSTokenizer.js share/webkit-1.0/webinspector/SourceFrame.js +share/webkit-1.0/webinspector/SourceHTMLTokenizer.js +share/webkit-1.0/webinspector/SourceJavaScriptTokenizer.js +share/webkit-1.0/webinspector/SourceTokenizer.js share/webkit-1.0/webinspector/SourceView.js share/webkit-1.0/webinspector/StatusBarButton.js share/webkit-1.0/webinspector/StoragePanel.js share/webkit-1.0/webinspector/StylesSidebarPane.js share/webkit-1.0/webinspector/SummaryBar.js +share/webkit-1.0/webinspector/TestController.js +share/webkit-1.0/webinspector/TextEditorHighlighter.js +share/webkit-1.0/webinspector/TextEditorModel.js share/webkit-1.0/webinspector/TextPrompt.js +share/webkit-1.0/webinspector/TextViewer.js share/webkit-1.0/webinspector/TimelineAgent.js +share/webkit-1.0/webinspector/TimelineGrid.js +share/webkit-1.0/webinspector/TimelineOverviewPane.js +share/webkit-1.0/webinspector/TimelinePanel.js share/webkit-1.0/webinspector/TopDownProfileDataGridTree.js share/webkit-1.0/webinspector/View.js share/webkit-1.0/webinspector/WatchExpressionsSidebarPane.js +share/webkit-1.0/webinspector/WelcomeView.js +share/webkit-1.0/webinspector/WorkersSidebarPane.js +share/webkit-1.0/webinspector/audits.css share/webkit-1.0/webinspector/inspector.css share/webkit-1.0/webinspector/inspector.html share/webkit-1.0/webinspector/inspector.js +share/webkit-1.0/webinspector/inspectorSyntaxHighlight.css share/webkit-1.0/webinspector/localizedStrings.js +share/webkit-1.0/webinspector/popover.css +share/webkit-1.0/webinspector/textViewer.css share/webkit-1.0/webinspector/treeoutline.js share/webkit-1.0/webinspector/utilities.js diff --git a/www/webkit-gtk/distinfo b/www/webkit-gtk/distinfo index 67ff0182d22..ffcf2ab134d 100644 --- a/www/webkit-gtk/distinfo +++ b/www/webkit-gtk/distinfo @@ -1,8 +1,8 @@ -$NetBSD: distinfo,v 1.16 2010/01/08 09:56:09 drochner Exp $ +$NetBSD: distinfo,v 1.17 2010/04/12 21:12:12 drochner Exp $ -SHA1 (webkit-1.1.15.4.tar.gz) = 0778b130720756d880c2bbe9eeef79f35bcf861a -RMD160 (webkit-1.1.15.4.tar.gz) = dcfae86f7a2fc63b478741b370ac620d1659513e -Size (webkit-1.1.15.4.tar.gz) = 6093252 bytes -SHA1 (patch-ad) = d71d4d38a0cb570ad81a533a56affcd81a99fbed +SHA1 (webkit-1.2.0.tar.gz) = ac9db7c25471eed9d03ea90cea1c0b3378b6d47e +RMD160 (webkit-1.2.0.tar.gz) = 122b40f2d103406a42e5340fa6662781a0e356e2 +Size (webkit-1.2.0.tar.gz) = 7554632 bytes +SHA1 (patch-ad) = a5edd3fbff91488d220a3bfeb506865883c912cb SHA1 (patch-ae) = f288ef197b1dbd6c33b16c781bdc9b2b2918fefc -SHA1 (patch-ca) = 39159c2c602c456cc04e85ca2365dd0e936d08c9 +SHA1 (patch-af) = 971258e19192d058c4ca580abcbeb3b02f3bf6ce diff --git a/www/webkit-gtk/patches/patch-ad b/www/webkit-gtk/patches/patch-ad index 37e889e5dda..5f19026c45b 100644 --- a/www/webkit-gtk/patches/patch-ad +++ b/www/webkit-gtk/patches/patch-ad @@ -1,22 +1,22 @@ -$NetBSD: patch-ad,v 1.5 2009/10/19 14:18:08 wiz Exp $ +$NetBSD: patch-ad,v 1.6 2010/04/12 21:12:12 drochner Exp $ ---- JavaScriptCore/wtf/Platform.h.orig 2009-10-01 22:06:02 +0300 -+++ JavaScriptCore/wtf/Platform.h 2009-10-19 11:39:58 +0300 -@@ -75,7 +75,7 @@ - /* PLATFORM(FREEBSD) */ - /* Operating system level dependencies for FreeBSD-like systems that */ - /* should be used regardless of operating environment */ +--- JavaScriptCore/wtf/Platform.h.orig 2010-04-12 13:25:16.000000000 +0000 ++++ JavaScriptCore/wtf/Platform.h +@@ -346,7 +346,7 @@ + #endif + + /* OS(FREEBSD) - FreeBSD */ -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__DragonFly__) - #define WTF_PLATFORM_FREEBSD 1 + #define WTF_OS_FREEBSD 1 #endif -@@ -630,7 +630,7 @@ +@@ -362,7 +362,7 @@ + + /* OS(NETBSD) - NetBSD */ + #if defined(__NetBSD__) +-#define WTF_PLATFORM_NETBSD 1 ++#define WTF_OS_NETBSD 1 #endif - #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32) && !defined(WTF_USE_JSVALUE32_64) --#if PLATFORM(X86_64) && (PLATFORM(DARWIN) || PLATFORM(LINUX)) -+#if PLATFORM(X86_64) && (PLATFORM(DARWIN) || PLATFORM(LINUX) || PLATFORM(FREEBSD) || PLATFORM(NETBSD)) - #define WTF_USE_JSVALUE64 1 - #elif PLATFORM(ARM) || PLATFORM(PPC64) - #define WTF_USE_JSVALUE32 1 + /* OS(OPENBSD) - OpenBSD */ diff --git a/www/webkit-gtk/patches/patch-af b/www/webkit-gtk/patches/patch-af new file mode 100644 index 00000000000..a96c26d44af --- /dev/null +++ b/www/webkit-gtk/patches/patch-af @@ -0,0 +1,22 @@ +$NetBSD: patch-af,v 1.1 2010/04/12 21:12:12 drochner Exp $ + +--- JavaScriptCore/jit/JITOpcodes.cpp.orig 2010-04-12 13:49:15.000000000 +0000 ++++ JavaScriptCore/jit/JITOpcodes.cpp +@@ -165,7 +165,7 @@ void JIT::privateCompileCTIMachineTrampo + * stack pointer by the right amount after the call. + */ + +-#if COMPILER(MSVC) || OS(LINUX) ++#if COMPILER(MSVC) || OS(LINUX) || OS(NETBSD) + #if COMPILER(MSVC) + #pragma pack(push) + #pragma pack(4) +@@ -228,7 +228,7 @@ void JIT::privateCompileCTIMachineTrampo + storePtr(regT2, Address(stackPointerRegister, OBJECT_OFFSETOF(NativeCallFrameStructure, thisValue) + OBJECT_OFFSETOF(JSValue, u.asBits.payload))); + storePtr(regT3, Address(stackPointerRegister, OBJECT_OFFSETOF(NativeCallFrameStructure, thisValue) + OBJECT_OFFSETOF(JSValue, u.asBits.tag))); + +-#if COMPILER(MSVC) || OS(LINUX) ++#if COMPILER(MSVC) || OS(LINUX) || OS(NETBSD) + // ArgList is passed by reference so is stackPointerRegister + 4 * sizeof(Register) + addPtr(Imm32(OBJECT_OFFSETOF(NativeCallFrameStructure, result)), stackPointerRegister, X86Registers::ecx); + diff --git a/www/webkit-gtk/patches/patch-ca b/www/webkit-gtk/patches/patch-ca deleted file mode 100644 index 45463410b05..00000000000 --- a/www/webkit-gtk/patches/patch-ca +++ /dev/null @@ -1,273 +0,0 @@ -$NetBSD: patch-ca,v 1.1 2010/01/08 09:56:09 drochner Exp $ - ---- WebCore/loader/FTPDirectoryParser.cpp.orig 2009-09-29 19:23:22.000000000 +0000 -+++ WebCore/loader/FTPDirectoryParser.cpp -@@ -57,6 +57,13 @@ static struct tm *gmtimeQt(const time_t - #endif - #endif - -+static inline FTPEntryType ParsingFailed(ListState& state)
-+{
-+ if (state.parsedOne || state.listStyle) /* junk if we fail to parse */
-+ return FTPJunkEntry; /* this time but had previously parsed sucessfully */
-+ return FTPMiscEntry; /* its part of a comment or error message */
-+}
-+
- FTPEntryType parseOneFTPLine(const char* line, ListState& state, ListResult& result) - { - result.clear(); -@@ -125,6 +132,9 @@ FTPEntryType parseOneFTPLine(const char* - } - } - } -+
-+ if (!numtoks)
-+ return ParsingFailed(state);
- - linelen_sans_wsp = &(tokens[numtoks-1][toklen[numtoks-1]]) - tokens[0]; - if (numtoks == (sizeof(tokens)/sizeof(tokens[0])) ) -@@ -356,11 +366,16 @@ FTPEntryType parseOneFTPLine(const char* - pos++; - p++; - } -- if (lstyle && pos < (toklen[0]-1) && *p == ']') -- { -+ if (lstyle && pos < (toklen[0]-1))
-+ {
-+ /* ']' was found and there is at least one character after it */
-+ ASSERT(*p == ']');
- pos++; - p++; - tokmarker = pos; /* length of leading "[DIR1.DIR2.etc]" */ -+ } else {
-+ /* not a CMU style listing */
-+ lstyle = 0;
- } - } - while (lstyle && pos < toklen[0] && *p != ';') -@@ -387,7 +402,7 @@ FTPEntryType parseOneFTPLine(const char* - pos -= tokmarker; /* => fnlength sans "[DIR1.DIR2.etc]" */ - p = &(tokens[0][tokmarker]); /* offset of basename */ - -- if (!lstyle || pos > 80) /* VMS filenames can't be longer than that */ -+ if (!lstyle || pos == 0 || pos > 80) /* VMS filenames can't be longer than that */
- { - lstyle = 0; - } -@@ -780,7 +795,7 @@ FTPEntryType parseOneFTPLine(const char* - state.parsedOne = true; - state.listStyle = lstyle; - -- p = &(line[linelen_sans_wsp]); /* line end sans wsp */ -+ p = &(line[linelen]); /* line end */
- result.caseSensitive = true; - result.filename = tokens[3]; - result.filenameLength = p - tokens[3]; -@@ -788,29 +803,46 @@ FTPEntryType parseOneFTPLine(const char* - - if (*tokens[2] != '<') /* not <DIR> or <JUNCTION> */ - { -+ // try to handle correctly spaces at the beginning of the filename
-+ // filesize (token[2]) must end at offset 38
-+ if (tokens[2] + toklen[2] - line == 38) {
-+ result.filename = &(line[39]);
-+ result.filenameLength = p - result.filename;
-+ }
- result.type = FTPFileEntry; - pos = toklen[2]; - result.fileSize = String(tokens[2], pos); - } -- else if ((tokens[2][1]) != 'D') /* not <DIR> */ -- { -- result.type = FTPJunkEntry; /* unknown until junc for sure */ -- if (result.filenameLength > 4) -- { -- p = result.filename; -- for (pos = result.filenameLength - 4; pos > 0; pos--) -- { -- if (p[0] == ' ' && p[3] == ' ' && p[2] == '>' && -- (p[1] == '=' || p[1] == '-')) -+ else {
-+ // try to handle correctly spaces at the beginning of the filename
-+ // token[2] must begin at offset 24, the length is 5 or 10
-+ // token[3] must begin at offset 39 or higher
-+ if (tokens[2] - line == 24 && (toklen[2] == 5 || toklen[2] == 10) &&
-+ tokens[3] - line >= 39) {
-+ result.filename = &(line[39]);
-+ result.filenameLength = p - result.filename;
-+ }
-+
-+ if ((tokens[2][1]) != 'D') /* not <DIR> */
-+ {
-+ result.type = FTPJunkEntry; /* unknown until junc for sure */
-+ if (result.filenameLength > 4)
-+ {
-+ p = result.filename;
-+ for (pos = result.filenameLength - 4; pos > 0; pos--)
- { -- result.type = FTPLinkEntry; -- result.filenameLength = p - result.filename; -- result.linkname = p + 4; -- result.linknameLength = &(line[linelen_sans_wsp]) -- - result.linkname; -- break; -+ if (p[0] == ' ' && p[3] == ' ' && p[2] == '>' &&
-+ (p[1] == '=' || p[1] == '-'))
-+ {
-+ result.type = FTPLinkEntry;
-+ result.filenameLength = p - result.filename;
-+ result.linkname = p + 4;
-+ result.linknameLength = &(line[linelen])
-+ - result.linkname;
-+ break;
-+ }
-+ p++;
- } -- p++; - } - } - } -@@ -821,8 +853,13 @@ FTPEntryType parseOneFTPLine(const char* - result.modifiedTime.tm_mon--; - result.modifiedTime.tm_mday = atoi(tokens[0]+3); - result.modifiedTime.tm_year = atoi(tokens[0]+6); -+ /* if year has only two digits then assume that
-+ 00-79 is 2000-2079
-+ 80-99 is 1980-1999 */
- if (result.modifiedTime.tm_year < 80) -- result.modifiedTime.tm_year += 100; -+ result.modifiedTime.tm_year += 2000;
-+ else if (result.modifiedTime.tm_year < 100)
-+ result.modifiedTime.tm_year += 1900;
- } - - result.modifiedTime.tm_hour = atoi(tokens[1]+0); -@@ -974,6 +1011,8 @@ FTPEntryType parseOneFTPLine(const char* - * "drwxr-xr-x 2 0 0 512 May 28 22:17 etc" - */ - -+ bool isOldHellsoft = false;
-+
- if (numtoks >= 6) - { - /* there are two perm formats (Hellsoft/NetWare and *IX strmode(3)). -@@ -999,6 +1038,8 @@ FTPEntryType parseOneFTPLine(const char* - { - /* rest is FMA[S] or AFM[S] */ - lstyle = 'U'; /* very likely one of the NetWare servers */ -+ if (toklen[0] == 10)
-+ isOldHellsoft = true;
- } - } - } -@@ -1063,7 +1104,7 @@ FTPEntryType parseOneFTPLine(const char* - - /* check that size is numeric */ - p = tokens[tokmarker]; -- for (pos = 0; lstyle && pos < toklen[tokmarker]; pos++) -+ for (unsigned int i = 0; lstyle && i < toklen[tokmarker]; ++i)
- { - if (!isASCIIDigit(*p++)) - lstyle = 0; -@@ -1072,11 +1113,11 @@ FTPEntryType parseOneFTPLine(const char* - { - month_num = 0; - p = tokens[tokmarker+1]; -- for (pos = 0;pos < (12*3); pos+=3) -+ for (unsigned int i = 0; i < (12*3); i+=3)
- { -- if (p[0] == month_names[pos+0] && -- p[1] == month_names[pos+1] && -- p[2] == month_names[pos+2]) -+ if (p[0] == month_names[i+0] &&
-+ p[1] == month_names[i+1] &&
-+ p[2] == month_names[i+2])
- break; - month_num++; - } -@@ -1084,8 +1125,8 @@ FTPEntryType parseOneFTPLine(const char* - lstyle = 0; - } - } /* relative position test */ -- } /* while (pos+5) < numtoks */ -- } /* if (numtoks >= 4) */ -+ } /* for (pos = (numtoks-5); !lstyle && pos > 1; pos--) */
-+ } /* if (lstyle == 'U') */
- - if (lstyle == 'U') - { -@@ -1144,24 +1185,49 @@ FTPEntryType parseOneFTPLine(const char* - - } /* time/year */ - -- result.filename = tokens[tokmarker+4]; -- result.filenameLength = (&(line[linelen_sans_wsp])) -+ // there is exacly 1 space between filename and previous token in all
-+ // outputs except old Hellsoft
-+ if (!isOldHellsoft)
-+ result.filename = tokens[tokmarker+3] + toklen[tokmarker+3] + 1;
-+ else
-+ result.filename = tokens[tokmarker+4];
-+
-+ result.filenameLength = (&(line[linelen]))
- - (result.filename); - - if (result.type == FTPLinkEntry && result.filenameLength > 4) - { -- p = result.filename + 1; -- for (pos = 1; pos < (result.filenameLength - 4); pos++) -- { -- if (*p == ' ' && p[1] == '-' && p[2] == '>' && p[3] == ' ') -- { -- result.linkname = p + 4; -- result.linknameLength = (&(line[linelen_sans_wsp])) -- - (result.linkname); -- result.filenameLength = pos; -- break; -- } -- p++; -+ /* First try to use result.fe_size to find " -> " sequence.
-+ This can give proper result for cases like "aaa -> bbb -> ccc". */
-+ unsigned int fileSize = result.fileSize.toUInt();
-+
-+ if (result.filenameLength > (fileSize + 4) &&
-+ strncmp(result.filename + result.filenameLength - fileSize - 4, " -> ", 4) == 0)
-+ {
-+ result.linkname = result.filename + (result.filenameLength - fileSize);
-+ result.linknameLength = (&(line[linelen])) - (result.linkname);
-+ result.filenameLength -= fileSize + 4;
-+ }
-+ else
-+ {
-+ /* Search for sequence " -> " from the end for case when there are
-+ more occurrences. F.e. if ftpd returns "a -> b -> c" assume
-+ "a -> b" as a name. Powerusers can remove unnecessary parts
-+ manually but there is no way to follow the link when some
-+ essential part is missing. */
-+ p = result.filename + (result.filenameLength - 5);
-+ for (pos = (result.filenameLength - 5); pos > 0; pos--)
-+ {
-+ if (strncmp(p, " -> ", 4) == 0)
-+ {
-+ result.linkname = p + 4;
-+ result.linknameLength = (&(line[linelen]))
-+ - (result.linkname);
-+ result.filenameLength = pos;
-+ break;
-+ }
-+ p--;
-+ }
- } - } - -@@ -1618,9 +1684,7 @@ FTPEntryType parseOneFTPLine(const char* - - } /* if (linelen > 0) */ - -- if (state.parsedOne || state.listStyle) /* junk if we fail to parse */ -- return FTPJunkEntry; /* this time but had previously parsed sucessfully */ -- return FTPMiscEntry; /* its part of a comment or error message */ -+ return ParsingFailed(state);
- } - - } // namespace WebCore |