This is the core libferris repository. It is the primary tree for development as at 2015.
C++ C M4 Makefile XSLT Shell Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
DBusGlue
Ferris
FerrisGCJ
FerrisGlue
FerrisQtGui
FerrisUI
Indexing
ThirdParty
apps
appsui
cc
customalloc
debian
docs/user-api
dot-ferris
eaindexers_custom_plugin
exposures
factories
firsttime
fulltextindexers_custom_plugin
m4
macros
media
mg
migration
noarch
osx
patches
perl
plugins
tests
testsuite
xsltfunctions
.gitignore
AUTHORS
COPYING
ChangeLog
ChangeLog-Pre1.0.bz2
Doxyfile
INSTALL
Makefile.am
NEWS
Portfile
README
README-hacking
TODO
acconfig.h
bootstrap
config.h.in
configure.ac
ferris-config.in
ferris-shell-with-developer-plugins.sh
ferris.pc.in
ferrisui.pc.in
ferrisxslt.pc.in
flymake.mk
install-monkeyiq-plugins.sh
myconfigure.sh
myconfigure.sh-nostlport
myconfigure.sh-using-stlport
myconfigure.sh-vmdebug
optimize-setup.sh
optimizeconfigure.sh
profile-setup.sh
profileconfigure.sh
push.sh
reconf
reinstall-developer-plugins.sh
runtests.sh
stamp-h.in
tconfigure.sh
updatetags.sh

README

As of version 1.0.0 onwards this code was moved to using boost for
signals and smart pointers.

Make sure you have run the following
$ ferris-first-time-user  --setup-defaults
to setup each user who is going to use libferris. 
Files installed into /etc/skel should setup new users created 
after libferris was installed. The ferris-first-time-user also
updates skel files with sane values from the user environment.

When you are installing libferris don't forget to run
cc/capplets/logging/ferris-capplet-logging and make sure your debug
levels are set to None or Emergency using the ``all'' slider. Running
ferris-first-time-user should do that automatically for you. Though
when you update to a new libferris, new functionality might be
included with default logging levels higher than you might like.
---

Note that the test suite expects to be able to find some works from
project gutenburg. Since I don't care to track copyright for
redistributing those, you will have to download them yourself and make
them available to the test suite.

$ md5sum *
135e06ad31b169065bccbf03ec7236f2  alice13a.txt
7dd30f1b37e32cdb5d21fe992bbf248d  boysw10.txt
87c05f11193c0e05b3d0dec0808a0450  dmoro11.txt
633503b2e625f34d35e179e1ad7a4a0d  frsls10.txt
ab4ed2c9e62ec3c29be60f0f5e44744b  nobos10.txt
a67f97221d991e09530d5ab703f3dfb2  sbshp10.txt
77f1d35b262e7ec252630f26f74e6a4f  snark12.txt
d4226467454cd49cbd6d461e8288197f  warw11.txt

--------


C++ Virtual file system

As of version 1.1.61 the test suite has been moved out of the main
distro tarball to save space and because the testing needs the machine
to be setup in a given way. Testing should now be performed in a
virtual machine.

This is a Virtual file system implementation that relies quite a lot
on the Extended Attributes (EA) paradigm. With EA, key-value pairs are
associated with files and directories to offer create, read, write and
update access to metadata about files. This metadata and the file
contents can also be indexed with libferris to provide powerful search
capabilities. Access to file content is done using std::iostreams.

The design is also flexable enough to allow internet protocols to
integrate providing C++ IOStreams and EA about each object.

There is an 'ls' client for the VFS.

Requirements:

	gcc 3.1+
	boost
	libferrisstreams        see the witme sourceforge site
	stldb4                  see the witme sourceforge site
	fam++2                  see the fampp sourceforge site
	openssl			
	glib/gtk2
	Qt                      4.5+
	Soprano                 (Installed with KDE4 by default)
	xerces-c                3.x
	xalan-c                 1.10+ (optional but recommended)
	a MIME engine           either gnome, KDE, or libfile.

Optional but very highly recommended:
	gimp 			1.2.1
	Imlib2			1.0.2
	libjpeg			6b
	libpng 			1.0.9
	ImageMagick-c++ 	5.2.7
	libattr (xfs)           1.1.3 (http://oss.sgi.com/projects/xfs/)
	xqilla
	
Optional recommended:
	 See configure.ac, plugins/context and plugins/eagenerators
	 and see if something looks like it is interesting.

There is optional support for building against STLPort

Note that many of the icons in media/icons are by jimmac
http://jimmac.musichall.cz/
Thanks for the nice icons jimmac :)


--------------------------------------------------------------------------------

SORTING:
  A sort filter is made up of
  :!#:attrName
  Where the :!#: part is optional extra information about the sort. 

The attribute name is the name of the attribute
to sort on. The default action is a case sensitive sort, so for example to sort 
a dir by filename you can use
./ls . --sort=name
And to reverse that sort
./ls . --sort=':!:name'

The # in the above example means to perform comparisons numerically instead of
as a string. so
$ ./ls . --sort=':!#:size'
Will sort a directory by size with the largest file first.

The other option at this point in time is CIS
./ls . --sort=':CIS:name'
Which sorts using a case insensitive scheme. There is really no 
gain to using CIS as it is slower to use and looses information.

--------------------------------------------------------------------------------

Some assumptions that are worth knowing:
* For subclasses of ChainedViewContext it is assumed that a context will wrap 
  a chainedContext of its own type around the underlying child for a read()
* Reference counting has some querks for the root of a ChainedViewContext, one 
  must call setIsChainedViewContextRoot() for the root of a chained tree.

--------------------------------------------------------------------------------

Setting up apps://

use the scripts and apps in apps/importdesktop/


--------------------------------------------------------------------------------

The directory mg/ contains code that was nicked from the mg system
most files are left intact as were and a wrapper created in
FerrisMG.hh to be more C++ friendly. I have tried to limit changes to
the other files, except where global variables needed to be changed or 
other such library friendly changes are needed.
http://www.cs.mu.oz.au/mg/

For some custom coded indexing stuff check out 
Ferris/Indexing/ # contains custom lexicon/inverted file storage classes
Ferris/FullTextIndexer.hh
Ferris/FullTextIndexer.cpp
Ferris/FullTextQuery.hh
Ferris/FullTextQuery.cpp
--------------------------------------------------------------------------------

Some internal headers from xerces-c are included verbatim from the xerces-c
codebase because it seems most public interfaces are pure in xerces-c and
I don't really feel like reimplmeneting treeWalker etc to do the same thing as
the code already in the xerces-c library.

This creates a maintainance problem in libferris but perhaps the xerces-c guys
will decide at some point to offer the "defualt" implementations of some things
in the public API.

--------------------------------------------------------------------------------


ACLOCAL="aclocal -I macros"  autoreconf -vfi

To create a blank RDF database using redland
mkdir -p ~/.ferris/rdfdb
cd ~/.ferris/rdfdb
rdfproc myrdf -c  add a b c