int main(int argc, char **argv) { if (argc != 4) { print_usage(); return EXIT_FAILURE; } std::ifstream inFile(argv[1], std::ios::in); if (!inFile) { std::cerr << "Failed to open input file \"" << argv[1] << "\"\n"; return EXIT_FAILURE; } std::ofstream outFile(argv[2], std::ios::out); std::string symName(argv[3]); std::string sanitisedFileName(argv[2]); std::string allowedChars("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"); size_t pos = sanitisedFileName.find_first_not_of(allowedChars, 0); while (pos != std::string::npos) { sanitisedFileName[pos] = '_'; pos = sanitisedFileName.find_first_not_of(allowedChars, pos); } inFile.seekg(0, std::ios::end); size_t fileSize = inFile.tellg(); inFile.seekg(0, std::ios::beg); outFile << "/* AUTOGENERATED HEADER */\n" << "#ifndef __" << sanitisedFileName << "\n" << "#define __" << sanitisedFileName << "\n"; outFile << "struct {\n" << "\tunsigned int size;\n" << "\tunsigned char data[" << fileSize << "];\n" << "} " << symName << " = {\n" << "\t.size = " << fileSize << ",\n" << "\t.data = {"; for (size_t b = 0; b < fileSize ;b++) { unsigned char byte; if (b%10 == 0) outFile << "\n\t"; inFile.read((char*)&byte, 1); outFile << std::hex << "0x" << (unsigned int)byte << ", "; } outFile << "\t}\n" << "};\n"; outFile << "#endif\n"; }
Uuid ConverterDb::getOrCreateUuid(const QString& cat, const QString& key1, const QString& key2) { QString allowedChars( "_-.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); QString settingsKey = mLibFilePath.getFilename() % '_' % key1 % '_' % key2; settingsKey.replace("{", ""); settingsKey.replace("}", ""); settingsKey.replace(" ", "_"); for (int i = 0; i < settingsKey.length(); i++) { if (!allowedChars.contains(settingsKey[i])) settingsKey.replace( i, 1, QString("__U%1__").arg( QString::number(settingsKey[i].unicode(), 16).toUpper())); } settingsKey.prepend(cat % '/'); Uuid uuid = Uuid::createRandom(); QString value = mIniFile.value(settingsKey).toString(); if (!value.isEmpty()) uuid = Uuid::fromString(value); // can throw mIniFile.setValue(settingsKey, uuid.toStr()); return uuid; }