uint32_t FileWriterI::open(string filepath) {
	GError * err = NULL;

	// open file
	GsfOutput * output = gsf_output_stdio_new (filepath.c_str(), &err);
	if (output == NULL) {
		ERROR << "ops::msole::FileWriterI::open() : can't open " + filepath + " : " + err->message;
		g_error_free (err);
		return RET_ERR;
	}

	baseOutfile = gsf_outfile_msole_new (output);
	g_object_unref (G_OBJECT (output));
	if (baseOutfile == NULL) {
		ERROR << "ops::msole::FileWriterI::open() : can't create OLE file :" + filepath + " : " + err->message;
		g_error_free (err);
		return RET_ERR;
	}

	// create map for keeping open directories
	openDirList["/"] = GSF_OUTPUT(baseOutfile);

	DEBUG << "ops::msole::FileWriterI::open() : " + filepath + " opened";

	return RET_OK;
}
Esempio n. 2
0
static int
test (char *argv[])
{
	GsfInfile  *infile;
	GsfOutfile *outfile;
	GsfOutput  *output;
	GError    *err = NULL;

	fprintf (stderr, "%s\n", argv [1]);
	infile = gsf_infile_stdio_new (argv[1], &err);
	if (infile == NULL) {
		g_return_val_if_fail (err != NULL, 1);

		g_warning ("'%s' error: %s", argv[1], err->message);
		g_error_free (err);
		return 1;
	}

	output = gsf_output_stdio_new (argv[2], &err);
	if (output == NULL) {
		g_return_val_if_fail (err != NULL, 1);

		g_warning ("'%s' error: %s", argv[2], err->message);
		g_error_free (err);
		g_object_unref (G_OBJECT (infile));
		return 1;
	}

	outfile = gsf_outfile_msole_new (output);
	g_object_unref (G_OBJECT (output));
	clone (GSF_INPUT (infile), GSF_OUTPUT (outfile));

	return 0;
}