Changeset 1807


Ignore:
Timestamp:
23/01/12 12:57:07 (4 months ago)
Author:
Freddie Akeroyd
Message:

Trap non-printable characters in conversion to definition. Refs #320

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/applications/NXconvert/nxconvert_common.cpp

    r1797 r1807  
    187187{  
    188188   
    189    int i, status, dataType, dataRank, dataDimensions[NX_MAXRANK];      
     189   int i, n, status, dataType, dataRank, dataDimensions[NX_MAXRANK];      
    190190   static const int slab_start[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; 
    191191   static const int MAX_DEF_ARRAY_ELEMENTS_PER_DIM = 3; /* doesn't work yet - only 1 element is written */ 
     
    229229                    if (NXmalloc (&dataBuffer, dataRank, dataDimensions, dataType) != NX_OK) return NX_ERROR; 
    230230                    if (NXgetdata (inId, dataBuffer)  != NX_OK) return NX_ERROR; 
     231                    /* fix potential non-UTF8 character issue */ 
     232                    if (is_definition && dataType == NX_CHAR) 
     233                    { 
     234                        n = 1; 
     235                        for(i=0; i<dataRank; ++i) 
     236                        { 
     237                            n *= dataDimensions[i]; 
     238                        } 
     239                        for(i=0; i<n; ++i) 
     240                        { 
     241                            if (!isprint(((const unsigned char*)dataBuffer)[i])) 
     242                            { 
     243                                ((char*)dataBuffer)[i] = '?'; 
     244                            } 
     245                        } 
     246                    } 
    231247                    if (NXputdata (outId, dataBuffer) != NX_OK) return NX_ERROR; 
    232248                } 
Note: See TracChangeset for help on using the changeset viewer.