13 #include <PT_server_prototypes.h>
20 freedup(locs->ls_error, error);
34 const char *slash = strchr(species_gene_name,
'/');
36 fprintf(stderr,
"Internal error: '%s' should be in format 'organism/gene'\n", species_gene_name);
40 int slashpos = slash-species_gene_name;
41 char *organism =
ARB_strdup(species_gene_name);
42 organism[slashpos] = 0;
44 gene_struct to_search(
"", organism, species_gene_name+slashpos+1);
79 #define MAX_LIST_PART_SIZE 50
89 static int curr_buff = 0;
91 if (offset<0)
return NULp;
94 const char *numsign = strchr(list+offset,
'#');
97 num_offset = numsign-list;
101 num_offset = offset+strlen(list+offset);
107 int len = num_offset-
offset;
110 memcpy(buffer[curr_buff], list+offset, len);
111 buffer[curr_buff][len] = 0;
113 offset = (list[num_offset] ==
'#') ? num_offset+1 : -1;
115 return buffer[curr_buff];
118 #undef MAX_LIST_PART_SIZE
129 locs->group_count = 0;
134 error =
"Can't design probes for no species (species list is empty)";
146 const char *internal_name = arb_name;
148 if (arb_name[0] == 0) {
154 const char *slash = strchr(arb_name,
'/');
160 error =
GBS_global_string(
"Expected '/' in '%s' (this PT-server can only design probes for genes)", arb_name);
191 else not_found->
put(
'#');
192 not_found->
cat(arb_name);
197 if (not_found && !error) {
205 PT_local *
locs = (PT_local*)pdc->mh.parent->parent;
212 unknown.size = strlen(unknown.data) + 1;
struct probe_input_data * data
void pt_export_error_if(PT_local *locs, ARB_ERROR &error)
static const char * arb2internal_name(const char *name)
char * ARB_strdup(const char *str)
static const char * get_list_part(const char *list, int &offset)
const char * GBS_global_string(const char *templat,...)
void cat(const char *from)
const char * virt_name(const PT_probematch *ml)
char buffer[MESSAGE_BUFFERSIZE]
gene_struct_index_internal gene_struct_internal2arb
gene_struct_index_arb gene_struct_arb2internal
const char * get_arb_gene_name() const
static void error(const char *msg)
void expect_no_error() const
static const gene_struct * get_gene_struct_by_internal_gene_name(const char *gene_name)
const char * virt_fullname(const PT_probematch *ml)
const char * get_arb_species_name() const
static const gene_struct * get_gene_struct_by_arb_species_gene_name(const char *species_gene_name)
void pt_export_error(PT_local *locs, const char *error)
const char * get_internal_gene_name() const
#define MAX_LIST_PART_SIZE
char * ptpd_read_names(PT_local *locs, const char *names_list, const char *checksums, ARB_ERROR &error)
bytestring * PT_unknown_names(const PT_pdc *pdc)
long GBS_read_hash(const GB_HASH *hs, const char *key)