<?xml version="1.0"?>
<def format="2">
  <!-- https://www.freebsd.org/cgi/man.cgi?query=fts&sektion=3 -->
  <!-- FTS * fts_open(char * const *path_argv, int options, int (*compar)(const FTSENT * const *, const FTSENT * const *)); -->
  <function name="fts_open">
    <returnValue type="FTS *"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
      <not-null/>
    </arg>
  </function>
  <!-- FTSENT * fts_read(FTS *ftsp); -->
  <function name="fts_read">
    <returnValue type="FTSENT *"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
      <not-null/>
    </arg>
  </function>
  <!-- FTSENT * fts_children(FTS *ftsp, int options); -->
  <function name="readpassphrase">
    <returnValue type="fts_children"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <!-- int fts_set(FTS *ftsp, FTSENT *f, int options); -->
  <function name="fts_set">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <!-- void fts_set_clientptr(FTS *ftsp, void *clientdata); -->
  <function name="fts_set_clientptr">
    <returnValue type="void"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <!-- void * fts_get_clientptr(FTS *ftsp); -->
  <function name="fts_get_clientptr">
    <returnValue type="void *"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
  </function>
  <!-- FTS * fts_get_stream(FTSENT *f); -->
  <function name="fts_get_stream">
    <returnValue type="FTS *"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
  </function>
  <!-- int fts_close(FTS *ftsp); -->
  <function name="fts_close">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
  </function>
  <!-- https://www.freebsd.org/cgi/man.cgi?query=readpassphrase
       char *readpassphrase(const char *prompt,	char *buf, size_t bufsiz, int flags); -->
  <function name="readpassphrase">
    <returnValue type="char *"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-null/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-uninit/>
      <not-null/>
    </arg>
    <arg nr="4">
      <not-uninit/>
    </arg>
    <leak-ignore/>
  </function>
  <!-- https://www.freebsd.org/cgi/man.cgi?query=setfib&sektion=2 
      int setfib(int fib); -->
  <function name="setfib">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
  </function>
  <!-- https://www.freebsd.org/cgi/man.cgi?query=strtonum
       long long strtonum(const char *nptr, long long minval, long long maxval, const char **errstr); -->
  <function name="strtonum">
    <returnValue type="long long"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
    </arg>
    <arg nr="4">
      <not-uninit/>
    </arg>
    <leak-ignore/>
  </function>
  <podtype name="FTS"/>
  <podtype name="FTSENT"/>
</def>
