SEXP r_cgiParameters() { int i; char *name; Stringa value=stringCreate(16); Texta keys=textCreate(8); Texta values=textCreate(8); SEXP r_keys, r_values; cgiGetInit(); while(name = cgiGetNext(value)) { textAdd(keys, name); textAdd(values, string(value)); } int n=arrayMax(keys); PROTECT(r_keys=allocVector(STRSXP, n)); PROTECT(r_values=allocVector(STRSXP, n)); for(i=0; i<n; ++i) { SET_STRING_ELT(r_keys, i, mkChar(textItem(keys,i))); SET_STRING_ELT(r_values, i, mkChar(textItem(values,i))); } setNames(r_values, r_keys); stringDestroy(value); textDestroy(keys); textDestroy(values); UNPROTECT(2); return(r_values); }
SEXP r_cgiParam(SEXP r_param, SEXP ignore_case, SEXP r_default) { if(r_param == R_NilValue) return(R_NilValue); char* name; Stringa value=stringCreate(16); char *param=cStr(r_param); char *str=NULL; SEXP res; int (*fPtr)(char*, char*); fPtr=cBool(ignore_case) ? &myStrCaseEqual : &myStrEqual; cgiGetInit(); while(name = cgiGetNext(value)) { if((*fPtr)(name, param)) { str=hlr_strdup(string(value)); break; } } stringDestroy(value); if(str) { return mkString(str); } else { return r_default; } }
int main (int argc, char *argv[]) { char *queryString; if ((Conf = confp_open(getenv("FUSIONSEQ_CONFPATH"))) == NULL) return EXIT_FAILURE; cgiInit(); cgiHeader("text/html"); queryString = cgiGet2Post(); if (queryString[0] == '\0') { puts ("<html>"); puts ("<head>"); html_printGenericStyleSheet (12); puts ("<title>geneFusions</title>\n"); puts ("</head>"); puts ("<body>"); puts ("<h1>Identification of potential gene fusions using paired-end reads</h1><br><br>"); printf ("<form action=%s/geneFusions_cgi method=get>", confp_get(Conf, "WEB_URL_CGI")); puts ("<b>Data prefix</b>: "); puts ("<input type=text name=prefix>"); puts ("<br><br><br>"); puts ("<b>Minimum number of paired-end reads connecting two genes</b>: "); puts ("<select name=minNum>"); puts ("<option value=2>2"); puts ("<option value=3>3"); puts ("<option value=5 selected>5"); puts ("<option value=10>10"); puts ("</select>"); puts ("<br><br><br>"); puts ("<b>Type of gene fusion</b>: "); puts ("<select name=type>"); puts ("<option value=read-through>Read-through events"); puts ("<option value=cis>Cis events"); puts ("<option value=intra>Intra-chromosomal events"); puts ("<option value=same>Genes on the same chromosome"); puts ("<option value=inter>Genes on different chromosomes"); puts ("<option value=all selected>All potential gene fusions"); puts ("</select>"); puts ("<br><br><br>"); puts ("<input type=submit value=Submit>"); puts ("<input type=reset value=Reset>"); puts ("</form>"); puts ("</body>"); puts ("</html>"); fflush (stdout); } else { int first; Stringa item = stringCreate (20); Stringa value = stringCreate (20); char *iPtr,*vPtr,*prefix,*type; int minNum; first = 1; cgiGetInit (); while (cgiGetNextPair (&first,item,value)) { iPtr = string (item); vPtr = string (value); if (strEqual (iPtr,"prefix")) { prefix = hlr_strdup (vPtr); } if (strEqual (iPtr,"type")) { type = hlr_strdup (vPtr); } if (strEqual (iPtr,"minNum")) { minNum = atoi (vPtr); } } generateOutput (prefix,type,minNum); } confp_close(Conf); return EXIT_SUCCESS; }
SEXP r_cgiGetInit() { cgiGetInit(); return R_NilValue; }