Initial commit of the 'release' directory (splash screen/icon
[blender.git] / release / datafiles / datatoc.c
1 /**
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #include <stdio.h>
34 #include <string.h>
35 #include <stdlib.h>
36
37 int main(int argc, char**argv) {
38         FILE *fpin,  *fpout;
39         char cname[256];
40         char sizest[256];
41         long size;
42         int i;
43         
44         if (argc<1) {
45                         printf ("Usage: datatoc <data_file>\n");
46                         exit(1);
47         }
48         
49         fpin= fopen(argv[1], "rb");
50         if (!fpin) {
51                         printf ("Unable to open input <%s>\n", argv[1]);
52                         exit(1);
53         }
54         
55         fseek (fpin, 0L,  SEEK_END);
56         size= ftell(fpin);
57         fseek (fpin, 0L,  SEEK_SET);
58
59         if (argv[1][0]=='.') argv[1]++;
60
61         sprintf(cname, "%s.c", argv[1]);
62         printf ("Making C file <%s>\n", cname);
63
64         for (i=0; i < (int)strlen(argv[1]); i++)
65                 if (argv[1][i]=='.') argv[1][i]='_';
66
67         sprintf(sizest, "%d", (int)size);
68         printf ("Input filesize is %d, Output size should be %d\n", size, ((int)size)*4 + strlen("/* DataToC output of file <> */\n\n") + strlen("char datatoc_[]= {\"") + strlen ("\"};\n") + (strlen(argv[1])*3) + strlen(sizest) + strlen("int datatoc__size= ;\n") +(((int)(size/256)+1)*5));
69         
70         fpout= fopen(cname, "w");
71         if (!fpout) {
72                         printf ("Unable to open output <%s>\n", cname);
73                         exit(1);
74         }
75         
76         fprintf (fpout, "/* DataToC output of file <%s> */\n\n",argv[1]);
77         fprintf (fpout, "int datatoc_%s_size= %s;\n", argv[1], sizest);
78         /*
79         fprintf (fpout, "char datatoc_%s[]= {\"", argv[1]);
80
81         while (size--) {
82                 if(size%256==0)
83                         fprintf(fpout, "\" \\\n\"");
84                         
85                 fprintf (fpout, "\\x%02x", getc(fpin));
86         }
87
88         fprintf (fpout, "\"};\n");
89         */
90         
91         fprintf (fpout, "char datatoc_%s[]= {\n", argv[1]);
92         while (size--) {
93                 if(size%32==31)
94                         fprintf(fpout, "\n");
95                         
96                 /* fprintf (fpout, "\\x%02x", getc(fpin)); */
97                 fprintf (fpout, "%3d,", getc(fpin));
98         }
99         
100         fprintf (fpout, "\n};\n");
101         
102         fclose(fpin);
103         fclose(fpout);
104         return 0;
105 }