summaryrefslogtreecommitdiff
path: root/macos/source/unixlike.h
blob: e61a3545517f093863fb1303e15a4acb7c34a29b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*
  Copyright (c) 1990-1999 Info-ZIP.  All rights reserved.

  See the accompanying file LICENSE, version 1999-Oct-05 or later
  (the contents of which are also included in zip.h) for terms of use.
  If, for some reason, both of these files are missing, the Info-ZIP license
  also may be found at:  ftp://ftp.cdrom.com/pub/infozip/license.html
*/
/*
 *      Directory Operations for Mac based on BSD 4.3   <macdir.h>
 *      By Jason Linhart, January 1997
 */

#ifndef _UNIXLIKE_H
#define _UNIXLIKE_H       1

#include <stat.h>

#ifndef NAME_MAX
#define NAME_MAX    2048
#endif

#define UNX_IFMT        0170000     /* Unix file type mask */
#define UNX_IFSOCK      0140000     /* Unix socket (BSD, not SysV or Amiga) */
#define UNX_IFLNK       0120000     /* Unix symbolic link (not SysV, Amiga) */
#define UNX_IFREG       0100000     /* Unix regular file */
#define UNX_IFBLK       0060000     /* Unix block special       (not Amiga) */
#define UNX_IFDIR       0040000     /* Unix directory */
#define UNX_IFCHR       0020000     /* Unix character special   (not Amiga) */
#define UNX_IFIFO       0010000     /* Unix fifo    (BCC, not MSC or Amiga) */

#define UNX_ISUID       04000       /* Unix set user id on execution */
#define UNX_ISGID       02000       /* Unix set group id on execution */
#define UNX_ISVTX       01000       /* Unix directory permissions control */
#define UNX_ENFMT       UNX_ISGID   /* Unix record locking enforcement flag */

#define UNX_IRWXU       00700       /* Unix read, write, execute: owner */
#define UNX_IRUSR       00400       /* Unix read permission: owner */
#define UNX_IWUSR       00200       /* Unix write permission: owner */
#define UNX_IXUSR       00100       /* Unix execute permission: owner */

#define UNX_IRWXG       00070       /* Unix read, write, execute: group */
#define UNX_IRGRP       00040       /* Unix read permission: group */
#define UNX_IWGRP       00020       /* Unix write permission: group */
#define UNX_IXGRP       00010       /* Unix execute permission: group */

#define UNX_IRWXO       00007       /* Unix read, write, execute: other */
#define UNX_IROTH       00004       /* Unix read permission: other */
#define UNX_IWOTH       00002       /* Unix write permission: other */
#define UNX_IXOTH       00001       /* Unix execute permission: other */

/* historical file modes */
#define S_IREAD    0x100
#define S_IWRITE   0x80
#define S_IEXEC    0x40


#define isatty(arg) 1


#define EINVAL          22      /* Invalid argument */
#define ENAMETOOLONG    63      /* File name too long */


struct dirent {
        char            d_name[NAME_MAX];
};

/*
 * The following definitions are usually found in fcntl.h.
 * However, MetroWerks has screwed that file up a couple of times
 * and all we need are the defines.
 */
#define O_APPEND  0x0100    /* open the file in append mode */
#define O_CREAT   0x0200    /* create the file if it doesn't exist */
#define O_EXCL    0x0400    /* if the file exists don't create it again */
#define O_TRUNC   0x0800    /* truncate the file after opening it */


int Zmacstat (const char *path, struct stat *buf);
int chmod(char *path, int mode);


#include "macstuff.h"

#endif /* _UNIXLIKE_H  */