• Show log

    Commit

  • Hash : beb72810
    Author : Daniel Veillard
    Date : 2014-10-03T19:22:39

    Fix a problem properly saving URIs
    
    As written by Martin Kletzander <mkletzan@redhat.com>:
    Since commit 8eb55d782a2b9afacc7938694891cc6fad7b42a5, when you parse
    and save an URI that has no server (or similar) part, two slashes
    after the 'schema:' get lost.  It means 'uri:///noserver' is turned
    into 'uri:/noserver'.
    
    basically
       foo:///only/path
    
    means a host of "" while
    
       foo:/only/path
    
    means no host at all
    
      So the best fix IMHO is to fix the URI parser to record the first
    case and an empty host string and the second case as a NULL host string
    
     I would not revert the initial patch, we should not 'invent' those
    slash, but we should instead when parsing keep the information that
    it's a host based path and that foo:/// means the presence of a host
    but an empty one.
    
    Once applied the resulting patch below, all cases seems to be saved
    properly:
    
    thinkpad:~/XML -> ./testURI uri:/noserver
    uri:/noserver
    thinkpad:~/XML -> ./testURI uri:///noserver
    uri:///noserver
    thinkpad:~/XML -> ./testURI uri://server/foo
    uri://server/foo
    thinkpad:~/XML -> ./testURI uri:/noserver/foo
    uri:/noserver/foo
    thinkpad:~/XML -> ./testURI uri:///
    uri:///
    thinkpad:~/XML -> ./testURI uri://
    uri://
    thinkpad:~/XML -> ./testURI uri:/
    uri:/
    thinkpad:~/XML ->
    
      If you revert the initial patch that last case fails
    
    The problem is that I don't want to change the xmlURI structure to
    minimize ABI breakage, so I could not extend the field. The natural
    solution is to denote that uri:/// has an empty host by making
    the uri server field an empty string which works very well but breaks
    applications (like libvirt ;-) who blindly look at uri->server
    not being NULL to try to reach it !
    Simplest was to stick the port to -1 in that case, instead of 0
    application don't bother looking at the port of there is no server
    string, this makes the patch more complex than a 1 liner, but
    is better for ABI.
    

  • README

  •                   XML toolkit from the GNOME project
    
    Full documentation is available on-line at
        http://xmlsoft.org/
    
    This code is released under the MIT Licence see the Copyright file.
    
    To build on an Unixised setup:
       ./configure ; make ; make install
    To build on Windows:
       see instructions on win32/Readme.txt
    
    To assert build quality:
       on an Unixised setup:
          run make tests
       otherwise:
           There is 3 standalone tools runtest.c runsuite.c testapi.c, which
           should compile as part of the build or as any application would.
           Launch them from this directory to get results, runtest checks 
           the proper functionning of libxml2 main APIs while testapi does
           a full coverage check. Report failures to the list.
    
    To report bugs, follow the instructions at: 
      http://xmlsoft.org/bugs.html
    
    A mailing-list xml@gnome.org is available, to subscribe:
        http://mail.gnome.org/mailman/listinfo/xml
    
    The list archive is at:
        http://mail.gnome.org/archives/xml/
    
    All technical answers asked privately will be automatically answered on
    the list and archived for public access unless privacy is explicitly
    required and justified.
    
    Daniel Veillard
    
    $Id$