Beispiel #1
0
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";
}
Beispiel #2
0
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;
}