Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
xDataTOM_Misc.cc File Reference
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include "xDataTOM_private.h"

Go to the source code of this file.

Macros

#define nameValueLength   1024
 

Functions

char * xDataTOMMisc_getAbsPath (statusMessageReporting *smr, const char *fileName)
 
int xDataTOM_setMessageError_ReturnInt (int value, statusMessageReporting *smr, void *userInterface, const char *packageName, int lineNumber, int code, const char *fmt,...)
 
xDataTOM_elementxDataTOM_getLinksElement (statusMessageReporting *smr, xDataTOM_element *element, char const *link)
 

Macro Definition Documentation

◆ nameValueLength

#define nameValueLength   1024

Definition at line 22 of file xDataTOM_Misc.cc.

Function Documentation

◆ xDataTOM_getLinksElement()

xDataTOM_element * xDataTOM_getLinksElement ( statusMessageReporting * smr,
xDataTOM_element * element,
char const * link )

Definition at line 89 of file xDataTOM_Misc.cc.

89 {
90
91 xDataTOM_element *linkedElement = NULL;
92
93 if( link[0] == '/' ) {
94 for( linkedElement = element; linkedElement->parent != NULL; ) linkedElement = linkedElement->parent;
95 linkedElement = xDataTOM_getLinksElement2( smr, linkedElement, &(link[1]), link ); }
96 else {
97 smr_setReportError2( smr, smr_unknownID, 1, "Only absolute link currently supported: requested link = '%s'", link );
98 }
99 return( linkedElement );
100}
#define smr_setReportError2(smr, libraryID, code, fmt,...)
#define smr_unknownID
xDataTOM_element * parent
Definition xDataTOM.h:181

◆ xDataTOM_setMessageError_ReturnInt()

int xDataTOM_setMessageError_ReturnInt ( int value,
statusMessageReporting * smr,
void * userInterface,
const char * packageName,
int lineNumber,
int code,
const char * fmt,
... )

Definition at line 76 of file xDataTOM_Misc.cc.

77 {
78
79 va_list args;
80
81 va_start( args, fmt );
82 smr_setReportError( smr, userInterface, packageName, lineNumber, __func__, xDataTOM_smrLibraryID, code, fmt, args );
83 va_end( args );
84 return( value );
85}
int smr_setReportError(statusMessageReporting *smr, void *userInterface, char const *file, int line, char const *function, int libraryID, int code, char const *fmt,...)
int xDataTOM_smrLibraryID
Definition xDataTOM.cc:34

◆ xDataTOMMisc_getAbsPath()

char * xDataTOMMisc_getAbsPath ( statusMessageReporting * smr,
const char * fileName )

Definition at line 29 of file xDataTOM_Misc.cc.

29 {
30/*
31* User must free returned string.
32*/
33 int n = (int) strlen( fileName ) + 1, nCwd = 0;
34 char *absPath, cwd[4 * 1024] = "", *p, *needle;
35
36 if( fileName[0] != '/' ) {
37 //if( getcwd( cwd, sizeof( cwd ) + 1 ) == NULL ) {
38 //TK modified above line for compiler(gcc.4.8) warning message
39 if( getcwd( cwd, sizeof( cwd ) ) == NULL ) {
40 smr_setReportError2p( smr, xDataTOM_smrLibraryID, -1, "hardwired cwd too small" );
41 return( NULL );
42 }
43 nCwd = (int) strlen( cwd );
44 n += nCwd + 1; /* cwd + '/'. */
45 }
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 ); }
51 else {
52 strcpy( absPath, fileName );
53 }
54
55 while( 1 ) { /* Remove all ./ from path. */
56 if( ( needle = strstr( absPath, "/./" ) ) == NULL ) break;
57 p = needle;
58 for( needle += 2; *needle; p++, needle++ ) *p = *needle;
59 *p = 0;
60 } // Loop checking, 11.06.2015, T. Koi
61
62 while( 1 ) { /* Remove all ../ from path. */
63 if( ( needle = strstr( absPath, "/../" ) ) == NULL ) break;
64 p = needle - 1;
65 while( ( p > absPath ) && ( *p != '/' ) ) p--; // Loop checking, 11.06.2015, T. Koi
66 if( *p != '/' ) break; /* This should not happen if path is legit, I think, and I do not know what to do so will leave it. */
67 if( p == absPath ) break; /* Ditto. */
68 for( needle += 3; *needle; p++, needle++ ) *p = *needle;
69 *p = 0;
70 } // Loop checking, 11.06.2015, T. Koi
71 return( absPath );
72}
#define smr_setReportError2p(smr, libraryID, code, fmt)
#define smr_malloc2(smr, size, zero, forItem)

Referenced by MCGIDI_target_heated_read().