# # Database Utility Functions # # # get_database_directory() # # Purpose: This returns the pathname of the database directory for this profile # subroutine(get_database_directory(node profile), ( # echo("get_database_directory()"); # if (profile?{"database"} and profile{"database"}?{"server"} and profile{"database"}{"server"}?{"database_directory"}) then ( string database_directory; if (@profile{"database"}{"server"}{"database_directory"} ne "") then ( database_directory = @profile{"database"}{"server"}{"database_directory"}; ); else ( database_directory = internal.LOGANALYSISINFO_DIRECTORY . "Databases" . internal.directory_divider . node_name(profile); ); database_directory .= internal.directory_divider . "main" . internal.directory_divider; # error("No database_directory in profile"); database_directory; )); #### get_database_directory #### # # rewrite_database_config() # # Purpose: This rewrites the database "config" file, in the database directory, from the latest data in the profile # # Parameters: profile: the profile # subroutine(rewrite_database_config(node profile), ( # echo("rewrite_database_config()"); # node config; string database_directory = get_database_directory(profile); # echo("database_directory: " . database_directory); string config_pathname = database_directory . "config"; if (file_exists(config_pathname)) then ( # Read config string config_string = read_file(config_pathname); node config = string_to_node(config_string); # echo("config: " . node_as_string(config)); # Delete the existing database field, and xrefs, from config. While we're at it, may as well rebuild log fields too, which makes it a full sweep. delete_node(config{"database"}{"fields"}); delete_node(config{"log"}{"fields"}); delete_node(config{"database"}{"cross_reference_groups"}); # echo("cleaned config: " . node_as_string(config)); # Copy database.fields, log.fields, and database.cross_reference_groups from the profile to config. insert_node(config{"database"}, clone_node(profile{"database"}{"fields"}), 0); insert_node(config{"database"}, clone_node(profile{"database"}{"cross_reference_groups"}), 1); insert_node(config{"log"}, clone_node(profile{"log"}{"fields"}), 0); # echo("rebuilt config: " . node_as_string(config, false)); # Write config back to disk write_file(config_pathname, node_as_string(config)); ); # if config exists )); #### rewrite_database_config ####