Changeset 30994


Ignore:
Timestamp:
Oct 13, 2015, 8:36:52 AM (9 years ago)
Author:
Even Rouault
Message:

ogrinfo / ogr2ogr: @filename syntax: remove UTF-8 BOM marker

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/autotest/utilities/test_ogr2ogr_lib.py

    r30907 r30994  
    7979    gdal.Unlink('/vsimem/sql.txt')
    8080
     81    # Test @filename syntax with a UTF-8 BOM
     82    if sys.version_info >= (3,0,0):
     83        gdal.FileFromMemBuffer('/vsimem/sql.txt', '\xEF\xBB\xBFselect * from poly'.encode('LATIN1'))
     84    else:
     85        gdal.FileFromMemBuffer('/vsimem/sql.txt', '\xEF\xBB\xBFselect * from poly')
     86    ds = gdal.VectorTranslate('', srcDS, format = 'Memory', SQLStatement='@/vsimem/sql.txt')
     87    if ds is None or ds.GetLayer(0).GetFeatureCount() != 10:
     88        gdaltest.post_reason('fail')
     89        return 'fail'
     90    gdal.Unlink('/vsimem/sql.txt')
     91
    8192    return 'success'
    8293
  • trunk/gdal/apps/ogr2ogr_lib.cpp

    r30948 r30994  
    37193719}
    37203720
     3721/************************************************************************/
     3722/*                             RemoveBOM()                              */
     3723/************************************************************************/
     3724
     3725/* Remove potential UTF-8 BOM from data (must be NUL terminated) */
     3726static void RemoveBOM(GByte* pabyData)
     3727{
     3728    if( pabyData[0] == 0xEF && pabyData[1] == 0xBB && pabyData[2] == 0xBF )
     3729    {
     3730        memmove(pabyData, pabyData + 3, strlen((const char*)pabyData) + 1);
     3731    }
     3732}
    37213733
    37223734/************************************************************************/
     
    38853897                VSIIngestFile( NULL, papszArgv[i] + 1, &pabyRet, NULL, 1024*1024) )
    38863898            {
     3899                RemoveBOM(pabyRet);
    38873900                psOptions->pszSQLStatement = (char*)pabyRet;
    38883901            }
     
    40424055                VSIIngestFile( NULL, papszArgv[i] + 1, &pabyRet, NULL, 1024*1024) )
    40434056            {
     4057                RemoveBOM(pabyRet);
    40444058                psOptions->pszWHERE = (char*)pabyRet;
    40454059            }
  • trunk/gdal/apps/ogrinfo.cpp

    r30864 r30994  
    6060
    6161/************************************************************************/
     62/*                             RemoveBOM()                              */
     63/************************************************************************/
     64
     65/* Remove potential UTF-8 BOM from data (must be NUL terminated) */
     66static void RemoveBOM(GByte* pabyData)
     67{
     68    if( pabyData[0] == 0xEF && pabyData[1] == 0xBB && pabyData[2] == 0xBF )
     69    {
     70        memmove(pabyData, pabyData + 3, strlen((const char*)pabyData) + 1);
     71    }
     72}
     73
     74/************************************************************************/
    6275/*                                main()                                */
    6376/************************************************************************/
     
    152165                VSIIngestFile( NULL, papszArgv[iArg] + 1, &pabyRet, NULL, 1024*1024) )
    153166            {
     167                RemoveBOM(pabyRet);
    154168                pszWHERE = (char*)pabyRet;
    155169            }
     
    168182                VSIIngestFile( NULL, papszArgv[iArg] + 1, &pabyRet, NULL, 1024*1024) )
    169183            {
     184                RemoveBOM(pabyRet);
    170185                pszSQLStatement = (char*)pabyRet;
    171186            }
Note: See TracChangeset for help on using the changeset viewer.