///\file sourcery.cpp ///Utility program used for c-string dumping files. #include #include #include int main(int argc, char* argv[]){ if (argc < 4) { std::cerr << "Usage: " << argv[0] << " " << std::endl; } std::ofstream tmp(argv[3]); tmp << "const char *" << argv[2] << " = " << std::endl << " \""; int i = 0; int total = 0; std::ifstream inFile(argv[1]); while (inFile.good()){ unsigned char thisChar = inFile.get(); if (!inFile.good()){break;} switch (thisChar){ //Filter special characters. case '\n': tmp << "\\n"; i += 2; total--; break; case '\r': tmp << "\\r"; i += 2; total--; break; case '\t': tmp << "\\t"; i += 2; total--; break; case '\\': tmp << "\\\\"; i += 2; total --; break; case '\"': tmp << "\\\""; i += 2; total --; break; default: if (thisChar < 32 || thisChar > 126){ //Convert to octal. tmp << '\\' << std::oct << std::setw(3) << std::setfill('0') << (unsigned int)thisChar << std::dec; i += 4; }else{ tmp << thisChar; i ++; } } if (i >= 80){ tmp << "\" \\" << std::endl << " \""; total += i; i = 0; } } tmp << "\";" << std::endl << "unsigned int " << argv[2] << "_len = " << i + total << ";" << std::endl; tmp.close(); return 0; }