Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't build on Illumos (OpenIndiana) #6078

Closed
time-killer-games opened this issue Aug 18, 2022 · 32 comments
Closed

Can't build on Illumos (OpenIndiana) #6078

time-killer-games opened this issue Aug 18, 2022 · 32 comments

Comments

@time-killer-games
Copy link
Contributor

time-killer-games commented Aug 18, 2022

I'll provide a smaller reproducible in an edit. But for now, this code of mine works on Windows, Mac, Linux, FreeBSD, DragonFly BSD, OpenBSD, and NetBSD. I wanted to support Illumos, and the only platform-specific code I needed to port over was the function I used to get the executable path, which is just a simple call to getexecname() on Illmuos. OpenIndiana is my test OS for this. The errors below.

https://gist.github.com/time-killer-games/0fadf100213c67ce58c5ea7ff578bbee

To reproduce with my personal project:

#!/bin/sh
git clone https://github.com/time-killer-games/libfiledialogs ~/libfiledialogs
~/libfiledialogs/filedialogs/build.sh

Judging from the nature of the errors, it looks like SDL2's headers were written wrong on Illumos. It should be as simple as building a cpp file including SDL2/SDL.h and an empty main() function, and I'm about to verify that immediately after posting this ticket.

Edit:

Yep, I was corrrect. Empty main() cpp file doesn't compile and throws the same errors.

#include "SDL2/SDL.h"

int main() {
  return 0;
}

Compiled with:

g++ main.cpp `pkg-config --static --libs sdl2` -o main
@icculus
Copy link
Collaborator

icculus commented Aug 18, 2022

Can you build the same empty main program with -E so it generates preprocessor output and either post it in a gist or somewhere I can read it? It looks like it simply failed to get the right basic datatypes set up for some reason.

@time-killer-games
Copy link
Contributor Author

Well, this time the output is so small i don't see much reason to put it in a gist, but I will anyway since you asked.

https://gist.github.com/time-killer-games/e416cf142a527e245484ccc7e4dfb86e

It did build, and the above gist is the error you were wanting to see in the output. Thank you!

@madebr
Copy link
Contributor

madebr commented Aug 18, 2022

Can you run the following command:

g++ -E main.cpp $(pkg-config --static --libs sdl2) >/tmp/preprocessed.txt 2>&1

And send us the file /tmp/preprocessed.txt?

@time-killer-games
Copy link
Contributor Author

@sezero
Copy link
Contributor

sezero commented Aug 18, 2022

Is the g++ version in use defining __STDC_VERSION__ despite being in C++ mode?

@madebr
Copy link
Contributor

madebr commented Aug 18, 2022

Strange, your compiler uses _Static_assert (C-only) while you are compiling code in c++ mode.

Save the following file as main.c

#include <stdio.h>

int main() {
#if defined(__cplusplus)
    printf("__cplusplus: %d\n", __cplusplus);
#else
    printf("__cplusplus: not defined\n");
#endif
#if defined(__STDC_VERSION__)
    printf("__STDC_VERSION__: %d\n", __STDC_VERSION__);
#else
    printf("__STDC_VERSION__: not defined\n");
#endif
    return 0;
}

and run the following commands:

gcc -xc main.c -o main_c
./main_c
gcc -xc++ main.c -o main_cpp
./main_cpp

Please provide us with the output.

Also, what version of SDL2 are you using?
On most Linux distributions, it can be found in /usr/include/SDL2/SDL_version.h

#define SDL_MAJOR_VERSION 2
#define SDL_MINOR_VERSION 23
#define SDL_PATCHLEVEL 2

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 18, 2022

#define SDL_MAJOR_VERSION   2
#define SDL_MINOR_VERSION   0
#define SDL_PATCHLEVEL      22

Addressing the other things as we speak. It's very nice to have such prompt support, I wasn't expecting that.

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 18, 2022

lol you guys really know your stuff! You were on to something.

__cplusplus: not defined
__STDC_VERSION__: 201710
__cplusplus: 201703
__STDC_VERSION__: 201112

@time-killer-games
Copy link
Contributor Author

so i guess that means i can #undef __STDC_VERSION__ or is there more to it?

@madebr
Copy link
Contributor

madebr commented Aug 18, 2022

Your build environment is not conform to what is described in the gcc documentation at https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html#Standard-Predefined-Macros.

STDC_VERSION

This macro expands to the C Standard’s version number, a long integer constant of the form yyyymmL where yyyy and mm are the year and month of the Standard version. This signifies which version of the C Standard the compiler conforms to. Like STDC, this is not necessarily accurate for the entire implementation, unless GNU CPP is being used with GCC.

The value 199409L signifies the 1989 C standard as amended in 1994, which is the current default; the value 199901L signifies the 1999 revision of the C standard; the value 201112L signifies the 2011 revision of the C standard; the value 201710L signifies the 2017 revision of the C standard (which is otherwise identical to the 2011 version apart from correction of defects). An unspecified value larger than 201710L is used for the experimental -std=c2x and -std=gnu2x modes.

This macro is not defined if the -traditional-cpp option is used, nor when compiling C++ or Objective-C.

The last line is what makes me think your compiler is bugged/misconfigured.

@time-killer-games
Copy link
Contributor Author

It's a fresh install of OpenIndiana, didn't configure anything on my end at least. Just gcc-11 from the package manager. I'll file a bug with them and will switch to clang.

@slouken
Copy link
Collaborator

slouken commented Aug 18, 2022

I think this should work, can you confirm?

@sezero
Copy link
Contributor

sezero commented Aug 19, 2022

That should work, although the case we have here points to a very broken setup.
g++-11.x versions on godbolt.org don't seem to define __STDC_VERSION__. I don't
know how this is happening with the Illumos version of g++...

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 19, 2022

I think this should work, can you confirm?

I'll try that recent change and will let you know.

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 19, 2022

running cmake and then make on the build directory, it seems to think I'm on linux for some reason.

/export/home/openindiana/SDL/src/core/linux/SDL_ibus.c:36:10: fatal error: sys/inotify.h: No such file or directory
   36 | #include <sys/inotify.h>

Unless the package with that header can also be installed on illumos. Though I already have ibus installed.

@slouken slouken reopened this Aug 19, 2022
@madebr
Copy link
Contributor

madebr commented Aug 19, 2022

On non-apple unix systems, we detect the os using CMAKE_SYSTEM_NAME here.

Can you run the following command in a terminal, and provide us with the output?

#!/bin/bash
cat >/tmp/CMakeLists.txt <<EOF
cmake_minimum_required(VERSION 3.0)
project(test C)
message(STATUS "CMAKE_SYSTEM: \${CMAKE_SYSTEM}")
message(STATUS "CMAKE_SYSTEM_NAME: \${CMAKE_SYSTEM_NAME}")
message(STATUS "CMAKE_SYSTEM_PROCESSOR: \${CMAKE_SYSTEM_PROCESSOR}")
message(STATUS "CMAKE_SYSTEM_VERSION: \${CMAKE_SYSTEM_VERSION}")
message(STATUS "CMAKE_HOST_SYSTEM: \${CMAKE_HOST_SYSTEM}")
message(STATUS "CMAKE_HOST_SYSTEM_NAME: \${CMAKE_HOST_SYSTEM_NAME}")
message(STATUS "CMAKE_HOST_SYSTEM_PROCESSOR: \${CMAKE_HOST_SYSTEM_PROCESSOR}")
message(STATUS "CMAKE_HOST_SYSTEM_VERSION: \${CMAKE_HOST_SYSTEM_VERSION}")
EOF
rm -rf /tmp/tmp_build
cmake -S /tmp -B /tmp/tmp_build

For my Linux system, the relevant output is:

-- CMAKE_SYSTEM: Linux-5.18.16-200.fc36.x86_64
-- CMAKE_SYSTEM_NAME: Linux
-- CMAKE_SYSTEM_PROCESSOR: x86_64
-- CMAKE_SYSTEM_VERSION: 5.18.16-200.fc36.x86_64
-- CMAKE_HOST_SYSTEM: Linux-5.18.16-200.fc36.x86_64
-- CMAKE_HOST_SYSTEM_NAME: Linux
-- CMAKE_HOST_SYSTEM_PROCESSOR: x86_64
-- CMAKE_HOST_SYSTEM_VERSION: 5.18.16-200.fc36.x86_64

Normally, your distribution should provide a cmake package that sets CMAKE_SYSTEM_NAME to a name representing the build system.

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 19, 2022

Alrighty:

-- CMAKE_SYSTEM: SunOS-5.11
-- CMAKE_SYSTEM_NAME: SunOS
-- CMAKE_SYSTEM_PROCESSOR: i386
-- CMAKE_SYSTEM_VERSION: 5.11
-- CMAKE_HOST_SYSTEM: SunOS-5.11
-- CMAKE_HOST_SYSTEM_NAME: SunOS
-- CMAKE_HOST_SYSTEM_PROCESSOR: i386
-- CMAKE_HOST_SYSTEM_VERSION: 5.11

So perhaps it doesn't think I'm on Linux. I guess i made a false assumption based on the output I saw.

Another thing that strikes me odd is it thinks I'm on i386 when I should be on x86_64.

Even the output of uname -a is giving the wrong architecture:

openindiana@openindiana:~$ uname -a
SunOS openindiana 5.11 illumos-b38ce9deeb i86pc i386 i86pc

Also, due the excellent unpaid support, i may be living with my parents still and have next to no money, I've made note of this if I ever get big in the software world and make fat cash; you guys I definitely want to donate to. SDL2 and FreeBSD are at the top of my list to donate. I honestly wish I was in the position to do so right now.

@madebr
Copy link
Contributor

madebr commented Aug 20, 2022

About __STDC_VERSION__, I created an issue at https://www.illumos.org/issues/14920

I installed OpenIndiana in a VM and can reproduce your issue.
I am able the get SDL to build after applying the following patch (but fail to link)

--- a/CMakeLists.txt                                                         
+++ b/CMakeLists.txt                                                         
@@ -169,7 +169,7 @@ elseif(UNIX AND NOT APPLE)                               
     set(FREEBSD TRUE)                                                       
   elseif(CMAKE_SYSTEM_NAME MATCHES "SYSV5.*")                               
     set(SYSV5 TRUE)                                                         
-  elseif(CMAKE_SYSTEM_NAME MATCHES "Solaris.*")                             
+  elseif(CMAKE_SYSTEM_NAME MATCHES "Solaris.*|SunOS.*")                     
     set(SOLARIS TRUE)                                                       
   elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX.*")                               
     set(HPUX TRUE)                                                          
@@ -1435,7 +1435,8 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
       endif()
 
       pkg_search_module(IBUS ibus-1.0 ibus)
-      if(IBUS_FOUND)
+      find_path(HAVE_SYS_INOTIFY_H NAMES sys/inotify.h)
+      if(IBUS_FOUND AND HAVE_SYS_INOTIFY_H)
         set(HAVE_IBUS_IBUS_H TRUE)
         target_include_directories(sdl-build-options INTERFACE "${IBUS_INCLUDE_DIRS}")
       endif()

I compiled it using the following command:

CFLAGS="-m64 -w" CXXFLAGS="-m64 -w" cmake .. -GNinja -DSDL_KMSDRM=OFF
cmake --build .

Linking then fails with the following error:

Undefined                       first referenced
 symbol                             in file
dbus_message_unref                  CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_server_unref                   CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_pending_call_unref             CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_address_entries_free           CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_connection_unref               CMakeFiles/SDL2.dir/src/SDL.c.o
ld: fatal: symbol referencing errors. No output written to libSDL2-2.0.so.0.2500.0

It's not clear to me where these dbus functions are referenced: dbus is dynamically loaded.

I disabled kmsdrm to avoid the following error:

/usr/include/xf86drm.h:40:10: fatal error: drm.h: No such file or directory
 #include <drm.h>
          ^~~~~~~
compilation terminated.

I don't know whether this error is because I'm missing some packages or whether drm is unsupported on openindiana.

@alanc
Copy link

alanc commented Aug 20, 2022

__STDC_VERSION__ is defined by the g++ compiler itself on Solaris & illumos - the OS can't change that - see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57025

@time-killer-games
Copy link
Contributor Author

I updated the issue so that the initial error is in a gist, i should've done that initially. Sorry about that. Thanks again for looking into this, this is above and beyond what I was expecting for such a niche platform. Very thankful.

@time-killer-games
Copy link
Contributor Author

About __STDC_VERSION__, I created an issue at https://www.illumos.org/issues/14920

I installed OpenIndiana in a VM and can reproduce your issue. I am able the get SDL to build after applying the following patch (but fail to link)

--- a/CMakeLists.txt                                                         
+++ b/CMakeLists.txt                                                         
@@ -169,7 +169,7 @@ elseif(UNIX AND NOT APPLE)                               
     set(FREEBSD TRUE)                                                       
   elseif(CMAKE_SYSTEM_NAME MATCHES "SYSV5.*")                               
     set(SYSV5 TRUE)                                                         
-  elseif(CMAKE_SYSTEM_NAME MATCHES "Solaris.*")                             
+  elseif(CMAKE_SYSTEM_NAME MATCHES "Solaris.*|SunOS.*")                     
     set(SOLARIS TRUE)                                                       
   elseif(CMAKE_SYSTEM_NAME MATCHES "HP-UX.*")                               
     set(HPUX TRUE)                                                          
@@ -1435,7 +1435,8 @@ elseif(UNIX AND NOT APPLE AND NOT RISCOS AND NOT HAIKU)
       endif()
 
       pkg_search_module(IBUS ibus-1.0 ibus)
-      if(IBUS_FOUND)
+      find_path(HAVE_SYS_INOTIFY_H NAMES sys/inotify.h)
+      if(IBUS_FOUND AND HAVE_SYS_INOTIFY_H)
         set(HAVE_IBUS_IBUS_H TRUE)
         target_include_directories(sdl-build-options INTERFACE "${IBUS_INCLUDE_DIRS}")
       endif()

I compiled it using the following command:

CFLAGS="-m64 -w" CXXFLAGS="-m64 -w" cmake .. -GNinja -DSDL_KMSDRM=OFF
cmake --build .

Linking then fails with the following error:

Undefined                       first referenced
 symbol                             in file
dbus_message_unref                  CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_server_unref                   CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_pending_call_unref             CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_address_entries_free           CMakeFiles/SDL2.dir/src/SDL.c.o
dbus_connection_unref               CMakeFiles/SDL2.dir/src/SDL.c.o
ld: fatal: symbol referencing errors. No output written to libSDL2-2.0.so.0.2500.0

It's not clear to me where these dbus functions are referenced: dbus is dynamically loaded.

I disabled kmsdrm to avoid the following error:

/usr/include/xf86drm.h:40:10: fatal error: drm.h: No such file or directory
 #include <drm.h>
          ^~~~~~~
compilation terminated.

I don't know whether this error is because I'm missing some packages or whether drm is unsupported on openindiana.

I think you just need the libdrm and header-drm packages installed. Hopefully that should fix it.

@madebr
Copy link
Contributor

madebr commented Aug 20, 2022

I think you just need the libdrm and header-drm packages installed. Hopefully that should fix it.

Indeed, that fixes the drm.h thingie (thanks!), now I'm only left with the link error.
I ran the preprocessor on SDL_dbus.c and found out that the missing dbus_*_unref functions are used in static functions inside the dbus headers.

Is there a compile/link option to drop these unused symbols before doing the final link?
Not adding -Wl,-no-undefined is not a solution because the resulting libSDL2.so will still contain these dbus_* symbols as undefined entries.

Output of gcc -E ... SDL_dbus.c
# 1 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
# 21 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
# 1 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h" 1
# 42 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h"
# 1 "/export/home/maarten/work/SDL/src/core/linux/../../dynapi/SDL_dynapi.h" 1
# 43 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h" 2


# 1 "/export/home/maarten/work/SDL/src/core/linux/../../dynapi/SDL_dynapi_overrides.h" 1
# 46 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h" 2





# 1 "/export/home/maarten/work/SDL/build/include-config-/SDL_config.h" 1
# 32 "/export/home/maarten/work/SDL/build/include-config-/SDL_config.h"
# 1 "/export/home/maarten/work/SDL/build/include/SDL_platform.h" 1
# 224 "/export/home/maarten/work/SDL/build/include/SDL_platform.h"
# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 225 "/export/home/maarten/work/SDL/build/include/SDL_platform.h" 2
# 246 "/export/home/maarten/work/SDL/build/include/SDL_platform.h"
extern const char * SDL_GetPlatform_REAL (void);





# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 253 "/export/home/maarten/work/SDL/build/include/SDL_platform.h" 2
# 33 "/export/home/maarten/work/SDL/build/include-config-/SDL_config.h" 2
# 52 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h" 2
# 123 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h"
# 1 "/export/home/maarten/work/SDL/build/include/SDL_assert.h" 1
# 25 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
# 1 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 1
# 40 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
# 1 "/usr/include/sys/types.h" 1 3 4
# 37 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/sys/feature_tests.h" 1 3 4
# 34 "/usr/include/sys/feature_tests.h" 3 4
# 1 "/usr/include/sys/ccompile.h" 1 3 4
# 35 "/usr/include/sys/feature_tests.h" 2 3 4
# 1 "/usr/include/sys/isa_defs.h" 1 3 4
# 36 "/usr/include/sys/feature_tests.h" 2 3 4
# 38 "/usr/include/sys/types.h" 2 3 4





# 1 "/usr/include/sys/machtypes.h" 1 3 4
# 59 "/usr/include/sys/machtypes.h" 3 4

# 59 "/usr/include/sys/machtypes.h" 3 4
typedef struct _label_t { long val[8]; } label_t;



typedef unsigned char lock_t;
# 44 "/usr/include/sys/types.h" 2 3 4
# 55 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/sys/int_types.h" 1 3 4
# 75 "/usr/include/sys/int_types.h" 3 4
typedef char int8_t;



typedef short int16_t;
typedef int int32_t;


typedef long int64_t;







typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;

typedef unsigned long uint64_t;
# 107 "/usr/include/sys/int_types.h" 3 4
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
# 120 "/usr/include/sys/int_types.h" 3 4
typedef long intptr_t;
typedef unsigned long uintptr_t;
# 132 "/usr/include/sys/int_types.h" 3 4
typedef char int_fast8_t;



typedef int int_fast16_t;
typedef int int_fast32_t;

typedef long int_fast64_t;






typedef unsigned char uint_fast8_t;
typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;

typedef unsigned long uint_fast64_t;
# 162 "/usr/include/sys/int_types.h" 3 4
typedef char int_least8_t;



typedef short int_least16_t;
typedef int int_least32_t;

typedef long int_least64_t;
# 179 "/usr/include/sys/int_types.h" 3 4
typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;

typedef unsigned long uint_least64_t;
# 56 "/usr/include/sys/types.h" 2 3 4
# 72 "/usr/include/sys/types.h" 3 4
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
# 92 "/usr/include/sys/types.h" 3 4
typedef int32_t t_scalar_t;
typedef uint32_t t_uscalar_t;
# 102 "/usr/include/sys/types.h" 3 4
typedef unsigned char uchar_t;
typedef unsigned short ushort_t;
typedef unsigned int uint_t;
typedef unsigned long ulong_t;

typedef char *caddr_t;
typedef long daddr_t;
typedef short cnt_t;




typedef long ptrdiff_t;
# 123 "/usr/include/sys/types.h" 3 4
typedef ulong_t pfn_t;
typedef ulong_t pgcnt_t;
typedef long spgcnt_t;

typedef uchar_t use_t;
typedef short sysid_t;
typedef short index_t;
typedef void *timeout_id_t;
typedef void *bufcall_id_t;
# 145 "/usr/include/sys/types.h" 3 4
typedef long off_t;






typedef off_t off64_t;
# 161 "/usr/include/sys/types.h" 3 4
typedef ulong_t ino_t;
typedef long blkcnt_t;
typedef ulong_t fsblkcnt_t;
typedef ulong_t fsfilcnt_t;
# 174 "/usr/include/sys/types.h" 3 4
typedef ino_t ino64_t;
typedef blkcnt_t blkcnt64_t;
typedef fsblkcnt_t fsblkcnt64_t;
typedef fsfilcnt_t fsfilcnt64_t;
# 187 "/usr/include/sys/types.h" 3 4
typedef int blksize_t;
# 215 "/usr/include/sys/types.h" 3 4
typedef enum { B_FALSE = 0, B_TRUE = 1, _B_FALSE = 0, _B_TRUE = 1 } boolean_t;
# 240 "/usr/include/sys/types.h" 3 4
typedef int64_t pad64_t;
typedef uint64_t upad64_t;
# 254 "/usr/include/sys/types.h" 3 4
typedef union {
 long double _q;
 int32_t _l[4];
} pad128_t;

typedef union {
 long double _q;
 uint32_t _l[4];
} upad128_t;

typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef u_longlong_t diskaddr_t;
# 278 "/usr/include/sys/types.h" 3 4
typedef union {
 offset_t _f;
 struct {
  int32_t _l;
  int32_t _u;
 } _p;
} lloff_t;
# 298 "/usr/include/sys/types.h" 3 4
typedef union {
 longlong_t _f;
 struct {
  int32_t _l;
  int32_t _u;
 } _p;
} lldaddr_t;
# 317 "/usr/include/sys/types.h" 3 4
typedef uint_t k_fltset_t;
# 329 "/usr/include/sys/types.h" 3 4
typedef int id_t;




typedef id_t lgrp_id_t;





typedef uint_t useconds_t;



typedef long suseconds_t;






typedef uint_t major_t;
typedef uint_t minor_t;
# 361 "/usr/include/sys/types.h" 3 4
typedef short pri_t;





typedef ushort_t cpu_flag_t;
# 380 "/usr/include/sys/types.h" 3 4
typedef ushort_t o_mode_t;
typedef short o_dev_t;
typedef ushort_t o_uid_t;
typedef o_uid_t o_gid_t;
typedef short o_nlink_t;
typedef short o_pid_t;
typedef ushort_t o_ino_t;





typedef int key_t;

typedef uint_t mode_t;






typedef unsigned int uid_t;


typedef uid_t gid_t;

typedef uint32_t datalink_id_t;
typedef uint32_t vrid_t;

typedef id_t taskid_t;
typedef id_t projid_t;
typedef id_t poolid_t;
typedef id_t zoneid_t;
typedef id_t ctid_t;






typedef uint_t pthread_t;
typedef uint_t pthread_key_t;







typedef struct _pthread_mutex {
 struct {
  uint16_t __pthread_mutex_flag1;
  uint8_t __pthread_mutex_flag2;
  uint8_t __pthread_mutex_ceiling;
  uint16_t __pthread_mutex_type;
  uint16_t __pthread_mutex_magic;
 } __pthread_mutex_flags;
 union {
  struct {
   uint8_t __pthread_mutex_pad[8];
  } __pthread_mutex_lock64;
  struct {
   uint32_t __pthread_ownerpid;
   uint32_t __pthread_lockword;
  } __pthread_mutex_lock32;
  upad64_t __pthread_mutex_owner64;
 } __pthread_mutex_lock;
 upad64_t __pthread_mutex_data;
} pthread_mutex_t;

typedef struct _pthread_cond {
 struct {
  uint8_t __pthread_cond_flag[4];
  uint16_t __pthread_cond_type;
  uint16_t __pthread_cond_magic;
 } __pthread_cond_flags;
 upad64_t __pthread_cond_data;
} pthread_cond_t;




typedef struct _pthread_rwlock {
 int32_t __pthread_rwlock_readers;
 uint16_t __pthread_rwlock_type;
 uint16_t __pthread_rwlock_magic;
 pthread_mutex_t __pthread_rwlock_mutex;
 pthread_cond_t __pthread_rwlock_readercv;
 pthread_cond_t __pthread_rwlock_writercv;
} pthread_rwlock_t;




typedef struct {
 uint32_t __pthread_barrier_count;
 uint32_t __pthread_barrier_current;
 upad64_t __pthread_barrier_cycle;
 upad64_t __pthread_barrier_reserved;
 pthread_mutex_t __pthread_barrier_lock;
 pthread_cond_t __pthread_barrier_cond;
} pthread_barrier_t;

typedef pthread_mutex_t pthread_spinlock_t;




typedef struct _pthread_attr {
 void *__pthread_attrp;
} pthread_attr_t;




typedef struct _pthread_mutexattr {
 void *__pthread_mutexattrp;
} pthread_mutexattr_t;




typedef struct _pthread_condattr {
 void *__pthread_condattrp;
} pthread_condattr_t;




typedef struct _once {
 upad64_t __pthread_once_pad[4];
} pthread_once_t;





typedef struct _pthread_rwlockattr {
 void *__pthread_rwlockattrp;
} pthread_rwlockattr_t;





typedef struct {
 void *__pthread_barrierattrp;
} pthread_barrierattr_t;

typedef ulong_t dev_t;


typedef uint_t nlink_t;
typedef int pid_t;
# 542 "/usr/include/sys/types.h" 3 4
typedef ulong_t size_t;
# 551 "/usr/include/sys/types.h" 3 4
typedef long ssize_t;







typedef long time_t;




typedef long clock_t;




typedef int clockid_t;




typedef int timer_t;





typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 650 "/usr/include/sys/types.h" 3 4
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef struct _quad { int val[2]; } quad_t;
typedef quad_t quad;






# 1 "/usr/include/sys/select.h" 1 3 4
# 51 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/sys/time_impl.h" 1 3 4
# 57 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec {
 time_t tv_sec;
 long tv_nsec;
} timespec_t;
# 81 "/usr/include/sys/time_impl.h" 3 4
typedef struct timespec timestruc_t;
# 95 "/usr/include/sys/time_impl.h" 3 4
typedef struct itimerspec {
 struct timespec it_interval;
 struct timespec it_value;
} itimerspec_t;
# 52 "/usr/include/sys/select.h" 2 3 4

# 1 "/usr/include/sys/time.h" 1 3 4
# 54 "/usr/include/sys/time.h" 3 4
struct timeval {
 time_t tv_sec;
 suseconds_t tv_usec;
};
# 86 "/usr/include/sys/time.h" 3 4
struct timezone {
 int tz_minuteswest;
 int tz_dsttime;
};
# 104 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/sys/types.h" 1 3 4
# 105 "/usr/include/sys/time.h" 2 3 4
# 209 "/usr/include/sys/time.h" 3 4
struct itimerval {
 struct timeval it_interval;
 struct timeval it_value;
};
# 265 "/usr/include/sys/time.h" 3 4
typedef longlong_t hrtime_t;
# 391 "/usr/include/sys/time.h" 3 4
int adjtime(struct timeval *, struct timeval *);




int futimesat(int, const char *, const struct timeval *);





int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);





int setitimer(int, struct itimerval *restrict,
 struct itimerval *restrict);





int futimes(int, const struct timeval *);
int lutimes(const char *, const struct timeval *);
# 450 "/usr/include/sys/time.h" 3 4
int settimeofday(struct timeval *, void *);

hrtime_t gethrtime(void);
hrtime_t gethrvtime(void);
# 463 "/usr/include/sys/time.h" 3 4
int gettimeofday(struct timeval *restrict, void *restrict);
# 481 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 40 "/usr/include/time.h" 3 4
# 1 "/usr/include/iso/time_iso.h" 1 3 4
# 49 "/usr/include/iso/time_iso.h" 3 4
# 1 "/usr/include/sys/null.h" 1 3 4
# 50 "/usr/include/iso/time_iso.h" 2 3 4
# 80 "/usr/include/iso/time_iso.h" 3 4
struct tm {
 int tm_sec;
 int tm_min;
 int tm_hour;
 int tm_mday;
 int tm_mon;
 int tm_year;
 int tm_wday;
 int tm_yday;
 int tm_isdst;
};


extern char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *restrict, size_t, const char *restrict,
 const struct tm *restrict);
# 41 "/usr/include/time.h" 2 3 4
# 87 "/usr/include/time.h" 3 4
extern struct tm *gmtime_r(const time_t *restrict,
   struct tm *restrict);
extern struct tm *localtime_r(const time_t *restrict,
   struct tm *restrict);
# 105 "/usr/include/time.h" 3 4
extern char *strptime(const char *restrict, const char *restrict,
  struct tm *restrict);
# 125 "/usr/include/time.h" 3 4
union sigval {
 int sival_int;
 void *sival_ptr;
};




struct sigevent {
 int sigev_notify;
 int sigev_signo;
 union sigval sigev_value;
 void (*sigev_notify_function)(union sigval);
 pthread_attr_t *sigev_notify_attributes;
 int __sigev_pad2;
};


extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);
extern int timer_create(clockid_t, struct sigevent *restrict,
  timer_t *restrict);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *restrict,
  struct itimerspec *restrict);

extern int nanosleep(const struct timespec *, struct timespec *);
extern int clock_nanosleep(clockid_t, int,
 const struct timespec *, struct timespec *);






extern void tzset(void);
extern char *tzname[2];




extern long _sysconf(int);







extern long timezone;
extern int daylight;






extern time_t timegm(struct tm *);
extern int cftime(char *, char *, const time_t *);
extern int ascftime(char *, const char *, const struct tm *);
extern long altzone;




extern struct tm *getdate(const char *);



extern int *_getdate_err_addr(void);
# 280 "/usr/include/time.h" 3 4
extern char *asctime_r(const struct tm *, char *, int);
extern char *ctime_r(const time_t *, char *, int);
# 292 "/usr/include/time.h" 3 4
typedef struct _locale *locale_t;


extern size_t strftime_l(char *restrict, size_t,
 const char *restrict, const struct tm *restrict, locale_t);
# 308 "/usr/include/time.h" 3 4
extern int timespec_get(struct timespec *, int);
# 482 "/usr/include/sys/time.h" 2 3 4
# 494 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/sys/select.h" 1 3 4
# 495 "/usr/include/sys/time.h" 2 3 4
# 54 "/usr/include/sys/select.h" 2 3 4
# 74 "/usr/include/sys/select.h" 3 4
typedef struct {
 unsigned int __sigbits[4];
} sigset_t;
# 92 "/usr/include/sys/select.h" 3 4
typedef long fd_mask;

typedef long fds_mask;
# 120 "/usr/include/sys/select.h" 3 4
typedef struct fd_set {



 long fds_bits[(((65536)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
} fd_set;
# 143 "/usr/include/sys/select.h" 3 4
extern int select(int, fd_set *restrict, fd_set *restrict,
 fd_set *restrict, struct timeval *restrict);


extern int pselect(int, fd_set *restrict, fd_set *restrict,
 fd_set *restrict, const struct timespec *restrict,
 const sigset_t *restrict);
# 663 "/usr/include/sys/types.h" 2 3 4
# 41 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2


# 1 "/usr/include/stdio.h" 1 3 4
# 65 "/usr/include/stdio.h" 3 4
        
# 65 "/usr/include/stdio.h" 3 4
#pragma redefine_extname fopen64 fopen
# 65 "/usr/include/stdio.h" 3 4

        
# 66 "/usr/include/stdio.h" 3 4
#pragma redefine_extname freopen64 freopen
# 66 "/usr/include/stdio.h" 3 4

        
# 67 "/usr/include/stdio.h" 3 4
#pragma redefine_extname tmpfile64 tmpfile
# 67 "/usr/include/stdio.h" 3 4

        
# 68 "/usr/include/stdio.h" 3 4
#pragma redefine_extname fgetpos64 fgetpos
# 68 "/usr/include/stdio.h" 3 4

        
# 69 "/usr/include/stdio.h" 3 4
#pragma redefine_extname fsetpos64 fsetpos
# 69 "/usr/include/stdio.h" 3 4


        
# 71 "/usr/include/stdio.h" 3 4
#pragma redefine_extname fseeko64 fseeko
# 71 "/usr/include/stdio.h" 3 4

        
# 72 "/usr/include/stdio.h" 3 4
#pragma redefine_extname ftello64 ftello
# 72 "/usr/include/stdio.h" 3 4
# 82 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/iso/stdio_iso.h" 1 3 4
# 54 "/usr/include/iso/stdio_iso.h" 3 4
# 1 "/usr/include/sys/va_list.h" 1 3 4
# 108 "/usr/include/sys/va_list.h" 3 4
typedef __builtin_va_list __gnuc_va_list;





typedef __builtin_va_list __va_list;
# 55 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/stdio_tag.h" 1 3 4
# 40 "/usr/include/stdio_tag.h" 3 4
typedef struct __FILE __FILE;
# 56 "/usr/include/iso/stdio_iso.h" 2 3 4
# 1 "/usr/include/stdio_impl.h" 1 3 4
# 40 "/usr/include/stdio_impl.h" 3 4
struct __FILE {
 long __pad[16];
};
# 57 "/usr/include/iso/stdio_iso.h" 2 3 4
# 93 "/usr/include/iso/stdio_iso.h" 3 4
typedef __FILE FILE;
# 106 "/usr/include/iso/stdio_iso.h" 3 4
typedef long fpos_t;
# 156 "/usr/include/iso/stdio_iso.h" 3 4
extern __FILE __iob[20];
# 191 "/usr/include/iso/stdio_iso.h" 3 4
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *restrict, const char *restrict);
extern FILE *freopen(const char *restrict,
   const char *restrict, FILE *restrict);
extern void setbuf(FILE *restrict, char *restrict);
extern int setvbuf(FILE *restrict, char *restrict, int,
   size_t);

extern int fprintf(FILE *restrict, const char *restrict, ...);

extern int fscanf(FILE *restrict, const char *restrict, ...);

extern int printf(const char *restrict, ...);

extern int scanf(const char *restrict, ...);

extern int sprintf(char *restrict, const char *restrict, ...);

extern int sscanf(const char *restrict,
   const char *restrict, ...);
extern int vfprintf(FILE *restrict, const char *restrict,
   __va_list);
extern int vprintf(const char *restrict, __va_list);
extern int vsprintf(char *restrict, const char *restrict,
   __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *restrict, int, FILE *restrict);
extern int fputc(int, FILE *);
extern int fputs(const char *restrict, FILE *restrict);


extern int getc(FILE *);
extern int putc(int, FILE *);



extern int getchar(void);
extern int putchar(int);
# 243 "/usr/include/iso/stdio_iso.h" 3 4
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *restrict, size_t, size_t,
 FILE *restrict);
extern size_t fwrite(const void *restrict, size_t, size_t,
 FILE *restrict);

extern int fgetpos(FILE *restrict, fpos_t *restrict);
extern int fsetpos(FILE *, const fpos_t *);

extern int fseek(FILE *, long, int);
extern long ftell(FILE *);
extern void rewind(FILE *);


extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);

extern void perror(const char *);
# 83 "/usr/include/stdio.h" 2 3 4
# 151 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/iso/stdio_c99.h" 1 3 4
# 74 "/usr/include/iso/stdio_c99.h" 3 4
extern int vfscanf(FILE *restrict, const char *restrict, __va_list);
extern int vscanf(const char *restrict, __va_list);
extern int vsscanf(const char *restrict, const char *restrict,
  __va_list);




extern int snprintf(char *restrict, size_t, const char *restrict,
 ...);
extern int vsnprintf(char *restrict, size_t, const char *restrict,
 __va_list);
# 152 "/usr/include/stdio.h" 2 3 4
# 177 "/usr/include/stdio.h" 3 4
typedef fpos_t fpos64_t;
# 213 "/usr/include/stdio.h" 3 4
extern unsigned char _sibuf[], _sobuf[];
# 268 "/usr/include/stdio.h" 3 4
extern char *tmpnam_r(char *);




extern int fcloseall(void);
extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);

extern int asprintf(char **, const char *, ...);

extern int vasprintf(char **, const char *, __va_list);





extern ssize_t getdelim(char **restrict, size_t *restrict,
 int, FILE *restrict);
extern ssize_t getline(char **restrict, size_t *restrict,
 FILE *restrict);
# 297 "/usr/include/stdio.h" 3 4
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 308 "/usr/include/stdio.h" 3 4
extern void flockfile(FILE *);
extern int ftrylockfile(FILE *);
extern void funlockfile(FILE *);
extern int getc_unlocked(FILE *);
extern int getchar_unlocked(void);
extern int putc_unlocked(int, FILE *);
extern int putchar_unlocked(int);
# 323 "/usr/include/stdio.h" 3 4
extern FILE *popen(const char *, const char *);
extern char *tempnam(const char *, const char *);
extern int pclose(FILE *);

extern int getsubopt(char **, char *const *, char **);




extern char *cuserid(char *);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
# 346 "/usr/include/stdio.h" 3 4
extern int fseeko(FILE *, off_t, int);
extern off_t ftello(FILE *);
# 356 "/usr/include/stdio.h" 3 4
extern FILE *fopen64(const char *, const char *);
extern FILE *freopen64(const char *, const char *, FILE *);
extern FILE *tmpfile64(void);
extern int fgetpos64(FILE *, fpos64_t *);
extern int fsetpos64(FILE *, const fpos64_t *);
extern int fseeko64(FILE *, off64_t, int);
extern off64_t ftello64(FILE *);






extern FILE *fmemopen(void *restrict, size_t,
      const char *restrict);
extern FILE *open_memstream(char **, size_t *);
# 44 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2


# 1 "/usr/include/stdlib.h" 1 3 4
# 40 "/usr/include/stdlib.h" 3 4
# 1 "/usr/include/iso/stdlib_iso.h" 1 3 4
# 56 "/usr/include/iso/stdlib_iso.h" 3 4
unsigned char __mb_cur_max(void);
# 65 "/usr/include/iso/stdlib_iso.h" 3 4
typedef struct {
 int quot;
 int rem;
} div_t;

typedef struct {
 long quot;
 long rem;
} ldiv_t;
# 105 "/usr/include/iso/stdlib_iso.h" 3 4
typedef int wchar_t;
# 120 "/usr/include/iso/stdlib_iso.h" 3 4
extern _Noreturn void abort(void) __attribute__((__noreturn__));
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
 int (*)(const void *, const void *));






extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern _Noreturn void exit(int)
 __attribute__((__noreturn__));
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *restrict, const char *restrict,
 size_t);
extern int mbtowc(wchar_t *restrict, const char *restrict, size_t);
extern void qsort(void *, size_t, size_t, int (*)(const void *, const void *));





extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *restrict, char **restrict);
extern long int strtol(const char *restrict, char **restrict, int);
extern unsigned long int strtoul(const char *restrict,
 char **restrict, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *restrict, const wchar_t *restrict,
 size_t);
# 41 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/iso/stdlib_c99.h" 1 3 4
# 58 "/usr/include/iso/stdlib_c99.h" 3 4
typedef struct {
 long long quot;
 long long rem;
} lldiv_t;
# 75 "/usr/include/iso/stdlib_c99.h" 3 4
extern _Noreturn void _Exit(int);
extern float strtof(const char *restrict, char **restrict);
extern long double strtold(const char *restrict, char **restrict);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern long long strtoll(const char *restrict, char **restrict,
 int);
extern unsigned long long strtoull(const char *restrict,
 char **restrict, int);
# 42 "/usr/include/stdlib.h" 2 3 4
# 1 "/usr/include/iso/stdlib_c11.h" 1 3 4
# 60 "/usr/include/iso/stdlib_c11.h" 3 4
extern void *aligned_alloc(size_t, size_t);



extern int at_quick_exit(void (*)(void));
extern _Noreturn void quick_exit(int);
# 43 "/usr/include/stdlib.h" 2 3 4
# 128 "/usr/include/stdlib.h" 3 4
        
# 128 "/usr/include/stdlib.h" 3 4
#pragma redefine_extname mkstemp64 mkstemp
# 128 "/usr/include/stdlib.h" 3 4

        
# 129 "/usr/include/stdlib.h" 3 4
#pragma redefine_extname mkstemps64 mkstemps
# 129 "/usr/include/stdlib.h" 3 4

        
# 130 "/usr/include/stdlib.h" 3 4
#pragma redefine_extname mkostemp64 mkostemp
# 130 "/usr/include/stdlib.h" 3 4

        
# 131 "/usr/include/stdlib.h" 3 4
#pragma redefine_extname mkostemps64 mkostemps
# 131 "/usr/include/stdlib.h" 3 4
# 144 "/usr/include/stdlib.h" 3 4
extern int rand_r(unsigned int *);


extern void _exithandle(void);




extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(char *);
extern void setkey(const char *);
# 185 "/usr/include/stdlib.h" 3 4
extern void swab(const char *, char *, ssize_t);





extern int mkstemp(char *);

extern int mkstemps(char *, int);





extern int mkstemp64(char *);

extern int mkstemps64(char *, int);




extern char *mkdtemp(char *);



extern int mkostemp(char *, int);
extern int mkostemps(char *, int, int);


extern int mkostemp64(char *, int);
extern int mkostemps64(char *, int, int);






extern long a64l(const char *);
extern char *ecvt(double, int, int *restrict, int *restrict);
extern char *fcvt(double, int, int *restrict, int *restrict);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *restrict, char *restrict);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int unlockpt(int);


extern int ttyslot(void);
extern void *valloc(size_t);






extern int posix_memalign(void **, size_t, size_t);
extern int posix_openpt(int);
extern int setenv(const char *, const char *, int);
extern int unsetenv(const char *);
# 268 "/usr/include/stdlib.h" 3 4
extern char *canonicalize_file_name(const char *);
extern int clearenv(void);
extern void closefrom(int);
extern int daemon(int, int);
extern int dup2(int, int);
extern int dup3(int, int, int);
extern int fdwalk(int (*)(void *, int), void *);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);





        
# 285 "/usr/include/stdlib.h" 3 4
#pragma redefine_extname getlogin getloginx
# 285 "/usr/include/stdlib.h" 3 4






extern char *getlogin(void);


extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);
extern char *mkdtemp(char *);
extern const char *getprogname(void);
extern void setprogname(const char *);


extern char *lltostr(long long, char *);
extern char *ulltostr(unsigned long long, char *);







# 1 "/usr/include/inttypes.h" 1 3 4
# 42 "/usr/include/inttypes.h" 3 4
# 1 "/usr/include/sys/inttypes.h" 1 3 4
# 43 "/usr/include/sys/inttypes.h" 3 4
# 1 "/usr/include/sys/int_limits.h" 1 3 4
# 44 "/usr/include/sys/inttypes.h" 2 3 4
# 1 "/usr/include/sys/int_const.h" 1 3 4
# 45 "/usr/include/sys/inttypes.h" 2 3 4
# 1 "/usr/include/sys/int_fmtio.h" 1 3 4
# 46 "/usr/include/sys/inttypes.h" 2 3 4
# 43 "/usr/include/inttypes.h" 2 3 4



# 1 "/usr/include/sys/stdint.h" 1 3 4
# 47 "/usr/include/inttypes.h" 2 3 4
# 81 "/usr/include/inttypes.h" 3 4
typedef struct {
 intmax_t quot;
 intmax_t rem;
} imaxdiv_t;
# 108 "/usr/include/inttypes.h" 3 4
extern intmax_t imaxabs(intmax_t);
extern imaxdiv_t imaxdiv(intmax_t, intmax_t);
extern intmax_t strtoimax(const char *restrict, char **restrict,
 int);
extern uintmax_t strtoumax(const char *restrict, char **restrict,
 int);
extern intmax_t wcstoimax(const wchar_t *restrict,
 wchar_t **restrict, int);
extern uintmax_t wcstoumax(const wchar_t *restrict,
 wchar_t **restrict, int);
# 318 "/usr/include/stdlib.h" 2 3 4
extern uint32_t arc4random(void);
extern void arc4random_buf(void *, size_t);
extern uint32_t arc4random_uniform(uint32_t);
extern void freezero(void *, size_t);
extern void *reallocarray(void *, size_t, size_t);
extern void *recallocarray(void *, size_t, size_t, size_t);
extern long long strtonum(const char *, long long, long long, const char **);
extern void *reallocf(void *, size_t);

extern void qsort_r(void *, size_t, size_t,
    int (*)(const void *, const void *, void *), void *);
# 47 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 1 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stddef.h" 1 3 4
# 426 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stddef.h" 3 4
typedef struct {
  long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
  long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
# 437 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stddef.h" 3 4
} max_align_t;
# 48 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 1 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stdarg.h" 1 3 4
# 79 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 49 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 66 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
# 1 "/usr/include/string.h" 1 3 4
# 34 "/usr/include/string.h" 3 4
# 1 "/usr/include/iso/string_iso.h" 1 3 4
# 69 "/usr/include/iso/string_iso.h" 3 4
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *restrict, const void *restrict, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *restrict, const char *restrict);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *restrict, const char *restrict);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *restrict, const char *restrict, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *restrict, const char *restrict, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *restrict, const char *restrict);
extern size_t strxfrm(char *restrict, const char *restrict, size_t);
# 139 "/usr/include/iso/string_iso.h" 3 4
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
# 35 "/usr/include/string.h" 2 3 4
# 73 "/usr/include/string.h" 3 4
extern int strerror_r(int, char *, size_t);





extern char *strtok_r(char *restrict, const char *restrict,
 char **restrict);




extern void *memccpy(void *restrict, const void *restrict,
  int, size_t);




extern char *stpcpy(char *restrict, const char *restrict);
extern char *stpncpy(char *restrict, const char *restrict, size_t);
extern char *strndup(const char *, size_t);
extern size_t strnlen(const char *, size_t);
extern char *strsignal(int);






extern int strcoll_l(const char *, const char *, locale_t);
extern size_t strxfrm_l(char *restrict, const char *restrict,
    size_t, locale_t);
extern int strcasecmp_l(const char *, const char *, locale_t);
extern int strncasecmp_l(const char *, const char *, size_t, locale_t);
extern char *strerror_l(int, locale_t);






extern void explicit_bzero(void *, size_t);
extern int uucopy(const void *restrict, void *restrict, size_t);
extern int uucopystr(const void *restrict, void *restrict, size_t);
extern int ffs(int);
extern int ffsl(long);
extern int ffsll(long long);
extern int fls(int);
extern int flsl(long);
extern int flsll(long long);
extern void *memmem(const void *, size_t, const void *, size_t);
extern void *memrchr(const void *, int, size_t);
extern char *strcasestr(const char *, const char *);
extern char *strnstr(const char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);
extern char *strsep(char **stringp, const char *delim);
extern char *strchrnul(const char *, int);
extern char *strcasestr_l(const char *, const char *, locale_t);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);





extern char *strdup(const char *);
# 67 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2


# 1 "/usr/include/strings.h" 1 3 4
# 43 "/usr/include/strings.h" 3 4
extern int bcmp(const void *, const void *, size_t);
extern void bcopy(const void *, void *, size_t);
extern void bzero(void *, size_t);

extern char *index(const char *, int);
extern char *rindex(const char *, int);
# 70 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2


# 1 "/usr/include/wchar.h" 1 3 4
# 31 "/usr/include/wchar.h" 3 4
# 1 "/usr/include/iso/wchar_iso.h" 1 3 4
# 48 "/usr/include/iso/wchar_iso.h" 3 4
# 1 "/usr/include/wchar_impl.h" 1 3 4
# 30 "/usr/include/wchar_impl.h" 3 4
#pragma ident "%Z%%M%	%I%	%E% SMI"
# 40 "/usr/include/wchar_impl.h" 3 4
typedef struct __mbstate_t {

 long __filler[4];



} __mbstate_t;
# 49 "/usr/include/iso/wchar_iso.h" 2 3 4
# 58 "/usr/include/iso/wchar_iso.h" 3 4
# 1 "/usr/include/ctype.h" 1 3 4
# 36 "/usr/include/ctype.h" 3 4
# 1 "/usr/include/iso/ctype_iso.h" 1 3 4
# 75 "/usr/include/iso/ctype_iso.h" 3 4
extern unsigned char __ctype[];
extern unsigned int *__ctype_mask;
extern int *__trans_upper;
extern int *__trans_lower;
# 91 "/usr/include/iso/ctype_iso.h" 3 4
extern int isalnum(int);
extern int isalpha(int);
extern int iscntrl(int);
extern int isdigit(int);
extern int isgraph(int);
extern int islower(int);
extern int isprint(int);
extern int ispunct(int);
extern int isspace(int);
extern int isupper(int);
extern int isxdigit(int);

extern int isblank(int);


extern int tolower(int);
extern int toupper(int);
# 37 "/usr/include/ctype.h" 2 3 4
# 70 "/usr/include/ctype.h" 3 4
extern int isascii(int);
extern int toascii(int);
extern int _tolower(int);
extern int _toupper(int);
# 98 "/usr/include/ctype.h" 3 4
extern int isalnum_l(int, locale_t);
extern int isalpha_l(int, locale_t);
extern int isblank_l(int, locale_t);
extern int iscntrl_l(int, locale_t);
extern int isdigit_l(int, locale_t);
extern int isgraph_l(int, locale_t);
extern int islower_l(int, locale_t);
extern int isprint_l(int, locale_t);
extern int ispunct_l(int, locale_t);
extern int isspace_l(int, locale_t);
extern int isupper_l(int, locale_t);
extern int isxdigit_l(int, locale_t);
extern int tolower_l(int, locale_t);
extern int toupper_l(int, locale_t);
# 59 "/usr/include/iso/wchar_iso.h" 2 3 4
# 1 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stddef.h" 1 3 4
# 60 "/usr/include/iso/wchar_iso.h" 2 3 4
# 99 "/usr/include/iso/wchar_iso.h" 3 4
typedef int wint_t;
# 134 "/usr/include/iso/wchar_iso.h" 3 4
typedef __mbstate_t mbstate_t;
# 172 "/usr/include/iso/wchar_iso.h" 3 4
        
# 172 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname fgetwc __fgetwc_xpg5
# 172 "/usr/include/iso/wchar_iso.h" 3 4

        
# 173 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname getwc __getwc_xpg5
# 173 "/usr/include/iso/wchar_iso.h" 3 4

        
# 174 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname getwchar __getwchar_xpg5
# 174 "/usr/include/iso/wchar_iso.h" 3 4

        
# 175 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname fputwc __fputwc_xpg5
# 175 "/usr/include/iso/wchar_iso.h" 3 4

        
# 176 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname putwc __putwc_xpg5
# 176 "/usr/include/iso/wchar_iso.h" 3 4

        
# 177 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname putwchar __putwchar_xpg5
# 177 "/usr/include/iso/wchar_iso.h" 3 4

        
# 178 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname fgetws __fgetws_xpg5
# 178 "/usr/include/iso/wchar_iso.h" 3 4

        
# 179 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname fputws __fputws_xpg5
# 179 "/usr/include/iso/wchar_iso.h" 3 4

        
# 180 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname ungetwc __ungetwc_xpg5
# 180 "/usr/include/iso/wchar_iso.h" 3 4
# 205 "/usr/include/iso/wchar_iso.h" 3 4
extern wint_t fgetwc(__FILE *);
extern wchar_t *fgetws(wchar_t *restrict, int, __FILE *restrict);
extern wint_t fputwc(wint_t, __FILE *);
extern int fputws(const wchar_t *restrict, __FILE *restrict);
extern wint_t ungetwc(wint_t, __FILE *);
extern wint_t getwc(__FILE *);
extern wint_t getwchar(void);
extern wint_t putwc(wint_t, __FILE *);
extern wint_t putwchar(wint_t);
extern double wcstod(const wchar_t *restrict, wchar_t **restrict);
extern long wcstol(const wchar_t *restrict, wchar_t **restrict,
 int);
extern unsigned long wcstoul(const wchar_t *restrict,
 wchar_t **restrict, int);
extern wchar_t *wcscat(wchar_t *restrict, const wchar_t *restrict);
extern int wcscmp(const wchar_t *, const wchar_t *);
extern int wcscoll(const wchar_t *, const wchar_t *);
extern wchar_t *wcscpy(wchar_t *restrict, const wchar_t *restrict);
extern size_t wcscspn(const wchar_t *, const wchar_t *);
extern size_t wcslen(const wchar_t *);
extern wchar_t *wcsncat(wchar_t *restrict, const wchar_t *restrict,
 size_t);
extern int wcsncmp(const wchar_t *, const wchar_t *, size_t);
extern wchar_t *wcsncpy(wchar_t *restrict, const wchar_t *restrict,
 size_t);
extern size_t wcsspn(const wchar_t *, const wchar_t *);
extern size_t wcsxfrm(wchar_t *restrict, const wchar_t *restrict,
 size_t);
# 253 "/usr/include/iso/wchar_iso.h" 3 4
extern wchar_t *wcschr(const wchar_t *, wchar_t);
extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *);
extern wchar_t *wcsrchr(const wchar_t *, wchar_t);
# 264 "/usr/include/iso/wchar_iso.h" 3 4
        
# 264 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname wcstok __wcstok_xpg5
# 264 "/usr/include/iso/wchar_iso.h" 3 4

        
# 265 "/usr/include/iso/wchar_iso.h" 3 4
#pragma redefine_extname wcsftime __wcsftime_xpg5
# 265 "/usr/include/iso/wchar_iso.h" 3 4

extern wchar_t *wcstok(wchar_t *restrict, const wchar_t *restrict,
 wchar_t **restrict);
extern size_t wcsftime(wchar_t *restrict, size_t,
 const wchar_t *restrict, const struct tm *restrict);
# 283 "/usr/include/iso/wchar_iso.h" 3 4
extern wint_t btowc(int);
extern int fwprintf(__FILE *restrict, const wchar_t *restrict,
   ...);
extern int fwscanf(__FILE *restrict, const wchar_t *restrict,
   ...);
extern int fwide(__FILE *, int);
extern int mbsinit(const mbstate_t *);
extern size_t mbrlen(const char *restrict, size_t,
   mbstate_t *restrict);
extern size_t mbrtowc(wchar_t *restrict, const char *restrict,
   size_t, mbstate_t *restrict);
extern size_t mbsrtowcs(wchar_t *restrict, const char **restrict,
   size_t, mbstate_t *restrict);
extern int swprintf(wchar_t *restrict, size_t,
   const wchar_t *restrict, ...);
extern int swscanf(const wchar_t *restrict,
   const wchar_t *restrict, ...);
extern int vfwprintf(__FILE *restrict, const wchar_t *restrict,
   __va_list);
extern int vwprintf(const wchar_t *restrict, __va_list);
extern int vswprintf(wchar_t *restrict, size_t,
   const wchar_t *restrict, __va_list);
extern size_t wcrtomb(char *restrict, wchar_t,
   mbstate_t *restrict);
extern size_t wcsrtombs(char *restrict, const wchar_t **restrict,
   size_t, mbstate_t *restrict);

extern size_t wcsnrtombs(char *restrict, const wchar_t **restrict,
   size_t, size_t, mbstate_t *restrict);

extern int wctob(wint_t);
extern int wmemcmp(const wchar_t *, const wchar_t *, size_t);
extern wchar_t *wmemcpy(wchar_t *restrict,
   const wchar_t *restrict, size_t);
extern wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t);
extern wchar_t *wmemset(wchar_t *, wchar_t, size_t);
extern int wprintf(const wchar_t *restrict, ...);
extern int wscanf(const wchar_t *restrict, ...);
# 335 "/usr/include/iso/wchar_iso.h" 3 4
extern wchar_t *wcsstr(const wchar_t *restrict,
 const wchar_t *restrict);
extern wchar_t *wmemchr(const wchar_t *, wchar_t, size_t);
# 32 "/usr/include/wchar.h" 2 3 4
# 1 "/usr/include/iso/wchar_c99.h" 1 3 4
# 64 "/usr/include/iso/wchar_c99.h" 3 4
extern int vfwscanf(__FILE *restrict, const wchar_t *restrict,
  __va_list);
extern int vswscanf(const wchar_t *restrict,
  const wchar_t *restrict, __va_list);
extern int vwscanf(const wchar_t *restrict, __va_list);
extern float wcstof(const wchar_t *restrict,
  wchar_t **restrict);

extern long double wcstold(const wchar_t *restrict,
  wchar_t **restrict);
extern long long wcstoll(const wchar_t *restrict,
  wchar_t **restrict, int);
extern unsigned long long wcstoull(const wchar_t *restrict,
  wchar_t **restrict, int);
# 33 "/usr/include/wchar.h" 2 3 4
# 110 "/usr/include/wchar.h" 3 4
typedef int wctype_t;
# 127 "/usr/include/wchar.h" 3 4
extern int iswalpha(wint_t);
extern int iswupper(wint_t);
extern int iswlower(wint_t);
extern int iswdigit(wint_t);
extern int iswxdigit(wint_t);
extern int iswalnum(wint_t);
extern int iswspace(wint_t);
extern int iswpunct(wint_t);
extern int iswprint(wint_t);
extern int iswgraph(wint_t);
extern int iswcntrl(wint_t);
extern int iswctype(wint_t, wctype_t);
extern wint_t towlower(wint_t);
extern wint_t towupper(wint_t);
extern wchar_t *wcswcs(const wchar_t *, const wchar_t *);
extern int wcswidth(const wchar_t *, size_t);
extern int wcwidth(wchar_t);
extern wctype_t wctype(const char *);
# 176 "/usr/include/wchar.h" 3 4
extern size_t wcsnlen(const wchar_t *, size_t);
extern wchar_t *wcpcpy(wchar_t *restrict, const wchar_t *restrict);
extern wchar_t *wcpncpy(wchar_t *restrict, const wchar_t *restrict,
    size_t);
extern size_t wcsxfrm_l(wchar_t *restrict, const wchar_t *restrict,
    size_t, locale_t);
extern int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
extern wchar_t *wcsdup(const wchar_t *);
extern int wcscasecmp(const wchar_t *, const wchar_t *);
extern int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
extern int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
extern int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
extern size_t mbsnrtowcs(wchar_t *restrict, const char **restrict,
    size_t, size_t, mbstate_t *restrict);

extern FILE *open_wmemstream(wchar_t **, size_t *);
# 73 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 90 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
# 1 "/usr/include/math.h" 1 3 4
# 35 "/usr/include/math.h" 3 4
# 1 "/usr/include/iso/math_iso.h" 1 3 4
# 57 "/usr/include/iso/math_iso.h" 3 4
extern double acos(double);
extern double asin(double);
extern double atan(double);
extern double atan2(double, double);
extern double cos(double);
extern double sin(double);
extern double tan(double);

extern double cosh(double);
extern double sinh(double);
extern double tanh(double);

extern double exp(double);
extern double frexp(double, int *);
extern double ldexp(double, int);
extern double log(double);
extern double log10(double);
extern double modf(double, double *);

extern double pow(double, double);
extern double sqrt(double);

extern double ceil(double);
extern double fabs(double);
extern double floor(double);
extern double fmod(double, double);
# 36 "/usr/include/math.h" 2 3 4
# 1 "/usr/include/iso/math_c99.h" 1 3 4
# 185 "/usr/include/iso/math_c99.h" 3 4
typedef float float_t;
typedef double double_t;
# 213 "/usr/include/iso/math_c99.h" 3 4
extern double acosh(double);
extern double asinh(double);
extern double atanh(double);

extern double exp2(double);
extern double expm1(double);
extern int ilogb(double);
extern double log1p(double);
extern double log2(double);
extern double logb(double);
extern double scalbn(double, int);
extern double scalbln(double, long int);

extern double cbrt(double);
extern double hypot(double, double);

extern double erf(double);
extern double erfc(double);
extern double lgamma(double);
extern double tgamma(double);

extern double nearbyint(double);
extern double rint(double);
extern long int lrint(double);
extern double round(double);
extern long int lround(double);
extern double trunc(double);

extern double remainder(double, double);
extern double remquo(double, double, int *);

extern double copysign(double, double);
extern double nan(const char *);
extern double nextafter(double, double);
extern double nexttoward(double, long double);

extern double fdim(double, double);
extern double fmax(double, double);
extern double fmin(double, double);

extern double fma(double, double, double);

extern float acosf(float);
extern float asinf(float);
extern float atanf(float);
extern float atan2f(float, float);
extern float cosf(float);
extern float sinf(float);
extern float tanf(float);

extern float acoshf(float);
extern float asinhf(float);
extern float atanhf(float);
extern float coshf(float);
extern float sinhf(float);
extern float tanhf(float);

extern float expf(float);
extern float exp2f(float);
extern float expm1f(float);
extern float frexpf(float, int *);
extern int ilogbf(float);
extern float ldexpf(float, int);
extern float logf(float);
extern float log10f(float);
extern float log1pf(float);
extern float log2f(float);
extern float logbf(float);
extern float modff(float, float *);
extern float scalbnf(float, int);
extern float scalblnf(float, long int);

extern float cbrtf(float);
extern float fabsf(float);
extern float hypotf(float, float);
extern float powf(float, float);
extern float sqrtf(float);

extern float erff(float);
extern float erfcf(float);
extern float lgammaf(float);
extern float tgammaf(float);

extern float ceilf(float);
extern float floorf(float);
extern float nearbyintf(float);
extern float rintf(float);
extern long int lrintf(float);
extern float roundf(float);
extern long int lroundf(float);
extern float truncf(float);

extern float fmodf(float, float);
extern float remainderf(float, float);
extern float remquof(float, float, int *);

extern float copysignf(float, float);
extern float nanf(const char *);
extern float nextafterf(float, float);
extern float nexttowardf(float, long double);

extern float fdimf(float, float);
extern float fmaxf(float, float);
extern float fminf(float, float);

extern float fmaf(float, float, float);

extern long double acosl(long double);
extern long double asinl(long double);
extern long double atanl(long double);
extern long double atan2l(long double, long double);
extern long double cosl(long double);
extern long double sinl(long double);
extern long double tanl(long double);

extern long double acoshl(long double);
extern long double asinhl(long double);
extern long double atanhl(long double);
extern long double coshl(long double);
extern long double sinhl(long double);
extern long double tanhl(long double);

extern long double expl(long double);
extern long double exp2l(long double);
extern long double expm1l(long double);
extern long double frexpl(long double, int *);
extern int ilogbl(long double);
extern long double ldexpl(long double, int);
extern long double logl(long double);
extern long double log10l(long double);
extern long double log1pl(long double);
extern long double log2l(long double);
extern long double logbl(long double);
extern long double modfl(long double, long double *);
extern long double scalbnl(long double, int);
extern long double scalblnl(long double, long int);

extern long double cbrtl(long double);
extern long double fabsl(long double);
extern long double hypotl(long double, long double);
extern long double powl(long double, long double);
extern long double sqrtl(long double);

extern long double erfl(long double);
extern long double erfcl(long double);
extern long double lgammal(long double);
extern long double tgammal(long double);

extern long double ceill(long double);
extern long double floorl(long double);
extern long double nearbyintl(long double);
extern long double rintl(long double);
extern long int lrintl(long double);
extern long double roundl(long double);
extern long int lroundl(long double);
extern long double truncl(long double);

extern long double fmodl(long double, long double);
extern long double remainderl(long double, long double);
extern long double remquol(long double, long double, int *);

extern long double copysignl(long double, long double);
extern long double nanl(const char *);
extern long double nextafterl(long double, long double);
extern long double nexttowardl(long double, long double);

extern long double fdiml(long double, long double);
extern long double fmaxl(long double, long double);
extern long double fminl(long double, long double);

extern long double fmal(long double, long double, long double);



extern long long int llrint(double);
extern long long int llround(double);

extern long long int llrintf(float);
extern long long int llroundf(float);

extern long long int llrintl(long double);
extern long long int llroundl(long double);



#pragma does_not_read_global_data(asinh, exp2, expm1)
#pragma does_not_read_global_data(ilogb, log2)
#pragma does_not_read_global_data(scalbn, scalbln, cbrt)
#pragma does_not_read_global_data(erf, erfc, tgamma)
#pragma does_not_read_global_data(nearbyint, rint, lrint, round, lround, trunc)
#pragma does_not_read_global_data(remquo)
#pragma does_not_read_global_data(copysign, nan, nexttoward)
#pragma does_not_read_global_data(fdim, fmax, fmin, fma)
#pragma does_not_write_global_data(asinh, exp2, expm1)
#pragma does_not_write_global_data(ilogb, log2)
#pragma does_not_write_global_data(scalbn, scalbln, cbrt)
#pragma does_not_write_global_data(erf, erfc, tgamma)
#pragma does_not_write_global_data(nearbyint, rint, lrint, round, lround, trunc)
#pragma does_not_write_global_data(copysign, nan, nexttoward)
#pragma does_not_write_global_data(fdim, fmax, fmin, fma)

#pragma does_not_read_global_data(acosf, asinf, atanf, atan2f)
#pragma does_not_read_global_data(cosf, sinf, tanf)
#pragma does_not_read_global_data(acoshf, asinhf, atanhf, coshf, sinhf, tanhf)
#pragma does_not_read_global_data(expf, exp2f, expm1f, frexpf, ilogbf, ldexpf)
#pragma does_not_read_global_data(logf, log10f, log1pf, log2f, logbf)
#pragma does_not_read_global_data(modff, scalbnf, scalblnf)
#pragma does_not_read_global_data(cbrtf, fabsf, hypotf, powf, sqrtf)
#pragma does_not_read_global_data(erff, erfcf, lgammaf, tgammaf)
#pragma does_not_read_global_data(ceilf, floorf, nearbyintf)
#pragma does_not_read_global_data(rintf, lrintf, roundf, lroundf, truncf)
#pragma does_not_read_global_data(fmodf, remainderf, remquof)
#pragma does_not_read_global_data(copysignf, nanf, nextafterf, nexttowardf)
#pragma does_not_read_global_data(fdimf, fmaxf, fminf, fmaf)
#pragma does_not_write_global_data(acosf, asinf, atanf, atan2f)
#pragma does_not_write_global_data(cosf, sinf, tanf)
#pragma does_not_write_global_data(acoshf, asinhf, atanhf, coshf, sinhf, tanhf)
#pragma does_not_write_global_data(expf, exp2f, expm1f, ilogbf, ldexpf)
#pragma does_not_write_global_data(logf, log10f, log1pf, log2f, logbf)
#pragma does_not_write_global_data(cbrtf, fabsf, hypotf, powf, sqrtf)
#pragma does_not_write_global_data(erff, erfcf, tgammaf)
#pragma does_not_write_global_data(ceilf, floorf, nearbyintf)
#pragma does_not_write_global_data(rintf, lrintf, roundf, lroundf, truncf)
#pragma does_not_write_global_data(fmodf, remainderf)
#pragma does_not_write_global_data(copysignf, nanf, nextafterf, nexttowardf)
#pragma does_not_write_global_data(fdimf, fmaxf, fminf, fmaf)

#pragma does_not_read_global_data(acosl, asinl, atanl, atan2l)
#pragma does_not_read_global_data(cosl, sinl, tanl)
#pragma does_not_read_global_data(acoshl, asinhl, atanhl, coshl, sinhl, tanhl)
#pragma does_not_read_global_data(expl, exp2l, expm1l, frexpl, ilogbl, ldexpl)
#pragma does_not_read_global_data(logl, log10l, log1pl, log2l, logbl)
#pragma does_not_read_global_data(modfl, scalbnl, scalblnl)
#pragma does_not_read_global_data(cbrtl, fabsl, hypotl, powl, sqrtl)
#pragma does_not_read_global_data(erfl, erfcl, lgammal, tgammal)
#pragma does_not_read_global_data(ceill, floorl, nearbyintl)
#pragma does_not_read_global_data(rintl, lrintl, roundl, lroundl, truncl)
#pragma does_not_read_global_data(fmodl, remainderl, remquol)
#pragma does_not_read_global_data(copysignl, nanl, nextafterl, nexttowardl)
#pragma does_not_read_global_data(fdiml, fmaxl, fminl, fmal)
#pragma does_not_write_global_data(acosl, asinl, atanl, atan2l)
#pragma does_not_write_global_data(cosl, sinl, tanl)
#pragma does_not_write_global_data(acoshl, asinhl, atanhl, coshl, sinhl, tanhl)
#pragma does_not_write_global_data(expl, exp2l, expm1l, ilogbl, ldexpl)
#pragma does_not_write_global_data(logl, log10l, log1pl, log2l, logbl)
#pragma does_not_write_global_data(cbrtl, fabsl, hypotl, powl, sqrtl)
#pragma does_not_write_global_data(erfl, erfcl, tgammal)
#pragma does_not_write_global_data(ceill, floorl, nearbyintl)
#pragma does_not_write_global_data(rintl, lrintl, roundl, lroundl, truncl)
#pragma does_not_write_global_data(fmodl, remainderl)
#pragma does_not_write_global_data(copysignl, nanl, nextafterl, nexttowardl)
#pragma does_not_write_global_data(fdiml, fmaxl, fminl, fmal)



#pragma does_not_read_global_data(llrint, llround)
#pragma does_not_read_global_data(llrintf, llroundf, llrintl, llroundl)
#pragma does_not_write_global_data(llrint, llround)
#pragma does_not_write_global_data(llrintf, llroundf, llrintl, llroundl)
# 37 "/usr/include/math.h" 2 3 4
# 91 "/usr/include/math.h" 3 4
extern int signgam;







enum version {libm_ieee = -1, c_issue_4, ansi_1, strict_ansi};


extern const enum version _lib_version;




struct exception {
 int type;
 char *name;
 double arg1;
 double arg2;
 double retval;
};
# 145 "/usr/include/math.h" 3 4
extern double erf(double);
extern double erfc(double);
extern double hypot(double, double);
extern double lgamma(double);
# 166 "/usr/include/math.h" 3 4
extern double gamma(double);

extern double j0(double);
extern double j1(double);
extern double jn(int, double);
extern double y0(double);
extern double y1(double);
extern double yn(int, double);
# 187 "/usr/include/math.h" 3 4
extern double scalb(double, double);
# 197 "/usr/include/math.h" 3 4
extern double acosh(double);
extern double asinh(double);
extern double atanh(double);
extern double cbrt(double);
extern double logb(double);
extern double nextafter(double, double);
extern double remainder(double, double);




extern double expm1(double);
extern int ilogb(double);
extern double log1p(double);
extern double rint(double);
# 231 "/usr/include/math.h" 3 4
extern int matherr(struct exception *);




extern double significand(double);







extern int signgamf;
extern int signgaml;

extern int isnanf(float);
extern int isnanl(long double);
extern float gammaf(float);
extern float gammaf_r(float, int *);
extern float j0f(float);
extern float j1f(float);
extern float jnf(int, float);
extern float lgammaf_r(float, int *);
extern float scalbf(float, float);
extern float significandf(float);
extern float y0f(float);
extern float y1f(float);
extern float ynf(int, float);
extern long double gammal(long double);
extern long double gammal_r(long double, int *);
extern long double j0l(long double);
extern long double j1l(long double);
extern long double jnl(int, long double);
extern long double lgammal_r(long double, int *);
extern long double scalbl(long double, long double);
extern long double significandl(long double);
extern long double y0l(long double);
extern long double y1l(long double);
extern long double ynl(int, long double);
# 293 "/usr/include/math.h" 3 4
extern void sincos(double, double *, double *);
extern void sincosf(float, float *, float *);
extern void sincosl(long double, long double *, long double *);
# 305 "/usr/include/math.h" 3 4
extern double copysign(double, double);
extern double scalbn(double, int);
# 319 "/usr/include/math.h" 3 4
extern double gamma_r(double, int *);
extern double lgamma_r(double, int *);






extern float modff(float, float *);







# 1 "/usr/include/floatingpoint.h" 1 3 4
# 38 "/usr/include/floatingpoint.h" 3 4
# 1 "/usr/include/sys/ieeefp.h" 1 3 4
# 73 "/usr/include/sys/ieeefp.h" 3 4
enum fp_direction_type {
 fp_nearest = 0,
 fp_negative = 1,
 fp_positive = 2,
 fp_tozero = 3
};

enum fp_precision_type {
 fp_single = 0,
 fp_precision_3 = 1,
 fp_double = 2,
 fp_extended = 3
};

enum fp_exception_type {
 fp_invalid = 0,
 fp_denormalized = 1,
 fp_division = 2,
 fp_overflow = 3,
 fp_underflow = 4,
 fp_inexact = 5
};


enum fp_trap_enable_type {
 fp_trap_invalid = 0,
 fp_trap_denormalized = 1,
 fp_trap_division = 2,
 fp_trap_overflow = 3,
 fp_trap_underflow = 4,
 fp_trap_inexact = 5
};



enum fp_class_type {
 fp_zero = 0,
 fp_subnormal = 1,
 fp_normal = 2,
 fp_infinity = 3,
 fp_quiet = 4,
 fp_signaling = 5
};
# 39 "/usr/include/floatingpoint.h" 2 3 4
# 56 "/usr/include/floatingpoint.h" 3 4
typedef int sigfpe_code_type;

typedef void (*sigfpe_handler_type)();





extern sigfpe_handler_type sigfpe(sigfpe_code_type, sigfpe_handler_type);




typedef float single;



typedef unsigned extended[3];


typedef long double quadruple;

typedef unsigned fp_exception_field_type;
# 88 "/usr/include/floatingpoint.h" 3 4
typedef char decimal_string[512];


typedef struct {
 enum fp_class_type fpclass;
 int sign;
 int exponent;
 decimal_string ds;


 int more;


 int ndigits;


} decimal_record;

enum decimal_form {
 fixed_form,



 floating_form

};

typedef struct {
 enum fp_direction_type rd;

 enum decimal_form df;

 int ndigits;
} decimal_mode;

enum decimal_string_form {
 invalid_form,
 whitespace_form,
 fixed_int_form,
 fixed_intdot_form,
 fixed_dotfrac_form,
 fixed_intdotfrac_form,
 floating_int_form,
 floating_intdot_form,
 floating_dotfrac_form,
 floating_intdotfrac_form,
 inf_form,
 infinity_form,
 nan_form,
 nanstring_form
};

extern void single_to_decimal(single *, decimal_mode *, decimal_record *,
    fp_exception_field_type *);
extern void double_to_decimal(double *, decimal_mode *, decimal_record *,
    fp_exception_field_type *);
extern void extended_to_decimal(extended *, decimal_mode *,
    decimal_record *, fp_exception_field_type *);
extern void quadruple_to_decimal(quadruple *, decimal_mode *,
    decimal_record *, fp_exception_field_type *);

extern void decimal_to_single(single *, decimal_mode *, decimal_record *,
    fp_exception_field_type *);
extern void decimal_to_double(double *, decimal_mode *, decimal_record *,
    fp_exception_field_type *);
extern void decimal_to_extended(extended *, decimal_mode *,
    decimal_record *, fp_exception_field_type *);
extern void decimal_to_quadruple(quadruple *, decimal_mode *,
    decimal_record *, fp_exception_field_type *);

extern void string_to_decimal(char **, int, int, decimal_record *,
    enum decimal_string_form *, char **);
extern void func_to_decimal(char **, int, int, decimal_record *,
    enum decimal_string_form *, char **,
    int (*)(void), int *, int (*)(int));
extern void file_to_decimal(char **, int, int, decimal_record *,
    enum decimal_string_form *, char **,
    FILE *, int *);

extern char *seconvert(single *, int, int *, int *, char *);
extern char *sfconvert(single *, int, int *, int *, char *);
extern char *sgconvert(single *, int, int, char *);
extern char *econvert(double, int, int *, int *, char *);
extern char *fconvert(double, int, int *, int *, char *);
extern char *gconvert(double, int, int, char *);
extern char *qeconvert(quadruple *, int, int *, int *, char *);
extern char *qfconvert(quadruple *, int, int *, int *, char *);
extern char *qgconvert(quadruple *, int, int, char *);

extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
# 188 "/usr/include/floatingpoint.h" 3 4
extern double atof(const char *);
extern double strtod(const char *, char **);
# 336 "/usr/include/math.h" 2 3 4
# 91 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2


# 1 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/float.h" 1 3 4
# 94 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2



# 1 "/usr/include/alloca.h" 1 3 4
# 59 "/usr/include/alloca.h" 3 4
extern void *__builtin_alloca(size_t);
# 98 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 184 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"

# 184 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
typedef enum
{
    SDL_FALSE = 0,
    SDL_TRUE = 1
} SDL_bool;







typedef int8_t Sint8;





typedef uint8_t Uint8;





typedef int16_t Sint16;





typedef uint16_t Uint16;





typedef int32_t Sint32;





typedef uint32_t Uint32;






typedef int64_t Sint64;





typedef uint64_t Uint64;
# 394 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
_Static_assert(sizeof(Uint8) == 1, "sizeof(Uint8) == 1");
_Static_assert(sizeof(Sint8) == 1, "sizeof(Sint8) == 1");
_Static_assert(sizeof(Uint16) == 2, "sizeof(Uint16) == 2");
_Static_assert(sizeof(Sint16) == 2, "sizeof(Sint16) == 2");
_Static_assert(sizeof(Uint32) == 4, "sizeof(Uint32) == 4");
_Static_assert(sizeof(Sint32) == 4, "sizeof(Sint32) == 4");
_Static_assert(sizeof(Uint64) == 8, "sizeof(Uint64) == 8");
_Static_assert(sizeof(Sint64) == 8, "sizeof(Sint64) == 8");
# 415 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
typedef enum
{
    DUMMY_ENUM_VALUE
} SDL_DUMMY_ENUM;

_Static_assert(sizeof(SDL_DUMMY_ENUM) == sizeof(int), "sizeof(SDL_DUMMY_ENUM) == sizeof(int)");




# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 426 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 439 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
extern void * SDL_malloc_REAL(size_t size);
extern void * SDL_calloc_REAL(size_t nmemb, size_t size);
extern void * SDL_realloc_REAL(void *mem, size_t size);
extern void SDL_free_REAL(void *mem);

typedef void *( *SDL_malloc_func)(size_t size);
typedef void *( *SDL_calloc_func)(size_t nmemb, size_t size);
typedef void *( *SDL_realloc_func)(void *mem, size_t size);
typedef void ( *SDL_free_func)(void *mem);






extern void SDL_GetOriginalMemoryFunctions_REAL(SDL_malloc_func *malloc_func,
                                                            SDL_calloc_func *calloc_func,
                                                            SDL_realloc_func *realloc_func,
                                                            SDL_free_func *free_func);






extern void SDL_GetMemoryFunctions_REAL(SDL_malloc_func *malloc_func,
                                                    SDL_calloc_func *calloc_func,
                                                    SDL_realloc_func *realloc_func,
                                                    SDL_free_func *free_func);






extern int SDL_SetMemoryFunctions_REAL(SDL_malloc_func malloc_func,
                                                   SDL_calloc_func calloc_func,
                                                   SDL_realloc_func realloc_func,
                                                   SDL_free_func free_func);






extern int SDL_GetNumAllocations_REAL(void);

extern char * SDL_getenv_REAL(const char *name);
extern int SDL_setenv_REAL(const char *name, const char *value, int overwrite);

extern void SDL_qsort_REAL(void *base, size_t nmemb, size_t size, int ( *compare) (const void *, const void *));
extern void * SDL_bsearch_REAL(const void *key, const void *base, size_t nmemb, size_t size, int ( *compare) (const void *, const void *));

extern int SDL_abs_REAL(int x);






extern int SDL_isalpha_REAL(int x);
extern int SDL_isalnum_REAL(int x);
extern int SDL_isblank_REAL(int x);
extern int SDL_iscntrl_REAL(int x);
extern int SDL_isdigit_REAL(int x);
extern int SDL_isxdigit_REAL(int x);
extern int SDL_ispunct_REAL(int x);
extern int SDL_isspace_REAL(int x);
extern int SDL_isupper_REAL(int x);
extern int SDL_islower_REAL(int x);
extern int SDL_isprint_REAL(int x);
extern int SDL_isgraph_REAL(int x);
extern int SDL_toupper_REAL(int x);
extern int SDL_tolower_REAL(int x);

extern Uint16 SDL_crc16_REAL(Uint16 crc, const void *data, size_t len);
extern Uint32 SDL_crc32_REAL(Uint32 crc, const void *data, size_t len);

extern void * SDL_memset_REAL( void *dst, int c, size_t len);
# 529 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
__attribute__((always_inline)) static __inline__ void SDL_memset4(void *dst, Uint32 val, size_t dwords)
{
# 543 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
    size_t _n = (dwords + 3) / 4;
    Uint32 *_p = ((Uint32 *)(dst));
    Uint32 _val = (val);
    if (dwords == 0) {
        return;
    }
    switch (dwords % 4) {
        case 0: do { *_p++ = _val; __attribute__((__fallthrough__));
        case 3: *_p++ = _val; __attribute__((__fallthrough__));
        case 2: *_p++ = _val; __attribute__((__fallthrough__));
        case 1: *_p++ = _val;
        } while ( --_n );
    }

}

extern void * SDL_memcpy_REAL( void *dst, const void *src, size_t len);

extern void * SDL_memmove_REAL( void *dst, const void *src, size_t len);
extern int SDL_memcmp_REAL(const void *s1, const void *s2, size_t len);

extern size_t SDL_wcslen_REAL(const wchar_t *wstr);
extern size_t SDL_wcslcpy_REAL( wchar_t *dst, const wchar_t *src, size_t maxlen);
extern size_t SDL_wcslcat_REAL( wchar_t *dst, const wchar_t *src, size_t maxlen);
extern wchar_t * SDL_wcsdup_REAL(const wchar_t *wstr);
extern wchar_t * SDL_wcsstr_REAL(const wchar_t *haystack, const wchar_t *needle);

extern int SDL_wcscmp_REAL(const wchar_t *str1, const wchar_t *str2);
extern int SDL_wcsncmp_REAL(const wchar_t *str1, const wchar_t *str2, size_t maxlen);
extern int SDL_wcscasecmp_REAL(const wchar_t *str1, const wchar_t *str2);
extern int SDL_wcsncasecmp_REAL(const wchar_t *str1, const wchar_t *str2, size_t len);

extern size_t SDL_strlen_REAL(const char *str);
extern size_t SDL_strlcpy_REAL( char *dst, const char *src, size_t maxlen);
extern size_t SDL_utf8strlcpy_REAL( char *dst, const char *src, size_t dst_bytes);
extern size_t SDL_strlcat_REAL( char *dst, const char *src, size_t maxlen);
extern char * SDL_strdup_REAL(const char *str);
extern char * SDL_strrev_REAL(char *str);
extern char * SDL_strupr_REAL(char *str);
extern char * SDL_strlwr_REAL(char *str);
extern char * SDL_strchr_REAL(const char *str, int c);
extern char * SDL_strrchr_REAL(const char *str, int c);
extern char * SDL_strstr_REAL(const char *haystack, const char *needle);
extern char * SDL_strtokr_REAL(char *s1, const char *s2, char **saveptr);
extern size_t SDL_utf8strlen_REAL(const char *str);
extern size_t SDL_utf8strnlen_REAL(const char *str, size_t bytes);

extern char * SDL_itoa_REAL(int value, char *str, int radix);
extern char * SDL_uitoa_REAL(unsigned int value, char *str, int radix);
extern char * SDL_ltoa_REAL(long value, char *str, int radix);
extern char * SDL_ultoa_REAL(unsigned long value, char *str, int radix);
extern char * SDL_lltoa_REAL(Sint64 value, char *str, int radix);
extern char * SDL_ulltoa_REAL(Uint64 value, char *str, int radix);

extern int SDL_atoi_REAL(const char *str);
extern double SDL_atof_REAL(const char *str);
extern long SDL_strtol_REAL(const char *str, char **endp, int base);
extern unsigned long SDL_strtoul_REAL(const char *str, char **endp, int base);
extern Sint64 SDL_strtoll_REAL(const char *str, char **endp, int base);
extern Uint64 SDL_strtoull_REAL(const char *str, char **endp, int base);
extern double SDL_strtod_REAL(const char *str, char **endp);

extern int SDL_strcmp_REAL(const char *str1, const char *str2);
extern int SDL_strncmp_REAL(const char *str1, const char *str2, size_t maxlen);
extern int SDL_strcasecmp_REAL(const char *str1, const char *str2);
extern int SDL_strncasecmp_REAL(const char *str1, const char *str2, size_t len);

extern int SDL_sscanf_REAL(const char *text, const char *fmt, ...) __attribute__ (( format( __scanf__, 2, 2 +1 )));
extern int SDL_vsscanf_REAL(const char *text, const char *fmt, va_list ap);
extern int SDL_snprintf_REAL( char *text, size_t maxlen, const char *fmt, ... ) __attribute__ (( format( __printf__, 3, 3 +1 )));
extern int SDL_vsnprintf_REAL( char *text, size_t maxlen, const char *fmt, va_list ap);
extern int SDL_asprintf_REAL(char **strp, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
extern int SDL_vasprintf_REAL(char **strp, const char *fmt, va_list ap);
# 637 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
extern double SDL_acos_REAL(double x);
extern float SDL_acosf_REAL(float x);
extern double SDL_asin_REAL(double x);
extern float SDL_asinf_REAL(float x);
extern double SDL_atan_REAL(double x);
extern float SDL_atanf_REAL(float x);
extern double SDL_atan2_REAL(double y, double x);
extern float SDL_atan2f_REAL(float y, float x);
extern double SDL_ceil_REAL(double x);
extern float SDL_ceilf_REAL(float x);
extern double SDL_copysign_REAL(double x, double y);
extern float SDL_copysignf_REAL(float x, float y);
extern double SDL_cos_REAL(double x);
extern float SDL_cosf_REAL(float x);
extern double SDL_exp_REAL(double x);
extern float SDL_expf_REAL(float x);
extern double SDL_fabs_REAL(double x);
extern float SDL_fabsf_REAL(float x);
extern double SDL_floor_REAL(double x);
extern float SDL_floorf_REAL(float x);
extern double SDL_trunc_REAL(double x);
extern float SDL_truncf_REAL(float x);
extern double SDL_fmod_REAL(double x, double y);
extern float SDL_fmodf_REAL(float x, float y);
extern double SDL_log_REAL(double x);
extern float SDL_logf_REAL(float x);
extern double SDL_log10_REAL(double x);
extern float SDL_log10f_REAL(float x);
extern double SDL_pow_REAL(double x, double y);
extern float SDL_powf_REAL(float x, float y);
extern double SDL_round_REAL(double x);
extern float SDL_roundf_REAL(float x);
extern long SDL_lround_REAL(double x);
extern long SDL_lroundf_REAL(float x);
extern double SDL_scalbn_REAL(double x, int n);
extern float SDL_scalbnf_REAL(float x, int n);
extern double SDL_sin_REAL(double x);
extern float SDL_sinf_REAL(float x);
extern double SDL_sqrt_REAL(double x);
extern float SDL_sqrtf_REAL(float x);
extern double SDL_tan_REAL(double x);
extern float SDL_tanf_REAL(float x);
# 687 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
typedef struct _SDL_iconv_t *SDL_iconv_t;
extern SDL_iconv_t SDL_iconv_open_REAL(const char *tocode,
                                                   const char *fromcode);
extern int SDL_iconv_close_REAL(SDL_iconv_t cd);
extern size_t SDL_iconv_REAL(SDL_iconv_t cd, const char **inbuf,
                                         size_t * inbytesleft, char **outbuf,
                                         size_t * outbytesleft);







extern char * SDL_iconv_string_REAL(const char *tocode,
                                               const char *fromcode,
                                               const char *inbuf,
                                               size_t inbytesleft);
# 757 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
__attribute__((always_inline)) static __inline__ void *SDL_memcpy4( void *dst, const void *src, size_t dwords)
{
    return SDL_memcpy_REAL(dst, src, dwords * 4);
}







__attribute__((always_inline)) static __inline__ int SDL_size_mul_overflow (size_t a,
                                            size_t b,
                                            size_t *ret)
{
    if (a != 0 && b > 
# 772 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 3 4
                     18446744073709551615UL 
# 772 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
                                  / a) {
        return -1;
    }
    *ret = a * b;
    return 0;
}
# 798 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
__attribute__((always_inline)) static __inline__ int SDL_size_add_overflow (size_t a,
                                            size_t b,
                                            size_t *ret)
{
    if (b > 
# 802 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 3 4
           18446744073709551615UL 
# 802 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
                        - a) {
        return -1;
    }
    *ret = a + b;
    return 0;
}
# 825 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h"
# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 826 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 2
# 26 "/export/home/maarten/work/SDL/build/include/SDL_assert.h" 2

# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 28 "/export/home/maarten/work/SDL/build/include/SDL_assert.h" 2
# 108 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
typedef enum
{
    SDL_ASSERTION_RETRY,
    SDL_ASSERTION_BREAK,
    SDL_ASSERTION_ABORT,
    SDL_ASSERTION_IGNORE,
    SDL_ASSERTION_ALWAYS_IGNORE
} SDL_AssertState;

typedef struct SDL_AssertData
{
    int always_ignore;
    unsigned int trigger_count;
    const char *condition;
    const char *filename;
    int linenum;
    const char *function;
    const struct SDL_AssertData *next;
} SDL_AssertData;




extern SDL_AssertState SDL_ReportAssertion_REAL(SDL_AssertData *,
                                                             const char *,
                                                             const char *, int)
# 142 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
;
# 202 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
typedef SDL_AssertState ( *SDL_AssertionHandler)(
                                 const SDL_AssertData* data, void* userdata);
# 226 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
extern void SDL_SetAssertionHandler_REAL(
                                            SDL_AssertionHandler handler,
                                            void *userdata);
# 245 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
extern SDL_AssertionHandler SDL_GetDefaultAssertionHandler_REAL(void);
# 268 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
extern SDL_AssertionHandler SDL_GetAssertionHandler_REAL(void **puserdata);
# 296 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
extern const SDL_AssertData * SDL_GetAssertionReport_REAL(void);
# 310 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
extern void SDL_ResetAssertionReport_REAL(void);
# 322 "/export/home/maarten/work/SDL/build/include/SDL_assert.h"
# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 323 "/export/home/maarten/work/SDL/build/include/SDL_assert.h" 2
# 124 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h" 2
# 1 "/export/home/maarten/work/SDL/build/include/SDL_log.h" 1
# 42 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 43 "/export/home/maarten/work/SDL/build/include/SDL_log.h" 2
# 64 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
typedef enum
{
    SDL_LOG_CATEGORY_APPLICATION,
    SDL_LOG_CATEGORY_ERROR,
    SDL_LOG_CATEGORY_ASSERT,
    SDL_LOG_CATEGORY_SYSTEM,
    SDL_LOG_CATEGORY_AUDIO,
    SDL_LOG_CATEGORY_VIDEO,
    SDL_LOG_CATEGORY_RENDER,
    SDL_LOG_CATEGORY_INPUT,
    SDL_LOG_CATEGORY_TEST,


    SDL_LOG_CATEGORY_RESERVED1,
    SDL_LOG_CATEGORY_RESERVED2,
    SDL_LOG_CATEGORY_RESERVED3,
    SDL_LOG_CATEGORY_RESERVED4,
    SDL_LOG_CATEGORY_RESERVED5,
    SDL_LOG_CATEGORY_RESERVED6,
    SDL_LOG_CATEGORY_RESERVED7,
    SDL_LOG_CATEGORY_RESERVED8,
    SDL_LOG_CATEGORY_RESERVED9,
    SDL_LOG_CATEGORY_RESERVED10,
# 96 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
    SDL_LOG_CATEGORY_CUSTOM
} SDL_LogCategory;




typedef enum
{
    SDL_LOG_PRIORITY_VERBOSE = 1,
    SDL_LOG_PRIORITY_DEBUG,
    SDL_LOG_PRIORITY_INFO,
    SDL_LOG_PRIORITY_WARN,
    SDL_LOG_PRIORITY_ERROR,
    SDL_LOG_PRIORITY_CRITICAL,
    SDL_NUM_LOG_PRIORITIES
} SDL_LogPriority;
# 123 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogSetAllPriority_REAL(SDL_LogPriority priority);
# 136 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogSetPriority_REAL(int category,
                                                SDL_LogPriority priority);
# 149 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern SDL_LogPriority SDL_LogGetPriority_REAL(int category);
# 161 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogResetPriorities_REAL(void);
# 182 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_Log_REAL( const char *fmt, ...) __attribute__ (( format( __printf__, 1, 1 +1 )));
# 203 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogVerbose_REAL(int category, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
# 224 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogDebug_REAL(int category, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
# 245 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogInfo_REAL(int category, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
# 266 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogWarn_REAL(int category, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
# 287 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogError_REAL(int category, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
# 308 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogCritical_REAL(int category, const char *fmt, ...) __attribute__ (( format( __printf__, 2, 2 +1 )));
# 330 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogMessage_REAL(int category,
                                            SDL_LogPriority priority,
                                            const char *fmt, ...) __attribute__ (( format( __printf__, 3, 3 +1 )));
# 353 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogMessageV_REAL(int category,
                                             SDL_LogPriority priority,
                                             const char *fmt, va_list ap);
# 367 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
typedef void ( *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message);
# 381 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogGetOutputFunction_REAL(SDL_LogOutputFunction *callback, void **userdata);
# 393 "/export/home/maarten/work/SDL/build/include/SDL_log.h"
extern void SDL_LogSetOutputFunction_REAL(SDL_LogOutputFunction callback, void *userdata);






# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 401 "/export/home/maarten/work/SDL/build/include/SDL_log.h" 2
# 125 "/export/home/maarten/work/SDL/src/core/linux/../../SDL_internal.h" 2
# 22 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 2
# 1 "/export/home/maarten/work/SDL/build/include/SDL_hints.h" 1
# 44 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 45 "/export/home/maarten/work/SDL/build/include/SDL_hints.h" 2
# 2294 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
typedef enum
{
    SDL_HINT_DEFAULT,
    SDL_HINT_NORMAL,
    SDL_HINT_OVERRIDE
} SDL_HintPriority;
# 2319 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern SDL_bool SDL_SetHintWithPriority_REAL(const char *name,
                                                         const char *value,
                                                         SDL_HintPriority priority);
# 2339 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern SDL_bool SDL_SetHint_REAL(const char *name,
                                             const char *value);
# 2357 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern SDL_bool SDL_ResetHint_REAL(const char *name);
# 2370 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern const char * SDL_GetHint_REAL(const char *name);
# 2385 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern SDL_bool SDL_GetHintBoolean_REAL(const char *name, SDL_bool default_value);
# 2395 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
typedef void ( *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue);
# 2409 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern void SDL_AddHintCallback_REAL(const char *name,
                                                 SDL_HintCallback callback,
                                                 void *userdata);
# 2425 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern void SDL_DelHintCallback_REAL(const char *name,
                                                 SDL_HintCallback callback,
                                                 void *userdata);
# 2436 "/export/home/maarten/work/SDL/build/include/SDL_hints.h"
extern void SDL_ClearHints_REAL(void);






# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 2444 "/export/home/maarten/work/SDL/build/include/SDL_hints.h" 2
# 23 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 2
# 1 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.h" 1
# 29 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.h"
# 1 "/export/home/maarten/work/SDL/build/include/SDL_stdinc.h" 1
# 30 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus.h" 1
# 29 "/usr/include/dbus-1.0/dbus/dbus.h"
# 1 "/usr/lib/amd64/dbus-1.0/include/dbus/dbus-arch-deps.h" 1
# 30 "/usr/lib/amd64/dbus-1.0/include/dbus/dbus-arch-deps.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 31 "/usr/lib/amd64/dbus-1.0/include/dbus/dbus-arch-deps.h" 2





__extension__ typedef long dbus_int64_t;
__extension__ typedef unsigned long dbus_uint64_t;




typedef int dbus_int32_t;
typedef unsigned int dbus_uint32_t;

typedef short dbus_int16_t;
typedef unsigned short dbus_uint16_t;
# 59 "/usr/lib/amd64/dbus-1.0/include/dbus/dbus-arch-deps.h"

# 30 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-address.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-address.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-types.h"
# 1 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stddef.h" 1 3 4
# 31 "/usr/include/dbus-1.0/dbus/dbus-types.h" 2
# 1 "/usr/lib/amd64/dbus-1.0/include/dbus/dbus-arch-deps.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-types.h" 2

typedef dbus_uint32_t dbus_unichar_t;

typedef dbus_uint32_t dbus_bool_t;
# 121 "/usr/include/dbus-1.0/dbus/dbus-types.h"
typedef struct
{
  dbus_uint32_t first32;
  dbus_uint32_t second32;
} DBus8ByteStruct;
# 137 "/usr/include/dbus-1.0/dbus/dbus-types.h"
typedef union
{
  unsigned char bytes[8];
  dbus_int16_t i16;
  dbus_uint16_t u16;
  dbus_int32_t i32;
  dbus_uint32_t u32;
  dbus_bool_t bool_val;
  dbus_int64_t i64;
  dbus_uint64_t u64;
  DBus8ByteStruct eight;
  double dbl;
  unsigned char byt;
  char *str;
  int fd;
} DBusBasicValue;
# 31 "/usr/include/dbus-1.0/dbus/dbus-address.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-errors.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-protocol.h" 1
# 34 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 2









typedef struct DBusError DBusError;




struct DBusError
{
  const char *name;
  const char *message;

  unsigned int dummy1 : 1;
  unsigned int dummy2 : 1;
  unsigned int dummy3 : 1;
  unsigned int dummy4 : 1;
  unsigned int dummy5 : 1;

  void *padding1;
};



__attribute__ ((__visibility__ ("default")))
void dbus_error_init (DBusError *error);
__attribute__ ((__visibility__ ("default")))
void dbus_error_free (DBusError *error);
__attribute__ ((__visibility__ ("default")))
void dbus_set_error (DBusError *error,
                                  const char *name,
                                  const char *message,
                                  ...) __attribute__((__format__ (__printf__, 3, 4)));
__attribute__ ((__visibility__ ("default")))
void dbus_set_error_const (DBusError *error,
                                  const char *name,
                                  const char *message);
__attribute__ ((__visibility__ ("default")))
void dbus_move_error (DBusError *src,
                                  DBusError *dest);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_error_has_name (const DBusError *error,
                                  const char *name);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_error_is_set (const DBusError *error);




# 32 "/usr/include/dbus-1.0/dbus/dbus-address.h" 2









typedef struct DBusAddressEntry DBusAddressEntry;

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_parse_address (const char *address,
        DBusAddressEntry ***entry_result,
        int *array_len,
        DBusError *error);
__attribute__ ((__visibility__ ("default")))
const char *dbus_address_entry_get_value (DBusAddressEntry *entry,
        const char *key);
__attribute__ ((__visibility__ ("default")))
const char *dbus_address_entry_get_method (DBusAddressEntry *entry);
__attribute__ ((__visibility__ ("default")))
void dbus_address_entries_free (DBusAddressEntry **entries);

__attribute__ ((__visibility__ ("default")))
char* dbus_address_escape_value (const char *value);
__attribute__ ((__visibility__ ("default")))
char* dbus_address_unescape_value (const char *value,
                                   DBusError *error);
# 74 "/usr/include/dbus-1.0/dbus/dbus-address.h"
static void
dbus_clear_address_entries (DBusAddressEntry ***pointer_to_entries)
{
  do { DBusAddressEntry * **_pp = (pointer_to_entries); DBusAddressEntry * *_value = *_pp; *_pp = 
# 77 "/usr/include/dbus-1.0/dbus/dbus-address.h" 3 4
 ((void *)0)
# 77 "/usr/include/dbus-1.0/dbus/dbus-address.h"
 ; if (_value != 
# 77 "/usr/include/dbus-1.0/dbus/dbus-address.h" 3 4
 ((void *)0)
# 77 "/usr/include/dbus-1.0/dbus/dbus-address.h"
 ) dbus_address_entries_free (_value); } while (0)
                                                      ;
}




# 31 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-bus.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-bus.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-memory.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-memory.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-memory.h" 2
# 1 "/usr/gcc/7/lib/gcc/i386-pc-solaris2.11/7.5.0/include/stddef.h" 1 3 4
# 32 "/usr/include/dbus-1.0/dbus/dbus-memory.h" 2








__attribute__ ((__visibility__ ("default")))
__attribute__((__malloc__))
__attribute__((__alloc_size__(1)))
void* dbus_malloc (size_t bytes);

__attribute__ ((__visibility__ ("default")))
__attribute__((__malloc__))
__attribute__((__alloc_size__(1)))
void* dbus_malloc0 (size_t bytes);

__attribute__ ((__visibility__ ("default")))
__attribute__((__alloc_size__(2)))
void* dbus_realloc (void *memory,
                          size_t bytes);
__attribute__ ((__visibility__ ("default")))
void dbus_free (void *memory);




__attribute__ ((__visibility__ ("default")))
void dbus_free_string_array (char **str_array);

typedef void (* DBusFreeFunction) (void *memory);

__attribute__ ((__visibility__ ("default")))
void dbus_shutdown (void);




# 33 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-message.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-message.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-message.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-message.h" 2
# 1 "/usr/lib/amd64/dbus-1.0/include/dbus/dbus-arch-deps.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus-message.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-memory.h" 1
# 34 "/usr/include/dbus-1.0/dbus/dbus-message.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 35 "/usr/include/dbus-1.0/dbus/dbus-message.h" 2









typedef struct DBusMessage DBusMessage;
# 56 "/usr/include/dbus-1.0/dbus/dbus-message.h"
typedef struct DBusMessageIter DBusMessageIter;




struct DBusMessageIter
{
  void *dummy1;
  void *dummy2;
  dbus_uint32_t dummy3;
  int dummy4;
  int dummy5;
  int dummy6;
  int dummy7;
  int dummy8;
  int dummy9;
  int dummy10;
  int dummy11;
  int pad1;
  void *pad2;
  void *pad3;
};
# 101 "/usr/include/dbus-1.0/dbus/dbus-message.h"
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_new (int message_type);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_new_method_call (const char *bus_name,
                                             const char *path,
                                             const char *iface,
                                             const char *method);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_new_method_return (DBusMessage *method_call);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_new_signal (const char *path,
                                             const char *iface,
                                             const char *name);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_new_error (DBusMessage *reply_to,
                                             const char *error_name,
                                             const char *error_message);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_new_error_printf (DBusMessage *reply_to,
                                             const char *error_name,
                                             const char *error_format,
                                             ...) __attribute__((__format__ (__printf__, 3, 4)));

__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_copy (const DBusMessage *message);

__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_ref (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
void dbus_message_unref (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
int dbus_message_get_type (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_path (DBusMessage *message,
                                             const char *object_path);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_path (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_has_path (DBusMessage *message,
                                             const char *object_path);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_interface (DBusMessage *message,
                                             const char *iface);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_interface (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_has_interface (DBusMessage *message,
                                             const char *iface);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_member (DBusMessage *message,
                                             const char *member);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_member (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_has_member (DBusMessage *message,
                                             const char *member);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_error_name (DBusMessage *message,
                                             const char *name);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_error_name (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_destination (DBusMessage *message,
                                             const char *destination);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_destination (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_sender (DBusMessage *message,
                                             const char *sender);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_sender (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_get_signature (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
void dbus_message_set_no_reply (DBusMessage *message,
                                             dbus_bool_t no_reply);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_get_no_reply (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_is_method_call (DBusMessage *message,
                                             const char *iface,
                                             const char *method);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_is_signal (DBusMessage *message,
                                             const char *iface,
                                             const char *signal_name);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_is_error (DBusMessage *message,
                                             const char *error_name);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_has_destination (DBusMessage *message,
                                             const char *bus_name);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_has_sender (DBusMessage *message,
                                             const char *unique_bus_name);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_has_signature (DBusMessage *message,
                                             const char *signature);
__attribute__ ((__visibility__ ("default")))
dbus_uint32_t dbus_message_get_serial (DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
void dbus_message_set_serial (DBusMessage *message,
                                             dbus_uint32_t serial);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_reply_serial (DBusMessage *message,
                                             dbus_uint32_t reply_serial);
__attribute__ ((__visibility__ ("default")))
dbus_uint32_t dbus_message_get_reply_serial (DBusMessage *message);

__attribute__ ((__visibility__ ("default")))
void dbus_message_set_auto_start (DBusMessage *message,
                                             dbus_bool_t auto_start);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_get_auto_start (DBusMessage *message);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_get_path_decomposed (DBusMessage *message,
                                                char ***path);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_append_args (DBusMessage *message,
            int first_arg_type,
            ...);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_append_args_valist (DBusMessage *message,
            int first_arg_type,
            va_list var_args);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_get_args (DBusMessage *message,
            DBusError *error,
            int first_arg_type,
            ...);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_get_args_valist (DBusMessage *message,
            DBusError *error,
            int first_arg_type,
            va_list var_args);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_contains_unix_fds (DBusMessage *message);

__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_init_closed (DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_init (DBusMessage *message,
                                                DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_has_next (DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_next (DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
char* dbus_message_iter_get_signature (DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
int dbus_message_iter_get_arg_type (DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
int dbus_message_iter_get_element_type (DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_recurse (DBusMessageIter *iter,
                                                DBusMessageIter *sub);
__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_get_basic (DBusMessageIter *iter,
                                                void *value);
__attribute__ ((__visibility__ ("default")))
int dbus_message_iter_get_element_count(DBusMessageIter *iter);





__attribute__ ((__visibility__ ("default")))
__attribute__ ((__deprecated__)) int dbus_message_iter_get_array_len (DBusMessageIter *iter);

__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_get_fixed_array (DBusMessageIter *iter,
                                                void *value,
                                                int *n_elements);


__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_init_append (DBusMessage *message,
                                                  DBusMessageIter *iter);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_append_basic (DBusMessageIter *iter,
                                                  int type,
                                                  const void *value);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_append_fixed_array (DBusMessageIter *iter,
                                                  int element_type,
                                                  const void *value,
                                                  int n_elements);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_open_container (DBusMessageIter *iter,
                                                  int type,
                                                  const char *contained_signature,
                                                  DBusMessageIter *sub);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_iter_close_container (DBusMessageIter *iter,
                                                  DBusMessageIter *sub);
__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_abandon_container (DBusMessageIter *iter,
                                                  DBusMessageIter *sub);

__attribute__ ((__visibility__ ("default")))
void dbus_message_iter_abandon_container_if_open (DBusMessageIter *iter,
                                                         DBusMessageIter *sub);

__attribute__ ((__visibility__ ("default")))
void dbus_message_lock (DBusMessage *message);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_set_error_from_message (DBusError *error,
                                           DBusMessage *message);


__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_allocate_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
void dbus_message_free_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_set_data (DBusMessage *message,
                                             dbus_int32_t slot,
                                             void *data,
                                             DBusFreeFunction free_data_func);
__attribute__ ((__visibility__ ("default")))
void* dbus_message_get_data (DBusMessage *message,
                                             dbus_int32_t slot);

__attribute__ ((__visibility__ ("default")))
int dbus_message_type_from_string (const char *type_str);
__attribute__ ((__visibility__ ("default")))
const char* dbus_message_type_to_string (int type);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_marshal (DBusMessage *msg,
                                     char **marshalled_data_p,
                                     int *len_p);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_message_demarshal (const char *str,
                                     int len,
                                     DBusError *error);

__attribute__ ((__visibility__ ("default")))
int dbus_message_demarshal_bytes_needed (const char *str,
                                                  int len);

__attribute__ ((__visibility__ ("default")))
void dbus_message_set_allow_interactive_authorization (DBusMessage *message,
    dbus_bool_t allow);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_message_get_allow_interactive_authorization (
    DBusMessage *message);
# 366 "/usr/include/dbus-1.0/dbus/dbus-message.h"
static void
dbus_clear_message (DBusMessage **pointer_to_message)
{
  do { DBusMessage **_pp = (pointer_to_message); DBusMessage *_value = *_pp; *_pp = 
# 369 "/usr/include/dbus-1.0/dbus/dbus-message.h" 3 4
 ((void *)0)
# 369 "/usr/include/dbus-1.0/dbus/dbus-message.h"
 ; if (_value != 
# 369 "/usr/include/dbus-1.0/dbus/dbus-message.h" 3 4
 ((void *)0)
# 369 "/usr/include/dbus-1.0/dbus/dbus-message.h"
 ) dbus_message_unref (_value); } while (0)
                                               ;
}




# 34 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-shared.h" 1
# 56 "/usr/include/dbus-1.0/dbus/dbus-shared.h"
typedef enum
{
  DBUS_BUS_SESSION,
  DBUS_BUS_SYSTEM,
  DBUS_BUS_STARTER
} DBusBusType;




typedef enum
{
  DBUS_HANDLER_RESULT_HANDLED,
  DBUS_HANDLER_RESULT_NOT_YET_HANDLED,
  DBUS_HANDLER_RESULT_NEED_MEMORY
} DBusHandlerResult;
# 35 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 2









typedef struct DBusWatch DBusWatch;

typedef struct DBusTimeout DBusTimeout;

typedef struct DBusPreallocatedSend DBusPreallocatedSend;

typedef struct DBusPendingCall DBusPendingCall;

typedef struct DBusConnection DBusConnection;

typedef struct DBusObjectPathVTable DBusObjectPathVTable;




typedef enum
{
  DBUS_WATCH_READABLE = 1 << 0,
  DBUS_WATCH_WRITABLE = 1 << 1,
  DBUS_WATCH_ERROR = 1 << 2,




  DBUS_WATCH_HANGUP = 1 << 3





} DBusWatchFlags;





typedef enum
{
  DBUS_DISPATCH_DATA_REMAINS,
  DBUS_DISPATCH_COMPLETE,
  DBUS_DISPATCH_NEED_MEMORY
} DBusDispatchStatus;






typedef dbus_bool_t (* DBusAddWatchFunction) (DBusWatch *watch,
                                                    void *data);




typedef void (* DBusWatchToggledFunction) (DBusWatch *watch,
                                                    void *data);




typedef void (* DBusRemoveWatchFunction) (DBusWatch *watch,
                                                    void *data);





typedef dbus_bool_t (* DBusAddTimeoutFunction) (DBusTimeout *timeout,
                                                    void *data);





typedef void (* DBusTimeoutToggledFunction) (DBusTimeout *timeout,
                                                    void *data);




typedef void (* DBusRemoveTimeoutFunction) (DBusTimeout *timeout,
                                                    void *data);



typedef void (* DBusDispatchStatusFunction) (DBusConnection *connection,
                                                    DBusDispatchStatus new_status,
                                                    void *data);




typedef void (* DBusWakeupMainFunction) (void *data);







typedef dbus_bool_t (* DBusAllowUnixUserFunction) (DBusConnection *connection,
                                                    unsigned long uid,
                                                    void *data);







typedef dbus_bool_t (* DBusAllowWindowsUserFunction) (DBusConnection *connection,
                                                       const char *user_sid,
                                                       void *data);






typedef void (* DBusPendingCallNotifyFunction) (DBusPendingCall *pending,
                                                void *user_data);





typedef DBusHandlerResult (* DBusHandleMessageFunction) (DBusConnection *connection,
                                                         DBusMessage *message,
                                                         void *user_data);
__attribute__ ((__visibility__ ("default")))
DBusConnection* dbus_connection_open (const char *address,
                                                                 DBusError *error);
__attribute__ ((__visibility__ ("default")))
DBusConnection* dbus_connection_open_private (const char *address,
                                                                 DBusError *error);
__attribute__ ((__visibility__ ("default")))
DBusConnection* dbus_connection_ref (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_unref (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_close (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_is_connected (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_is_authenticated (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_is_anonymous (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
char* dbus_connection_get_server_id (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_can_send_type (DBusConnection *connection,
                                                                 int type);

__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_exit_on_disconnect (DBusConnection *connection,
                                                                 dbus_bool_t exit_on_disconnect);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_flush (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_read_write_dispatch (DBusConnection *connection,
                                                                 int timeout_milliseconds);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_read_write (DBusConnection *connection,
                                                                 int timeout_milliseconds);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_connection_borrow_message (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_return_message (DBusConnection *connection,
                                                                 DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_steal_borrowed_message (DBusConnection *connection,
                                                                 DBusMessage *message);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_connection_pop_message (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
DBusDispatchStatus dbus_connection_get_dispatch_status (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
DBusDispatchStatus dbus_connection_dispatch (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_has_messages_to_send (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_send (DBusConnection *connection,
                                                                 DBusMessage *message,
                                                                 dbus_uint32_t *client_serial);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_send_with_reply (DBusConnection *connection,
                                                                 DBusMessage *message,
                                                                 DBusPendingCall **pending_return,
                                                                 int timeout_milliseconds);
__attribute__ ((__visibility__ ("default")))
DBusMessage * dbus_connection_send_with_reply_and_block (DBusConnection *connection,
                                                                 DBusMessage *message,
                                                                 int timeout_milliseconds,
                                                                 DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_set_watch_functions (DBusConnection *connection,
                                                                 DBusAddWatchFunction add_function,
                                                                 DBusRemoveWatchFunction remove_function,
                                                                 DBusWatchToggledFunction toggled_function,
                                                                 void *data,
                                                                 DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_set_timeout_functions (DBusConnection *connection,
                                                                 DBusAddTimeoutFunction add_function,
                                                                 DBusRemoveTimeoutFunction remove_function,
                                                                 DBusTimeoutToggledFunction toggled_function,
                                                                 void *data,
                                                                 DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_wakeup_main_function (DBusConnection *connection,
                                                                 DBusWakeupMainFunction wakeup_main_function,
                                                                 void *data,
                                                                 DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_dispatch_status_function (DBusConnection *connection,
                                                                 DBusDispatchStatusFunction function,
                                                                 void *data,
                                                                 DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_unix_user (DBusConnection *connection,
                                                                 unsigned long *uid);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_unix_process_id (DBusConnection *connection,
                                                                 unsigned long *pid);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_adt_audit_session_data (DBusConnection *connection,
                                                                 void **data,
                                                                 dbus_int32_t *data_size);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_unix_user_function (DBusConnection *connection,
                                                                 DBusAllowUnixUserFunction function,
                                                                 void *data,
                                                                 DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_windows_user (DBusConnection *connection,
                                                                 char **windows_sid_p);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_windows_user_function (DBusConnection *connection,
                                                                 DBusAllowWindowsUserFunction function,
                                                                 void *data,
                                                                 DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_allow_anonymous (DBusConnection *connection,
                                                                 dbus_bool_t value);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_route_peer_messages (DBusConnection *connection,
                                                                 dbus_bool_t value);




__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_add_filter (DBusConnection *connection,
                                           DBusHandleMessageFunction function,
                                           void *user_data,
                                           DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_remove_filter (DBusConnection *connection,
                                           DBusHandleMessageFunction function,
                                           void *user_data);



__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_allocate_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_free_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_set_data (DBusConnection *connection,
                                                dbus_int32_t slot,
                                                void *data,
                                                DBusFreeFunction free_data_func);
__attribute__ ((__visibility__ ("default")))
void* dbus_connection_get_data (DBusConnection *connection,
                                                dbus_int32_t slot);

__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_change_sigpipe (dbus_bool_t will_modify_sigpipe);

__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_max_message_size (DBusConnection *connection,
                                            long size);
__attribute__ ((__visibility__ ("default")))
long dbus_connection_get_max_message_size (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_max_received_size (DBusConnection *connection,
                                            long size);
__attribute__ ((__visibility__ ("default")))
long dbus_connection_get_max_received_size (DBusConnection *connection);

__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_max_message_unix_fds (DBusConnection *connection,
                                               long n);
__attribute__ ((__visibility__ ("default")))
long dbus_connection_get_max_message_unix_fds (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_set_max_received_unix_fds(DBusConnection *connection,
                                               long n);
__attribute__ ((__visibility__ ("default")))
long dbus_connection_get_max_received_unix_fds(DBusConnection *connection);

__attribute__ ((__visibility__ ("default")))
long dbus_connection_get_outgoing_size (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
long dbus_connection_get_outgoing_unix_fds (DBusConnection *connection);

__attribute__ ((__visibility__ ("default")))
DBusPreallocatedSend* dbus_connection_preallocate_send (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_free_preallocated_send (DBusConnection *connection,
                                                              DBusPreallocatedSend *preallocated);
__attribute__ ((__visibility__ ("default")))
void dbus_connection_send_preallocated (DBusConnection *connection,
                                                              DBusPreallocatedSend *preallocated,
                                                              DBusMessage *message,
                                                              dbus_uint32_t *client_serial);
# 368 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
typedef void (* DBusObjectPathUnregisterFunction) (DBusConnection *connection,
                                                                void *user_data);





typedef DBusHandlerResult (* DBusObjectPathMessageFunction) (DBusConnection *connection,
                                                                DBusMessage *message,
                                                                void *user_data);







struct DBusObjectPathVTable
{
  DBusObjectPathUnregisterFunction unregister_function;
  DBusObjectPathMessageFunction message_function;

  void (* dbus_internal_pad1) (void *);
  void (* dbus_internal_pad2) (void *);
  void (* dbus_internal_pad3) (void *);
  void (* dbus_internal_pad4) (void *);
};

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_try_register_object_path (DBusConnection *connection,
                                                      const char *path,
                                                      const DBusObjectPathVTable *vtable,
                                                      void *user_data,
                                                      DBusError *error);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_register_object_path (DBusConnection *connection,
                                                    const char *path,
                                                    const DBusObjectPathVTable *vtable,
                                                    void *user_data);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_try_register_fallback (DBusConnection *connection,
                                                   const char *path,
                                                   const DBusObjectPathVTable *vtable,
                                                   void *user_data,
                                                   DBusError *error);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_register_fallback (DBusConnection *connection,
                                                    const char *path,
                                                    const DBusObjectPathVTable *vtable,
                                                    void *user_data);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_unregister_object_path (DBusConnection *connection,
                                                    const char *path);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_object_path_data (DBusConnection *connection,
                                                    const char *path,
                                                    void **data_p);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_list_registered (DBusConnection *connection,
                                                    const char *parent_path,
                                                    char ***child_entries);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_unix_fd (DBusConnection *connection,
                                                    int *fd);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_connection_get_socket (DBusConnection *connection,
                                                    int *fd);
# 464 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
static void
dbus_clear_connection (DBusConnection **pointer_to_connection)
{
  do { DBusConnection **_pp = (pointer_to_connection); DBusConnection *_value = *_pp; *_pp = 
# 467 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 3 4
 ((void *)0)
# 467 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
 ; if (_value != 
# 467 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 3 4
 ((void *)0)
# 467 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
 ) dbus_connection_unref (_value); } while (0)
                                                  ;
}
# 480 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
__attribute__ ((__visibility__ ("default")))
__attribute__ ((__deprecated__)) int dbus_watch_get_fd (DBusWatch *watch);


__attribute__ ((__visibility__ ("default")))
int dbus_watch_get_unix_fd (DBusWatch *watch);
__attribute__ ((__visibility__ ("default")))
int dbus_watch_get_socket (DBusWatch *watch);
__attribute__ ((__visibility__ ("default")))
unsigned int dbus_watch_get_flags (DBusWatch *watch);
__attribute__ ((__visibility__ ("default")))
void* dbus_watch_get_data (DBusWatch *watch);
__attribute__ ((__visibility__ ("default")))
void dbus_watch_set_data (DBusWatch *watch,
                                     void *data,
                                     DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_watch_handle (DBusWatch *watch,
                                     unsigned int flags);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_watch_get_enabled (DBusWatch *watch);
# 509 "/usr/include/dbus-1.0/dbus/dbus-connection.h"
__attribute__ ((__visibility__ ("default")))
int dbus_timeout_get_interval (DBusTimeout *timeout);
__attribute__ ((__visibility__ ("default")))
void* dbus_timeout_get_data (DBusTimeout *timeout);
__attribute__ ((__visibility__ ("default")))
void dbus_timeout_set_data (DBusTimeout *timeout,
                                       void *data,
                                       DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_timeout_handle (DBusTimeout *timeout);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_timeout_get_enabled (DBusTimeout *timeout);




# 31 "/usr/include/dbus-1.0/dbus/dbus-bus.h" 2








__attribute__ ((__visibility__ ("default")))
DBusConnection *dbus_bus_get (DBusBusType type,
        DBusError *error);
__attribute__ ((__visibility__ ("default")))
DBusConnection *dbus_bus_get_private (DBusBusType type,
        DBusError *error);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_bus_register (DBusConnection *connection,
        DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_bus_set_unique_name (DBusConnection *connection,
        const char *unique_name);
__attribute__ ((__visibility__ ("default")))
const char* dbus_bus_get_unique_name (DBusConnection *connection);
__attribute__ ((__visibility__ ("default")))
unsigned long dbus_bus_get_unix_user (DBusConnection *connection,
                      const char *name,
                                           DBusError *error);
__attribute__ ((__visibility__ ("default")))
char* dbus_bus_get_id (DBusConnection *connection,
                                           DBusError *error);
__attribute__ ((__visibility__ ("default")))
int dbus_bus_request_name (DBusConnection *connection,
        const char *name,
        unsigned int flags,
        DBusError *error);
__attribute__ ((__visibility__ ("default")))
int dbus_bus_release_name (DBusConnection *connection,
        const char *name,
        DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_bus_name_has_owner (DBusConnection *connection,
        const char *name,
        DBusError *error);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_bus_start_service_by_name (DBusConnection *connection,
                                                const char *name,
                                                dbus_uint32_t flags,
                                                dbus_uint32_t *reply,
                                                DBusError *error);

__attribute__ ((__visibility__ ("default")))
void dbus_bus_add_match (DBusConnection *connection,
                                           const char *rule,
                                           DBusError *error);
__attribute__ ((__visibility__ ("default")))
void dbus_bus_remove_match (DBusConnection *connection,
                                           const char *rule,
                                           DBusError *error);




# 32 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 34 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 35 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-message.h" 1
# 36 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-misc.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-misc.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-misc.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-misc.h" 2







__attribute__ ((__visibility__ ("default")))
char* dbus_get_local_machine_id (void);

__attribute__ ((__visibility__ ("default")))
void dbus_get_version (int *major_version_p,
                                        int *minor_version_p,
                                        int *micro_version_p);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_setenv (const char *variable,
                                        const char *value);

__attribute__ ((__visibility__ ("default")))
char *dbus_try_get_local_machine_id (DBusError *error);




# 37 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h" 2


# 44 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h"
__attribute__ ((__visibility__ ("default")))
DBusPendingCall* dbus_pending_call_ref (DBusPendingCall *pending);
__attribute__ ((__visibility__ ("default")))
void dbus_pending_call_unref (DBusPendingCall *pending);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_pending_call_set_notify (DBusPendingCall *pending,
                                              DBusPendingCallNotifyFunction function,
                                              void *user_data,
                                              DBusFreeFunction free_user_data);
__attribute__ ((__visibility__ ("default")))
void dbus_pending_call_cancel (DBusPendingCall *pending);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_pending_call_get_completed (DBusPendingCall *pending);
__attribute__ ((__visibility__ ("default")))
DBusMessage* dbus_pending_call_steal_reply (DBusPendingCall *pending);
__attribute__ ((__visibility__ ("default")))
void dbus_pending_call_block (DBusPendingCall *pending);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_pending_call_allocate_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
void dbus_pending_call_free_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_pending_call_set_data (DBusPendingCall *pending,
                                                  dbus_int32_t slot,
                                                  void *data,
                                                  DBusFreeFunction free_data_func);
__attribute__ ((__visibility__ ("default")))
void* dbus_pending_call_get_data (DBusPendingCall *pending,
                                                  dbus_int32_t slot);
# 87 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h"
static void
dbus_clear_pending_call (DBusPendingCall **pointer_to_pending_call)
{
  do { DBusPendingCall **_pp = (pointer_to_pending_call); DBusPendingCall *_value = *_pp; *_pp = 
# 90 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h" 3 4
 ((void *)0)
# 90 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h"
 ; if (_value != 
# 90 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h" 3 4
 ((void *)0)
# 90 "/usr/include/dbus-1.0/dbus/dbus-pending-call.h"
 ) dbus_pending_call_unref (_value); } while (0)
                                                    ;
}




# 38 "/usr/include/dbus-1.0/dbus/dbus.h" 2

# 1 "/usr/include/dbus-1.0/dbus/dbus-server.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-server.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-server.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-server.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-message.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus-server.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-connection.h" 1
# 34 "/usr/include/dbus-1.0/dbus/dbus-server.h" 2









typedef struct DBusServer DBusServer;




typedef void (* DBusNewConnectionFunction) (DBusServer *server,
                                            DBusConnection *new_connection,
                                            void *data);

__attribute__ ((__visibility__ ("default")))
DBusServer* dbus_server_listen (const char *address,
                                          DBusError *error);
__attribute__ ((__visibility__ ("default")))
DBusServer* dbus_server_ref (DBusServer *server);
__attribute__ ((__visibility__ ("default")))
void dbus_server_unref (DBusServer *server);
__attribute__ ((__visibility__ ("default")))
void dbus_server_disconnect (DBusServer *server);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_server_get_is_connected (DBusServer *server);
__attribute__ ((__visibility__ ("default")))
char* dbus_server_get_address (DBusServer *server);
__attribute__ ((__visibility__ ("default")))
char* dbus_server_get_id (DBusServer *server);
__attribute__ ((__visibility__ ("default")))
void dbus_server_set_new_connection_function (DBusServer *server,
                                                     DBusNewConnectionFunction function,
                                                     void *data,
                                                     DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_server_set_watch_functions (DBusServer *server,
                                                     DBusAddWatchFunction add_function,
                                                     DBusRemoveWatchFunction remove_function,
                                                     DBusWatchToggledFunction toggled_function,
                                                     void *data,
                                                     DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_server_set_timeout_functions (DBusServer *server,
                                                     DBusAddTimeoutFunction add_function,
                                                     DBusRemoveTimeoutFunction remove_function,
                                                     DBusTimeoutToggledFunction toggled_function,
                                                     void *data,
                                                     DBusFreeFunction free_data_function);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_server_set_auth_mechanisms (DBusServer *server,
                                                     const char **mechanisms);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_server_allocate_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
void dbus_server_free_data_slot (dbus_int32_t *slot_p);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_server_set_data (DBusServer *server,
                                            int slot,
                                            void *data,
                                            DBusFreeFunction free_data_func);
__attribute__ ((__visibility__ ("default")))
void* dbus_server_get_data (DBusServer *server,
                                            int slot);
# 115 "/usr/include/dbus-1.0/dbus/dbus-server.h"
static void
dbus_clear_server (DBusServer **pointer_to_server)
{
  do { DBusServer **_pp = (pointer_to_server); DBusServer *_value = *_pp; *_pp = 
# 118 "/usr/include/dbus-1.0/dbus/dbus-server.h" 3 4
 ((void *)0)
# 118 "/usr/include/dbus-1.0/dbus/dbus-server.h"
 ; if (_value != 
# 118 "/usr/include/dbus-1.0/dbus/dbus-server.h" 3 4
 ((void *)0)
# 118 "/usr/include/dbus-1.0/dbus/dbus-server.h"
 ) dbus_server_unref (_value); } while (0);
}




# 40 "/usr/include/dbus-1.0/dbus/dbus.h" 2

# 1 "/usr/include/dbus-1.0/dbus/dbus-signature.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-signature.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-signature.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-signature.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus-signature.h" 2


# 44 "/usr/include/dbus-1.0/dbus/dbus-signature.h"
typedef struct
{
  void *dummy1;
  void *dummy2;
  dbus_uint32_t dummy8;
  int dummy12;
  int dummy17;
} DBusSignatureIter;

__attribute__ ((__visibility__ ("default")))
void dbus_signature_iter_init (DBusSignatureIter *iter,
            const char *signature);

__attribute__ ((__visibility__ ("default")))
int dbus_signature_iter_get_current_type (const DBusSignatureIter *iter);

__attribute__ ((__visibility__ ("default")))
char * dbus_signature_iter_get_signature (const DBusSignatureIter *iter);

__attribute__ ((__visibility__ ("default")))
int dbus_signature_iter_get_element_type (const DBusSignatureIter *iter);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_signature_iter_next (DBusSignatureIter *iter);

__attribute__ ((__visibility__ ("default")))
void dbus_signature_iter_recurse (const DBusSignatureIter *iter,
            DBusSignatureIter *subiter);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_signature_validate (const char *signature,
            DBusError *error);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_signature_validate_single (const char *signature,
            DBusError *error);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_type_is_valid (int typecode);

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_type_is_basic (int typecode);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_type_is_container (int typecode);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_type_is_fixed (int typecode);




# 42 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-syntax.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-syntax.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-syntax.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 33 "/usr/include/dbus-1.0/dbus/dbus-syntax.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-errors.h" 1
# 34 "/usr/include/dbus-1.0/dbus/dbus-syntax.h" 2



__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_validate_path (const char *path,
                                                      DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_validate_interface (const char *name,
                                                      DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_validate_member (const char *name,
                                                      DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_validate_error_name (const char *name,
                                                      DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_validate_bus_name (const char *name,
                                                      DBusError *error);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_validate_utf8 (const char *alleged_utf8,
                                                      DBusError *error);


# 43 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-threads.h" 1
# 30 "/usr/include/dbus-1.0/dbus/dbus-threads.h"
# 1 "/usr/include/dbus-1.0/dbus/dbus-macros.h" 1
# 31 "/usr/include/dbus-1.0/dbus/dbus-threads.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 32 "/usr/include/dbus-1.0/dbus/dbus-threads.h" 2









typedef struct DBusMutex DBusMutex;

typedef struct DBusCondVar DBusCondVar;


typedef DBusMutex* (* DBusMutexNewFunction) (void);

typedef void (* DBusMutexFreeFunction) (DBusMutex *mutex);

typedef dbus_bool_t (* DBusMutexLockFunction) (DBusMutex *mutex);

typedef dbus_bool_t (* DBusMutexUnlockFunction) (DBusMutex *mutex);
# 61 "/usr/include/dbus-1.0/dbus/dbus-threads.h"
typedef DBusMutex* (* DBusRecursiveMutexNewFunction) (void);


typedef void (* DBusRecursiveMutexFreeFunction) (DBusMutex *mutex);



typedef void (* DBusRecursiveMutexLockFunction) (DBusMutex *mutex);



typedef void (* DBusRecursiveMutexUnlockFunction) (DBusMutex *mutex);




typedef DBusCondVar* (* DBusCondVarNewFunction) (void);


typedef void (* DBusCondVarFreeFunction) (DBusCondVar *cond);
# 92 "/usr/include/dbus-1.0/dbus/dbus-threads.h"
typedef void (* DBusCondVarWaitFunction) (DBusCondVar *cond,
         DBusMutex *mutex);







typedef dbus_bool_t (* DBusCondVarWaitTimeoutFunction) (DBusCondVar *cond,
         DBusMutex *mutex,
         int timeout_milliseconds);




typedef void (* DBusCondVarWakeOneFunction) (DBusCondVar *cond);





typedef void (* DBusCondVarWakeAllFunction) (DBusCondVar *cond);






typedef enum
{
  DBUS_THREAD_FUNCTIONS_MUTEX_NEW_MASK = 1 << 0,
  DBUS_THREAD_FUNCTIONS_MUTEX_FREE_MASK = 1 << 1,
  DBUS_THREAD_FUNCTIONS_MUTEX_LOCK_MASK = 1 << 2,
  DBUS_THREAD_FUNCTIONS_MUTEX_UNLOCK_MASK = 1 << 3,
  DBUS_THREAD_FUNCTIONS_CONDVAR_NEW_MASK = 1 << 4,
  DBUS_THREAD_FUNCTIONS_CONDVAR_FREE_MASK = 1 << 5,
  DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_MASK = 1 << 6,
  DBUS_THREAD_FUNCTIONS_CONDVAR_WAIT_TIMEOUT_MASK = 1 << 7,
  DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ONE_MASK = 1 << 8,
  DBUS_THREAD_FUNCTIONS_CONDVAR_WAKE_ALL_MASK = 1 << 9,
  DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_NEW_MASK = 1 << 10,
  DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_FREE_MASK = 1 << 11,
  DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_LOCK_MASK = 1 << 12,
  DBUS_THREAD_FUNCTIONS_RECURSIVE_MUTEX_UNLOCK_MASK = 1 << 13,
  DBUS_THREAD_FUNCTIONS_ALL_MASK = (1 << 14) - 1
} DBusThreadFunctionsMask;
# 152 "/usr/include/dbus-1.0/dbus/dbus-threads.h"
typedef struct
{
  unsigned int mask;

  DBusMutexNewFunction mutex_new;
  DBusMutexFreeFunction mutex_free;
  DBusMutexLockFunction mutex_lock;
  DBusMutexUnlockFunction mutex_unlock;

  DBusCondVarNewFunction condvar_new;
  DBusCondVarFreeFunction condvar_free;
  DBusCondVarWaitFunction condvar_wait;
  DBusCondVarWaitTimeoutFunction condvar_wait_timeout;
  DBusCondVarWakeOneFunction condvar_wake_one;
  DBusCondVarWakeAllFunction condvar_wake_all;

  DBusRecursiveMutexNewFunction recursive_mutex_new;
  DBusRecursiveMutexFreeFunction recursive_mutex_free;
  DBusRecursiveMutexLockFunction recursive_mutex_lock;
  DBusRecursiveMutexUnlockFunction recursive_mutex_unlock;

  void (* padding1) (void);
  void (* padding2) (void);
  void (* padding3) (void);
  void (* padding4) (void);

} DBusThreadFunctions;

__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_threads_init (const DBusThreadFunctions *functions);
__attribute__ ((__visibility__ ("default")))
dbus_bool_t dbus_threads_init_default (void);




# 44 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 1 "/usr/include/dbus-1.0/dbus/dbus-types.h" 1
# 45 "/usr/include/dbus-1.0/dbus/dbus.h" 2
# 31 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.h" 2


typedef struct SDL_DBusContext {
    DBusConnection *session_conn;
    DBusConnection *system_conn;

    DBusConnection *(*bus_get_private)(DBusBusType, DBusError *);
    dbus_bool_t (*bus_register)(DBusConnection *, DBusError *);
    void (*bus_add_match)(DBusConnection *, const char *, DBusError *);
    DBusConnection * (*connection_open_private)(const char *, DBusError *);
    void (*connection_set_exit_on_disconnect)(DBusConnection *, dbus_bool_t);
    dbus_bool_t (*connection_get_is_connected)(DBusConnection *);
    dbus_bool_t (*connection_add_filter)(DBusConnection *, DBusHandleMessageFunction, void *, DBusFreeFunction);
    dbus_bool_t (*connection_try_register_object_path)(DBusConnection *, const char *,
        const DBusObjectPathVTable *, void *, DBusError *);
    dbus_bool_t (*connection_send)(DBusConnection *, DBusMessage *, dbus_uint32_t *);
    DBusMessage *(*connection_send_with_reply_and_block)(DBusConnection *, DBusMessage *, int, DBusError *);
    void (*connection_close)(DBusConnection *);
    void (*connection_unref)(DBusConnection *);
    void (*connection_flush)(DBusConnection *);
    dbus_bool_t (*connection_read_write)(DBusConnection *, int);
    DBusDispatchStatus (*connection_dispatch)(DBusConnection *);
    dbus_bool_t (*message_is_signal)(DBusMessage *, const char *, const char *);
    DBusMessage *(*message_new_method_call)(const char *, const char *, const char *, const char *);
    dbus_bool_t (*message_append_args)(DBusMessage *, int, ...);
    dbus_bool_t (*message_append_args_valist)(DBusMessage *, int, va_list);
    void (*message_iter_init_append)(DBusMessage *, DBusMessageIter *);
    dbus_bool_t (*message_iter_open_container)(DBusMessageIter *, int, const char *, DBusMessageIter *);
    dbus_bool_t (*message_iter_append_basic)(DBusMessageIter *, int, const void *);
    dbus_bool_t (*message_iter_close_container)(DBusMessageIter *, DBusMessageIter *);
    dbus_bool_t (*message_get_args)(DBusMessage *, DBusError *, int, ...);
    dbus_bool_t (*message_get_args_valist)(DBusMessage *, DBusError *, int, va_list);
    dbus_bool_t (*message_iter_init)(DBusMessage *, DBusMessageIter *);
    dbus_bool_t (*message_iter_next)(DBusMessageIter *);
    void (*message_iter_get_basic)(DBusMessageIter *, void *);
    int (*message_iter_get_arg_type)(DBusMessageIter *);
    void (*message_iter_recurse)(DBusMessageIter *, DBusMessageIter *);
    void (*message_unref)(DBusMessage *);
    dbus_bool_t (*threads_init_default)(void);
    void (*error_init)(DBusError *);
    dbus_bool_t (*error_is_set)(const DBusError *);
    void (*error_free)(DBusError *);
    char *(*get_local_machine_id)(void);
    void (*free)(void *);
    void (*free_string_array)(char **);
    void (*shutdown)(void);

} SDL_DBusContext;

extern void SDL_DBus_Init(void);
extern void SDL_DBus_Quit(void);
extern SDL_DBusContext * SDL_DBus_GetContext(void);


extern SDL_bool SDL_DBus_CallMethod(const char *node, const char *path, const char *interface, const char *method, ...);
extern SDL_bool SDL_DBus_CallVoidMethod(const char *node, const char *path, const char *interface, const char *method, ...);
extern SDL_bool SDL_DBus_QueryProperty(const char *node, const char *path, const char *interface, const char *property, const int expectedtype, void *result);


extern SDL_bool SDL_DBus_CallMethodOnConnection(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, ...);
extern SDL_bool SDL_DBus_CallVoidMethodOnConnection(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, ...);
extern SDL_bool SDL_DBus_QueryPropertyOnConnection(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *property, const int expectedtype, void *result);

extern void SDL_DBus_ScreensaverTickle(void);
extern SDL_bool SDL_DBus_ScreensaverInhibit(SDL_bool inhibit);
# 24 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 2
# 1 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h" 1
# 63 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
# 1 "/export/home/maarten/work/SDL/build/include/SDL_platform.h" 1
# 64 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h" 2

# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 66 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h" 2
# 89 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
typedef int SDL_SpinLock;
# 106 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern SDL_bool SDL_AtomicTryLock_REAL(SDL_SpinLock *lock);
# 121 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern void SDL_AtomicLock_REAL(SDL_SpinLock *lock);
# 138 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern void SDL_AtomicUnlock_REAL(SDL_SpinLock *lock);
# 183 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern void SDL_MemoryBarrierReleaseFunction_REAL(void);
extern void SDL_MemoryBarrierAcquireFunction_REAL(void);
# 264 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
typedef struct { int value; } SDL_atomic_t;
# 283 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern SDL_bool SDL_AtomicCAS_REAL(SDL_atomic_t *a, int oldval, int newval);
# 301 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern int SDL_AtomicSet_REAL(SDL_atomic_t *a, int v);
# 316 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern int SDL_AtomicGet_REAL(SDL_atomic_t *a);
# 335 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern int SDL_AtomicAdd_REAL(SDL_atomic_t *a, int v);
# 371 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern SDL_bool SDL_AtomicCASPtr_REAL(void **a, void *oldval, void *newval);
# 388 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern void* SDL_AtomicSetPtr_REAL(void **a, void* v);
# 404 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h"
extern void* SDL_AtomicGetPtr_REAL(void **a);






# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 412 "/export/home/maarten/work/SDL/build/include/SDL_atomic.h" 2
# 25 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 2
# 1 "/export/home/maarten/work/SDL/src/core/linux/../../stdlib/SDL_vacopy.h" 1
# 26 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 2



# 1 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h" 1
# 45 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h"
# 1 "/export/home/maarten/work/SDL/build/include/SDL_error.h" 1
# 33 "/export/home/maarten/work/SDL/build/include/SDL_error.h"
# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 34 "/export/home/maarten/work/SDL/build/include/SDL_error.h" 2
# 66 "/export/home/maarten/work/SDL/build/include/SDL_error.h"
extern int SDL_SetError_REAL( const char *fmt, ...) __attribute__ (( format( __printf__, 1, 1 +1 )));
# 103 "/export/home/maarten/work/SDL/build/include/SDL_error.h"
extern const char * SDL_GetError_REAL(void);
# 120 "/export/home/maarten/work/SDL/build/include/SDL_error.h"
extern char * SDL_GetErrorMsg_REAL(char *errstr, int maxlen);
# 130 "/export/home/maarten/work/SDL/build/include/SDL_error.h"
extern void SDL_ClearError_REAL(void);
# 142 "/export/home/maarten/work/SDL/build/include/SDL_error.h"
typedef enum
{
    SDL_ENOMEM,
    SDL_EFREAD,
    SDL_EFWRITE,
    SDL_EFSEEK,
    SDL_UNSUPPORTED,
    SDL_LASTERROR
} SDL_errorcode;

extern int SDL_Error_REAL(SDL_errorcode code);






# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 160 "/export/home/maarten/work/SDL/build/include/SDL_error.h" 2
# 46 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h" 2

# 1 "/export/home/maarten/work/SDL/build/include/begin_code.h" 1
# 48 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h" 2
# 65 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h"
extern void * SDL_LoadObject_REAL(const char *sofile);
# 92 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h"
extern void * SDL_LoadFunction_REAL(void *handle,
                                               const char *name);
# 105 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h"
extern void SDL_UnloadObject_REAL(void *handle);





# 1 "/export/home/maarten/work/SDL/build/include/close_code.h" 1
# 112 "/export/home/maarten/work/SDL/build/include/SDL_loadso.h" 2
# 30 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 2
static const char *dbus_library = "libdbus-1.so.3";
static void *dbus_handle = 
# 31 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                          ((void *)0)
# 31 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                              ;
static unsigned int screensaver_cookie = 0;
static SDL_DBusContext dbus;

static int
LoadDBUSSyms(void)
{






    if (!(dbus.bus_get_private = SDL_LoadFunction_REAL(dbus_handle, "dbus_bus_get_private"))) return -1;
    if (!(dbus.bus_register = SDL_LoadFunction_REAL(dbus_handle, "dbus_bus_register"))) return -1;
    if (!(dbus.bus_add_match = SDL_LoadFunction_REAL(dbus_handle, "dbus_bus_add_match"))) return -1;
    if (!(dbus.connection_open_private = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_open_private"))) return -1;
    if (!(dbus.connection_set_exit_on_disconnect = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_set_exit_on_disconnect"))) return -1;
    if (!(dbus.connection_get_is_connected = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_get_is_connected"))) return -1;
    if (!(dbus.connection_add_filter = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_add_filter"))) return -1;
    if (!(dbus.connection_try_register_object_path = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_try_register_object_path"))) return -1;
    if (!(dbus.connection_send = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_send"))) return -1;
    if (!(dbus.connection_send_with_reply_and_block = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_send_with_reply_and_block"))) return -1;
    if (!(dbus.connection_close = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_close"))) return -1;
    if (!(dbus.connection_unref = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_unref"))) return -1;
    if (!(dbus.connection_flush = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_flush"))) return -1;
    if (!(dbus.connection_read_write = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_read_write"))) return -1;
    if (!(dbus.connection_dispatch = SDL_LoadFunction_REAL(dbus_handle, "dbus_connection_dispatch"))) return -1;
    if (!(dbus.message_is_signal = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_is_signal"))) return -1;
    if (!(dbus.message_new_method_call = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_new_method_call"))) return -1;
    if (!(dbus.message_append_args = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_append_args"))) return -1;
    if (!(dbus.message_append_args_valist = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_append_args_valist"))) return -1;
    if (!(dbus.message_iter_init_append = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_init_append"))) return -1;
    if (!(dbus.message_iter_open_container = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_open_container"))) return -1;
    if (!(dbus.message_iter_append_basic = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_append_basic"))) return -1;
    if (!(dbus.message_iter_close_container = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_close_container"))) return -1;
    if (!(dbus.message_get_args = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_get_args"))) return -1;
    if (!(dbus.message_get_args_valist = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_get_args_valist"))) return -1;
    if (!(dbus.message_iter_init = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_init"))) return -1;
    if (!(dbus.message_iter_next = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_next"))) return -1;
    if (!(dbus.message_iter_get_basic = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_get_basic"))) return -1;
    if (!(dbus.message_iter_get_arg_type = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_get_arg_type"))) return -1;
    if (!(dbus.message_iter_recurse = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_iter_recurse"))) return -1;
    if (!(dbus.message_unref = SDL_LoadFunction_REAL(dbus_handle, "dbus_message_unref"))) return -1;
    if (!(dbus.threads_init_default = SDL_LoadFunction_REAL(dbus_handle, "dbus_threads_init_default"))) return -1;
    if (!(dbus.error_init = SDL_LoadFunction_REAL(dbus_handle, "dbus_error_init"))) return -1;
    if (!(dbus.error_is_set = SDL_LoadFunction_REAL(dbus_handle, "dbus_error_is_set"))) return -1;
    if (!(dbus.error_free = SDL_LoadFunction_REAL(dbus_handle, "dbus_error_free"))) return -1;
    if (!(dbus.get_local_machine_id = SDL_LoadFunction_REAL(dbus_handle, "dbus_get_local_machine_id"))) return -1;
    if (!(dbus.free = SDL_LoadFunction_REAL(dbus_handle, "dbus_free"))) return -1;
    if (!(dbus.free_string_array = SDL_LoadFunction_REAL(dbus_handle, "dbus_free_string_array"))) return -1;
    if (!(dbus.shutdown = SDL_LoadFunction_REAL(dbus_handle, "dbus_shutdown"))) return -1;




    return 0;
}

static void
UnloadDBUSLibrary(void)
{
    if (dbus_handle != 
# 93 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                      ((void *)0)
# 93 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                          ) {
        SDL_UnloadObject_REAL(dbus_handle);
        dbus_handle = 
# 95 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                     ((void *)0)
# 95 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                         ;
    }
}

static int
LoadDBUSLibrary(void)
{
    int retval = 0;
    if (dbus_handle == 
# 103 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                      ((void *)0)
# 103 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                          ) {
        dbus_handle = SDL_LoadObject_REAL(dbus_library);
        if (dbus_handle == 
# 105 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                          ((void *)0)
# 105 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                              ) {
            retval = -1;

        } else {
            retval = LoadDBUSSyms();
            if (retval < 0) {
                UnloadDBUSLibrary();
            }
        }
    }

    return retval;
}


static SDL_SpinLock spinlock_dbus_init = 0;


static void
SDL_DBus_Init_Spinlocked(void)
{
    static SDL_bool is_dbus_available = SDL_TRUE;
    if (!is_dbus_available) {
        return;
    }

    if (!dbus.session_conn) {
        DBusError err;

        if (LoadDBUSLibrary() == -1) {
            is_dbus_available = SDL_FALSE;
            return;
        }

        if (!dbus.threads_init_default()) {
            is_dbus_available = SDL_FALSE;
            return;
        }

        dbus.error_init(&err);


        dbus.session_conn = dbus.bus_get_private(DBUS_BUS_SESSION, &err);
        if (dbus.error_is_set(&err)) {
            dbus.error_free(&err);
            SDL_DBus_Quit();
            is_dbus_available = SDL_FALSE;
            return;
        }
        dbus.connection_set_exit_on_disconnect(dbus.session_conn, 0);


        dbus.system_conn = dbus.bus_get_private(DBUS_BUS_SYSTEM, &err);
        if (!dbus.error_is_set(&err)) {
            dbus.connection_set_exit_on_disconnect(dbus.system_conn, 0);
        }

        dbus.error_free(&err);
    }
}

void
SDL_DBus_Init(void)
{
    SDL_AtomicLock_REAL(&spinlock_dbus_init);
    SDL_DBus_Init_Spinlocked();
    SDL_AtomicUnlock_REAL(&spinlock_dbus_init);
}

void
SDL_DBus_Quit(void)
{
    if (dbus.system_conn) {
        dbus.connection_close(dbus.system_conn);
        dbus.connection_unref(dbus.system_conn);
    }
    if (dbus.session_conn) {
        dbus.connection_close(dbus.session_conn);
        dbus.connection_unref(dbus.session_conn);
    }
# 193 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
    SDL_memset_REAL(&(dbus), 0, sizeof((dbus)));
    UnloadDBUSLibrary();
}

SDL_DBusContext *
SDL_DBus_GetContext(void)
{
    if (!dbus_handle || !dbus.session_conn) {
        SDL_DBus_Init();
    }

    return (dbus_handle && dbus.session_conn) ? &dbus : 
# 204 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                       ((void *)0)
# 204 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                           ;
}

static SDL_bool
SDL_DBus_CallMethodInternal(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, va_list ap)
{
    SDL_bool retval = SDL_FALSE;

    if (conn) {
        DBusMessage *msg = dbus.message_new_method_call(node, path, interface, method);
        if (msg) {
            int firstarg;
            va_list ap_reply;
            
# 217 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
           __builtin_va_copy(
# 217 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
           ap_reply
# 217 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
           ,
# 217 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
           ap
# 217 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
           )
# 217 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                ;
            firstarg = 
# 218 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                      __builtin_va_arg(
# 218 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                      ap
# 218 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                      ,
# 218 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                      int
# 218 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                      )
# 218 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                     ;
            if ((firstarg == ((int) '\0')) || dbus.message_append_args_valist(msg, firstarg, ap)) {
                DBusMessage *reply = dbus.connection_send_with_reply_and_block(conn, msg, 300, 
# 220 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                                                              ((void *)0)
# 220 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                                                                  );
                if (reply) {

                    while ((firstarg = 
# 223 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                      __builtin_va_arg(
# 223 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                      ap_reply
# 223 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                      ,
# 223 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                      int
# 223 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                      )
# 223 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                           ) != ((int) '\0')) {

                        { void *dumpptr = 
# 225 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                         __builtin_va_arg(
# 225 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                         ap_reply
# 225 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                         ,
# 225 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                         void*
# 225 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                         )
# 225 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                                ; (void) dumpptr; }
                        if (firstarg == ((int) 'a')) {
                            { const int dumpint = 
# 227 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                 __builtin_va_arg(
# 227 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                 ap_reply
# 227 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                 ,
# 227 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                 int
# 227 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                 )
# 227 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                                      ; (void) dumpint; }
                        }
                    }
                    firstarg = 
# 230 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                              __builtin_va_arg(
# 230 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                              ap_reply
# 230 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                              ,
# 230 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                              int
# 230 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                              )
# 230 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                   ;
                    if ((firstarg == ((int) '\0')) || dbus.message_get_args_valist(reply, 
# 231 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                                                              ((void *)0)
# 231 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                                                                  , firstarg, ap_reply)) {
                        retval = SDL_TRUE;
                    }
                    dbus.message_unref(reply);
                }
            }
            
# 237 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
           __builtin_va_end(
# 237 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
           ap_reply
# 237 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
           )
# 237 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                           ;
            dbus.message_unref(msg);
        }
    }

    return retval;
}

SDL_bool
SDL_DBus_CallMethodOnConnection(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, ...)
{
    SDL_bool retval;
    va_list ap;
    
# 250 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_start(
# 250 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 250 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   ,
# 250 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   method
# 250 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 250 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                       ;
    retval = SDL_DBus_CallMethodInternal(conn, node, path, interface, method, ap);
    
# 252 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_end(
# 252 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 252 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 252 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
             ;
    return retval;
}

SDL_bool
SDL_DBus_CallMethod(const char *node, const char *path, const char *interface, const char *method, ...)
{
    SDL_bool retval;
    va_list ap;
    
# 261 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_start(
# 261 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 261 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   ,
# 261 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   method
# 261 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 261 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                       ;
    retval = SDL_DBus_CallMethodInternal(dbus.session_conn, node, path, interface, method, ap);
    
# 263 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_end(
# 263 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 263 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 263 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
             ;
    return retval;
}

static SDL_bool
SDL_DBus_CallVoidMethodInternal(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, va_list ap)
{
    SDL_bool retval = SDL_FALSE;

    if (conn) {
        DBusMessage *msg = dbus.message_new_method_call(node, path, interface, method);
        if (msg) {
            int firstarg = 
# 275 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                          __builtin_va_arg(
# 275 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                          ap
# 275 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                          ,
# 275 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                          int
# 275 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                          )
# 275 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                         ;
            if ((firstarg == ((int) '\0')) || dbus.message_append_args_valist(msg, firstarg, ap)) {
                if (dbus.connection_send(conn, msg, 
# 277 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                   ((void *)0)
# 277 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                       )) {
                    dbus.connection_flush(conn);
                    retval = SDL_TRUE;
                }
            }

            dbus.message_unref(msg);
        }
    }

    return retval;
}

SDL_bool
SDL_DBus_CallVoidMethodOnConnection(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *method, ...)
{
    SDL_bool retval;
    va_list ap;
    
# 295 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_start(
# 295 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 295 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   ,
# 295 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   method
# 295 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 295 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                       ;
    retval = SDL_DBus_CallVoidMethodInternal(conn, node, path, interface, method, ap);
    
# 297 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_end(
# 297 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 297 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 297 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
             ;
    return retval;
}

SDL_bool
SDL_DBus_CallVoidMethod(const char *node, const char *path, const char *interface, const char *method, ...)
{
    SDL_bool retval;
    va_list ap;
    
# 306 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_start(
# 306 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 306 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   ,
# 306 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   method
# 306 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 306 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                       ;
    retval = SDL_DBus_CallVoidMethodInternal(dbus.session_conn, node, path, interface, method, ap);
    
# 308 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   __builtin_va_end(
# 308 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
   ap
# 308 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
   )
# 308 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
             ;
    return retval;
}

SDL_bool
SDL_DBus_QueryPropertyOnConnection(DBusConnection *conn, const char *node, const char *path, const char *interface, const char *property, const int expectedtype, void *result)
{
    SDL_bool retval = SDL_FALSE;

    if (conn) {
        DBusMessage *msg = dbus.message_new_method_call(node, path, "org.freedesktop.DBus.Properties", "Get");
        if (msg) {
            if (dbus.message_append_args(msg, ((int) 's'), &interface, ((int) 's'), &property, ((int) '\0'))) {
                DBusMessage *reply = dbus.connection_send_with_reply_and_block(conn, msg, 300, 
# 321 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c" 3 4
                                                                                              ((void *)0)
# 321 "/export/home/maarten/work/SDL/src/core/linux/SDL_dbus.c"
                                                                                                  );
                if (reply) {
                    DBusMessageIter iter, sub;
                    dbus.message_iter_init(reply, &iter);
                    if (dbus.message_iter_get_arg_type(&iter) == ((int) 'v')) {
                        dbus.message_iter_recurse(&iter, &sub);
                        if (dbus.message_iter_get_arg_type(&sub) == expectedtype) {
                            dbus.message_iter_get_basic(&sub, result);
                            retval = SDL_TRUE;
                        }
                    }
                    dbus.message_unref(reply);
                }
            }
            dbus.message_unref(msg);
        }
    }

    return retval;
}

SDL_bool
SDL_DBus_QueryProperty(const char *node, const char *path, const char *interface, const char *property, const int expectedtype, void *result)
{
    return SDL_DBus_QueryPropertyOnConnection(dbus.session_conn, node, path, interface, property, expectedtype, result);
}


void
SDL_DBus_ScreensaverTickle(void)
{
    if (screensaver_cookie == 0) {

        SDL_DBus_CallVoidMethod("org.gnome.ScreenSaver", "/org/gnome/ScreenSaver", "org.gnome.ScreenSaver", "SimulateUserActivity", ((int) '\0'));
        SDL_DBus_CallVoidMethod("org.freedesktop.ScreenSaver", "/org/freedesktop/ScreenSaver", "org.freedesktop.ScreenSaver", "SimulateUserActivity", ((int) '\0'));
    }
}

SDL_bool
SDL_DBus_ScreensaverInhibit(SDL_bool inhibit)
{
    if ( (inhibit && (screensaver_cookie != 0)) || (!inhibit && (screensaver_cookie == 0)) ) {
        return SDL_TRUE;
    } else {
        const char *node = "org.freedesktop.ScreenSaver";
        const char *path = "/org/freedesktop/ScreenSaver";
        const char *interface = "org.freedesktop.ScreenSaver";

        if (inhibit) {
            const char *app = SDL_GetHint_REAL("SDL_APP_NAME");
            const char *reason = SDL_GetHint_REAL("SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME");
            if (!app || !app[0]) {
               app = "My SDL application";
            }
            if (!reason || !reason[0]) {
                reason = "Playing a game";
            }

            if (!SDL_DBus_CallMethod(node, path, interface, "Inhibit",
                    ((int) 's'), &app, ((int) 's'), &reason, ((int) '\0'),
                    ((int) 'u'), &screensaver_cookie, ((int) '\0'))) {
                return SDL_FALSE;
            }
            return (screensaver_cookie != 0) ? SDL_TRUE : SDL_FALSE;
        } else {
            if (!SDL_DBus_CallVoidMethod(node, path, interface, "UnInhibit", ((int) 'u'), &screensaver_cookie, ((int) '\0'))) {
                return SDL_FALSE;
            }
            screensaver_cookie = 0;
        }
    }

    return SDL_TRUE;
}

@icculus icculus closed this as completed Aug 24, 2022
@time-killer-games
Copy link
Contributor Author

Particular reason this was closed without it being fixed?

@slouken
Copy link
Collaborator

slouken commented Aug 24, 2022

This wasn't intentionally closed, it was just automatically done as part of a merge commit.

@slouken slouken reopened this Aug 24, 2022
@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 24, 2022

The clang++ compiler is a bit broken on this platform, nothing on your end, but i thought it's worth mentioning. It doesn't find a lot of common C++ headers like iostream and algorithm, while others it finds without issue. Really weird.

It's recommended to use their CC (not cc, but with capital letters, for C++ in specific) on this platform. The package manager says I have it installed, but it isn't a part of my $PATH otherwise it'd find it without the path component in the terminal.

This might be why SDL is built ok on illumos, because they used the CC compiler I'm guessing. Any of you guys know where that compiler is location on Illumos? I've tried using find CC / and locate CC and neither came up with anything.

Also tried searching the lowercase variant, still nothing. Your library is written in C and not C++ so that's another possibility.

@brad0
Copy link
Contributor

brad0 commented Aug 26, 2022

The clang++ compiler is a bit broken on this platform, nothing on your end, but i thought it's worth mentioning. It doesn't find a lot of common C++ headers like iostream and algorithm, while others it finds without issue. Really weird.

It's recommended to use their CC (not cc, but with capital letters, for C++ in specific) on this platform. The package manager says I have it installed, but it isn't a part of my $PATH otherwise it'd find it without the path component in the terminal.

This might be why SDL is built ok on illumos, because they used the CC compiler I'm guessing. Any of you guys know where that compiler is location on Illumos? I've tried using find CC / and locate CC and neither came up with anything.

Also tried searching the lowercase variant, still nothing. Your library is written in C and not C++ so that's another possibility.

I'm curious what Clang release you're using. Clang definitely works and is supported on Solaris proper. AFAIK it is tested on at least 11.4 but I believe should work on 11.3 as well.

The compiler you're referring to is what was the Sun Studio compiler and is now called Oracle Developer Studio. From looking around it does not seem like that compiler is supported on Illumos derived OS's.

https://www.oracle.com/application-development/technologies/developerstudio.html
https://www.oracle.com/tools/developerstudio/downloads/developer-studio-jsp.html

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 26, 2022

The package I have installed is in fact SunStudio, you can even see the package on their website:

https://pkg.openindiana.org/hipster/en/search.shtml?token=cc&action=Search

The only issue is I don't know where it's actually installed to.

Have you tried compiling a C++ project that includes the iostream or algorithm C++ headers with clang++? I would like to know whether what I experienced very specifically is at all reproducible for anyone besides me, last I checked Clang 11 is what I have installed, can't remember the minor version but I'll check sometime later tonight.

Edit:

It's not the SDL2 developers responsibility to test clang, so I can ask elsewhere if that is an issue.

@madebr
Copy link
Contributor

madebr commented Aug 26, 2022

I've opened #6136.
With those changes, I am able to build SDL2 on OpenIndiana, albeit with disabled dbus.

@brad0
Copy link
Contributor

brad0 commented Aug 26, 2022

Have you tried compiling a C++ project that includes the iostream or algorithm C++ headers with clang++? I would like to know whether what I experienced very specifically is at all reproducible for anyone besides me, last I checked Clang 11 is what I have installed, can't remember the minor version but I'll check sometime later tonight.

The current maintainer runs Clang through the full test suite and almost the whole suite passes. Clang 11 is pretty old. The minor version should not matter for this. I get the feeling something else is missing from your system.

@time-killer-games
Copy link
Contributor Author

time-killer-games commented Aug 26, 2022

Have you tried compiling a C++ project that includes the iostream or algorithm C++ headers with clang++? I would like to know whether what I experienced very specifically is at all reproducible for anyone besides me, last I checked Clang 11 is what I have installed, can't remember the minor version but I'll check sometime later tonight.

The current maintainer runs Clang through the full test suite and almost the whole suite passes. Clang 11 is pretty old. The minor version should not matter for this. I get the feeling something else is missing from your system.

That sounds about right, I just wish i knew what was actually missing package-wise. Seems that installing clang by itself isn't sufficient to get all the headers I need.

@time-killer-games
Copy link
Contributor Author

Everything works now! Thank you so very much guys!

Screenshot at 2022-08-26 08-41-32

@madebr
Copy link
Contributor

madebr commented Aug 26, 2022

We're all happy you are able to keep working with your (undoubtedly) favorite library 😄

sezero pushed a commit to sezero/SDL that referenced this issue Sep 3, 2022
Apparently some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode.

Fixes libsdl-org#6078
(cherry-picked from commit f6b8112)
PJB3005 pushed a commit to PJB3005/SDL that referenced this issue Oct 5, 2022
Apparently some versions of gcc will define __STDC_VERSION__ even when compiling in C++ mode.

Fixes libsdl-org#6078
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants