text: /*
   * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are met:
   *
   * 1. Redistributions of source code must retain the above copyright notice, this
   *    list of conditions and the following disclaimer.
   *
   * 2. Redistributions in binary form must reproduce the above copyright notice,
   *    this list of conditions and the following disclaimer in the documentation
   *    and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */
  
  #pragma once
  
  #include <bits/stdint.h>
  #include <stddef.h>
  #include <sys/cdefs.h>
  
  __BEGIN_DECLS
  
  /* There is no __SSIZE_TYPE__ but we can trick the preprocessor into defining it for us anyway! */
  #define unsigned signed
  typedef __SIZE_TYPE__ ssize_t;
  #undef unsigned
  
  typedef unsigned char u_char;
  typedef unsigned short u_short;
  typedef unsigned int u_int;
  typedef unsigned long u_long;
  
  typedef uint32_t uid_t;
  typedef uint32_t gid_t;
  
  typedef int __pid_t;
  #define pid_t __pid_t
  
  typedef int id_t;
  
  typedef __WINT_TYPE__ wint_t;
  
  typedef uint32_t ino_t;
  typedef ssize_t off_t;
  
  typedef uint32_t dev_t;
  typedef uint16_t mode_t;
  typedef uint32_t nlink_t;
  typedef uint32_t blksize_t;
  typedef uint32_t blkcnt_t;
  typedef int64_t time_t;
  typedef uint32_t useconds_t;
  typedef int32_t suseconds_t;
  typedef uint32_t clock_t;
  
  #define __socklen_t_defined
  #define __socklen_t uint32_t
  typedef __socklen_t socklen_t;
  
  struct utimbuf {
      time_t actime;
      time_t modtime;
  };
  
  typedef int pthread_t;
  typedef int pthread_key_t;
  typedef void* pthread_once_t;
  
  typedef struct __pthread_mutex_t {
      uint32_t lock;
      pthread_t owner;
      int level;
      int type;
  } pthread_mutex_t;
  
  typedef void* pthread_attr_t;
  typedef struct __pthread_mutexattr_t {
      int type;
  } pthread_mutexattr_t;
  
  typedef struct __pthread_cond_t {
      int32_t value;
      uint32_t previous;
      int clockid; // clockid_t
  } pthread_cond_t;
  
  typedef void* pthread_rwlock_t;
  typedef void* pthread_rwlockatrr_t;
  typedef void* pthread_spinlock_t;
  typedef struct __pthread_condattr_t {
      int clockid; // clockid_t
  } pthread_condattr_t;
  
  __END_DECLS
  