在unixODBC
中,SYSTEM_FILE_PATH
定义了像odbc.ini
和odbcinst.ini
这些系统文件存放的位置。默认情况下,是在“/usr/local/etc
”这个文件夹下。我们看一下用到SYSTEM_FILE_PATH
的地方。
(1)odbcinst_system_file_path
char *odbcinst_system_file_path( char *buffer )
{
char *path;
static char save_path[ 512 ];
static int saved = 0;
if ( saved ) {
return save_path;
}
if (( path = getenv( "ODBCSYSINI" ))) {
strcpy( buffer, path );
strcpy( save_path, buffer );
saved = 1;
return buffer;
}
#ifdef SYSTEM_FILE_PATH
else {
strcpy( save_path, SYSTEM_FILE_PATH );
saved = 1;
return SYSTEM_FILE_PATH;
}
#else
else {
strcpy( save_path, "/etc" );
saved = 1;
return "/etc";
}
#endif
}
可以看到在查找系统文件路径时,首先会看ODBCSYSINI
这个环境变量有没有赋值,如果有,以这个变量定义的值为准,否则如果SYSTEM_FILE_PATH
定义了,则用SYSTEM_FILE_PATH
。最后才考虑使用“/etc
”。
(2)odbc_config
的main
函数:
int main( int argc, char **argv )
{
......
else if ( strcmp( argv[ i ], "--odbcini" ) == 0 )
{
printf( "%s/odbc.ini\n", SYSTEM_FILE_PATH );
}
else if ( strcmp( argv[ i ], "--odbcinstini" ) == 0 )
{
printf( "%s/odbcinst.ini\n", SYSTEM_FILE_PATH );
}
......
}
可以看到,在使用odbc_config
程序获得odbc.ini
和odbcinst.ini
文件位置时,也要用的SYSTEM_FILE_PATH
。