Example #1
0
int main(int argc, char *argv[]) {
	extern char *optarg;
	extern int optind, optopt, opterr;
	int opt, long_optind, decode = 0, ignore_garbage = 0, delims = 0, wrap = 76, y_abbr = 0;
	FILE *fp = stdin;
	char *opts = "dinw:yh";
	struct option long_opts[] = {
		{"decode", no_argument, NULL, 'd'},
		{"ignore-garbage", no_argument, NULL, 'i'},
		{"no-delims", no_argument, NULL, 'n'},
		{"wrap", required_argument, NULL, 'w'},
		{"y-abbr", no_argument, NULL, 'y'},
		{"help", no_argument, NULL, 'h'},
		{NULL, no_argument, NULL, 0}
	};
	opterr = 0;
	while ((opt = getopt_long(argc, argv, opts, long_opts, &long_optind)) != -1) {
		switch (opt) {
			case 'd': decode = 1; break;
			case 'i': ignore_garbage = 1; break;
			case 'n': delims = 0; break;
			case 'w': sscanf(optarg, "%d", &wrap); break;
			case 'y': y_abbr = 1; break;
			case 'h': printf(HELP_TEXT); exit(0);
			case '?':
				eprintf("ascii85: ");
				if (strchr("w", optopt) != NULL)
					eprintf("option '-%c' requires an argument\n", optopt);
				else
					eprintf("invalid option -- %c\n", optopt);
				eprintf(USAGE_TEXT);
				exit(1);
			default: break;
		}
	}
	if (optind == argc - 1 && strcmp(argv[optind], "-")) {
		fp = fopen(argv[optind], "rb");
		if (fp == NULL) {
			eprintf("ascii85: %s: %s\n", argv[optind], strerror(errno));
			exit(1);
		}
	}
	else if (optind > argc) {
		eprintf("ascii85: too many operands or wrong operand order\n");
		eprintf(USAGE_TEXT);
		exit(1);
	}
	if (wrap < 1) wrap = 0;
	if (decode)
		ascii85_decode(fp, delims, ignore_garbage);
	else
		ascii85_encode(fp, delims, wrap, y_abbr);
	fflush(stdout);
	fclose(fp);
	return 0;
}
void OnlineService::downloadSaveGame(const char *filename)
{
	//printf("online download %s\n", filename); fflush(stdout);
	const size_t pathsize = 255;
	char originalfilepath[pathsize];
	snprintf(originalfilepath, pathsize, "%s%s", get_save_filename_prefix(), filename);
	char encodedfilepath[pathsize];
	snprintf(encodedfilepath, pathsize, "%s%s.txt", get_save_filename_prefix(), filename);

	SC_Context_h user_context = SC_User_GetContext(scoreloop_user);

	SC_String_h save_data;

	//printf("getting user context entry %s... ", filename); fflush(stdout);
	SC_Error_t getContextResult = SC_Context_Get(user_context, filename, &save_data);

	if (getContextResult == SC_OK)
	{
		//printf("done\n"); fflush(stdout);

		//printf("writing %s... ", encodedfilepath); fflush(stdout);
		bFILE *file = open_file(encodedfilepath, "w");
		if(!file->open_failure())
		{
			//printf("done\n"); fflush(stdout);
			const char *data = SC_String_GetData(save_data);
			file->write(data, strlen(data));
		}
		else
		{
			//printf("failed\n"); fflush(stdout);
		}
		delete file;
		file = 0;

		//printf("decoding %s to %s... ", encodedfilepath, originalfilepath); fflush(stdout);
		int result = ascii85_decode(encodedfilepath, originalfilepath);
		//if (result == 0)
		//	printf("done\n");
		//else
		//	printf("failed\n");
		//fflush(stdout);
	}
	else if (getContextResult == SC_NOT_FOUND)
	{
		//printf("not found\n"); fflush(stdout);
	}
	else
	{
		//printf("failed\n"); fflush(stdout);
	}
}