50 lines
1.5 KiB
C
50 lines
1.5 KiB
C
/* sys/clipboard.h
|
|
|
|
This file is part of Cygwin.
|
|
|
|
This software is a copyrighted work licensed under the terms of the
|
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
|
details. */
|
|
|
|
#ifndef _SYS_CLIPBOARD_H_
|
|
#define _SYS_CLIPBOARD_H_
|
|
|
|
/*
|
|
* These definitions are used in fhandler_clipboard.cc
|
|
* as well as in the Cygwin cygutils package, specifically
|
|
* getclip.c and putclip.c.
|
|
*/
|
|
|
|
static const WCHAR *CYGWIN_NATIVE = L"CYGWIN_NATIVE_CLIPBOARD";
|
|
|
|
/*
|
|
* The following layout of cygcb_t is new with Cygwin 3.3.0. It aids in the
|
|
* transfer of clipboard contents between 32- and 64-bit Cygwin environments.
|
|
*/
|
|
typedef struct
|
|
{
|
|
union
|
|
{
|
|
/*
|
|
* Note that ts below overlays the struct following it. On 32-bit Cygwin
|
|
* timespec values have to be converted to|from cygcb_t layout. On 64-bit
|
|
* Cygwin timespec values perfectly conform to the struct following, so
|
|
* no conversion is needed.
|
|
*
|
|
* We avoid directly using 'struct timespec' or 'size_t' here because they
|
|
* are different sizes on different architectures. When copy/pasting
|
|
* between 32- and 64-bit Cygwin, the pasted data could appear corrupted,
|
|
* or partially interpreted as a size which can cause an access violation.
|
|
*/
|
|
struct timespec ts; // 8 bytes on 32-bit Cygwin, 16 bytes on 64-bit Cygwin
|
|
struct
|
|
{
|
|
uint64_t cb_sec; // 8 bytes everywhere
|
|
uint64_t cb_nsec; // 8 bytes everywhere
|
|
};
|
|
};
|
|
uint64_t cb_size; // 8 bytes everywhere
|
|
} cygcb_t;
|
|
|
|
#endif
|