示例#1
0
static PRN *get_dotdir_printer (char **pfname, int *err)
{
    const char *dotdir = gretl_dotdir();
    char *fname = NULL;
    FILE *fp = NULL;
    PRN *prn = NULL;

    fname = malloc(strlen(dotdir) + 16);

    if (fname == NULL) {
	*err = E_ALLOC;
    } else {
	sprintf(fname, "%sprntmp.XXXXXX", dotdir);
	fp = gretl_mktemp(fname, "w");
	if (fp == NULL) {
	    *err = E_FOPEN;
	    free(fname);
	    fname = NULL;
	}
    }

    if (fp != NULL) {
	prn = gretl_print_new_with_stream(fp);
	*pfname = fname;
    }

    return prn;
}
示例#2
0
static int add_unique_output_file (MODEL *pmod, const char *path)
{
    char outname[FILENAME_MAX];
    char unique[FILENAME_MAX];
    char line[256];
    FILE *f0, *f1;

    sprintf(outname, "%s.out", path);
    f0 = gretl_fopen(outname, "r");
    if (f0 == NULL) {
	return E_FOPEN;
    }

    sprintf(unique, "%s.XXXXXX", outname);
    f1 = gretl_mktemp(unique, "w");
    if (f1 == NULL) {
	fclose(f0);
	return E_FOPEN;
    }

    while (fgets(line, sizeof line, f0)) {
	fputs(line, f1);
    }

    fclose(f0);
    fclose(f1);
    gretl_remove(outname);

    gretl_model_set_data(pmod, "x12a_output", g_strdup(unique),
			 GRETL_TYPE_STRING, strlen(unique) + 1);

    return 0;
}
示例#3
0
static int prn_add_tempfile (PRN *prn)
{
    const char *dotdir = gretl_dotdir();
    int n = strlen(dotdir) + 16;
    int err = 0;

    prn->fname = malloc(n);
    if (prn->fname == NULL) {
	return E_ALLOC;
    }

    sprintf(prn->fname, "%sprntmp.XXXXXX", dotdir);
    prn->fp = gretl_mktemp(prn->fname, "w");

#if PRN_DEBUG
    fprintf(stderr, "prn_add_tempfile: '%s' at %p\n",
	    prn->fname, (void *) prn->fp);
#endif

    if (prn->fp == NULL) {
	free(prn->fname);
	prn->fname = NULL;
	err = E_FOPEN;
    } 

    return err;
}
示例#4
0
static FILE *ztempfile (char *templ)
{
    char *p = strrchr(templ, G_DIR_SEPARATOR);
    FILE *fp = NULL;

    if (p != NULL) {
	*p = '\0';
#ifdef G_OS_WIN32
	if (lastchar(templ) != '\\') {
	    strncat(templ, "\\", 1);
	}
#else
	if (lastchar(templ) != '/') {
	    strncat(templ, "/", 1);
	}
#endif
    } 

    strncat(templ, "ziXXXXXX", 8);
    fp = gretl_mktemp(templ, "wb");

    return fp;
}