Ejemplo n.º 1
0
void backup_fun(const char *fn, void *x, int (*fun)(void *x, struct fout *ff))
{
	struct fout ff;
	int r;

	if (v_flag) {
		puts(fn);
	}
	if (!fout_setup(&ff, dst_cf, fn)) goto FAIL;
	if (fun != NULL) {
		r = fun(x, &ff);
	} else {
		r = 1;
	}
	if (!fout_close(&ff)) goto FAIL;
	if (r) goto SUCCESS;
FAIL:
	if (c_flag) {
		SetLastError(ERROR_SUCCESS);
		goto SUCCESS;
	}

	win32_perror(fn);
	exit(EXIT_FAILURE);
SUCCESS:
	return;
}
Ejemplo n.º 2
0
static int backupf(const char *fn, const char *sfn)
{
	struct fout ff;
	int r;

	if (!fout_setup(&ff, dst_cf, sfn)) return 0;
	r = backup1(&ff, fn);
	if (!fout_close(&ff)) return 0;

	return r;
}
Ejemplo n.º 3
0
static int backupf3(FILE *fp, const char *sfn)
{
	struct fout ff;
	int r;

	if (!fout_setup(&ff, dst_cf, sfn)) return 0;
	while (!feof(fp)) {
		r = fread(buffer, 1, sizeof(buffer), fp);
		if (r > 0) {
			if (!fout(&ff, buffer, r)) {
				return 0;
			}
		}
	}
	return fout_close(&ff);
}
Ejemplo n.º 4
0
/*
 * Print n randomly selected sequences from file(s) containing k sequences.
 */
int
sample(double f, unsigned int n, unsigned int k, char *fin1, char *fin2, char *fout1, char *fout2)
{
	FILE *fs_out1, *fs_out2;
	gzFile fp1, fp2 = NULL;
	kseq_t *ks1, *ks2 = NULL;
	int ret;
	int paired = (fin2 != NULL);


	fp1 = gzopen(fin1, "r");
	if (fp1 == NULL) {
		fprintf(stderr, "gzopen: %s: %s\n", fin1, strerror(errno));
		ret = -1;
		goto err0;
	}

	ks1 = kseq_init(fp1);


	if (paired) {
		fp2 = gzopen(fin2, "r");
		if (fp2 == NULL) {
			fprintf(stderr, "gzopen: %s: %s\n", fin2, strerror(errno));
			ret = -2;
			goto err1;
		}

		ks2 = kseq_init(fp2);
	}

	if (fout_open(fout1, fout2, &fs_out1, &fs_out2) < 0) {
		ret = -3;
		goto err2;
	}

	if (n != -1) {
		if (sample_n(n, k, ks1, ks2, fs_out1, fs_out2, paired) < 0) {
			ret = -4;
			goto err3;
		}
	} else {
		if (sample_f(f, ks1, ks2, fs_out1, fs_out2, paired) < 0) {
			ret = -5;
			goto err3;
		}
	}


	ret = 0;
err3:
	fout_close(fs_out1, fs_out2);
err2:
	if (fin2) {
		kseq_destroy(ks2);
		gzclose(fp2);
	}
err1:
	kseq_destroy(ks1);
	gzclose(fp1);
err0:
	return ret;
}