static void hash_put( const char* n, uint32_t i ) { uint32_t id = (uint32_t)vt_hash((uint8_t*)n, strlen(n), 0) % HASH_MAX; HashNode_file* add = (HashNode_file*)malloc(sizeof(HashNode_file)); add->fname = vt_strdup(n); add->fid = i; add->next = htab_mpifile[id]; htab_mpifile[id] = add; }
char* vt_installdirs_expand(const char* input) { char* ret; char* start; char* end; if( input == NULL ) return NULL; /* 'input' cannot be modified, so copy it to a new allocated string 'ret' */ ret = vt_strdup( input ); /* expand all variables from directory path 'ret' */ while( ret != NULL && (start = strchr( ret, '$' )) != NULL ) { char* insert; char* tmp = ret; /* check for variables which can be expanded */ if( strncmp( start, "${prefix}", 9 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_PREFIX ); else if( strncmp( start, "${exec_prefix}", 14 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_EXEC_PREFIX ); else if( strncmp( start, "${bindir}", 9 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_BINDIR ); else if( strncmp( start, "${includedir}", 13 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_INCLUDEDIR ); else if( strncmp( start, "${libdir}", 9 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_LIBDIR ); else if( strncmp( start, "${datadir}", 10 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_DATADIR ); else if( strncmp( start, "${datarootdir}", 14 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_DATAROOTDIR ); else if( strncmp( start, "${docdir}", 9 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_DOCDIR ); else if( strncmp( start, "${sysconfdir}", 13 ) == 0 ) insert = vt_installdirs_get( VT_INSTALLDIR_SYSCONFDIR ); else break; /* compose output directory path */ end = strchr( start, '}' ); *start = '\0'; vt_asprintf( &ret, "%s%s%s", tmp, insert, end + 1 ); free( tmp ); } return ret; }