blob: 604d71b3f92e2f407981c55d20b533951d3a8a2c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
;;;; -*- scheme -*-
=AUTOGENERATED=
;;;; Greek Dictionary Web Engine
;;;; Copyright (C) 2005 Sergey Poznyakoff
;;;;
;;;; This program is free software; you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2 of the License, or
;;;; (at your option) any later version.
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU General Public License for more details.
;;;;
;;;; You should have received a copy of the GNU General Public License
;;;; along with this program; if not, write to the Free Software
;;;; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
;;;;
(define-module (ellinika cgi))
(use-modules (www cgi)
(gamma gettext))
;;; User-definable variables
(define-public base-dir "=PREFIX=")
(define-public html-dir "=HTMLDIR=")
(define-public sysconf-dir "=SYSCONFDIR=")
(define-public locale-dir "=LOCALEDIR=")
(define-public ref-loc #f)
(define-public dict-cgi-path "cgi-bin/dict.cgi")
(define-public nea-cgi-path "cgi-bin/nea.cgi") ;; Path to the cgi (relative
;; to the Base HREF)
(define-public config-file-name "ellinika.conf")
(define-public dict-template-file-name "dict.html")
(define-public nea-template-file-name "nea.html")
(define-public target-language "el_GR")
(define-public word-forms-reference '())
(define-public sql-iface "mysql") ;; SQL interface ("mysql" or "postgres")
(define-public sql-host "localhost") ;; SQL server hostname or a path to the UNIX
;; socket
(define-public sql-port 3306) ;; SQL port number (0 for sockaddr_un
;; connection)
(define-public sql-database "ellinika") ;; Name of the database
(define-public sql-username "gray") ;; Database user name
(define-public sql-password "") ;; Password for that user name
(define-public match-list-columns 4) ;; Number of colums in fuzzy search output
;;; End of user-definable variables
(define-public (language-code lang)
(cond
((string-index lang #\_) =>
(lambda (len)
(substring lang 0 len)))
(else
lang)))
(define-public (template-file lang template-file-name)
(string-append html-dir "/" (language-code lang) "/" template-file-name))
(define-public (make-cgi-name cgi-path . rest)
(apply
string-append
(cons
cgi-path
(let ((arglist (let ((lang (cgi:value "LANG")))
(do ((ilist (if lang
(cons "LANG" (cons lang rest))
rest) (cdr ilist))
(i 1 (1+ i))
(olist '()))
((null? ilist) (if (null? olist)
olist
(reverse (cdr olist))))
(set! olist (cons (car ilist) olist))
(set! olist (cons
(if (odd? i) "=" "&")
olist))))))
(if (null? arglist)
arglist
(cons "?" arglist))))))
(define-public (ellinika-cgi-init template-file-name)
;;; Load the site defaults
(let ((rc-file (string-append sysconf-dir "/" config-file-name)))
(if (file-exists? rc-file)
(load rc-file)))
;;; Load the language-specific defaults
(cond
((cgi:value "LANG") =>
(lambda (x)
(if (and (file-exists? (template-file x template-file-name))
(false-if-exception (setlocale LC_ALL x)))
(set! target-language x)))))
;;; Initialize i18n
(setlocale LC_ALL target-language)
(bindtextdomain "=PACKAGE=" locale-dir)
(bind_textdomain_codeset "=PACKAGE=" "UTF-8")
(textdomain "=PACKAGE="))
;;; End of cgi.scmi
|