Exemplo n.º 1
0
void buildTrie()
{
	//out<<QDateTime::currentDateTime().time().toString()<<"\n";
#ifndef TRIE_FROM_FILE
	buildfromfile();
#else
	QFile file(trie_list_path.toStdString().data());
	if (file.open(QIODevice::ReadOnly))
	{
		QDataStream in(&file);    // read the data serialized from the file
		QString version;
		in >> version;
		if (version==cache_version())
		{
			in >> *(database_info.trie_nodes);
			file.close();
		}
Exemplo n.º 2
0
int main(int argc, char **argv)
{
	alphabet = DEFALPHABET;
	FILE *in = stdin;
	FILE *out = stdout;
	char *config = DEFRCFILE;
	bool convert_toupper = false;

	int opt;
	while ((opt = getopt(argc, argv, "di:o:c:uh")) != -1) {
		switch (opt) {
			case 'd':
				debug = true;
				break;
			case 'o':
				if(!(out = fopen(optarg, "w"))) {
					perror(_("Error opening output file"));
					exit(EXIT_FAILURE);
				}
				break;
			case 'c':
				config = optarg;
				break;
			case 'u':
				convert_toupper = true;
				break;
			case 'h':
				usage(argv[0]);
				exit(EXIT_SUCCESS);
				break;
			default:
				fprintf(stderr, _("Unsupported option %c (%d)\n"), opt, opt);
				usage(argv[0]);
				exit(EXIT_FAILURE);
		}
	}

	Enigma *e = buildfromfile(config);
	if (!e) {
		fprintf(stderr, _("Could not parse config file %s\n"), config);
		exit(EXIT_FAILURE);
	}

	int fcount;
	for (fcount = 0; !fcount || optind < argc; optind++, fcount++) {
		if ((optind == argc)
			|| (argv[optind][0] == '-' && argv[optind][1] == 0)) {
			in = stdin;
		} else if (!(in = fopen(argv[optind], "r"))) {
			fprintf(stderr, _("Error opening input file %s: "),
					argv[optind]);
			perror(0);
			continue;
		}

		int c;
		while((c = fgetc(in)) != EOF) {
			if (convert_toupper)
				c = toupper(c);
			if (char_in_alphabeth(alphabet, c))
				fputc(int_to_char(alphabet,
						enigma_encode(e,
						char_to_int(alphabet,
						c))), out);
			else
				fputc(c, out);
		}
		fclose(in);
	}

	enigma_delete(e);
	fclose(out);

	return EXIT_SUCCESS;
}