Merged changes in the trunk up to revision 53146.
[blender.git] / source / blender / datatoc / datatoc.c
index d074917a545dcce0b6dbbac164e7f30d0385a5c4..236d9af8ef1ffde38904e90985b8fdef005de58b 100644 (file)
@@ -49,9 +49,9 @@ static char *basename(char *string)
 int main(int argc, char **argv)
 {
        FILE *fpin,  *fpout;
-       char sizest[256];
        long size;
        int i;
+       int argv_len;
 
        if (argc < 2) {
                printf("Usage: datatoc <data_file_from> <data_file_to>\n");
@@ -76,24 +76,10 @@ int main(int argc, char **argv)
        printf("Making C file <%s>\n", argv[2]);
 #endif
 
-       for (i = 0; i < (int)strlen(argv[1]); i++)
+       argv_len = (int)strlen(argv[1]);
+       for (i = 0; i < argv_len; i++)
                if (argv[1][i] == '.') argv[1][i] = '_';
 
-       sprintf(sizest, "%d", (int)size);
-
-#ifdef VERBOSE
-       printf("Input filesize is %d, Output size should be %d\n",
-              (int)size,
-              (int)(((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)));
-#endif
-
        fpout = fopen(argv[2], "w");
        if (!fpout) {
                fprintf(stderr, "Unable to open output <%s>\n", argv[2]);
@@ -101,9 +87,11 @@ int main(int argc, char **argv)
        }
 
        fprintf(fpout, "/* DataToC output of file <%s> */\n\n", argv[1]);
-       fprintf(fpout, "int datatoc_%s_size = %s;\n", argv[1], sizest);
+       fprintf(fpout, "int datatoc_%s_size = %d;\n", argv[1], (int)size);
        fprintf(fpout, "char datatoc_%s[] = {\n", argv[1]);
        while (size--) {
+               /* if we want to open in an editor
+                * this is nicer to avoid very long lines */
 #ifdef VERBOSE
                if (size % 32 == 31) {
                        fprintf(fpout, "\n");
@@ -114,7 +102,10 @@ int main(int argc, char **argv)
                fprintf(fpout, "%3d,", getc(fpin));
        }
 
-       fprintf(fpout, "\n};\n\n");
+       /* trailing NULL terminator, this isnt needed in some cases and
+        * won't be taken into account by the size variable, but its useful when dealing with
+        * NULL terminated string data */
+       fprintf(fpout, "0\n};\n\n");
 
        fclose(fpin);
        fclose(fpout);