annotate GEMBASSY-1.0.3/gsoap/extras/ckdb.c @ 0:8300eb051bea draft

Initial upload
author ktnyt
date Fri, 26 Jun 2015 05:19:29 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
1 /*
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
2 ckdb.c
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
3
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
4 HTTP cookie database manager.
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
5
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
6 The contents of this file are subject to the gSOAP Public License
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
7 Version 1.0 (the "License"); you may not use this file except in
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
8 compliance with the License. You may obtain a copy of the License at
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
9 http://www.cs.fsu.edu/~engelen/soaplicense.html Software distributed
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
10 under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
11 OF ANY KIND, either express or implied. See the License for the
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
12 specific language governing rights and limitations under the License.
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
13
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
14 The Initial Developer of the Original Code is Robert A. van Engelen.
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
15 Copyright (C) 2000-2002 Robert A. van Engelen. All Rights Reserved.
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
16
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
17 1. Compile ckdb.h:
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
18 soapcpp2 -cpckdb ckdb.h
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
19 2. Compile ckdb.c:
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
20 gcc -DWITH_COOKIES -DWITH_NOGLOBAL -c ckdb.c
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
21 3. Compile and link with main program, e.g. ckdbtest.c:
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
22 soapcpp2 -c ckdbtest.h
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
23 gcc -DWITH_COOKIES ckdbtest.c ckdb.o stdsoap2.c soapC.c soapClient.c
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
24
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
25 */
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
26
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
27 #include <sys/stat.h>
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
28 #include "stdsoap2.h"
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
29 #define WITH_NOGLOBAL
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
30 #undef SOAP_FMAC3
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
31 #define SOAP_FMAC3 static
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
32 #include "ckdbC.c"
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
33
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
34 int soap_save_cookies(struct soap *soap, const char *pathname)
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
35 { int socket = soap->socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
36 int sendfd = soap->sendfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
37 soap_begin(soap);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
38 soap->socket = -1; /* make sure plain I/O is used */
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
39 soap->sendfd = open(pathname, O_CREAT|O_TRUNC|O_WRONLY, S_IREAD|S_IWRITE);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
40 if (soap->sendfd >= 0)
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
41 { soap_serialize_cookie(soap, (struct cookie*)soap->cookies);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
42 soap_begin_send(soap);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
43 soap_put_cookie(soap, (struct cookie*)soap->cookies, "jar", NULL);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
44 soap_end_send(soap);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
45 close(soap->sendfd);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
46 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
47 soap->sendfd = sendfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
48 return SOAP_OK;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
49 }
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
50 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
51 soap->sendfd = sendfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
52 return SOAP_EOF;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
53 }
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
54
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
55 int soap_load_cookies(struct soap *soap, const char *pathname)
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
56 { int socket = soap->socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
57 int recvfd = soap->recvfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
58 soap_begin(soap);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
59 soap->socket = -1; /* make sure plain I/O is used */
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
60 soap->recvfd = open(pathname, O_RDONLY);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
61 if (soap->recvfd >= 0)
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
62 { if (soap_begin_recv(soap))
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
63 { close(soap->recvfd);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
64 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
65 soap->recvfd = recvfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
66 return soap->error;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
67 }
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
68 soap->cookies = (struct soap_cookie*)soap_get_cookie(soap, NULL, "jar", NULL);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
69 if (!soap->cookies && soap->error)
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
70 { close(soap->recvfd);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
71 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
72 soap->recvfd = recvfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
73 return soap->error;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
74 }
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
75 if (soap_end_recv(soap))
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
76 { close(soap->recvfd);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
77 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
78 soap->recvfd = recvfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
79 return soap->error;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
80 }
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
81 close(soap->recvfd);
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
82 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
83 soap->recvfd = recvfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
84 return SOAP_OK;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
85 }
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
86 soap->socket = socket;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
87 soap->recvfd = recvfd;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
88 return SOAP_EOF;
8300eb051bea Initial upload
ktnyt
parents:
diff changeset
89 }