17 #if defined __cplusplus    22 #define nameValueLength 1024    33     int n = (int) strlen( fileName ) + 1, nCwd = 0;
    34     char *absPath, cwd[4 * 1024] = 
"", *p, *needle;
    36     if( fileName[0] != 
'/' ) {
    39         if( getcwd( cwd, 
sizeof( cwd ) ) == NULL ) {
    43         nCwd = (int) strlen( cwd );
    46     if( ( absPath = (
char *) 
smr_malloc2( smr, n, 0, 
"absPath" ) ) == NULL ) 
return( NULL );
    47     if( fileName[0] != 
'/' ) {
    48         strcpy( absPath, cwd );
    49         strcat( absPath, 
"/" );
    50         strcat( absPath, fileName ); }
    52         strcpy( absPath, fileName );
    56         if( ( needle = strstr( absPath, 
"/./" ) ) == NULL ) 
break; 
    58         for( needle += 2; *needle; p++, needle++ ) *p = *needle;
    63         if( ( needle = strstr( absPath, 
"/../" ) ) == NULL ) 
break;
    65         while( ( p > absPath ) && ( *p != 
'/' ) ) p--; 
    66         if( *p != 
'/' ) 
break;                           
    67         if( p == absPath ) 
break;                       
    68         for( needle += 3; *needle; p++, needle++ ) *p = *needle;
    77     const char *fmt, ... ) {
    81     va_start( args, fmt );
    93     if( link[0] == 
'/' ) {
    94         for( linkedElement = element; linkedElement->
parent != NULL;  ) linkedElement = linkedElement->
parent;
    99     return( linkedElement );
   106     int n = (int) strlen( link );
   107     char const *slash = strchr( link, 
'/' ), *bracket = strchr( link, 
'[' ), *attributesValue;
   111     if( bracket != NULL ) n = (int) ( bracket - link );
   112     if( slash != NULL ) {
   113         if( (
int) ( slash - link ) < n ) {
   114             n = (int) ( slash - link );
   118     for( child = element->
children; child != NULL; child = child->
next ) {
   119         if( strncmp( link, child->
name, n ) == 0 ) {
   120             if( bracket != NULL ) {
   121                 if( bracket[1] != 
'@' ) {
   127                 if( strcmp( value, attributesValue ) ) 
continue;
   129             if( slash == NULL ) 
return( child );
   141     char const *equal = strchr( nameValue, 
'=' ), *p;
   144     if( equal == NULL ) {
   148     n = (int) ( equal - nameValue );
   153     strncpy( name, nameValue, n );
   157     if( *equal != quote ) quote = 
'"';
   158     if( *equal != quote ) {
   164     p = strchr( equal, quote );
   170     n = (int) ( p - equal );
   175     strncpy( value, equal, n );
   181 #if defined __cplusplus 
int xDataTOM_smrLibraryID
 
int xDataTOM_setMessageError_ReturnInt(int value, statusMessageReporting *smr, void *userInterface, const char *packageName, int lineNumber, int code, const char *fmt,...)
 
char * xDataTOMMisc_getAbsPath(statusMessageReporting *smr, const char *fileName)
 
static xDataTOM_element * xDataTOM_getLinksElement2(statusMessageReporting *smr, xDataTOM_element *element, char const *link, char const *fullLink)
 
#define smr_setReportError2p(smr, libraryID, code, fmt)
 
#define smr_setReportError2(smr, libraryID, code, fmt,...)
 
#define smr_malloc2(smr, size, zero, forItem)
 
static int xDataTOM_getLinksElement3(statusMessageReporting *smr, char const *nameValue, char *name, char *value, char const *fullLink)
 
int smr_setReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
 
xDataTOM_element * children
 
xDataTOM_element * xDataTOM_getLinksElement(statusMessageReporting *smr, xDataTOM_element *element, char const *link)
 
char const  * xDataTOM_getAttributesValueInElement(xDataTOM_element *element, char const *name)
 
xDataTOM_element * parent