nulib2/nulib2/SysDefs.h
Andy McFadden 132a8338b9 Fix Mac OS X behavior
Some fixes to the Mac OS X build:

- Replace the Carbon calls that were used to set the creator
and file type with xattr calls.  The Carbon stuff still worked
but caused deprecation warnings.  Stop linking against Carbon.

- Correct the way resource forks are accessed (from "/rsrc" to
"/..namedfork/rsrc").  The native resource fork support is
incomplete and doesn't work quite right, so it's now disabled.
(Which means the corrections to the file name don't actually do
anything, but you can at least play with it.)

- Correct the file/aux type conversion, which appeared to do
useful things but actually didn't in some circumstances (e.g. when
adding files, the code for acquiring the file types needs to be in
NuLib2, not NufxLib).

- Set creator and file type to 'pdos' values when extracting from
a Binary ][ archive.

Also, drop some old purify/quantify stuff.
2015-01-03 15:59:37 -08:00

218 lines
4.3 KiB
C

/*
* NuLib2
* Copyright (C) 2000-2007 by Andy McFadden, All Rights Reserved.
* This is free software; you can redistribute it and/or modify it under the
* terms of the BSD License, see the file COPYING.
*
* This was adapted from gzip's "tailor.h" and NuLib's "nudefs.h".
*/
#ifndef NULIB2_SYSDEFS_H
#define NULIB2_SYSDEFS_H
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef DEBUG_VERBOSE
# define DEBUG_MSGS
#endif
/* these should exist everywhere */
#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <memory.h>
#include <time.h>
#include <errno.h>
#include <assert.h>
/* basic Win32 stuff -- info-zip has much more complete defs */
#if defined(_WIN32) || defined(MSDOS)
# define WINDOWS_LIKE
# ifndef HAVE_CONFIG_H
# define HAVE_FCNTL_H
# define HAVE_MALLOC_H
# define HAVE_STDLIB_H
# define HAVE_SYS_STAT_H
# undef HAVE_SYS_TIME_H
# define HAVE_SYS_TYPES_H
# undef HAVE_UNISTD_H
# undef HAVE_UTIME_H
# define HAVE_SYS_UTIME_H
# define HAVE_WINDOWS_H
# define HAVE_FDOPEN
# undef HAVE_FTRUNCATE
# define HAVE_MEMMOVE
# undef HAVE_MKSTEMP
# define HAVE_MKTIME
# define HAVE_SNPRINTF
# undef HAVE_STRCASECMP
# undef HAVE_STRNCASECMP
# define HAVE_STRERROR
# define HAVE_STRTOUL
# define HAVE_VSNPRINTF
# define SNPRINTF_DECLARED
# define VSNPRINTF_DECLARED
# define SPRINTF_RETURNS_INT
# define inline /*Visual C++6.0 can't inline ".c" files*/
# define mode_t int
# endif
# include <io.h>
# include <direct.h>
# define FOPEN_WANTS_B
# define HAVE_CHSIZE
# define snprintf _snprintf
# define vsnprintf _vsnprintf
#endif
#ifdef HAVE_MALLOC_H
# include <malloc.h>
#endif
#ifdef HAVE_STDLIB_H
# include <stdlib.h>
#endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
#endif
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
#if defined(WINDOWS_LIKE)
# ifndef F_OK
# define F_OK 00
# endif
# ifndef R_OK
# define R_OK 04
# endif
#endif
#if defined(__unix__) || defined(__unix) || defined(__BEOS__) || \
defined(__hpux) || defined(_AIX) || defined(__APPLE__)
# define UNIX_LIKE
#endif
#if defined(__MSDOS__) && !defined(MSDOS)
# define MSDOS
#endif
#if defined(__OS2__) && !defined(OS2)
# define OS2
#endif
#if defined(OS2) && defined(MSDOS) /* MS C under OS/2 */
# undef MSDOS
#endif
/* this ought to get trimmed down */
#ifdef MSDOS
# ifndef __GNUC__
# ifdef __TURBOC__
# define NO_OFF_T
# ifdef __BORLANDC__
# define DIRENT
# else
# define NO_UTIME
# endif
# else /* MSC */
# define HAVE_SYS_UTIME_H
# define NO_UTIME_H
# endif
# endif
# define PATH_SEP '\\'
# define PATH_SEP2 '/'
# define PATH_SEP3 ':'
# ifdef MAX_PATH
# define MAX_PATH_LEN MAX_PATH
# else
# define MAX_PATH_LEN 128
# endif
# define NO_MULTIPLE_DOTS
# define MAX_EXT_CHARS 3
# define NO_CHOWN
# define PROTO
# ifndef HAVE_CONFIG_H
# define STDC_HEADERS
# endif
# define NO_SIZE_CHECK
# define SYSTEM_DEFAULT_EOL "\r\n"
#endif
#ifdef WIN32 /* Windows 95/98/NT */
# define HAVE_SYS_UTIME_H
# define NO_UTIME_H
# define PATH_SEP '\\'
# define PATH_SEP2 '/'
# define PATH_SEP3 ':'
# ifdef MAX_PATH
# define MAX_PATH_LEN MAX_PATH
# else
# define MAX_PATH_LEN 260
# endif
# define PROTO
# define STDC_HEADERS
# define SYSTEM_DEFAULT_EOL "\r\n"
#endif
#ifdef MACOS
# define PATH_SEP ':'
# define NO_CHOWN
# define NO_UTIME
# define SYSTEM_DEFAULT_EOL "\r"
#endif
#if defined(__APPLE__) && defined(__MACH__) /* OS X */
# define MAC_LIKE
# define UNIX_LIKE
#endif
/* not currently using filesystem resource forks */
//#if defined(__ORCAC__) || defined(MAC_LIKE)
//# define HAS_RESOURCE_FORKS
//#endif
#if defined(APW) || defined(__ORCAC__)
# define __appleiigs__
# pragma lint -1
# pragma memorymodel 1
# pragma optimize 7
/*# pragma debug 25 */
# define PATH_SEP ':'
# define SYSTEM_DEFAULT_EOL "\r"
# ifdef GNO
# define HAS_DIRENT
# endif
#endif
#ifdef __GNUC__ /* this was missing from BeOS __MWERKS__, and probably others */
# define HAS__FUNCTION__
#endif
/* general defaults, mainly for UNIX */
#ifndef PATH_SEP
# define PATH_SEP '/'
#endif
#ifndef SYSTEM_DEFAULT_EOL
# define SYSTEM_DEFAULT_EOL "\n"
#endif
#ifndef MAX_PATH_LEN
# define MAX_PATH_LEN 1024
#endif
#endif /*NULIB2_SYSDEFS_H*/