<?xml version="1.0"?>
<def format="1">
  <memory>
    <dealloc>free</dealloc>
    <alloc init="true">get_current_dir_name</alloc>
  </memory>
  <!-- http://man7.org/linux/man-pages/man2/accept.2.html -->
  <!-- int accept4(int sockfd, struct sockaddr *addr, socklen_t *addrlen, int flags); -->
  <function name="accept">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
      <not-null/>
    </arg>
    <arg nr="4">
      <not-uninit/>
    </arg>
    <leak-ignore/>
  </function>
  <!-- long long atoq(const char *nptr); -->
  <function name="atoq">
    <use-retval/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="strndupa">
    <use-retval/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <function name="strdupa">
    <use-retval/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <!-- http://www.gnu.org/software/libc/manual/html_node/Backtraces.html -->
  <!-- int backtrace (void **buffer, int size) -->
  <function name="backtrace">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <!-- char ** backtrace_symbols (void *const *buffer, int size) -->
  <function name="backtrace_symbols">
    <noreturn>false</noreturn>
    <use-retval/>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <!-- void backtrace_symbols_fd (void *const *buffer, int size, int fd) -->
  <function name="backtrace_symbols_fd">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
    </arg>
  </function>
  <!-- char *qecvt(long double value, int ndigit, int * decpt, int * sign); -->
  <function name="ecvt">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
    <arg nr="4">
      <not-null/>
    </arg>
  </function>
  <!-- char *qfcvt(double value, int ndigit, int * decpt, int * sign); -->
  <function name="qfcvt">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
    <arg nr="4">
      <not-null/>
    </arg>
  </function>
  <!-- char *qgcvt(long double value, int ndigit, char *buf); -->
  <function name="qgcvt">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
  </function>
  <!-- int ecvt_r (double value, int ndigit, int *decpt, int *neg, char *buf, size_t len); -->
  <function name="ecvt_r">
    <noreturn>false</noreturn>
    <pure/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
    <arg nr="4">
      <not-null/>
    </arg>
    <arg nr="5">
      <not-null/>
    </arg>
    <arg nr="6"/>
  </function>
  <!-- int fcvt_r (double value, int ndigit, int *decpt, int *neg, char *buf, size_t len); -->
  <function name="fcvt_r">
    <noreturn>false</noreturn>
    <pure/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
    <arg nr="4">
      <not-null/>
    </arg>
    <arg nr="5">
      <not-null/>
    </arg>
    <arg nr="6"/>
  </function>
  <!-- int qecvt_r (long double value, int ndigit, int *decpt, int *neg, char *buf, size_t len); -->
  <function name="qecvt_r">
    <noreturn>false</noreturn>
    <pure/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
    <arg nr="4">
      <not-null/>
    </arg>
    <arg nr="5">
      <not-null/>
    </arg>
    <arg nr="6"/>
  </function>
  <!-- int qfcvt_r (long double value, int ndigit, int *decpt, int *neg, char *buf, size_t len); -->
  <function name="qfcvt_r">
    <noreturn>false</noreturn>
    <pure/>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
    <arg nr="4">
      <not-null/>
    </arg>
    <arg nr="5">
      <not-null/>
    </arg>
    <arg nr="6"/>
  </function>
  <!-- https://www.gnu.org/software/gnulib/manual/html_node/c_002dstrcasestr.html -->
  <!-- size_t strcasestr(const char *s1, const char *s2); -->
  <function name="strcasestr">
    <use-retval/>
    <noreturn>false</noreturn>
    <leak-ignore/>
    <pure/>
    <arg nr="1">
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <!-- http://linux.die.net/man/2/getresuid -->
  <!-- int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); -->
  <function name="getresuid">
    <noreturn>false</noreturn>
    <leak-ignore/>
    <pure/>
    <arg nr="1">
      <not-null/>
    </arg>
    <arg nr="2">
      <not-null/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
  </function>
  <!-- http://linux.die.net/man/2/getresuid -->
  <!-- int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); -->
  <function name="getresgid">
    <noreturn>false</noreturn>
    <leak-ignore/>
    <pure/>
    <arg nr="1">
      <not-null/>
    </arg>
    <arg nr="2">
      <not-null/>
    </arg>
    <arg nr="3">
      <not-null/>
    </arg>
  </function>
  <!-- http://man7.org/linux/man-pages/man2/setresuid.2.html -->
  <!-- int setresuid(uid_t ruid, uid_t euid, uid_t suid);-->
  <function name="setresuid">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
    </arg>
    <leak-ignore/>
  </function>
  <!-- http://man7.org/linux/man-pages/man2/setresuid.2.html -->
  <!-- int setresgid(gid_t rgid, gid_t egid, gid_t sgid);-->
  <function name="setresgid">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-uninit/>
    </arg>
    <leak-ignore/>
  </function>
</def>