Clamd_Stat clamd_prepare(void) { debug_print("Creating socket\n"); if (!config.clamd_config_type || (config.clamd_host != NULL && config.clamd_port > 0)) { if (config.clamd_host == NULL || config.clamd_port < 1) { /* error */ return NO_SOCKET; } /* Manual configuration has highest priority */ debug_print("Using user input: %s:%d\n", config.clamd_host, config.clamd_port); clamd_create_config_manual(config.clamd_host, config.clamd_port); } else if (config.clamd_config_type || config.clamd_config_folder != NULL) { if (config.clamd_config_folder == NULL) { /* error */ return NO_SOCKET; } debug_print("Using clamd.conf: %s\n", config.clamd_config_folder); clamd_create_config_automatic(config.clamd_config_folder); } else { /* Fall back. Try enable anyway */ if (! clamd_find_socket()) return NO_SOCKET; } return clamd_init(NULL); }
gboolean clamd_find_socket() { const gchar** config_dir = config_dirs; gchar *clamd_conf = NULL; while (*config_dir) { clamd_conf = g_strdup_printf("%s/clamd.conf", *config_dir++); debug_print("Looking for %s\n", clamd_conf); if (g_file_test(clamd_conf, G_FILE_TEST_EXISTS)) break; g_free(clamd_conf); clamd_conf = NULL; } if (! clamd_conf) return FALSE; debug_print("Using %s to find configuration\n", clamd_conf); clamd_create_config_automatic(clamd_conf); g_free(clamd_conf); return TRUE; }