int getdata(Quark *gr, char *fn, int settype, int load_type) { FILE *fp; int retval; GraceApp *gapp = gapp_from_quark(gr); ascii_data adata; fp = gapp_openr(gapp, fn, SOURCE_DISK); if (fp == NULL) { return RETURN_FAILURE; } adata.label = fn; adata.load_type = load_type; adata.settype = settype; retval = uniread(gr, fp, NULL, store_cb, &adata); gapp_close(fp); if (load_type != LOAD_BLOCK) { autoscale_graph(gr, gapp->rt->autoscale_onread); } return retval; }
void runtime_free(RunTime *rt) { int i; if (!rt) { return; } for (i = 0; i < rt->num_print_dests; i++) { PrintDest *pd = &rt->print_dests[i]; int j; xfree(pd->name); xfree(pd->inst); xfree(pd->printer); for (j = 0; j < pd->nogroups; j++) { PrintOptGroup *og = &pd->ogroups[j]; int k; xfree(og->name); xfree(og->text); for (k = 0; k < og->nopts; k++) { PrintOption *po = &og->opts[k]; xfree(po->name); xfree(po->text); dict_free(po->choices); } xfree(og->opts); } xfree(pd->ogroups); } xfree(rt->print_dests); xfree(rt->print_cmd); xfree(rt->gapp_editor); xfree(rt->help_viewer); xfree(rt->workingdir); if (rt->resfp) { gapp_close(rt->resfp); } xfree(rt); }
static void save_wisdom(void){ char *final_wisdom; final_wisdom = fftw_export_wisdom_to_string(); if (!initial_wisdom || strings_are_equal(initial_wisdom, final_wisdom) != TRUE) { FILE *wf; wf = gapp_openw(gapp, wisdom_file); if (wf) { fftw_export_wisdom_to_file(wf); gapp_close(wf); } } fftw_free(final_wisdom); if (initial_wisdom) { fftw_free(initial_wisdom); } }
static void init_wisdom(void) { static int wisdom_inited = FALSE; if (!wisdom_inited) { char *ram_cache_wisdom; wisdom_inited = TRUE; wisdom_file = getenv("GRACE_FFTW_WISDOM_FILE"); ram_cache_wisdom = getenv("GRACE_FFTW_RAM_WISDOM"); if (ram_cache_wisdom) { sscanf(ram_cache_wisdom, "%d", &using_wisdom); } /* turn on wisdom if it is requested even without persistent storage */ if (wisdom_file && wisdom_file[0] ) { /* if a file was specified in GRACE_FFTW_WISDOM_FILE, try to read it */ FILE *wf; fftw_status fstat; wf = gapp_openr(gapp, wisdom_file, SOURCE_DISK); if (wf) { fstat = fftw_import_wisdom_from_file(wf); gapp_close(wf); initial_wisdom = fftw_export_wisdom_to_string(); } else { initial_wisdom = NULL; } atexit(save_wisdom); /* if a file is specified, always use wisdom */ using_wisdom = TRUE; } } }
/* * read data to the set from a file overriding the current contents */ int update_set_from_file(Quark *pset) { int retval; Dataset *dsp; dsp = set_get_dataset(pset); if (!dsp) { retval = RETURN_FAILURE; } else { FILE *fp; RunTime *rt = rt_from_quark(pset); fp = gapp_openr(gapp_from_quark(pset), dsp->hotfile, dsp->hotsrc); killsetdata(pset); rt->curtype = set_get_type(pset); retval = uniread(get_parent_project(pset), fp, LOAD_SINGLE, dsp->hotfile); gapp_close(fp); } return retval; }
/* * If writing to a file, check to see if it exists */ void do_hardcopy(const GProject *gp) { Quark *project = gproject_get_top(gp); GraceApp *gapp = gapp_from_quark(project); RunTime *rt; Canvas *canvas; char fname[GR_MAXPATHLEN]; view v; double vx, vy; int truncated_out, res; FILE *prstream; if (!gapp) { return; } rt = gapp->rt; canvas = grace_get_canvas(gapp->grace); if (get_ptofile(gapp)) { if (string_is_empty(rt->print_file)) { Device_entry *dev = get_device_props(canvas, rt->hdevice); sprintf(rt->print_file, "%s.%s", QIDSTR(project), dev->fext); } strcpy(fname, rt->print_file); prstream = gapp_openw(gapp, fname); } else { strcpy(fname, "gappXXXXXX"); prstream = gapp_tmpfile(fname); } if (prstream == NULL) { return; } canvas_set_prstream(canvas, prstream); select_device(canvas, rt->hdevice); res = gproject_render(gp); gapp_close(prstream); if (res != RETURN_SUCCESS) { return; } get_bbox(canvas, BBOX_TYPE_GLOB, &v); project_get_viewport(project, &vx, &vy); if (v.xv1 < 0.0 - VP_EPSILON || v.xv2 > vx + VP_EPSILON || v.yv1 < 0.0 - VP_EPSILON || v.yv2 > vy + VP_EPSILON) { truncated_out = TRUE; } else { truncated_out = FALSE; } if (get_ptofile(gapp) == FALSE) { if (truncated_out == FALSE || yesno("Printout is truncated. Continue?", NULL, NULL, NULL)) { gapp_print(gapp, fname); #ifndef PRINT_CMD_UNLINKS remove(fname); #endif } } else { if (truncated_out == TRUE) { errmsg("Output is truncated - tune device dimensions"); } } }