Initial import to Tizen
[profile/ivi/pocketsphinx.git] / src / programs / mdef_convert.c
1 /* -*- c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* ====================================================================
3  * Copyright (c) 2006 Carnegie Mellon University.  All rights
4  * reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer. 
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *
18  * This work was supported in part by funding from the Defense Advanced 
19  * Research Projects Agency and the National Science Foundation of the 
20  * United States of America, and the CMU Sphinx Speech Consortium.
21  *
22  * THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY ``AS IS'' AND 
23  * ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
24  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY
26  * NOR ITS EMPLOYEES BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
28  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
29  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
30  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
31  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
32  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  *
34  * ====================================================================
35  *
36  */
37 /**
38  * mdef_convert.c - convert text to binary model definition files (and vice versa)
39  *
40  * Author: David Huggins-Daines <dhuggins@cs.cmu.edu>
41  **/
42
43 #include <stdio.h>
44 #include <string.h>
45 #include "bin_mdef.h"
46
47 int
48 main(int argc, char *argv[])
49 {
50     const char *infile, *outfile;
51     bin_mdef_t *bin;
52     int tobin = 1;
53
54     if (argc < 3 || argc > 4) {
55         fprintf(stderr, "Usage: %s [-text | -bin] INPUT OUTPUT\n",
56                 argv[0]);
57         return 1;
58     }
59     if (argv[1][0] == '-') {
60         if (strcmp(argv[1], "-text") == 0) {
61             tobin = 0;
62             ++argv;
63         }
64         else if (strcmp(argv[1], "-bin") == 0) {
65             tobin = 1;
66             ++argv;
67         }
68         else {
69             fprintf(stderr, "Unknown argument %s\n", argv[1]);
70             fprintf(stderr, "Usage: %s [-text | -bin] INPUT OUTPUT\n",
71                     argv[0]);
72             return 1;
73         }
74     }
75     infile = argv[1];
76     outfile = argv[2];
77
78     if (tobin) {
79         if ((bin = bin_mdef_read_text(NULL, infile)) == NULL) {
80             fprintf(stderr, "Failed to read text mdef from %s\n", infile);
81             return 1;
82         }
83         if (bin_mdef_write(bin, outfile) < 0) {
84             fprintf(stderr, "Failed to write binary mdef to %s\n",
85                     outfile);
86             return 1;
87         }
88     }
89     else {
90         if ((bin = bin_mdef_read(NULL, infile)) == NULL) {
91             fprintf(stderr, "Failed to read binary mdef from %s\n",
92                     infile);
93             return 1;
94         }
95         if (bin_mdef_write_text(bin, outfile) < 0) {
96             fprintf(stderr, "Failed to write text mdef to %s\n", outfile);
97             return 1;
98         }
99     }
100
101     return 0;
102 }