mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-02-01 03:53:33 +00:00
b420ed8248
This change gets the Python codebase into a state where it conforms to the conventions of this codebase. It's now possible to include headers from Python, without worrying about ordering. Python has traditionally solved that problem by "diamonding" everything in Python.h, but that's problematic since it means any change to any Python header invalidates all the build artifacts. Lastly it makes tooling not work. Since it is hard to explain to Emacs when I press C-c C-h to add an import line it shouldn't add the header that actually defines the symbol, and instead do follow the nonstandard Python convention. Progress has been made on letting Python load source code from the zip executable structure via the standard C library APIs. System calss now recognizes zip!FILENAME alternative URIs as equivalent to zip:FILENAME since Python uses colon as its delimiter. Some progress has been made on embedding the notice license terms into the Python object code. This is easier said than done since Python has an extremely complicated ownership story. - Some termios APIs have been added - Implement rewinddir() dirstream API - GetCpuCount() API added to Cosmopolitan Libc - More bugs in Cosmopolitan Libc have been fixed - zipobj.com now has flags for mangling the path - Fixed bug a priori with sendfile() on certain BSDs - Polyfill F_DUPFD and F_DUPFD_CLOEXEC across platforms - FIOCLEX / FIONCLEX now polyfilled for fast O_CLOEXEC changes - APE now supports a hybrid solution to no-self-modify for builds - Many BSD-only magnums added, e.g. O_SEARCH, O_SHLOCK, SF_NODISKIO
96 lines
3.2 KiB
C++
96 lines
3.2 KiB
C++
/* clang-format off */
|
|
/* internal.h
|
|
|
|
Note: Use of these macros is based on judgement, not hard rules,
|
|
and therefore subject to change.
|
|
__ __ _
|
|
___\ \/ /_ __ __ _| |_
|
|
/ _ \\ /| '_ \ / _` | __|
|
|
| __// \| |_) | (_| | |_
|
|
\___/_/\_\ .__/ \__,_|\__|
|
|
|_| XML parser
|
|
|
|
Copyright (c) 1997-2000 Thai Open Source Software Center Ltd
|
|
Copyright (c) 2000-2017 Expat development team
|
|
Licensed under the MIT license:
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining
|
|
a copy of this software and associated documentation files (the
|
|
"Software"), to deal in the Software without restriction, including
|
|
without limitation the rights to use, copy, modify, merge, publish,
|
|
distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
persons to whom the Software is furnished to do so, subject to the
|
|
following conditions:
|
|
|
|
The above copyright notice and this permission notice shall be included
|
|
in all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
|
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
#if defined(__GNUC__) && defined(__i386__) && ! defined(__MINGW32__)
|
|
/* We'll use this version by default only where we know it helps.
|
|
|
|
regparm() generates warnings on Solaris boxes. See SF bug #692878.
|
|
|
|
Instability reported with egcs on a RedHat Linux 7.3.
|
|
Let's comment out:
|
|
#define FASTCALL __attribute__((stdcall, regparm(3)))
|
|
and let's try this:
|
|
*/
|
|
# define FASTCALL __attribute__((regparm(3)))
|
|
# define PTRFASTCALL __attribute__((regparm(3)))
|
|
#endif
|
|
|
|
/* Using __fastcall seems to have an unexpected negative effect under
|
|
MS VC++, especially for function pointers, so we won't use it for
|
|
now on that platform. It may be reconsidered for a future release
|
|
if it can be made more effective.
|
|
Likely reason: __fastcall on Windows is like stdcall, therefore
|
|
the compiler cannot perform stack optimizations for call clusters.
|
|
*/
|
|
|
|
/* Make sure all of these are defined if they aren't already. */
|
|
|
|
#ifndef XML_MIN_SIZE
|
|
# if ! defined(__cplusplus) && ! defined(inline)
|
|
# ifdef __GNUC__
|
|
# define inline __inline
|
|
# endif /* __GNUC__ */
|
|
# endif
|
|
#endif /* XML_MIN_SIZE */
|
|
|
|
#ifdef __cplusplus
|
|
# define inline inline
|
|
#else
|
|
# ifndef inline
|
|
# define inline
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef UNUSED_P
|
|
# define UNUSED_P(p) (void)p
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#ifdef XML_ENABLE_VISIBILITY
|
|
# if XML_ENABLE_VISIBILITY
|
|
__attribute__((visibility("default")))
|
|
# endif
|
|
#endif
|
|
void
|
|
_INTERNAL_trim_to_complete_utf8_characters(const char *from,
|
|
const char **fromLimRef);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|