mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
some minor fixes
git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@3427 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
parent
2c81e37fca
commit
2472116f80
@ -1,14 +1,15 @@
|
||||
|
||||
#include "fcgi_stdio.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
extern char **environ;
|
||||
|
||||
int main (int argc, char *argv[])
|
||||
{
|
||||
char * query_string;
|
||||
char *query_string, *method, *len=0x0;
|
||||
int count = 0;
|
||||
int i;
|
||||
int i, ilen=0;
|
||||
|
||||
while(FCGI_Accept() >= 0){
|
||||
printf("Content-type: text/html\r\n"
|
||||
@ -25,12 +26,27 @@ int main (int argc, char *argv[])
|
||||
argv[0]);
|
||||
|
||||
query_string = getenv ("QUERY_STRING");
|
||||
printf ("<p>QUERY_STRING is %s<p>\n", query_string);
|
||||
printf ("<p>The QUERY_STRING environment vairable is %s\n"
|
||||
"The other environment variables are:<p>", query_string);
|
||||
|
||||
for (i=0; environ[i]; i++)
|
||||
{
|
||||
printf ("<br>%s\n", environ[i]);
|
||||
}
|
||||
|
||||
method = getenv ("REQUEST_METHOD");
|
||||
if (!strcmp (method, "POST"))
|
||||
{
|
||||
char * bufp;
|
||||
ilen = atoi (getenv ("CONTENT_LENGTH"));
|
||||
printf ("<P>This is a method=post request, "
|
||||
"with content length=%d<P>\n", ilen);
|
||||
bufp = (char *) malloc (ilen);
|
||||
fread (bufp, ilen, 1, stdin);
|
||||
|
||||
printf ("The POST data is<P>%s\n", bufp);
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "gnc-book.h"
|
||||
#include "gnc-engine.h"
|
||||
@ -22,14 +23,13 @@
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
int fake_argc =1;
|
||||
int err, fake_argc =1;
|
||||
char * fake_argv[] = {"hello", 0};
|
||||
GNCBook *book;
|
||||
AccountGroup *grp;
|
||||
char *bufp;
|
||||
int rc, sz;
|
||||
|
||||
|
||||
/* intitialize the engine */
|
||||
gnc_engine_init (fake_argc, fake_argv);
|
||||
|
||||
@ -37,20 +37,10 @@ main (int argc, char *argv[])
|
||||
book = gnc_book_new ();
|
||||
|
||||
rc = gnc_book_begin (book, "file:/tmp/demo.xac", FALSE);
|
||||
if (!rc) {
|
||||
int err = gnc_book_get_error (book);
|
||||
/* 500 Server Error */
|
||||
FCGI_SetExitStatus (500);
|
||||
goto bookerrexit;
|
||||
}
|
||||
if (!rc) goto bookerrexit;
|
||||
|
||||
rc = gnc_book_load (book);
|
||||
if (!rc) {
|
||||
int err = gnc_book_get_error (book);
|
||||
/* 500 Server Error */
|
||||
FCGI_SetExitStatus (500);
|
||||
goto bookerrexit;
|
||||
}
|
||||
if (!rc) goto bookerrexit;
|
||||
|
||||
/* the grp pointer points to our local cache of the data */
|
||||
grp = gnc_book_get_group (book);
|
||||
@ -65,48 +55,81 @@ main (int argc, char *argv[])
|
||||
char *request_method;
|
||||
int read_len=0;
|
||||
|
||||
/* get the METHOD=POST data */
|
||||
/* get the request method */
|
||||
request_method = getenv ("REQUEST_METHOD");
|
||||
if (!strcmp ("POST", request_method)) {
|
||||
|
||||
/* Lets pretend that method=get means user has logged
|
||||
* in. Send the user the accounts and currencies,
|
||||
* but not the transactions/splits. */
|
||||
if (!strcmp ("GET", request_method))
|
||||
{
|
||||
gncxml_write_group_to_buf(grp, &bufp, &sz);
|
||||
|
||||
/* print the HTTP header */
|
||||
printf("Content-type: text/html\r\n"
|
||||
"Content-Length: %d\r\n"
|
||||
"\r\n", sz);
|
||||
|
||||
/* send the xml to the client */
|
||||
printf ("%s", bufp);
|
||||
free (bufp);
|
||||
|
||||
/* wait for the next request */
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (!strcmp ("POST", request_method))
|
||||
{
|
||||
char * content_length = getenv("CONTENT_LENGTH");
|
||||
read_len = atoi (content_length);
|
||||
|
||||
/* read 'read_len' bytes from stdin ... */
|
||||
bufp = (char *) malloc (read_len);
|
||||
fread (bufp, read_len, 1, stdin);
|
||||
|
||||
/* conver the xml input into a gnucash query structure... */
|
||||
q = gncxml_read_query (bufp, read_len);
|
||||
xaccQuerySetGroup (q, grp);
|
||||
|
||||
/* hack -- limit to 30 splits ... */
|
||||
xaccQuerySetMaxSplits (q, 30);
|
||||
split_list = xaccQueryGetSplits (q);
|
||||
|
||||
xaccFreeQuery (q);
|
||||
|
||||
/* wait for the next request */
|
||||
continue;
|
||||
}
|
||||
|
||||
#if 0
|
||||
/* conver the xml input into a gnucash query structure... */
|
||||
q = gncxml_read_query (bufp, read_len);
|
||||
xaccQuerySetGroup (q, grp);
|
||||
|
||||
/* hack ... */
|
||||
xaccQuerySetMaxSplits (q, 30);
|
||||
|
||||
split_list = xaccQueryGetSplits (q);
|
||||
#endif
|
||||
|
||||
/* generate the xml output */
|
||||
/* hack -- we need to use the split list to generate the xml ... */
|
||||
gncxml_write_to_buf(grp, &bufp, &sz);
|
||||
|
||||
/* print the HTTP header */
|
||||
printf("Content-type: text/html\r\n"
|
||||
"Content-Length: %d\r\n"
|
||||
"\r\n", sz);
|
||||
/* if we got to here, an error -- unknown method */
|
||||
printf("Content-type: text/plain\r\n"
|
||||
"\r\n"
|
||||
"unknown request type \n");
|
||||
|
||||
|
||||
printf ("%s", bufp);
|
||||
free (bufp);
|
||||
// xaccFreeQuery (q);
|
||||
}
|
||||
|
||||
bookerrexit:
|
||||
|
||||
err = gnc_book_get_error (book);
|
||||
|
||||
/* 500 Server Error */
|
||||
FCGI_SetExitStatus (500);
|
||||
|
||||
printf("Content-type: text/plain\r\n\r\n"
|
||||
"error was %s\n", strerror (err));
|
||||
|
||||
FCGI_Finish();
|
||||
|
||||
/* close the book */
|
||||
gnc_book_destroy (book);
|
||||
|
||||
/* shut down the engine */
|
||||
gnc_engine_shutdown ();
|
||||
|
||||
sleep (1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user