summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.ghci2
-rw-r--r--gf.cabal4
-rw-r--r--src/compiler/GF/Server.hs4
3 files changed, 7 insertions, 3 deletions
diff --git a/.ghci b/.ghci
index 608944340..041c7d773 100644
--- a/.ghci
+++ b/.ghci
@@ -1,2 +1,2 @@
-:set -isrc/compiler -isrc/binary -isrc/runtime/haskell -isrc/server -isrc/server/transfer -idist/build/autogen -idist/build
+:set -isrc/compiler -isrc/binary -isrc/runtime/haskell -isrc/server -isrc/example-based -isrc/server/transfer -idist/build/autogen -idist/build
:set -fwarn-unused-imports -optP-DSERVER_MODE -optP-DUSE_INTERRUPT -optP-DCC_LAZY -optP-include -optPdist/build/autogen/cabal_macros.h -odir dist/build/gf/gf-tmp -hidir dist/build/gf/gf-tmp -stubdir dist/build/gf/gf-tmp
diff --git a/gf.cabal b/gf.cabal
index 8c0e5e74b..494f483eb 100644
--- a/gf.cabal
+++ b/gf.cabal
@@ -287,7 +287,9 @@ Library
CGIUtils
Cache
Fold
- hs-source-dirs: src/server src/server/transfer
+ ExampleDemo
+ ExampleService
+ hs-source-dirs: src/server src/server/transfer src/example-based
if flag(interrupt)
cpp-options: -DUSE_INTERRUPT
diff --git a/src/compiler/GF/Server.hs b/src/compiler/GF/Server.hs
index 9192ed9c9..c287e8001 100644
--- a/src/compiler/GF/Server.hs
+++ b/src/compiler/GF/Server.hs
@@ -43,6 +43,7 @@ import GF.Infra.UseIO(readBinaryFile,writeBinaryFile,ePutStrLn)
import GF.Infra.SIO(captureSIO)
import GF.Data.Utilities(apSnd,mapSnd)
import qualified PGFService as PS
+import qualified ExampleService as ES
import Data.Version(showVersion)
import Paths_gf(getDataDir,version)
import GF.Infra.BuildInfo (buildInfo)
@@ -170,6 +171,7 @@ handle logLn documentroot state0 cache execute1 stateVar
(_ ,_ ,".pgf") -> do --debug $ "PGF service: "++path
wrapCGI $ PS.cgiMain' cache path
(dir,"grammars.cgi",_ ) -> grammarList dir (decoded qs)
+ (dir ,"exb.fcgi" ,_ ) -> wrapCGI $ ES.cgiMain' root dir (PS.pgfCache cache)
_ -> serveStaticFile rpath path
where path = translatePath rpath
_ -> return $ resp400 upath
@@ -207,7 +209,7 @@ handle logLn documentroot state0 cache execute1 stateVar
((_,(value,_)):qs1,qs2) -> do put_qs (qs1++qs2)
return value
_ -> err $ resp400 $ "no "++field++" in request"
-
+
inDir ok = cd =<< look "dir"
where
cd ('/':dir@('t':'m':'p':_)) =