[daisy] error on savinig a document

Bob Ellison rjellison at gmail.com
Wed May 7 16:15:39 CEST 2008


The protections are

drwxrwx---  146 daisy daisy 352256 Apr 16 15:25 blobstore
The nested directories all have 755 and the files are 644.

Bob




On Wed, May 7, 2008 at 4:17 AM, Karel Vervaeke <karel at outerthought.org> wrote:
> It seems the repository is unable to create a new file.
>  Is it possible that the user running the repository java process does
>  not have write access to the blobstore directory or to some of the
>  underlying directories?  (In that case, chmod is your friend (or
>  whatever the Windows equivalent is)
>
>  (note to self: the stacktrace should contain more info about what went
>  wrong / which file
>
>  Regards,
>  Karel
>
>
>
>  On Tue, 2008-05-06 at 11:22 -0400, Bob Ellison wrote:
>  > Error
>  > Sitemap: error calling continuation
>  > Received exception from repository server.
>  > Problem storing document.
>  > Error storing part data to blobstore.
>  > Error storing blob.
>  > No such file or directory
>  >
>  >
>  > Show Details
>  > Hide Details
>  > Cocoon Stack Trace
>  > Message: Sitemap: error calling continuation
>  > context:/daisy/sitemap.xmap - 923:39  <map:call>
>  >
>  > Java Stack Trace
>  > Message: Sitemap: error calling continuation
>  > Class: org.apache.cocoon.ProcessingException
>  > Stacktrace:
>  > org.apache.cocoon.ProcessingException.throwLocated
>  > (ProcessingException.java:113)
>  > org.apache.cocoon.components.treeprocessor.sitemap.CallFunctionNode.invoke
>  > (CallFunctionNode.java:126)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:47)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke
>  > (PreparableMatchNode.java:131)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:47)
>  > org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke
>  > (MatchNode.java:108)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke
>  > (PipelineNode.java:143)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke
>  > (PipelinesNode.java:93)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:235)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:177)
>  > org.apache.cocoon.components.treeprocessor.TreeProcessor.process
>  > (TreeProcessor.java:253)
>  > org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke
>  > (MountNode.java:118)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke
>  > (PipelineNode.java:143)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke
>  > (PipelinesNode.java:93)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:235)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:177)
>  > org.apache.cocoon.components.treeprocessor.TreeProcessor.process
>  > (TreeProcessor.java:253)
>  > org.apache.cocoon.Cocoon.process (Cocoon.java:699)
>  > org.apache.cocoon.servlet.CocoonServlet.service (CocoonServlet.java:1154)
>  > javax.servlet.http.HttpServlet.service (HttpServlet.java:820)
>  > org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487)
>  > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
>  > (ServletHandler.java:1098)
>  > org.outerj.daisy.frontend.util.CharacterEncodingFilter.doFilter
>  > (CharacterEncodingFilter.java:35)
>  > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
>  > (ServletHandler.java:1089)
>  > org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:365)
>  > org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216)
>  > org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181)
>  > org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712)
>  > org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:405)
>  > org.mortbay.jetty.handler.HandlerCollection.handle (HandlerCollection.java:114)
>  > org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139)
>  > org.mortbay.jetty.Server.handle (Server.java:285)
>  > org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:502)
>  > org.mortbay.jetty.ajp.Ajp13Connection.access$2700 (Ajp13Connection.java:35)
>  > org.mortbay.jetty.ajp.Ajp13Connection$RequestHandler.content
>  > (Ajp13Connection.java:210)
>  > org.mortbay.jetty.ajp.Ajp13Parser.parseNext (Ajp13Parser.java:574)
>  > org.mortbay.jetty.ajp.Ajp13Parser.parseAvailable (Ajp13Parser.java:142)
>  > org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:378)
>  > org.mortbay.jetty.bio.SocketConnector$Connection.run (SocketConnector.java:226)
>  > org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442)
>  > Message: Received exception from repository server.
>  > Class: org.outerj.daisy.repository.RepositoryException
>  > Stacktrace:
>  > org.outerj.daisy.repository.clientimpl.infrastructure.DaisyHttpClient.handleNotOkResponse
>  > (DaisyHttpClient.java:175)
>  > org.outerj.daisy.repository.clientimpl.infrastructure.DaisyHttpClient.executeMethod
>  > (DaisyHttpClient.java:111)
>  > org.outerj.daisy.repository.clientimpl.RemoteDocumentStrategy.store
>  > (RemoteDocumentStrategy.java:225)
>  > org.outerj.daisy.repository.commonimpl.DocumentImpl.save (DocumentImpl.java:474)
>  > org.outerj.daisy.frontend.editor.DocumentEditorApple.saveAndCloseEditor
>  > (DocumentEditorApple.java:340)
>  > org.outerj.daisy.frontend.editor.DocumentEditorApple.processRequest
>  > (DocumentEditorApple.java:316)
>  > org.outerj.daisy.frontend.util.AbstractDaisyApple.process
>  > (AbstractDaisyApple.java:61)
>  > org.apache.cocoon.components.flow.apples.ApplesProcessor.processApple
>  > (ApplesProcessor.java:139)
>  > org.apache.cocoon.components.flow.apples.ApplesProcessor.handleContinuation
>  > (ApplesProcessor.java:108)
>  > org.apache.cocoon.components.treeprocessor.sitemap.CallFunctionNode.invoke
>  > (CallFunctionNode.java:124)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:47)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PreparableMatchNode.invoke
>  > (PreparableMatchNode.java:131)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:47)
>  > org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke
>  > (MatchNode.java:108)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke
>  > (PipelineNode.java:143)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke
>  > (PipelinesNode.java:93)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:235)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:177)
>  > org.apache.cocoon.components.treeprocessor.TreeProcessor.process
>  > (TreeProcessor.java:253)
>  > org.apache.cocoon.components.treeprocessor.sitemap.MountNode.invoke
>  > (MountNode.java:118)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke
>  > (PipelineNode.java:143)
>  > org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes
>  > (AbstractParentProcessingNode.java:69)
>  > org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke
>  > (PipelinesNode.java:93)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:235)
>  > org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process
>  > (ConcreteTreeProcessor.java:177)
>  > org.apache.cocoon.components.treeprocessor.TreeProcessor.process
>  > (TreeProcessor.java:253)
>  > org.apache.cocoon.Cocoon.process (Cocoon.java:699)
>  > org.apache.cocoon.servlet.CocoonServlet.service (CocoonServlet.java:1154)
>  > javax.servlet.http.HttpServlet.service (HttpServlet.java:820)
>  > org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487)
>  > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
>  > (ServletHandler.java:1098)
>  > org.outerj.daisy.frontend.util.CharacterEncodingFilter.doFilter
>  > (CharacterEncodingFilter.java:35)
>  > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
>  > (ServletHandler.java:1089)
>  > org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:365)
>  > org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216)
>  > org.mortbay.jetty.servlet.SessionHandler.handle (SessionHandler.java:181)
>  > org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712)
>  > org.mortbay.jetty.webapp.WebAppContext.handle (WebAppContext.java:405)
>  > org.mortbay.jetty.handler.HandlerCollection.handle (HandlerCollection.java:114)
>  > org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139)
>  > org.mortbay.jetty.Server.handle (Server.java:285)
>  > org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:502)
>  > org.mortbay.jetty.ajp.Ajp13Connection.access$2700 (Ajp13Connection.java:35)
>  > org.mortbay.jetty.ajp.Ajp13Connection$RequestHandler.content
>  > (Ajp13Connection.java:210)
>  > org.mortbay.jetty.ajp.Ajp13Parser.parseNext (Ajp13Parser.java:574)
>  > org.mortbay.jetty.ajp.Ajp13Parser.parseAvailable (Ajp13Parser.java:142)
>  > org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:378)
>  > org.mortbay.jetty.bio.SocketConnector$Connection.run (SocketConnector.java:226)
>  > org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442)
>  > Message: Problem storing document.
>  > Class: org.outerj.daisy.repository.RepositoryException
>  > Stacktrace:
>  > ATTENTION: this is the stacktrace of an exception that happened on the
>  > repository server.
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.store
>  > (LocalDocumentStrategy.java:792)
>  > org.outerj.daisy.repository.commonimpl.DocumentImpl.save (DocumentImpl.java:474)
>  > org.outerj.daisy.httpconnector.handlers.DocumentsHandler.handleRequest
>  > (DocumentsHandler.java:65)
>  > org.outerj.daisy.httpconnector.HttpConnector$PathHandler.handle
>  > (HttpConnector.java:339)
>  > org.outerj.daisy.httpconnector.HttpConnector$DaisyServlet.service
>  > (HttpConnector.java:282)
>  > javax.servlet.http.HttpServlet.service (HttpServlet.java:802)
>  > org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487)
>  > org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:367)
>  > org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216)
>  > org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712)
>  > org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139)
>  > org.mortbay.jetty.Server.handle (Server.java:285)
>  > org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:502)
>  > org.mortbay.jetty.HttpConnection$RequestHandler.content
>  > (HttpConnection.java:835)
>  > org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:641)
>  > org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:208)
>  > org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:378)
>  > org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:368)
>  > org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442)
>  > Message: Error storing part data to blobstore.
>  > Class: org.outerj.daisy.repository.RepositoryException
>  > Stacktrace:
>  > ATTENTION: this is the stacktrace of an exception that happened on the
>  > repository server.
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.storeParts
>  > (LocalDocumentStrategy.java:1089)
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.store
>  > (LocalDocumentStrategy.java:709)
>  > org.outerj.daisy.repository.commonimpl.DocumentImpl.save (DocumentImpl.java:474)
>  > org.outerj.daisy.httpconnector.handlers.DocumentsHandler.handleRequest
>  > (DocumentsHandler.java:65)
>  > org.outerj.daisy.httpconnector.HttpConnector$PathHandler.handle
>  > (HttpConnector.java:339)
>  > org.outerj.daisy.httpconnector.HttpConnector$DaisyServlet.service
>  > (HttpConnector.java:282)
>  > javax.servlet.http.HttpServlet.service (HttpServlet.java:802)
>  > org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487)
>  > org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:367)
>  > org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216)
>  > org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712)
>  > org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139)
>  > org.mortbay.jetty.Server.handle (Server.java:285)
>  > org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:502)
>  > org.mortbay.jetty.HttpConnection$RequestHandler.content
>  > (HttpConnection.java:835)
>  > org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:641)
>  > org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:208)
>  > org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:378)
>  > org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:368)
>  > org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442)
>  > Message: Error storing blob.
>  > Class: org.outerj.daisy.blobstore.BlobIOException
>  > Stacktrace:
>  > ATTENTION: this is the stacktrace of an exception that happened on the
>  > repository server.
>  > org.outerj.daisy.blobstore.impl.FSBlobStore.store (FSBlobStore.java:153)
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.storeParts
>  > (LocalDocumentStrategy.java:1087)
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.store
>  > (LocalDocumentStrategy.java:709)
>  > org.outerj.daisy.repository.commonimpl.DocumentImpl.save (DocumentImpl.java:474)
>  > org.outerj.daisy.httpconnector.handlers.DocumentsHandler.handleRequest
>  > (DocumentsHandler.java:65)
>  > org.outerj.daisy.httpconnector.HttpConnector$PathHandler.handle
>  > (HttpConnector.java:339)
>  > org.outerj.daisy.httpconnector.HttpConnector$DaisyServlet.service
>  > (HttpConnector.java:282)
>  > javax.servlet.http.HttpServlet.service (HttpServlet.java:802)
>  > org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487)
>  > org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:367)
>  > org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216)
>  > org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712)
>  > org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139)
>  > org.mortbay.jetty.Server.handle (Server.java:285)
>  > org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:502)
>  > org.mortbay.jetty.HttpConnection$RequestHandler.content
>  > (HttpConnection.java:835)
>  > org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:641)
>  > org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:208)
>  > org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:378)
>  > org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:368)
>  > org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442)
>  > Message: No such file or directory
>  > Class: java.io.IOException
>  > Stacktrace:
>  > ATTENTION: this is the stacktrace of an exception that happened on the
>  > repository server.
>  > java.io.UnixFileSystem.createFileExclusively [native method]
>  > (UnixFileSystem.java:-2)
>  > java.io.File.createNewFile (File.java:850)
>  > org.outerj.daisy.blobstore.impl.FSBlobStore.createFile (FSBlobStore.java:201)
>  > org.outerj.daisy.blobstore.impl.FSBlobStore.store (FSBlobStore.java:139)
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.storeParts
>  > (LocalDocumentStrategy.java:1087)
>  > org.outerj.daisy.repository.serverimpl.LocalDocumentStrategy.store
>  > (LocalDocumentStrategy.java:709)
>  > org.outerj.daisy.repository.commonimpl.DocumentImpl.save (DocumentImpl.java:474)
>  > org.outerj.daisy.httpconnector.handlers.DocumentsHandler.handleRequest
>  > (DocumentsHandler.java:65)
>  > org.outerj.daisy.httpconnector.HttpConnector$PathHandler.handle
>  > (HttpConnector.java:339)
>  > org.outerj.daisy.httpconnector.HttpConnector$DaisyServlet.service
>  > (HttpConnector.java:282)
>  > javax.servlet.http.HttpServlet.service (HttpServlet.java:802)
>  > org.mortbay.jetty.servlet.ServletHolder.handle (ServletHolder.java:487)
>  > org.mortbay.jetty.servlet.ServletHandler.handle (ServletHandler.java:367)
>  > org.mortbay.jetty.security.SecurityHandler.handle (SecurityHandler.java:216)
>  > org.mortbay.jetty.handler.ContextHandler.handle (ContextHandler.java:712)
>  > org.mortbay.jetty.handler.HandlerWrapper.handle (HandlerWrapper.java:139)
>  > org.mortbay.jetty.Server.handle (Server.java:285)
>  > org.mortbay.jetty.HttpConnection.handleRequest (HttpConnection.java:502)
>  > org.mortbay.jetty.HttpConnection$RequestHandler.content
>  > (HttpConnection.java:835)
>  > org.mortbay.jetty.HttpParser.parseNext (HttpParser.java:641)
>  > org.mortbay.jetty.HttpParser.parseAvailable (HttpParser.java:208)
>  > org.mortbay.jetty.HttpConnection.handle (HttpConnection.java:378)
>  > org.mortbay.io.nio.SelectChannelEndPoint.run (SelectChannelEndPoint.java:368)
>  > org.mortbay.thread.BoundedThreadPool$PoolThread.run (BoundedThreadPool.java:442)
>  >
>  >
>  > On Tue, May 6, 2008 at 3:30 AM, Karel Vervaeke <karel at outerthought.org> wrote:
>  > > Can you provide the entire stacktrace information?
>  > >
>  > >  (sidenote: Since viewing the documents works, I assume the docid
>  > >  convertor step was successful.)
>  > >
>  > >  Regards,
>  > >  Karel
>  > >
>  > >
>  > >
>  > >  On Mon, 2008-05-05 at 21:12 -0400, Bob Ellison wrote:
>  > >  > We have done a major upgrade from 1.4 to 2.2. There are no problems
>  > >  > viewing documents. but  I get the following error when I saved a
>  > >  > document after an  edit
>  > >  >
>  > >  > Error
>  > >  > Sitemap: error calling continuation
>  > >  > Received exception from repository server.
>  > >  > Problem storing document.
>  > >  > Error storing part data to blobstore.
>  > >  > Error storing blob.
>  > >  > No such file or directory
>  > >  >
>  > >  >
>  > >  > Show Details
>  > >  > Hide Details
>  > >  > Cocoon Stack Trace
>  > >  > Message: Sitemap: error calling continuation
>  > >  > context:/daisy/sitemap.xmap - 923:39    <map:call>
>  > >  >
>  > >  > Any suggestions for how to approach this problem?
>  > >  >
>  > >  > Bob
>  > >  > _______________________________________________
>  > >  > daisy community mailing list
>  > >  > Professional Daisy support: http://outerthought.org/en/services/daisy/support.html
>  > >  > mail to: daisy at lists.cocoondev.org
>  > >  > list information: http://lists.cocoondev.org/mailman/listinfo/daisy
>  > >  _______________________________________________
>  > >  daisy community mailing list
>  > >  Professional Daisy support: http://outerthought.org/en/services/daisy/support.html
>  > >  mail to: daisy at lists.cocoondev.org
>  > >  list information: http://lists.cocoondev.org/mailman/listinfo/daisy
>  > >
>  > _______________________________________________
>  > daisy community mailing list
>  > Professional Daisy support: http://outerthought.org/en/services/daisy/support.html
>  > mail to: daisy at lists.cocoondev.org
>  > list information: http://lists.cocoondev.org/mailman/listinfo/daisy
>  _______________________________________________
>  daisy community mailing list
>  Professional Daisy support: http://outerthought.org/en/services/daisy/support.html
>  mail to: daisy at lists.cocoondev.org
>  list information: http://lists.cocoondev.org/mailman/listinfo/daisy
>


More information about the daisy mailing list