#include <stdlib.h>
#include <stdio.h>
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "wv.h"

#include "glib.h"
#include "ms-ole.h"
#include "ms-ole-summary.h"

/*
 * This is a simple example that take an ole file and prints some
 * information from the summaryinformation stream
 */

int main(int argc, char *argv[])
	{
	char *str = NULL;
	gboolean ret = FALSE;
	short s = 0;
	long l = 0;

	MsOle *ole = NULL;
	MsOleSummary *summary = NULL;

	if (argc < 2)
		{
		fprintf(stderr, "Usage: wvSummary oledocument\n");
		return(1);
		}

	ms_ole_open(&ole, argv[1]);
	if (!ole)
		{
		fprintf(stderr,"sorry problem with getting ole streams from %s\n",argv[1]);
		return 1;
		}

	summary = ms_ole_summary_open(ole);
	if (!summary)
		{
		fprintf(stderr, "Could not open summary stream\n");
		return 1;
		}

	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_TITLE, &ret);

	if (ret && str)
	  printf("The title is %s\n", str);
	else
	  printf("no title found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_SUBJECT, &ret);

	if (ret && str)
	  printf("The subject is %s\n", str);
	else
	  printf("no subject found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_AUTHOR, &ret);

	if (ret && str)
	  printf("The author is %s\n", str);
	else
	  printf("no author found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_KEYWORDS, &ret);
	
	if (ret && str)
	  printf("The keywords are %s\n", str);
	else
	  printf("no keywords found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_COMMENTS, &ret);
	
	if (ret && str)
	  printf("The comments are %s\n", str);
	else
	  printf("no comments found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_TEMPLATE, &ret);
	
	if (ret && str)
	  printf("The template was %s\n", str);
	else
	  printf("no template found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_LASTAUTHOR, &ret);
	
	if (ret && str)
	  printf("The last author was %s\n", str);
	else
	  printf("no last author found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_REVNUMBER, &ret);
	
	if (ret && str)
	  printf("The rev # was %s\n", str);
	else
	  printf("no rev no found\n");
	
	str = ms_ole_summary_get_string(summary, MS_OLE_SUMMARY_APPNAME, &ret);

	if (ret && str)
	  printf("The app name was %s\n", str);
	else
	  printf("no app name found\n");
	
	l = ms_ole_summary_get_long(summary, MS_OLE_SUMMARY_PAGECOUNT, &ret);
	
	if (ret)
	  printf("PageCount is %d\n", l);
	else
	  printf("no pagecount\n");
	
	l = ms_ole_summary_get_long(summary, MS_OLE_SUMMARY_WORDCOUNT, &ret);

	if (ret)
	  printf("WordCount is %d\n", l);
	else
	  printf("no wordcount\n");
		
	l = ms_ole_summary_get_long(summary, MS_OLE_SUMMARY_CHARCOUNT, &ret);
	
	if (ret)
	  printf("CharCount is %d\n", l);
	else
	  printf("no charcount\n");
	
	l = ms_ole_summary_get_long(summary, MS_OLE_SUMMARY_SECURITY, &ret);
	
	if (ret)
	  printf("Security is %d\n", l);
	else
	  printf("no security\n");
		
	s = ms_ole_summary_get_short(summary, MS_OLE_SUMMARY_CODEPAGE, &ret);
	if(ret)
	  printf("Codepage is 0x%x (%d)\n", s, s);
	else
	  printf("no codepage\n");

	ms_ole_summary_close(summary);
	ms_ole_destroy(&ole);

	return 0;
	}
