Skip to content
Snippets Groups Projects
  1. Jan 07, 2014
    • Benjamin Rau's avatar
      [BUGFIX] Repository uses wrong property to calc current result page · 9de93a17
      Benjamin Rau authored
      In the IndexedSearchRepository on line 157 an undefined/unused 
      property $this->resultsPerPage is used for the calculation 
      of the current page the visitor is showing on search results.
      
      Instead of using $this->resultsPerPage we have to use 
      $this->numberOfResults which is defined and contains the expected setting.
      
      Change-Id: I37c3a08c1049eb6166704b2b98ba071f03aad243
      Resolves: #54808
      Releases: 6.2, 6.1
      Reviewed-on: https://review.typo3.org/26677
      Reviewed-by: Anja Leichsenring
      Tested-by: Anja Leichsenring
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      9de93a17
    • Benjamin Rau's avatar
      [BUGFIX] PageBrowsing ViewHelper defines unused method argument · a564071e
      Benjamin Rau authored
      The PHP-Doc comments for the render-method in PageBrowsing 
      Viewhelper on Indexed Search define a $details argument 
      for that method with is then not part of the method arguments 
      itself.
      
      As it seems to be unused the argument definition should simply 
      be removed from doc comments to dont mess up the defintions 
      of the other arguments.
      
      Right now this results in maximumNumberOfResultPages be defined 
      as array and causes a fatal error like:
      The argument "maximumNumberOfResultPages" was registered with 
      type "array", but is of type "string" in view helper 
      "TYPO3\CMS\IndexedSearch\ViewHelpers\PageBrowsingViewHelper"
      
      Resolves: #54807
      Releases: 6.2, 6.1
      Change-Id: I58376880ef64a1e1088561fbdb3ff25f9c1fbdc2
      Reviewed-on: https://review.typo3.org/26676
      Reviewed-by: Anja Leichsenring
      Tested-by: Anja Leichsenring
      a564071e
    • Thomas Maroschik's avatar
      [BUGFIX] Fix dependencies for non-composer extensions · 185658af
      Thomas Maroschik authored
      The method packageRequirementIsComposerPackage of
      TYPO3\CMS\Core\Package ignores all non composer package
      names and thus dependency resolving of non composer packages
      doesn't work.
      
      This patch adapts the behavior to ignore just the platform
      package links described here
      http://getcomposer.org/doc/02-libraries.md#platform-packages
      
      Fixes: #54142
      Releases: 6.2
      Change-Id: Idb6a837eebf792c6cbf9394885edc17c9d392a9f
      Reviewed-on: https://review.typo3.org/26619
      Reviewed-by: Stefan Froemken
      Tested-by: Stefan Froemken
      Reviewed-by: Anja Leichsenring
      Tested-by: Anja Leichsenring
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      Reviewed-by: Oliver Hader
      Tested-by: Oliver Hader
      185658af
  2. Jan 06, 2014
    • Michael Schams's avatar
      [BUGFIX] Replace reference to Security Cookbook with Security Guide · 76dea628
      Michael Schams authored
      Section "TYPO3 Security" refers to the TYPO3 Security Cookbook, which is
      obsolete and has been replaced by the official TYPO3 Security Guide in
      December 2011. This patch removes the reference to the Cookbook and
      replaces it by a link to the latest version of the Security Guide on
      docs.typo3.org.
      
      Resolves: #54756
      Releases: 6.2
      Change-Id: I4067d40e854e7d4b4f77e2c12239e3e00616f5a7
      Reviewed-on: https://review.typo3.org/26656
      Reviewed-by: Michiel Roos
      Tested-by: Michiel Roos
      Reviewed-by: Wouter Wolters
      Tested-by: Wouter Wolters
      76dea628
  3. Jan 04, 2014
    • Michiel Roos's avatar
      [TASK] Cleanup convertParameterReflectionToArray() · c0baab82
      Michiel Roos authored
      ReflectionService::convertParameterReflectionToArray() checks
      functions already returning boolean again for boolean value.
      
      Remove this overhead and improve readability.
      
      Change-Id: I113f16cd73c713da5ec75b0e57eeee1d0e17308c
      Resolves: #54021
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/25717
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      c0baab82
    • Markus Klein's avatar
      [BUGFIX] Set uid of BE_USER mock in functional tests · 4cd861c0
      Markus Klein authored
      Datahandler functional tests lack proper initialization of the
      BE_USER mock used.
      
      Set a 'uid' for the mock in order to get tests working again.
      
      Resolves: #54741
      Releases: 6.2
      Change-Id: I20cccf8d3622b2c63d6b7c9f07c0e2d238bea7b9
      Reviewed-on: https://review.typo3.org/26642
      Reviewed-by: Oliver Hader
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      4cd861c0
    • Alexander Stehlik's avatar
      [BUGFIX] Allow NULL values in INSERT queries · 8207a2bb
      Alexander Stehlik authored
      Currently only UPDATE queries pass the $allowNull parameter to the
      fullQuoteStr() method in the DatabaseHandler. To make the behavior of
      both methods consistent and to allow NULL values during creation of
      new records by TCEmain the $allowNull parameter is also set to TRUE for
      INSERT queries.
      
      Resolves: #53662
      Releases: 6.2, 6.1, 6.0
      Change-Id: I066b9880a557b6c9058fc15f467631f1313300f9
      Reviewed-on: https://review.typo3.org/25422
      Reviewed-by: Philipp Gampe
      Reviewed-by: Frans Saris
      Tested-by: Frans Saris
      Reviewed-by: Xavier Perseguers
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      8207a2bb
  4. Jan 03, 2014
    • Michiel Roos's avatar
      [BUGFIX] EM does not always show description · 6a663554
      Michiel Roos authored
      When an extension (like rsaauth) has configuration options in the
      extension manager, the description is not shown as a tooltip when hovering
      over the extension name. Then it will only show 'Configure'. Which is not
      so helpful.
      
      The ConfigureExtensionViewHelper can be modified to not add a title
      attribute on the link. This will ensure that the title attribute of the td
      is shown.
      
      Change-Id: Ie6de8033545856cbe4a3689366e05d5d2ad3dc7b
      Resolves: #54689
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/26615
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      Reviewed-by: Xavier Perseguers
      Tested-by: Xavier Perseguers
      6a663554
  5. Dec 30, 2013
    • Michiel Roos's avatar
      [TASK] joinTSarrays() is replaced by array_replace_recursive() · e7128300
      Michiel Roos authored
      \TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer::joinTSarrays is
      replaced by the PHP native array_replace_recursive() (added in PHP 5.3.0)
      which does exactly the same and is twice as fast.
      
      Usage of $cObj->joinTSarrays() is deprecated.
      
      Change-Id: I748270a192bccc89927e0d6b82a1f405959b2209
      Resolves: #54520
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/26500
      Reviewed-by: Ernesto Baschny
      Tested-by: Ernesto Baschny
      e7128300
  6. Dec 21, 2013
    • Michiel Roos's avatar
      [BUGFIX] isValidUrl() idna converts whole URI · f8fdcea7
      Michiel Roos authored
      GeneralUtility::isValidUrl() idna converts whole URI instead of
      domain only.
      
      The expensive idna_convert() is called from isValidUrl(). Instead of
      feeding it just the domain part, the whole URI is converted.
      
      When supplying just the domain part, a great speed gain can be seen.
      
      On seriously malformed URLs, parse_url() may return FALSE and emits an
      E_WARNING. So we check for that first.
      
      PHP no longer supports the flags FILTER_FLAG_HOST_REQUIRED and
      FILTER_FLAG_SCHEME_REQUIRED. A scheme is now required by default. [1]
      Return FALSE if the URL does not start with a scheme.
      
      A public GeneralUtility::idnaEncode() method uses a static idna_convert
      instance and fetches converted strings from a string cache array
      to avoid multiple checks on the same domain.
      
      All manual idna_convert instances are replaced with
      GeneralUtility::idnaEncode() calls.
      
      Special characters are not allowed in the URL except in the domain
      part [2]. So the test with special characters in the path was removed
      from the GeneralUtilityTest class.
      
      [1] http://www.php.net/manual/en/filter.filters.flags.php#107382
      [2] http://tools.ietf.org/html/rfc3986#appendix-A
      
      Change-Id: I7a0ab0a399d9d6cf68c824f413be6b6d621947c1
      Resolves: #53862
      Releases: 6.2, 6.1, 6.0
      Reviewed-on: https://review.typo3.org/25636
      Reviewed-by: Markus Klein
      Reviewed-by: Wouter Wolters
      Tested-by: Wouter Wolters
      Reviewed-by: Michiel Roos
      Tested-by: Michiel Roos
      Tested-by: Markus Klein
      Reviewed-by: Andreas Wolf
      Reviewed-by: Jo Hasenau
      Reviewed-by: Xavier Perseguers
      Tested-by: Xavier Perseguers
      f8fdcea7
    • Steffen Ritter's avatar
      [BUGFIX] Folder::getFiles directly calls Factory::createFileObject · 28b91ac6
      Steffen Ritter authored
      Folder::getFiles implements the logic of creating file objects
      itself, after retrieving the information from the driver.
      Besides the fact that this is slow since all information for the
      object are received from the filesystem directly instead of the
      cache in the sys_file table the uid is not present in these
      objects which finally results in the lack of metadata in these
      file objects.
      
      In addition to that ommiting the ResourceFactory several objects
      for the same file might exists which may lead to inconsistent
      behaviour and output on modifying the file.
      
      As the Folder/File Objects only should be a convinience facade
      in front of the ResourceStorage this change introduces a new
      method their, implementing the new and improved logic.
      
      At the same time the old functionality - which enforces manual
      file object creation - has been deprecated and the filelist
      module is adapted accordingly.
      
      Releases: 6.2
      Resolves: #53688
      Change-Id: I3fb97d432d325bd...
      28b91ac6
    • Steffen Ritter's avatar
      [BUGFIX] getFileIndexRecordsForFolder only works for hierarchical path · b100e06f
      Steffen Ritter authored
      The method FileRepository::getFileIndexRecordsForFolder
      retrieves the Index Records for files in a given folder using a
      LIKE-query. This basically checks if the identifier of the a
      folder is part of the identifier of the file.
      
      This concept has several drawbacks. First not all storages are
      hierarchical, second this will fail if there is a different
      directory seperator than / and finally this fetches records
      for the folder recursively which may result in a huge amount of
      data if for example the root folder of an storage is queried.
      
      In addition the method resides in the FileRepository while it
      retrieves IndexRecords - which is a different concern.
      
      This change introduces the function within the
      FileIndexRepository and uses the folder_hash (introduced in
      https://review.typo3.org/23398) to query for the files.
      
      The old method is deprecated now, calls the new method and
      all core-usages of the old function have been rewritten to
      use the new functionality.
      
      Releases: 6.2
      Resolves: #53687
      Change-Id: Icabf2350192c93951f2277f3aa7468fe958bfabf
      Reviewed-on: https://review.typo3.org/26357
      Reviewed-by: Frans Saris
      Tested-by: Frans Saris
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      b100e06f
  7. Dec 20, 2013
  8. Dec 19, 2013
  9. Dec 18, 2013
    • Stefan Neufeind's avatar
      [TASK] oncontextmenu: Avoid duplicating onclick-functionality · befa7993
      Stefan Neufeind authored
      Where onclick and oncontextmenu behave the same avoid duplicating
      JavaScript-code and simply call the click()-functionality.
      
      Change-Id: Iaa0b96fd311ea1a8367ef474b483e6c92bb1bcff
      Resolves: #54288
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/26094
      Reviewed-by: Frans Saris
      Tested-by: Frans Saris
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      befa7993
    • Stefan Neufeind's avatar
      [TASK] Add tool-function to strip PATH_site-part of paths · 7efcf2a4
      Stefan Neufeind authored
      Avoid having to use the substr/strlen-magic.
      Also strlen(PATH_site) can be statically cached.
      
      Change-Id: I0ef942e331e2039e2ece9a55dd740db2a3896e2c
      Resolves: #54126
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/25851
      Reviewed-by: Philipp Gampe
      Tested-by: Philipp Gampe
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      7efcf2a4
    • Stefan Neufeind's avatar
      [BUGFIX] Follow up: Moving files and folders doesn't update hashes · f23f4acd
      Stefan Neufeind authored
      Since #53655, reviewed at https://review.typo3.org/25481 the indexer
      takes care of updating file objects and index records if a file or
      folder is moved.
      
      The unit tests have not been adapted to that change accordingly.
      This changeset fixes the tests for LocalDriver and ResourceStorage.
      
      Change-Id: Id17b01b8e47dd63750d1c11c2d4e24313b053695
      Resolves: #54499
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/26477
      Reviewed-by: Stefan Neufeind
      Tested-by: Stefan Neufeind
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      f23f4acd
    • Thomas Maroschik's avatar
      [TASK] Optimize Package State Migration · 4a20881b
      Thomas Maroschik authored
      Under certain circumstances the Failsafe Package Manager
      could interfer with the Update Package Manager in the Install Tool.
      
      In order to reduce this friction the migration logic is integrated
      into the migration step.
      
      Resolves: #53886
      Releases: 6.2
      Change-Id: I0300b9c74736262b03f9f9b59a49576b7edf5b2f
      Reviewed-on: https://review.typo3.org/25648
      Reviewed-by: Markus Klein
      Reviewed-by: Thomas Maroschik
      Reviewed-by: Stefan Neufeind
      Tested-by: Stefan Neufeind
      4a20881b
    • Thomas Maroschik's avatar
      [FEATURE] Allow the activation of packages during runtime · a4c96cfa
      Thomas Maroschik authored
      Due to the nature of the Flow Package Manager, packages cannot
      be activated and directly used during runtime. Before the Package
      Manager it was possible to activate/deactivate extensions in
      AdditionalConfiguration.php under certain custom conditions.
      
      This patch introduces a new setting in $GLOBALS['TYPO3_CONF_VARS']
      ['EXT']['runtimeActivatedPackages'] = array('{packageKey}') that
      gets initialized right after the package management initialization.
      
      Resolves: #53015
      Releases: 6.2
      Change-Id: Id3b85a3feb00876d2a04a02e85450a4568eb5bff
      Reviewed-on: https://review.typo3.org/24939
      Reviewed-by: Thomas Maroschik
      Reviewed-by: Stefan Neufeind
      Tested-by: Stefan Neufeind
      Tested-by: Alexander Stehlik
      Tested-by: Frans Saris
      Reviewed-by: Stefan Froemken
      Tested-by: Stefan Froemken
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      a4c96cfa
    • Alexander Stehlik's avatar
      [BUGFIX] Use correct file data variable in Indexer · 26406761
      Alexander Stehlik authored
      The processChangedAndNewFiles() method in the Indexer class now uses
      the $fileIndexEntry variable for retrieving a file object from the
      resource factory instead of the invalid $data variable which is NULL.
      
      Resolves: #54312
      Releases: 6.2
      Change-Id: I3b9c2ce99f7b4b7c575cc4055c02912c306ed789
      Reviewed-on: https://review.typo3.org/26339
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      26406761
    • Steffen Ritter's avatar
      [BUGFIX] Access to sys_files is incompatible to fe_access checks · 3cdab9df
      Steffen Ritter authored
      The system extension filemetadata adds access restriction fields
      for selecting frontend user groups as known from tt_content or
      pages. Behind the scenes of the TCEform this relation is stored
      in a MM table which is incompatible to the usual access checks.
      
      In addition a opposite relation is added to fe_groups which
      queries all files to show in a selector.
      
      This change removes the MM table and reconfigures the fe_groups
      field in the same way as it is done for tt_content and pages.
      
      Resolves: #54236
      Resolves: #54237
      Releases: 6.2
      Change-Id: I8a05073dee9e57e48335e1fe2a3917313563ac7d
      Reviewed-on: https://review.typo3.org/25987
      Reviewed-by: Markus Klein
      Reviewed-by: Stefan Froemken
      Tested-by: Stefan Froemken
      Reviewed-by: Frans Saris
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      3cdab9df
    • Frans Saris's avatar
      [BUGFIX] Moving files and folders doesn't update hashes · fc696569
      Frans Saris authored
      The ResourceStorage does not properly make use of the Indexer.
      As result the indexRecord is not properly updated after a
      file change.
      
      This patch cleans up the ResourceStorage so it doesn't update
      the index properties itself but leaves that to the indexer.
      
      Resolves: #53655
      Releases: 6.2
      Change-Id: I249505a1bc0b93f8b3ffb0e9cb2b7f10a9a9968e
      Reviewed-on: https://review.typo3.org/25481
      Reviewed-by: Stefan Neufeind
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      fc696569
    • Markus Klein's avatar
      [BUGFIX] ArrayIterator::seek() warning in ElementBrowser · 52585063
      Markus Klein authored
      ElementBrowser calls Folder::getFiles() with wrong parameters.
      Properly implement the file extensions filter.
      
      Resolves: #51752
      Releases: 6.2, 6.1, 6.0
      Change-Id: I56468c79225e2d3baa5e5784571074532e2287ad
      Reviewed-on: https://review.typo3.org/25359
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      52585063
    • Markus Klein's avatar
      [BUGFIX] Uncaught exception if editor has no file mount · faeb2528
      Markus Klein authored
      If an editor has got no file mounts, an uncaught exception
      is shown in the element browser.
      
      Fix this by checking if there is a selected folder at all.
      
      Resolves: #52969
      Releases: 6.2
      Change-Id: I5f9e8cc7994edd69f6db6ae1cc647ee31e4930c6
      Reviewed-on: https://review.typo3.org/25357
      Reviewed-by: Stefan Neufeind
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      faeb2528
    • Wouter Wolters's avatar
      [BUGFIX] felogin: Unknown modifier in regular expression · bc038aa5
      Wouter Wolters authored
      A regular expression in FrontendLoginController
      contains an unknown modifier. Fix it by replacing the
      / to # at the beginning and the end of the regular
      expression.
      
      Change-Id: Id4d3439c1cdbec691d977570bf76ba0c7bad493c
      Resolves: #52059
      Releases: 6.2, 6.1, 6.0
      Reviewed-on: https://review.typo3.org/23881
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      Reviewed-by: Stefan Neufeind
      Tested-by: Stefan Neufeind
      bc038aa5
    • Markus Klein's avatar
      [BUGFIX] Form Wizard saving destroys Radio Buttons · 7b5276ef
      Markus Klein authored
      This fixes a wrong parsing of \r\n characters for radio
      button options.
      
      Resolves: #53727
      Releases: 6.2, 6.1, 6.0
      Change-Id: I9a88be010a7dd982776bee4a98ba99d97fcc406b
      Reviewed-on: https://review.typo3.org/25482
      Reviewed-by: Stefan Neufeind
      Tested-by: Stefan Neufeind
      7b5276ef
    • Markus Klein's avatar
      [BUGFIX] Remove ElementBrowser::isReadOnlyFolder · e8a2b21e
      Markus Klein authored
      ElementBrowser::isReadOnlyFolder is not required any more because the
      check if the folder is writable has been moved to the methods that
      create the file upload and folder creation forms.
      
      The method and the parts where it was used were removed.
      
      Additionally the check if the user is allowed to create folders
      by TSConfig was moved to the createFolder method to reduce the amount
      of duplicate code.
      
      Resolves: #47648
      Releases: 6.2, 6.1, 6.0
      Change-Id: Ic6504c8def80012cbe420fc83539cfa859a53c0d
      Reviewed-on: https://review.typo3.org/25358
      Reviewed-by: DANIEL Rémy
      Tested-by: DANIEL Rémy
      Reviewed-by: Fabien Udriot
      Tested-by: Fabien Udriot
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      e8a2b21e
    • Stefan Neufeind's avatar
      [BUGFIX] Pagetree pointer cursor broken since ExtJS upgrade · b948dc9c
      Stefan Neufeind authored
      Icons in the pagetree should show cursor:pointer on hover.
      This changed with ExtJS-upgrade in #52933 because of
      x-unselectable.
      
      Since in the pagetree we need x-unselectable unfortunately
      manually bring back the old cursor-behaviour.
      
      Change-Id: If6fa45b0e3491d9180855a4d0a462c5fb559d476
      Resolves: #54238
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/26099
      Reviewed-by: Alexander Stehlik
      Tested-by: Alexander Stehlik
      Reviewed-by: Marcin S?gol
      Tested-by: Marcin S?gol
      Reviewed-by: Steffen Ritter
      Tested-by: Steffen Ritter
      b948dc9c
  10. Dec 17, 2013
    • Stefan Neufeind's avatar
      [TASK] Cleanup usage of getPageRenderer() · fd014c27
      Stefan Neufeind authored
      Change-Id: Id2dc49c9a5e5ca3ede14bc82218dd9ccdc7628ca
      Resolves: #54123
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/25844
      Reviewed-by: Wouter Wolters
      Tested-by: Wouter Wolters
      Reviewed-by: Xavier Perseguers
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      fd014c27
    • Eric Chavaillaz's avatar
      [BUGFIX] fileadmin is hardcoded in install tool · 7317b652
      Eric Chavaillaz authored
      In the class "DefaultFactory", "fileadmin" is hardcoded.
      The function "getDefaultStructureDefinition"
      must take care of the $GLOBALS['TYPO3_CONF_VARS']
      ['BE']['fileadminDir'] configuration variable.
      
      Resolves: #53872
      Releases: 6.2
      Change-Id: I17c836a58ea70d218170a33e28ca578bb50eef0b
      Reviewed-on: https://review.typo3.org/25640
      Reviewed-by: Christian Kuhn
      Tested-by: Christian Kuhn
      Reviewed-by: Stefan Neufeind
      Reviewed-by: Xavier Perseguers
      Tested-by: Xavier Perseguers
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      7317b652
    • Wouter Wolters's avatar
      [TASK] Superfluous comparison in OpendocsController · d2ec3ede
      Wouter Wolters authored
      Fix superfluous comparison against boolean in
      OpendocsController::checkAccess
      
      Change-Id: I0682042848f2f25856506d5949fc724853c43948
      Resolves: #54052
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/25739
      Reviewed-by: Jo Hasenau
      Reviewed-by: Michiel Roos
      Tested-by: Michiel Roos
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      d2ec3ede
    • Wouter Wolters's avatar
      [TASK] Superfluous comparison in DataHandler · 1200db9d
      Wouter Wolters authored
      Fix superfluous comparison against boolean in
      DataHandler::versionizeRecord
      
      Change-Id: I345917b9eb29f3cbb39a137f624926888dec623a
      Resolves: #54051
      Releases: 6.2
      Reviewed-on: https://review.typo3.org/25738
      Reviewed-by: Jo Hasenau
      Reviewed-by: Michiel Roos
      Tested-by: Michiel Roos
      Reviewed-by: Markus Klein
      Tested-by: Markus Klein
      1200db9d