Initial import of cgic, provided in PR pkg/22472 by Douglas Wade Needham.
This is the code written to accompany Thomas Boutell's book "CGI Programming in C & Perl". It provides a library of routines for use in CGI programming, and unlike cgilib-0.5, this library handles the "multipart/form-data" encoding required to use the FILE input control type as defined in the HTML specification.
This commit is contained in:
parent
7ae8f2af8c
commit
859195f015
10 changed files with 258 additions and 0 deletions
17
cgic/DESCR
Normal file
17
cgic/DESCR
Normal file
|
@ -0,0 +1,17 @@
|
|||
This is the code written to accompany Thomas Boutell's book "CGI
|
||||
Programming in C & Perl". It provides a library of routines for use
|
||||
in CGI programming, and unlike cgilib-0.5, this library handles the
|
||||
"multipart/form-data" encoding required to use the FILE input control
|
||||
type as defined in the HTML specification.
|
||||
|
||||
NOTE: It should be aware that there were a few developer visible changes
|
||||
made from Thomas Boutell's original distribution when integrating it
|
||||
with the NetBSD packages environment. They are:
|
||||
|
||||
1) Instead of being yet another source file which is used in building
|
||||
the application, the package have been converted totally into a
|
||||
library format. This library is linked using "-lcgic".
|
||||
2) As a result of the first item, the developer no longer writes their
|
||||
entry point under the function name of cgiMain(). Instead, the
|
||||
user will provide their own main(), and will need to call cgiInit()
|
||||
before any other cgic function is called.
|
17
cgic/Makefile
Normal file
17
cgic/Makefile
Normal file
|
@ -0,0 +1,17 @@
|
|||
# $NetBSD: Makefile,v 1.1.1.1 2003/09/16 16:07:28 jmmv Exp $
|
||||
#
|
||||
|
||||
DISTNAME= cgic202
|
||||
PKGNAME= cgic-2.02
|
||||
CATEGORIES= www
|
||||
MASTER_SITES= http://www.boutell.com/cgic/
|
||||
|
||||
MAINTAINER= cinnion@ka8zrt.com
|
||||
HOMEPAGE= http://www.boutell.com/cgic/
|
||||
COMMENT= Thomas Boutell's ANSI C library for CGI Programming
|
||||
|
||||
USE_BUILDLINK2= yes
|
||||
|
||||
USE_LIBTOOL= yes
|
||||
|
||||
.include "../../mk/bsd.pkg.mk"
|
14
cgic/PLIST
Normal file
14
cgic/PLIST
Normal file
|
@ -0,0 +1,14 @@
|
|||
@comment $NetBSD: PLIST,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
include/cgic.h
|
||||
lib/libcgic.a
|
||||
lib/libcgic.la
|
||||
lib/libcgic.so
|
||||
lib/libcgic.so.0
|
||||
lib/libcgic.so.0.0
|
||||
libexec/cgi-bin/capture
|
||||
libexec/cgi-bin/cgictest
|
||||
share/doc/html/cgiclib/cgic.html
|
||||
share/examples/cgiclib/capture.c
|
||||
share/examples/cgiclib/cgictest.c
|
||||
@dirrm share/examples/cgiclib
|
||||
@dirrm share/doc/html/cgiclib
|
10
cgic/distinfo
Normal file
10
cgic/distinfo
Normal file
|
@ -0,0 +1,10 @@
|
|||
$NetBSD: distinfo,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
SHA1 (cgic202.tar.gz) = 8db924f00a7443f8953ea37a084025332e0efbb1
|
||||
Size (cgic202.tar.gz) = 49531 bytes
|
||||
SHA1 (patch-aa) = 1799e30492707962a9fdf927697657021e7afdce
|
||||
SHA1 (patch-ab) = 42e8ee71eeb363e702dfab66344811a8967d382d
|
||||
SHA1 (patch-ac) = 948ba16e838bb50c60b14e75ccffc942ec01144a
|
||||
SHA1 (patch-ad) = 6ef230a6cc265121dbcbaef392bc1d9c43d167b0
|
||||
SHA1 (patch-ae) = 30c7170033e3fce8dea2991456d76cdd26e5cae2
|
||||
SHA1 (patch-af) = e143b77cabe7cb8ac44bd74419ed875800dc1d1d
|
65
cgic/patches/patch-aa
Normal file
65
cgic/patches/patch-aa
Normal file
|
@ -0,0 +1,65 @@
|
|||
$NetBSD: patch-aa,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
--- Makefile.orig Sun Jan 12 13:59:43 2003
|
||||
+++ Makefile
|
||||
@@ -1,27 +1,42 @@
|
||||
-CFLAGS=-g -Wall
|
||||
+CFLAGS += -g -Wall
|
||||
CC=gcc
|
||||
AR=ar
|
||||
-LIBS=-L./ -lcgic
|
||||
+LIBS = libcgic.la
|
||||
|
||||
-all: libcgic.a cgictest.cgi capture
|
||||
+OBJS = cgic.o
|
||||
|
||||
-install: libcgic.a
|
||||
- cp libcgic.a /usr/local/lib
|
||||
- cp cgic.h /usr/local/include
|
||||
- @echo libcgic.a is in /usr/local/lib. cgic.h is in /usr/local/include.
|
||||
+all: libcgic.la cgictest capture
|
||||
|
||||
-libcgic.a: cgic.o cgic.h
|
||||
- rm -f libcgic.a
|
||||
- $(AR) rc libcgic.a cgic.o
|
||||
+.SUFFIXES: .lo
|
||||
|
||||
-#mingw32 and cygwin users: replace .cgi with .exe
|
||||
-
|
||||
-cgictest.cgi: cgictest.o libcgic.a
|
||||
- gcc cgictest.o -o cgictest.cgi ${LIBS}
|
||||
-
|
||||
-capture: capture.o libcgic.a
|
||||
- gcc capture.o -o capture ${LIBS}
|
||||
+.c.lo:
|
||||
+ ${LIBTOOL} --mode=compile ${CC} ${CFLAGS} -o $@ -c $<
|
||||
+
|
||||
+libcgic.la: $(OBJS:.o=.lo)
|
||||
+ ${LIBTOOL} --mode=link ${CC} -o $@ ${OBJS:.o=.lo} \
|
||||
+ -rpath ${PREFIX}/lib \
|
||||
+ -version-info 0:0
|
||||
+
|
||||
+cgictest: cgictest.lo libcgic.la
|
||||
+ ${LIBTOOL} --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ cgictest.lo $(LIBS)
|
||||
+
|
||||
+capture: capture.lo libcgic.la
|
||||
+ ${LIBTOOL} --mode=link $(CC) $(CFLAGS) $(LDFLAGS) -o $@ cgictest.lo $(LIBS)
|
||||
+
|
||||
+install: libcgic.la cgictest
|
||||
+ -mkdir -p ${PREFIX}/libexec/cgi-bin
|
||||
+ -mkdir -p ${PREFIX}/share/examples/cgiclib
|
||||
+ ${INSTALL} -c -m 444 capture.c ${PREFIX}/share/examples/cgiclib
|
||||
+ ${INSTALL} -c -m 444 cgictest.c ${PREFIX}/share/examples/cgiclib
|
||||
+ ${LIBTOOL} --mode=install ${INSTALL} -c -m 444 libcgic.la ${PREFIX}/lib
|
||||
+ ${LIBTOOL} --mode=install ${INSTALL} -c -m 755 capture ${PREFIX}/libexec/cgi-bin
|
||||
+ ${LIBTOOL} --mode=install ${INSTALL} -c -m 755 cgictest ${PREFIX}/libexec/cgi-bin
|
||||
+ ${INSTALL} -c -m 444 cgic.h ${PREFIX}/include
|
||||
+ -mkdir -p ${PREFIX}/share/doc/html/cgiclib
|
||||
+ for i in *.html; do \
|
||||
+ ${INSTALL} -c -m 444 $$i ${PREFIX}/share/doc/html/cgiclib ; \
|
||||
+ done
|
||||
|
||||
clean:
|
||||
- rm -f *.o *.a cgictest.cgi capture
|
||||
+ rm -f *.o *.la cgictest capture
|
||||
|
13
cgic/patches/patch-ab
Normal file
13
cgic/patches/patch-ab
Normal file
|
@ -0,0 +1,13 @@
|
|||
$NetBSD: patch-ab,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
--- capture.c.orig Sun Jan 12 13:59:43 2003
|
||||
+++ capture.c
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "cgic.h"
|
||||
|
||||
-int cgiMain() {
|
||||
+int main() {
|
||||
+ cgiInit();
|
||||
cgiWriteEnvironment("/CHANGE/THIS/PATH/capcgi.dat");
|
||||
cgiHeaderContentType("text/html");
|
||||
fprintf(cgiOut, "<title>Captured</title>\n");
|
56
cgic/patches/patch-ac
Normal file
56
cgic/patches/patch-ac
Normal file
|
@ -0,0 +1,56 @@
|
|||
$NetBSD: patch-ac,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
--- cgic.c.orig Sun Jan 12 13:59:43 2003
|
||||
+++ cgic.c
|
||||
@@ -124,8 +124,9 @@ static int cgiStrBeginsNc(char *s1, char
|
||||
|
||||
static int firstCookie = 1;
|
||||
|
||||
-int main(int argc, char *argv[]) {
|
||||
- int result;
|
||||
+int
|
||||
+cgiInit(void)
|
||||
+{
|
||||
char *cgiContentLengthString;
|
||||
char *e;
|
||||
cgiSetupConstants();
|
||||
@@ -211,17 +212,6 @@ int main(int argc, char *argv[]) {
|
||||
cgiOut = stdout;
|
||||
cgiRestored = 0;
|
||||
|
||||
-
|
||||
- /* These five lines keep compilers from
|
||||
- producing warnings that argc and argv
|
||||
- are unused. They have no actual function. */
|
||||
- if (argc) {
|
||||
- if (argv[0]) {
|
||||
- cgiRestored = 0;
|
||||
- }
|
||||
- }
|
||||
-
|
||||
-
|
||||
if (cgiStrEqNc(cgiRequestMethod, "post")) {
|
||||
#ifdef CGICDEBUG
|
||||
CGICDEBUGSTART
|
||||
@@ -290,9 +280,9 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
}
|
||||
firstCookie = 1;
|
||||
- result = cgiMain();
|
||||
- cgiFreeResources();
|
||||
- return result;
|
||||
+
|
||||
+ atexit(cgiFreeResources);
|
||||
+ return(0);
|
||||
}
|
||||
|
||||
static void cgiGetenv(char **s, char *var){
|
||||
@@ -1995,7 +1985,7 @@ cgiEnvironmentResultType cgiReadEnvironm
|
||||
FILE *in;
|
||||
cgiFormEntry *e = 0, *p;
|
||||
char *version;
|
||||
- cgiEnvironmentResultType result;
|
||||
+ cgiEnvironmentResultType result = cgiEnvironmentSuccess;
|
||||
/* Free any existing data first */
|
||||
cgiFreeResources();
|
||||
/* Be sure to open in binary mode */
|
13
cgic/patches/patch-ad
Normal file
13
cgic/patches/patch-ad
Normal file
|
@ -0,0 +1,13 @@
|
|||
$NetBSD: patch-ad,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
--- cgic.h.orig Sun Jan 12 13:59:43 2003
|
||||
+++ cgic.h
|
||||
@@ -90,6 +90,8 @@ typedef enum {
|
||||
/* These functions are used to retrieve form data. See
|
||||
cgic.html for documentation. */
|
||||
|
||||
+extern int cgiInit(void);
|
||||
+
|
||||
extern cgiFormResultType cgiFormString(
|
||||
char *name, char *result, int max);
|
||||
|
34
cgic/patches/patch-ae
Normal file
34
cgic/patches/patch-ae
Normal file
|
@ -0,0 +1,34 @@
|
|||
$NetBSD: patch-ae,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
--- cgic.html.orig Sun Jan 12 13:59:43 2003
|
||||
+++ cgic.html
|
||||
@@ -365,6 +365,29 @@ cgic.c to your project?</strong>
|
||||
If none of the above proves effective, please see the
|
||||
section regarding <a href="#support">support</a>.
|
||||
<h3><a name="howto">How to write a cgic application</a></h3>
|
||||
+
|
||||
+<strong><em>Important Note for NetBSD packages users from the package maintainer: </em>
|
||||
+<p>
|
||||
+This section does not work for users of cgic who have it installed via
|
||||
+a NetBSD package. While mostly true, there are several very important
|
||||
+differences which were created during the port to the NetBSD pkgsrc
|
||||
+environment:
|
||||
+
|
||||
+<ul>
|
||||
+<li> Linking is now done against libcgic instead of cgic.c itself. This
|
||||
+ is done by adding a "-lcgic" and other command line options as needed
|
||||
+ when linking.
|
||||
+<li> The application must now provide its own main() function, which calls the
|
||||
+ cgiInit() function before any of the other functions are called. This
|
||||
+ function returns 0 upon success, and -1 upon failure. It also registers
|
||||
+ a function, cgiFreeResources(), via atexit() to be called at exit time.
|
||||
+</ul>
|
||||
+
|
||||
+While this removes the ability to compile cgic with DEBUG defined, it
|
||||
+aligns the cgic library with the model followed by other libraries.
|
||||
+</strong>
|
||||
+<p>
|
||||
+
|
||||
<em>Note: </em> All cgic applications must be linked to the cgic.c module
|
||||
itself. How to do this depends on your operating system; under Unix,
|
||||
just use the provided Makefile as an example.
|
19
cgic/patches/patch-af
Normal file
19
cgic/patches/patch-af
Normal file
|
@ -0,0 +1,19 @@
|
|||
$NetBSD: patch-af,v 1.1.1.1 2003/09/16 16:07:29 jmmv Exp $
|
||||
|
||||
--- cgictest.c.orig Sun Jan 12 13:59:43 2003
|
||||
+++ cgictest.c
|
||||
@@ -33,7 +33,13 @@ void Cookies();
|
||||
void LoadEnvironment();
|
||||
void SaveEnvironment();
|
||||
|
||||
-int cgiMain() {
|
||||
+int main() {
|
||||
+
|
||||
+ /*
|
||||
+ * Initialize the library environment.
|
||||
+ */
|
||||
+ cgiInit();
|
||||
+
|
||||
#ifdef DEBUG
|
||||
LoadEnvironment();
|
||||
#endif /* DEBUG */
|
Loading…
Reference in a new issue