aboutsummaryrefslogtreecommitdiff
path: root/cgi-bin/guest_book.cgi
diff options
context:
space:
mode:
Diffstat (limited to 'cgi-bin/guest_book.cgi')
-rwxr-xr-xcgi-bin/guest_book.cgi49
1 files changed, 29 insertions, 20 deletions
diff --git a/cgi-bin/guest_book.cgi b/cgi-bin/guest_book.cgi
index d527d2d..f8caccf 100755
--- a/cgi-bin/guest_book.cgi
+++ b/cgi-bin/guest_book.cgi
@@ -62,7 +62,9 @@
(guest `(("name" . ,name)
("url" . ,url)
("message" . ,message)
- ("date" . ,(date->string (current-date) "~B, ~d ~Y")))))
+ ("date" . ,(date->string (current-date) "~B, ~d ~Y"))))
+ (not-already-added #t))
+
(if (file-exists? guest-book-json-file)
(call-with-input-file guest-book-json-file
(lambda (fp)
@@ -76,28 +78,35 @@
(letrec ((check-if-already-added
(lambda (guests)
(unless (eq? guests '())
- (unless (letrec ((guest-item-compare
- (lambda (index)
- (if (< index (- (length guest) 1))
- (and (cdr (list-ref (car guests)
- index))
- (cdr (list-ref guest index))
- (guest-item-compare
- (+ index 1))) ;; Unholyness
-
- (check-if-already-added (cdr guests))))))
+ (cond ((compare-guests 0 (car guests) guest)
+ (set! not-already-added #f))
+ (else
+ (check-if-already-added (cdr guests)))))))
+ (compare-guests
+ (lambda (index guest1 guest2)
+ (and (string= (cdr (list-ref guest1 index))
+ (cdr (list-ref guest2 index)))
+ (cond ((< index 3)
+ (compare-guests (+ index 1) guest1 guest2))
+ (else #t))))))
(check-if-already-added guest-book))
;; Add guest to guest-book
- (cond ((eq? guest-book '())
- (set! guest-book (list guest)))
- (else
- (append! guest-book (list guest))))
-
- ;; Write guest book to json
- (call-with-output-file guest-book-json-file
- (lambda (fp)
- (scm->json (list->vector guest-book) fp)))))
+ (cond (not-already-added
+ (cond ((eq? guest-book '())
+ (set! guest-book (list guest)))
+ (else
+ (append! guest-book (list guest))))
+
+ ;; Write guest book to json
+ (call-with-output-file guest-book-json-file
+ (lambda (fp)
+ (scm->json (list->vector guest-book) fp)))
+
+ (display "<p>You been added to the guest book yippe (:</p>\
+<img src=\"../images/yippee.gif\" alt=\"yippee!\"/>\n"))
+ (else
+ (display "You already been added\n")))))
(define (handle-fields)
(let ((form (get-form)))