<?xml version="1.0"?>
<def>
  <memory>
    <dealloc>free</dealloc>

    <alloc init="false">malloc</alloc>
    <alloc init="true">calloc</alloc>
    <alloc init="true">strdup</alloc>
    <alloc init="true">strndup</alloc>
  </memory>

  <resource>
    <dealloc>fclose</dealloc>
    <alloc init="true">fopen</alloc>
  </resource>

  <function name="fopen">   <noreturn>false</noreturn> </function>
  <function name="fclose">  <noreturn>false</noreturn> </function>
  <function name="fflush">  <noreturn>false</noreturn> <leak-ignore/> </function>

  <function name="isalpha"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isalnum"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="iscntrl"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isdigit"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isxdigit"> <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isgraph"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="islower"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isupper"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isprint"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="ispunct"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>
  <function name="isspace"> <noreturn>false</noreturn> <leak-ignore/>  <arg nr="1"><valid>0-255</valid></arg> </function>

  <function name="memchr">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="memcmp">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="memcpy">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/></arg> <arg nr="2"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="memmove"> <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/></arg> <arg nr="2"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="memset">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>

  <function name="strcat">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> </function>
  <function name="strchr">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> </function>
  <function name="strcoll"> <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> </function>
  <function name="strcpy">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/></arg> <arg nr="2"><not-null/><not-uninit/></arg> </function>
  <function name="strcmp">  <noreturn>false</noreturn> <const/> <pure/> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> </function>
  <function name="strdup">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> </function>
  <function name="strlen">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> </function>
  <function name="strncat"> <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="strncpy"> <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/></arg> <arg nr="2"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="strncmp"> <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> <arg nr="3"><not-bool/><valid>0-</valid></arg> </function>
  <function name="strstr">  <noreturn>false</noreturn> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="2"><not-null/><not-uninit/></arg> </function>

  <function name="strtol">   <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="strtoll">  <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="strtoul">  <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="strtoull"> <leak-ignore/> <arg nr="1"><not-null/><not-uninit/></arg> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="wcstol">   <leak-ignore/> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="wcstoll">  <leak-ignore/> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="wcstoul">  <leak-ignore/> <arg nr="3"><valid>0,2-36</valid></arg> </function>
  <function name="wcstoull"> <leak-ignore/> <arg nr="3"><valid>0,2-36</valid></arg> </function>

  <function name="printf">   <noreturn>false</noreturn> <formatstr/>  <arg nr="1"><formatstr/></arg> <arg nr="any"><not-uninit/></arg> </function>
  <function name="wprintf">  <noreturn>false</noreturn> <formatstr/>  <arg nr="1"><formatstr/></arg> </function>
  <function name="sprintf">  <noreturn>false</noreturn> <formatstr/>  <arg nr="2"><formatstr/></arg> </function>
  <function name="fprintf">  <noreturn>false</noreturn> <formatstr/>  <arg nr="2"><formatstr/></arg> </function>
  <function name="fwprintf"> <noreturn>false</noreturn> <formatstr/>  <arg nr="2"><formatstr/></arg> </function>
  <function name="snprintf"> <noreturn>false</noreturn> <formatstr/>  <arg nr="3"><formatstr/></arg> </function>
  <function name="fnprintf"> <noreturn>false</noreturn> <formatstr/>  <arg nr="3"><formatstr/></arg> </function>

  <function name="scanf">    <noreturn>false</noreturn> <formatstr scan="true"/>  <arg nr="1"><formatstr/></arg> </function>
  <function name="wscanf">   <noreturn>false</noreturn> <formatstr scan="true"/>  <arg nr="1"><formatstr/></arg> </function>
  <function name="sscanf">   <noreturn>false</noreturn> <formatstr scan="true"/>  <arg nr="2"><formatstr/></arg> </function>
  <function name="fscanf">   <noreturn>false</noreturn> <formatstr scan="true"/>  <arg nr="2"><formatstr/></arg> </function>
  <function name="fwscanf">  <noreturn>false</noreturn> <formatstr scan="true"/>  <arg nr="2"><formatstr/></arg> </function>
  <function name="swscanf">  <noreturn>false</noreturn> <formatstr scan="true"/>  <arg nr="2"><formatstr/></arg> </function>
</def>