Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
curry
curry-tools
Commits
1db4c461
Commit
1db4c461
authored
Oct 15, 2014
by
Michael Hanus
Browse files
CASS improved w.r.t. handling of non-local paths
parent
1fefb129
Changes
1
Hide whitespace changes
Inline
Side-by-side
CASS/AnalysisServer.curry
View file @
1db4c461
...
...
@@ -15,12 +15,13 @@ module AnalysisServer(main, initializeAnalysisSystem,
import ReadNumeric(readNat)
import Char(isSpace)
import Directory
import FlatCurry(QName)
import Socket(Socket(..),listenOn,listenOnFresh,sClose,waitForSocketAccept)
import IO
import ReadShowTerm(readQTerm,showQTerm)
import System(system,sleep,setEnviron,getArgs)
import FileGoodies(stripSuffix)
import FileGoodies(stripSuffix
,splitDirectoryBaseName
)
import AnalysisCollection
import ServerFormats
import ServerFunctions(WorkerMessage(..))
...
...
@@ -136,19 +137,25 @@ analyzeFunctionForBrowser ananame qn@(mname,_) aoutformat = do
analyzeModule :: String -> String -> AOutFormat
-> IO (Either (ProgInfo String) String)
analyzeModule ananame moduleName aoutformat = do
getDefaultPath >>= setEnviron "CURRYPATH"
let (mdir,mname) = splitDirectoryBaseName moduleName
getDefaultPath >>= setEnviron "CURRYPATH"
curdir <- getCurrentDirectory
unless (mdir==".") $ setCurrentDirectory mdir
numworkers <- numberOfWorkers
if numworkers>0
then do
serveraddress <- getServerAddress
(port,socket) <- listenOnFresh
handles <- startWorkers numworkers socket serveraddress port []
result <- runAnalysisWithWorkers ananame aoutformat handles moduleName
stopWorkers handles
sClose socket
return result
else runAnalysisWithWorkers ananame aoutformat [] moduleName
aresult <-
if numworkers>0
then do
serveraddress <- getServerAddress
(port,socket) <- listenOnFresh
handles <- startWorkers numworkers socket serveraddress port []
result <- runAnalysisWithWorkers ananame aoutformat handles mname
stopWorkers handles
sClose socket
return result
else runAnalysisWithWorkers ananame aoutformat [] mname
setCurrentDirectory curdir
return aresult
--- Start the analysis system with a particular analysis.
--- The analysis must be a registered one if workers are used.
--- If it is a combined analysis, the base analysis must be also
...
...
@@ -156,20 +163,26 @@ analyzeModule ananame moduleName aoutformat = do
analyzeGeneric :: Analysis a -> String -> IO (Either (ProgInfo a) String)
analyzeGeneric analysis moduleName = do
initializeAnalysisSystem
let (mdir,mname) = splitDirectoryBaseName moduleName
getDefaultPath >>= setEnviron "CURRYPATH"
curdir <- getCurrentDirectory
unless (mdir==".") $ setCurrentDirectory mdir
numworkers <- numberOfWorkers
if numworkers>0
then do
serveraddress <- getServerAddress
(port,socket) <- listenOnFresh
handles <- startWorkers numworkers socket serveraddress port []
result <- analyzeMain analysis moduleName handles True
stopWorkers handles
sClose socket
return result
else
analyzeMain analysis moduleName [] True
aresult <-
if numworkers>0
then do
serveraddress <- getServerAddress
(port,socket) <- listenOnFresh
handles <- startWorkers numworkers socket serveraddress port []
result <- analyzeMain analysis mname handles True
stopWorkers handles
sClose socket
return result
else
analyzeMain analysis mname [] True
setCurrentDirectory curdir
return aresult
--- Start the analysis system with a given analysis to compute properties
--- of a module interface.
--- The analysis must be a registered one if workers are used.
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment