reactos/sdk/tools/isohybrid/reactos_support_code.h
Colin Finck 2c11c41115
Add a shared "port" directory for POSIX functions needed by multiple host tools (getopt/mkstemps) and import the one and only getopt from glibc.
This finally fixes our duplicated getopt functions from different sources and gives us an up to date and the most compatible implementation.
isohybrid actually relies on a glibc-specific getopt behavior that we previously hacked into the reactos_support_code.c implementation derived from BSD/mingw-w64.
widl also needs getopt and previously used an even older BSD-derived code.
2019-04-28 23:23:06 +02:00

47 lines
966 B
C

#ifndef _REACTOS_SUPPORT_CODE_H
#define _REACTOS_SUPPORT_CODE_H
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef _WIN32
#include <malloc.h>
#include <windows.h>
#include <process.h>
#include <io.h>
#else
#include <alloca.h>
#include <unistd.h>
#endif
#include "../port/port.h"
// isotypes.h would provide these, but it's not available on MSVC < 2013.
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
typedef unsigned long long uint64_t;
void isohybrid_error(int eval, const char* fmt, ...);
void isohybrid_warning(const char* fmt, ...);
#define err(...) isohybrid_error(__VA_ARGS__)
#define errx(...) isohybrid_error(__VA_ARGS__)
#define warn(...) isohybrid_warning(__VA_ARGS__)
#define warnx(...) isohybrid_warning(__VA_ARGS__)
#ifdef _WIN32
int fsync(int fd);
int getppid(void);
#endif
#ifdef _MSC_VER
#define fseeko _fseeki64
#define ftruncate _chsize
#endif
#endif