Man Linux: Main Page and Category List


       libdoodle - multi-suffix tree based file search library 0.5.5


       #include <doodle.h>

        typedef  void  (*DOODLE_Logger)(void  *  context,  unsigned int level,
       const char * message, ...);

        typedef struct {
          char * filename;
          unsigned int mod_time;
        } DOODLE_FileInfo;

        typedef void (*DOODLE_TreeCallback)(const DOODLE_FileInfo *  fileinfo,
       void * arg);

        unsigned  int  DOODLE_getFileCount(const  struct  DOODLE_SuffixTree  *

        const DOODLE_File * DOODLE_getFileAt(const struct DOODLE_SuffixTree  *
       tree, unsigned int index);

        struct  DOODLE_SuffixTree * DOODLE_tree_create(DOODLE_Logger log, void
       * context, const char * database);

        void  DOODLE_tree_set_memory_limit(struct   DOODLE_SuffixTree   *tree,
       size_t limit);

        void DOODLE_tree_destroy(struct DOODLE_SuffixTree * tree);

        int DOODLE_tree_expand(struct DOODLE_SuffixTree * tree, const unsigned
       char * searchString, const char * fileName);

        int DOODLE_tree_truncate(struct DOODLE_SuffixTree * tree, const char *

        int DOODLE_tree_dump(FILE * stream, struct DOODLE_SuffixTree * tree);

        int  DOODLE_tree_search_approx(struct  DOODLE_SuffixTree * tree, const
       unsigned int approx, const int ignore_case, const unsigned char  *  ss,
       DOODLE_ResultCallback * callback, void * arg);

        int DOODLE_tree_search(struct DOODLE_SuffixTree * tree, const unsigned
       char * substring, DOODLE_ResultCallback * callback, void * arg);


       libdoodle is a library that provides  a  multi-suffix  tree  to  lookup
       files.   The  basic  use  is to create a suffix tree, add some keywords
       (associated with a file), search the tree and finally  free  the  tree.
       libdoodle  features  code  to quickly serialize the tree into a compact

       In order to use libdoodle, client code first creates a tree (passing  a
       callback function that will log all error messages associated with this
       tree and the name of the database) using DOODLE_tree_create.  The  tree
       can     then     be     searched     using     DOODLE_tree_search    or
       DOODLE_tree_search_approx (which requires  additional  processing  with
       DOODLE_tree_iterate to walk over the individual results).  The tree can
       be expanded with new search strings (DOODLE_tree_expand)  and  existing
       matches  can be removed with DOODLE_tree_truncate.  It is only possible
       to remove all keywords for a given  file.   With  DOODLE_getFileAt  and
       DOODLE_getFileCount  it  is  possible  to  inspect  the  files that are
       currently in the tree (and to check if  their  respective  modification
       timestamps,  useful for keeping track of when an entry maybe outdated).
       Finally the tree must  be  released  using  DOODLE_tree_destroy.   This
       writes the changes to the disk and frees all associated resources.

       Example  code  for  using  the  complete  libdoodle API can be found in
       doodle.c.  If jni.h was found when libdoodle  was  compiled,  libdoodle
       will  contain  methods  that allow Java code to directly use libdoodle.
       See org.gnunet.doodle.Doodle for Java code providing  an  interface  to
       libdoodle  and for a sample main method that demonstrates searching the
       doodle database from Java.


       doodle(1), extract(1), libextractor(3)


       libdoodle and doodle are released under the GPL.


       There is at least one known bug, but nobody was able  to  reproduce  it
       yet.  But in general things work fine. :-)


       Report   bugs  to  mantis  <>  or  by  sending
       electronic mail to <>


       doodle    was    originally    written    by     Christian     Grothoff


       You   can   obtain   the   original   author’s   latest   version  from