36int main(
int argc,
char **argv)
44 printf(
"Usage: datatoc <data_file_from> <data_file_to>\n");
48 fpin = fopen(argv[1],
"rb");
50 printf(
"Unable to open input <%s>\n", argv[1]);
56 fseek(fpin, 0
L, SEEK_END);
58 fseek(fpin, 0
L, SEEK_SET);
60 if (argv[1][0] ==
'.') {
65 printf(
"Making C file <%s>\n", argv[2]);
72 std::filesystem::path parent_dir = std::filesystem::path(argv[2]).parent_path();
74 if (!std::filesystem::create_directories(parent_dir, ec)) {
76 std::cerr <<
"Unable to create " << parent_dir <<
" : " << ec.message() << std::endl;
81 argv_len = int(strlen(argv[1]));
82 for (
i = 0;
i < argv_len;
i++) {
83 if (argv[1][
i] ==
'.') {
88 fpout = fopen(argv[2],
"w");
90 fprintf(stderr,
"Unable to open output <%s>\n", argv[2]);
94 fprintf(fpout,
"/* DataToC output of file <%s> */\n\n", argv[1]);
97 fprintf(fpout,
"extern const int datatoc_%s_size;\n", argv[1]);
98 fprintf(fpout,
"extern const char datatoc_%s[];\n\n", argv[1]);
100 fprintf(fpout,
"const int datatoc_%s_size = %d;\n", argv[1],
int(
size));
101 fprintf(fpout,
"const char datatoc_%s[] = {\n", argv[1]);
107 if (
size % 32 == 31) {
108 fprintf(fpout,
"\n");
112 fprintf(fpout,
"%3d,", getc(fpin));
118 fprintf(fpout,
"0\n};\n\n");