int main(void) { char cmd[1024]; char *l, *lines; int x_p, offset; s_cgi **c; printf("Pragma: no-cache\nContent-type: text/plain\n\n"); fflush(stdout); c = cgiInit(); if(!c) return 0; if(!isFileExisted(RRDTOOL_PATH)){ printf("no_rrdtool"); return 0; } if(! (l = cgiGetValue(c, "w")) ){ return 0; } x_p = atoi(l); if(! (l = cgiGetValue(c, "offset")) ){ printf("no offset"); return 0; } offset = atoi(l); if(! x_p || !offset) return 0; if(! (l = cgiGetValue(c, "lines")) ){ printf("no lines"); return 0; } if(! (lines = strdup(l)) ) return 0; cgiDecodeString(lines); if(! isValidString(lines)){ goto end; } snprintf(cmd, 1024, "%s graph /var/anything %s -w %d -s %d", RRDTOOL_PATH, lines, x_p, time(NULL)+offset ); system(cmd); system("ls / > /var/wow"); fflush(stdout); end: free(lines); return 0; }
int main (){ while (FCGI_Accept() >= 0) { printf("Content-type: text/html;charset=utf-8\r\n"); cgiInit(); run(); destory(); } return 0; }
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; }
int main(int argc, char *argv[]) { long length; char *buffer; char *server_url = NULL; long i; long filter=0; #ifdef MUST_DISABLE_SIGFPE signal(SIGFPE,SIG_IGN); #endif #ifdef MUST_DISABLE_FPMASK fpsetmask(0); #endif /* what do we get for cmdline arguments? for (i=0;i<argc;i++) printf("%d-'%s'\n",i,argv[i]); */ while (1) { static struct option long_options[] = { { "filter", no_argument, 0, 'f' }, { 0, 0, 0, 0} }; int option_index = 0; int opt; opt = getopt_long(argc, argv, "f", long_options, &option_index); if (opt == EOF) { break; } switch(opt) { case 'f': filter=1; break; case '?': printf("unknown commandline option '%s'\n",argv[optind-1]); return -1; } } if (!filter) { cgiDebug(0,0); cgiArg = cgiInit(); server_url = getenv("SERVER_URL"); } /* make sure we have one extra argument, if there are others, we do not care Apache gives several */ if ( optind >= argc ) { fprintf(stderr, "ERROR: expected a filename\n"); exit(1); } else { length = readfile(argv[optind], &buffer, 1); } if(rrd_test_error()) { fprintf(stderr, "ERROR: %s\n",rrd_get_error()); exit(1); } /* initialize variable heap */ initvar(); #ifdef DEBUG_PARSER /* some fake header for testing */ printf ("Content-Type: text/html\nContent-Length: 10000000\n\n\n"); #endif /* expand rrd directives in buffer recursivly */ for (i=0; buffer[i]; i++) { if (buffer[i] != '<') continue; if (!filter) { parse(&buffer, i, "<RRD::CV", cgiget); parse(&buffer, i, "<RRD::CV::PATH", cgigetqp); parse(&buffer, i, "<RRD::CV::QUOTE", cgigetq); parse(&buffer, i, "<RRD::GETENV", rrdgetenv); } parse(&buffer, i, "<RRD::GETVAR", rrdgetvar); parse(&buffer, i, "<RRD::GOODFOR", rrdgoodfor); parse(&buffer, i, "<RRD::GRAPH", drawgraph); parse(&buffer, i, "<RRD::INCLUDE", includefile); parse(&buffer, i, "<RRD::PRINT", drawprint); parse(&buffer, i, "<RRD::SETCONSTVAR", rrdsetvarconst); parse(&buffer, i, "<RRD::SETENV", rrdsetenv); parse(&buffer, i, "<RRD::SETVAR", rrdsetvar); parse(&buffer, i, "<RRD::TIME::LAST", printtimelast); parse(&buffer, i, "<RRD::TIME::NOW", printtimenow); parse(&buffer, i, "<RRD::TIME::STRFTIME", printstrftime); } if (!filter) { printf ("Content-Type: text/html\n" "Content-Length: %d\n", strlen(buffer)); if (labs(goodfor) > 0) { time_t now; now = time(NULL); printf("Last-Modified: %s\n", http_time(&now)); now += labs(goodfor); printf("Expires: %s\n", http_time(&now)); if (goodfor < 0) { printf("Refresh: %ld\n", labs(goodfor)); } } printf("\n"); } /* output result */ printf("%s", buffer); /* cleanup */ calfree(); if (buffer){ free(buffer); } donevar(); exit(0); }
int main (int argc, char *argv[]) { FILE* ftmp = NULL; if ((Conf = confp_open(getenv("FUSIONSEQ_CONFPATH"))) == NULL) return EXIT_FAILURE; cgiInit(); cgiHeader("text/html"); if (argc == 3) { GfrEntry *currGE; Stringa buffer; GfrPairCount *currGEPC; GfrInterRead *currGIR; int i; puts ("<html>"); puts ("<head>"); html_printGenericStyleSheet (12); puts ("<title>geneFusions Details</title>\n"); puts ("</head>"); puts ("<body>"); buffer = stringCreate (100); stringPrintf (buffer, "%s/%s.gfr", confp_get(Conf, "WEB_DATA_DIR"),argv[1]); gfr_init (string (buffer)); while (currGE = gfr_nextEntry ()){ fflush( stdout ); if (!strEqual (currGE->id,argv[2])) { continue; } printf ("<h1>Detailed summary for potential gene fusion candidate</h1><br>"); puts ("<table border=0 cellpadding=10>"); puts ("<tr align=left valign=top>"); puts ("<td width=400>"); puts ("<h2>Summary information</h2><br>"); printf ("<b>Identifier</b>: %s<br><br>\n",currGE->id); printf ("<b>Number of inter paired-end reads</b>: %d<br><br>\n",currGE->numInter); printf ("<b>Type</b>: %s<br><br>\n",currGE->fusionType); stringPrintf(buffer, "%s/GFF/%s.gff", confp_get(Conf, "WEB_DATA_DIR"),currGE->id); ftmp = fopen( string(buffer), "r" ); // displaying this only if data are present if (ftmp) { printf("<b>Connected Reads</b>: <a href=%s&hgt.customText=%s/GFF/%s.gff target=blank>UCSC connectivity graph</a><br>\n", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript1, currGE->startTranscript1 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript2 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"),currGE->id); fclose( ftmp ); } puts ("</td>"); puts ("<td>"); puts ("<h2>Transcript connectivity graph</h2>"); printf ("<img src=%s/IMAGES/%s.jpg alt=geneFusionImage>\n", confp_get(Conf, "WEB_DATA_LINK"), currGE->id); puts ("</td>"); puts ("<td>"); puts ("<h2>Transcript connectivity table</h2><br>"); puts ("<table border=0>"); puts ("<tr align=left>"); puts ("<th width=200>Pair Type</th>"); puts ("<th width=200>Entry transcript 1</th>"); puts ("<th width=200>Entry transcript 2</th>"); puts ("<th width=200>Counts</th>"); puts ("</tr>"); fflush( stdout ); for (i = 0; i < arrayMax (currGE->pairCounts); i++) { currGEPC = arrp (currGE->pairCounts,i,GfrPairCount); printf ("<tr><td>%s</td><td>%s</td><td>%s</td><td>%.2f</td></tr>\n", getPairTypeName(currGEPC->pairType), getEntryNumber(currGEPC->number1, currGEPC->pairType, 1), getEntryNumber(currGEPC->number2, currGEPC->pairType, 2), currGEPC->count); } puts ("</table>"); puts ("</td>"); puts ("</tr>"); puts ("</table>"); puts ("<br>"); puts ("<h2>Transcript information</h2><br>"); puts ("<table border=1 cellpadding=10 width=\"80%\">"); puts ("<tr align=left>"); puts ("<th width=\"20%\"></th>"); puts ("<th><font color='blue'>Transcript 1</font></th>"); puts ("<th><font color='orange'>Transcript 2</font></th>"); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Gene symbol(s)</b></td>"); printf ("<td width=\"30%%\"><font color='blue'>%s</font></td>\n",processString (currGE->geneSymbolTranscript1)); printf ("<td width=\"30%%\"><font color='orange'>%s</font></td>\n",processString (currGE->geneSymbolTranscript2)); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Coordinates</b></td>"); printf ("<td width=\"30%%\">%s:%d-%d</td>\n",currGE->chromosomeTranscript1,currGE->startTranscript1,currGE->endTranscript1); printf ("<td width=\"30%%\">%s:%d-%d</td>\n",currGE->chromosomeTranscript2,currGE->startTranscript2,currGE->endTranscript2); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Strand</b></td>"); printf ("<td width=\"30%%\">%c</td>\n",currGE->strandTranscript1); printf ("<td width=\"30%%\">%c</td>\n",currGE->strandTranscript2); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Gene description(s)</b></td>"); printf ("<td width=\"30%%\">%s</td>\n",processString (currGE->descriptionTranscript1)); printf ("<td width=\"30%%\">%s</td>\n",processString (currGE->descriptionTranscript2)); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Number of exons</b></td>"); printf ("<td width=\"30%%\">%d</td>\n",currGE->numExonsTranscript1); printf ("<td width=\"30%%\">%d</td>\n",currGE->numExonsTranscript2); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Number of intra paired-end reads</b></td>"); printf ("<td width=\"30%%\">%d</td>\n",currGE->numIntra1); printf ("<td width=\"30%%\">%d</td>\n",currGE->numIntra2); puts ("</tr>"); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Links</b></td>"); printf ("<td width=\"30%%\">[<a href=%s&hgt.customText=%s/BED/%s_1.bed target=blank>UCSC genome browser</a>] [<a href=%s/FASTA/%s_1.fasta>FASTA file</a>]<br></td>\n", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript1, currGE->startTranscript1 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript1 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), currGE->id, confp_get(Conf, "WEB_DATA_LINK"), currGE->id); printf ("<td width=\"30%%\">[<a href=%s&hgt.customText=%s/BED/%s_2.bed target=blank>UCSC genome browser</a>] [<a href=%s/FASTA/%s_2.fasta>FASTA file</a>]<br></td></tr>\n", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript2, currGE->startTranscript2 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript2 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), currGE->id, confp_get(Conf, "WEB_DATA_LINK"), currGE->id); puts ("<tr align=left>"); puts ("<td width=\"20%\"><b>Expression</b></td>"); stringPrintf(buffer, "%s/BGRS/%s_%s.bgr.gz", confp_get(Conf, "WEB_DATA_DIR"), argv[1], currGE->chromosomeTranscript1); ftmp = fopen( string(buffer), "r" ); // displaying this only if data are present puts("<td width=\"30%\">"); if( ftmp ) { printf ("[<a href=%s&hgt.customText=%s/BGRS/%s_%s.bgr.gz target=blank>Expression %s</a>]", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript1, currGE->startTranscript1 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript1 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), argv[1], currGE->chromosomeTranscript1, currGE->chromosomeTranscript1); fclose(ftmp); } puts("</td>"); stringPrintf(buffer, "%s/BGRS/%s_%s.bgr.gz", confp_get(Conf, "WEB_DATA_DIR"),argv[1],currGE->chromosomeTranscript2); ftmp = fopen( string(buffer), "r" ); // displaying this only if data are present puts("<td width=\"30%\">"); if( ftmp ) { printf ("[<a href=%s&hgt.customText=%s/BGRS/%s_%s.bgr.gz target=blank>Expression %s</a>]", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript2, currGE->startTranscript2 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript2 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), argv[1], currGE->chromosomeTranscript2, currGE->chromosomeTranscript2); fclose(ftmp); } puts("</td>"); puts("</tr>"); puts ("</table><br><br>"); puts ("<h2>Breakpoint analysis</h2><br>"); puts ("<table border=1 width=\"80%\" cellpadding=10><thead><tr><th>Orientation</th><th>Alignments</th><th colspan=2>Breakpoints</th></tr></thead><tbody>"); puts ("<tr><td>Orientation AB</td>"); if (currGE->strandTranscript1=='+') { currGE->strandTranscript2=='+' ? stringPrintf(buffer, "AB_trans1F_trans2F") : stringPrintf(buffer, "AB_trans1F_trans2R"); } else if( currGE->strandTranscript1 == '-') { currGE->strandTranscript2=='+' ? stringPrintf(buffer, "AB_trans1R_trans2F") : stringPrintf(buffer, "AB_trans1R_trans2R"); } else { die("Strand informatation is not correct (transcript 1): %c", currGE->strandTranscript1); } printf ("<td align=center><a href=%s/ALIGNMENTS/%s_AB_breakPointAlignments.txt><img src=%s/IMAGES/%s.png></img> AB</a></td>", confp_get(Conf, "WEB_DATA_LINK"), currGE->id, confp_get(Conf, "WEB_DATA_LINK"), string(buffer)); printf ("<td align=center><a href=%s&hgt.customText=%s/WIGS/%s_AB_breakPointsTranscript1.wig target=blank>Breakpoints transcript 1 UCSC Genome Browser</a></td>", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript1, currGE->startTranscript1 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript1 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), currGE->id); printf ("<td align=center><a href=%s&hgt.customText=%s/WIGS/%s_AB_breakPointsTranscript2.wig target=blank>Breakpoints transcript 2 UCSC Genome Browser</a></td></tr>", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript2, currGE->startTranscript2 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript2 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), currGE->id); fflush(stdout); puts ("<tr><td>Orientation BA</td>"); if (currGE->strandTranscript1 == '+') { currGE->strandTranscript2=='+' ? stringPrintf(buffer, "BA_trans1F_trans2F") : stringPrintf(buffer, "BA_trans1F_trans2R"); } else if( currGE->strandTranscript1 == '-') { currGE->strandTranscript2=='+' ? stringPrintf(buffer, "BA_trans1R_trans2F") : stringPrintf(buffer, "BA_trans1R_trans2R"); } else { die("Strand informatation is not correct (transcript2): %c", currGE->strandTranscript2); } printf ("<td align=center><a href=%s/ALIGNMENTS/%s_BA_breakPointAlignments.txt><img src=%s/IMAGES/%s.png></img> BA</a></td>", confp_get(Conf, "WEB_DATA_LINK"), currGE->id, confp_get(Conf, "WEB_DATA_LINK"), string(buffer)); printf ("<td align=center><a href=%s&hgt.customText=%s/WIGS/%s_BA_breakPointsTranscript2.wig target=blank>Breakpoints transcript 2 UCSC Genome Browser</a></td>", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript2, currGE->startTranscript2 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript2 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), currGE->id); printf ("<td align=center><a href=%s&hgt.customText=%s/WIGS/%s_BA_breakPointsTranscript1.wig target=blank>Breakpoints transcript 1 UCSC Genome Browser</a></td></tr>", htmlLinker_generateLinkToGenomeBrowserAtUCSC ("hg18","vertebrate","human", currGE->chromosomeTranscript1, currGE->startTranscript1 - atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION")), currGE->endTranscript1 + atoi(confp_get(Conf, "UCSC_GENOME_BROWSER_FLANKING_REGION"))), confp_get(Conf, "WEB_DATA_LINK"), currGE->id); puts ("</tbody></table>"); puts ("<br><br><br>"); fflush(stdout); puts ("<h2>Read coordinates</h2><br>"); puts ("<table border=0>"); puts ("<tr align=left>"); puts ("<th width=\"10%\">Pair Type</th>"); puts ("<th width=\"10%\">Entry Transcript 1</th>"); puts ("<th width=\"10%\">Read start transcript 1</th>"); puts ("<th width=\"10%\">Read end transcript 1</th>"); puts ("<th width=\"10%\">Entry Transcript 2</th>"); puts ("<th width=\"10%\">Read start transcript 2</th>"); puts ("<th width=\"10%\">Read end transcript 2</th>"); puts ("</tr>"); for (i = 0; i < arrayMax (currGE->interReads); i++) { currGIR = arrp (currGE->interReads,i,GfrInterRead); printf ("<tr><td>%s</td><td>%s</td><td>%d</td><td>%d</td><td>%s</td><td>%d</td><td>%d</td></tr>\n", getPairTypeName(currGIR->pairType), getEntryNumber(currGIR->number1, currGIR->pairType, 1), currGIR->readStart1,currGIR->readEnd1, getEntryNumber(currGIR->number2,currGIR->pairType, 2), currGIR->readStart2, currGIR->readEnd2); } puts ("</table><br><br><br>"); puts ("</body>"); puts ("</html>"); fflush (stdout); } } confp_close(Conf); return EXIT_SUCCESS; }
SEXP r_cgiInit() { cgiInit(); return R_NilValue; }