R7RS Scheme library for Common Gateway Interface

If you dont know what CGI is, in short server runs your Scheme script and
displays it's output as a webpage.

## Installation

    snow-chibi --impls=$SCHEME retropikzel.cgi


## Usage example

lighttpd.conf:

    var.basedir = env.PWD
    server.document-root = basedir
    server.port = 3000
    server.modules += ("mod_cgi", "mod_dirlisting")
    cgi.assign = (".scm"  => basedir + "/scheme-script")
    dir-listing.activate = "enable"

scheme-script:

    #!/bin/sh
    #exec capy --r7rs --script "$@"
    #exec chibi-scheme "$@"
    #exec csi -quiet -batch "$@"
    #exec icyc -s "$@"
    #exec gsi /home/youruser/.gambit_userlib/ "$@"
    exec gosh "$@"
    #exec kawa --r7rs -Dkawa.import.path=/usr/local/share/kawa/lib/*.sld "$@"
    #exec loko --program "$@"
    #exec mit-scheme --batch-mode --load "$@"
    #exec racket -I r7rs --script "$@"
    #exec sash -r7 "$@"
    #exec skint "$@"
    #exec stklos "$@"
    #exec tr7i "$@"

hello.scm:

    (import (scheme base)
            (scheme write)
            (retropikzel cgi))

    (handle-request
     '()
     (lambda (request headers parameters cookies body files)
      (display "Content-type: text/html
")
      (display "
")
      (display "Hello
") (write request))) run: chmod +x scheme-cript lighttpd -D -f lighttpd.conf Then navigate with your browser to http://127.0.0.1:3000/hello.scm ## Documentation (**handle-request** options thunk) Options must be association list. Thunk must be procedure taking arguments: - request - Full request - headers - Request headers - parameters - Request parameters - The ?foo=bar&baz=1 part parsed - cookies - Request cookies - body - Request body - files - Request files Whatever thunk writes to (current-output-port) is sent back as response. ### Environment variables **SCM_CGI_TMPDIR** Path to where uploaded files are stored. Default is /tmp.