|  |  | 
|  | /* Common header file that is included by all of QEMU. | 
|  | * | 
|  | * This file is supposed to be included only by .c files. No header file should | 
|  | * depend on qemu-common.h, as this would easily lead to circular header | 
|  | * dependencies. | 
|  | * | 
|  | * If a header file uses a definition from qemu-common.h, that definition | 
|  | * must be moved to a separate header file, and the header that uses it | 
|  | * must include that header. | 
|  | */ | 
|  | #ifndef QEMU_COMMON_H | 
|  | #define QEMU_COMMON_H | 
|  |  | 
|  | #include "qemu/osdep.h" | 
|  | #include "qemu/typedefs.h" | 
|  |  | 
|  | #include "glib.h" | 
|  | #include "config-host.h" | 
|  |  | 
|  | #if defined(O_BINARY)   /* O_BINARY isn't used in slirp */ | 
|  | #undef O_BINARY         /* Avoid potential redefinition elsewhere */ | 
|  | #endif | 
|  |  | 
|  | /* HOST_LONG_BITS is the size of a native pointer in bits. */ | 
|  | #if UINTPTR_MAX == UINT32_MAX | 
|  | # define HOST_LONG_BITS 32 | 
|  | #elif UINTPTR_MAX == UINT64_MAX | 
|  | # define HOST_LONG_BITS 64 | 
|  | #else | 
|  | # error Unknown pointer size | 
|  | #endif | 
|  |  | 
|  | /* util/cutils.c */ | 
|  | /** | 
|  | * pstrcpy: | 
|  | * @buf: buffer to copy string into | 
|  | * @buf_size: size of @buf in bytes | 
|  | * @str: string to copy | 
|  | * | 
|  | * Copy @str into @buf, including the trailing NUL, but do not | 
|  | * write more than @buf_size bytes. The resulting buffer is | 
|  | * always NUL terminated (even if the source string was too long). | 
|  | * If @buf_size is zero or negative then no bytes are copied. | 
|  | * | 
|  | * This function is similar to strncpy(), but avoids two of that | 
|  | * function's problems: | 
|  | *  * if @str fits in the buffer, pstrcpy() does not zero-fill the | 
|  | *    remaining space at the end of @buf | 
|  | *  * if @str is too long, pstrcpy() will copy the first @buf_size-1 | 
|  | *    bytes and then add a NUL | 
|  | */ | 
|  | void pstrcpy(char *buf, int buf_size, const char *str); | 
|  | #endif |