Esempio n. 1
0
/**
 * Stores the routing data rd in config_file
 *
 * @param rd Pointer to the routing tree which shall be saved to file
 *
 * @return 0 means ok, -1 means an error occurred
 */
int save_config(struct route_data_t * rd) {
	FILE * outfile;
	int i,j;

	if(backup_config() < 0){
		return -1;
	}

	if ((outfile = fopen(config_file, "w")) == NULL) {
		LM_ERR("Could not open config file %s\n", config_file);
		return -1;
	}

	i = 0;
	if (rd->carrier_num>=1) {
		for (j=0; j< rd->carriers[i]->domain_num; j++) {
			fprintf(outfile, "domain %.*s {\n", rd->carriers[i]->domains[j]->name->len, rd->carriers[i]->domains[j]->name->s);
			if (save_route_data_recursor(rd->carriers[i]->domains[j]->tree, outfile) < 0) {
				goto errout;
			}
			fprintf(outfile, "}\n\n");
		}
	}
	fclose(outfile);
	return 0;
errout:
	fclose(outfile);
	LM_ERR("Cannot save config file %s\n", config_file);
	return -1;
}
Esempio n. 2
0
void btn_backup_config_clicked(GtkButton *button, gpointer user_data)
{
	GtkWidget *dialog, *err_dialog;
	char *file_name;
	int ret;
	
	dialog = gtk_file_chooser_dialog_new(	"Backup to file",
											GTK_WINDOW(GET_WIDGET(WIN_CONFIG)),
											GTK_FILE_CHOOSER_ACTION_SAVE,
											GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
											GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
											NULL);
	gtk_file_chooser_set_do_overwrite_confirmation(GTK_FILE_CHOOSER(dialog), TRUE);
	gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), "/home");
	gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(dialog), "btnx_conf_backup.tar.gz");
	
	if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT)
	{
		settings_file_save();
		file_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
		ret = backup_config(file_name);
		g_free(file_name);
		
		switch (ret)
		{
		case ERROR_BACKUP_OPEN_VERSION:
		case ERROR_BACKUP_WRITE_VERSION:
			SHOW_ERROR_DIALOG(err_dialog, dialog,
				TEXT_BACKUP_ERROR,
				_("Could not create a version stamp file."));
			break;
		case ERROR_BACKUP_TAR_CREATE:
			SHOW_ERROR_DIALOG(err_dialog, dialog,
				TEXT_BACKUP_ERROR,
				_("Unspecified tar execution failure."));
			break;
		default:
			break;
		}
	}
	
	gtk_widget_destroy(dialog);
}