コード例 #1
0
ファイル: init.c プロジェクト: AsherBond/MondocosmOS
static int init(void)
{
    Rast__init_window();

    /* no histograms */
    R__.want_histogram = 0;

    /* set the write type for floating maps */
    R__.fp_type = getenv("GRASS_FP_DOUBLE") ? DCELL_TYPE : FCELL_TYPE;

    /* Set masking flag unknown */
    R__.auto_mask = -1;
    R__.mask_fd = -1;

    R__.nbytes = sizeof(CELL);
    R__.compression_type = getenv("GRASS_INT_ZLIB") ? 2 : 1;

    G_add_error_handler(Rast__error_handler, NULL);

    initialized = 1;

    return 0;
}
コード例 #2
0
ファイル: evaluate.c プロジェクト: rashadkm/grass_cmake
void execute(expr_list * ee)
{
    int verbose = isatty(2);
    expr_list *l;
    int count, n;

    setup_region();

    exprs = ee;
    G_add_error_handler(error_handler, NULL);

    for (l = ee; l; l = l->next) {
	expression *e = l->exp;
	const char *var;

	if (e->type != expr_type_binding && e->type != expr_type_function)
	    G_fatal_error("internal error: execute: invalid type: %d",
			  e->type);

	if (e->type != expr_type_binding)
	    continue;

	var = e->data.bind.var;

	if (!overwrite_flag && check_output_map(var))
	    G_fatal_error(_("output map <%s> exists. To overwrite, use the --overwrite flag"), var);
    }

    for (l = ee; l; l = l->next) {
	expression *e = l->exp;
	const char *var;
	expression *val;

	initialize(e);

	if (e->type != expr_type_binding)
	    continue;

	var = e->data.bind.var;
	val = e->data.bind.val;

	e->data.bind.fd = open_output_map(var, val->res_type);
    }

    setup_maps();

    count = rows * depths;
    n = 0;

    G_init_workers();

    for (current_depth = 0; current_depth < depths; current_depth++)
	for (current_row = 0; current_row < rows; current_row++) {
	    if (verbose)
		G_percent(n, count, 2);

	    for (l = ee; l; l = l->next) {
		expression *e = l->exp;
		int fd;

		evaluate(e);

		if (e->type != expr_type_binding)
		    continue;

		fd = e->data.bind.fd;
		put_map_row(fd, e->buf, e->res_type);
	    }

	    n++;
	}

    G_finish_workers();

    if (verbose)
	G_percent(n, count, 2);

    for (l = ee; l; l = l->next) {
	expression *e = l->exp;
	const char *var;
	expression *val;
	int fd;

	if (e->type != expr_type_binding)
	    continue;

	var = e->data.bind.var;
	val = e->data.bind.val;
	fd = e->data.bind.fd;

	close_output_map(fd);
	e->data.bind.fd = -1;

	if (val->type == expr_type_map) {
	    if (val->data.map.mod == 'M') {
		copy_cats(var, val->data.map.idx);
		copy_colors(var, val->data.map.idx);
	    }

	    copy_history(var, val->data.map.idx);
	}
	else
	    create_history(var, val);
    }

    G_unset_error_routine();
}
コード例 #3
0
ファイル: main.c プロジェクト: rkrug/grass-ci
int main(int argc, char **argv)
{
    dbString stmt;
    dbDriver *driver;
    dbHandle handle;
    int ret;
    FILE *fd;
    int error;

    error = 0;

    parse_command_line(argc, argv);

    /* read from file or stdin ? */
    if (parms.input && strcmp(parms.input, "-") != 0) {
        fd = fopen(parms.input, "r");
        if (fd == NULL) {
            G_fatal_error(_("Unable to open file <%s>: %s"),
                          parms.input, strerror(errno));
        }
    }
    else {
        fd = stdin;
    }

    /* open DB connection */
    db_init_string(&stmt);

    driver = db_start_driver(parms.driver);
    if (driver == NULL) {
        G_fatal_error(_("Unable to start driver <%s>"), parms.driver);
    }

    db_init_handle(&handle);
    db_set_handle(&handle, parms.database, parms.schema);
    if (db_open_database(driver, &handle) != DB_OK)
        G_fatal_error(_("Unable to open database <%s>"), parms.database);
    G_add_error_handler(error_handler, driver);

    if (parms.sql) {
        /* parms.sql */
        db_set_string(&stmt, parms.sql);
        ret = db_execute_immediate(driver, &stmt);
    }
    else { /* parms.input */
        while (get_stmt(fd, &stmt)) {
            if (stmt_is_empty(&stmt))
                continue;
            G_debug(3, "sql: %s", db_get_string(&stmt));

            ret = db_execute_immediate(driver, &stmt);

            if (ret != DB_OK) {
                if (parms.i) {	/* ignore SQL errors */
                    G_warning(_("Error while executing: '%s'"),
                              db_get_string(&stmt));
                    error++;
                }
                else {
                    G_fatal_error(_("Error while executing: '%s'"),
                                  db_get_string(&stmt));
                }
            }
        }
    }

    db_close_database(driver);
    db_shutdown_driver(driver);

    exit(error ? EXIT_FAILURE : EXIT_SUCCESS);
}