Home | History | Annotate | Download | only in tst
      1 /*
      2  * Copyright 1992 by Jutta Degener and Carsten Bormann, Technische
      3  * Universitaet Berlin.  See the accompanying file "COPYRIGHT" for
      4  * details.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
      5  */
      6 
      7 /*$Header: /tmp_amd/presto/export/kbs/jutta/src/gsm/RCS/cod2lin.c,v 1.2 1996/07/02 14:33:10 jutta Exp jutta $*/
      8 
      9 #include <stdio.h>
     10 #include <assert.h>
     11 
     12 #include	"gsm.h"
     13 #include	"proto.h"
     14 
     15 char  * pname;
     16 
     17 int	debug      = 0;
     18 int	verbosity  = 0;
     19 int	fast       = 0;
     20 int	wav        = 0;
     21 int	error      = 0;
     22 
     23 usage P0()
     24 {
     25 	fprintf(stderr, "Usage: %s [-vwF] [files...]\n", pname);
     26 	exit(1);
     27 }
     28 
     29 void process P2((f, filename), FILE * f, char * filename)
     30 {
     31 	gsm_frame	buf;
     32 	gsm_signal	source[160];
     33 
     34 	int		cc;
     35 	gsm		r;
     36 
     37 	(void)memset(source, 0x00, sizeof(source));
     38 
     39 	if (!(r = gsm_create())) {
     40 		perror("gsm_create");
     41 		error = 1;
     42 		return ;
     43 	}
     44 	gsm_option(r, GSM_OPT_VERBOSE, &verbosity);
     45 	gsm_option(r, GSM_OPT_FAST,    &fast);
     46 	gsm_option(r, GSM_OPT_WAV49,   &wav);
     47 	for (;;) {
     48 		cc = fread((char *)source, sizeof(*source), 76, f);
     49 		if (cc == 0) {
     50 			gsm_destroy(r);
     51 			return;
     52 		}
     53 		if (cc != 76) {
     54 			error = 1;
     55 			fprintf(stderr,
     56 				"%s: %s -- %d trailing bytes ignored\n",
     57 				pname, filename, cc);
     58 			gsm_destroy(r);
     59 			return;
     60 		}
     61 
     62 		gsm_implode(r, source, buf);
     63 		gsm_decode(r, buf, source);
     64 
     65 		if (write(1, source, sizeof(source)) != sizeof(source)) {
     66 			perror("write");
     67 			error = 1;
     68 			gsm_destroy(r);
     69 			return;
     70 		}
     71 	}
     72 }
     73 
     74 main P2((ac, av), int ac, char ** av)
     75 {
     76 	int 		opt;
     77 	extern char   * optarg;
     78 	extern int	optind;
     79 
     80 	FILE		* f;
     81 
     82 	if (!(pname = av[0])) pname = "cod2out";
     83 
     84 	while ((opt = getopt(ac, av, "vwF")) != EOF) switch (opt) {
     85 	case 'v': verbosity++; 	  break;
     86 	case 'w': wav++; 	  break;
     87 	case 'F': fast++;	  break;
     88 	default:  usage();
     89 	}
     90 
     91 	ac -= optind;
     92 	av += optind;
     93 
     94 	if (!ac) process(stdin, "*stdin*");
     95 	else for (; *av; av++) {
     96 		if (!(f = fopen(*av, "r"))) perror(*av);
     97 		else {
     98 			process(f, *av);
     99 			fclose(f);
    100 		}
    101 	}
    102 
    103 	exit(error);
    104 }
    105