/* File: glfDump.c * Author: Richard Durbin (rd@sanger.ac.uk) * Copyright (C) Genome Research Limited, 2008 *------------------------------------------------------------------- * Description: Prints out information in a .glf file as a text file * Exported functions: glfDump * HISTORY: * Last edited: May 4 15:33 2008 (lj4@sanger.ac.uk) * * April 30 15:24 2009 (lj4@sanger.ac.uk): updated code to handle GLF version 3 files * Created: Wed Sep 3 09:35:40 2008 (rd) *------------------------------------------------------------------- */ #include #include #include #include #include #include "glf.h" #include "bgzf.h" static char *NAME = 0 ; static int START = 1 ; static int END = 1000000000 ; int glfDump (int argc, char *argv[]) { glfFile fpIn ; glf3_header_t *h; char *name; glf3_t *g3; int len; --argc ; ++argv ; /* remove program command */ while (argc) if (!strcmp(argv[0], "-name") && argc >= 2) { NAME = argv[1] ; argc -= 2 ; argv += 2 ; } else if (!strcmp (argv[0], "-start") && argc >= 2) { START = atoi(argv[1]) ; argc -= 2 ; argv += 2 ; } else if (!strcmp (argv[0], "-end") && argc >= 2) { END = atoi(argv[1]) ; argc -= 2 ; argv += 2 ; } else { fprintf (stderr, "Usage: glf dump [-start xx] [-end yy] < x.glf > x.txt // makes a text version of the GLF file\n") ; return 1 ; } if (!(fpIn = bgzf_fdopen(fileno(stdin), "r"))) { fprintf (stderr, "failed to open stdin as .glz file\n") ; return 1 ; } --START ; /* initialise glf3 objects */ h = glf3_header_read(fpIn); g3 = glf3_init1(); while ((name = glf3_ref_read(fpIn, &len)) != 0) { int pos = 0; fprintf(stderr,"%s\n",name); while (glf3_read1(fpIn, g3) && g3->rtype != GLF3_RTYPE_END) { pos += g3->offset; if (pos >= START && pos < END && (!NAME || !strcmp(NAME, name))) glf3_view1(name, g3, pos); } free(name); } /* clean everything up */ glf3_header_destroy(h); glf3_destroy1(g3); bgzf_close(fpIn); return 0 ; } /***************** end of file ****************/