---
name: "libdoodle"
section: "3"
platform: "linux"
package: "libdoodle-dev"
version: "0.7.3-1+b1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/libdoodle"
---

# libdoodle(3)

multi-suffix tree based file search library 0.7.0

## NAME

libdoodle - multi-suffix tree based file search library 0.7.0

## SYNOPSIS

**#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** *\* tree***);**

 **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 \*** *fileName***);**

 **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***);**

## DESCRIPTION

**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 format.**

**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.**

## SEE ALSO

**[doodle(1)](/doodle/1.md), [extract(1)](/extract/1.md), [libextractor(3)](/libextractor/3.md)**

## LEGAL NOTICE

**libdoodle and doodle are released under the GPL.**

## BUGS

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

## REPORTING BUGS

**Report bugs to mantis \<https://gnunet.org/bugs/\> or by sending electronic mail to \<christian@grothoff.org\>**

## AUTHORS

**doodle was originally written by Christian Grothoff \<christian@grothoff.org\>.**

## AVAILABILITY

**You can obtain the original author's latest version from http://grothoff.org/christian/doodle/.**
