staden-lg/src/convert/flat_sd.c

144 lines
2.1 KiB
C

#include <string.h>
#include "list.h"
#include "process.h"
#include "misc.h"
typedef char IOString[200];
static IOString flat_file;
static FILE *flat_fp;
static List *next_list;
static void set_file_names(char *name)
{
strcpy(flat_file,name); strcat(flat_file,".flat");
}
void flat_sd_open_for_write(List *l)
{
char *name;
name = assoc(l,db_name);
/*
** Create file name
*/
set_file_names(name);
/*
** Check for existance
*/
if ( file_exists(flat_file) ) crash("Flat file %s already exists\n",flat_file);
/*
** Open files
*/
if ( (flat_fp = (fopen(flat_file,"w"))) == NULL) crash("Cannot open file %s\n",flat_file);
}
void flat_sd_write_header(List *l)
{
fprint_list_f(flat_fp,l);
}
void flat_sd_write_gel_data(List *l)
{
fprint_list_f(flat_fp,l);
}
void flat_sd_write_contig_data(List *l)
{
fprint_list_f(flat_fp,l);
}
void flat_sd_close(List *l)
{
fclose(flat_fp);
}
void flat_sd_open_for_read(List *l)
{
char *name;
name = assoc(l,db_name);
/*
** Create file name
*/
set_file_names(name);
/*
** Open files
*/
if ( (flat_fp = (fopen(flat_file,"r"))) == NULL) crash("Cannot open file %s\n",flat_file);
next_list = nil;
}
List *flat_sd_read_header()
{
List *l;
if (isNil(next_list))
next_list=read_list(flat_fp);
if (isNil(next_list))
l = nil;
else {
if (strcmp(db_from,atomVal(car(next_list))))
l = nil;
else {
l = next_list;
next_list = nil;
}
}
return l;
}
List *flat_sd_read_gel_data()
{
List *l;
if (isNil(next_list))
next_list=read_list(flat_fp);
if (isNil(next_list))
l = nil;
else {
if (strcmp(gel_rec,atomVal(car(next_list))))
l = nil;
else {
l = next_list;
next_list = nil;
}
}
return l;
}
List *flat_sd_read_contig_data()
{
List *l;
if (isNil(next_list))
next_list=read_list(flat_fp);
if (isNil(next_list))
l = nil;
else {
if (strcmp(contig_rec,atomVal(car(next_list))))
l = nil;
else {
l = next_list;
next_list = nil;
}
}
return l;
}