~ubuntu-branches/ubuntu/precise/unzip/precise-proposed

« back to all changes in this revision

Viewing changes to theos/stat.h

  • Committer: Bazaar Package Importer
  • Author(s): Santiago Vila
  • Date: 2004-06-06 17:57:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040606175746-nl7p2dgp3aobyc2c
Tags: upstream-5.51
ImportĀ upstreamĀ versionĀ 5.51

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __theos_stat_h
 
2
#define __theos_stat_h
 
3
/*
 
4
  Copyright (c) 1990-2000 Info-ZIP.  All rights reserved.
 
5
 
 
6
  See the accompanying file LICENSE, version 2000-Apr-09 or later
 
7
  (the contents of which are also included in zip.h) for terms of use.
 
8
  If, for some reason, all these files are missing, the Info-ZIP license
 
9
  also may be found at:  ftp://ftp.info-zip.org/pub/infozip/license.html
 
10
*/
 
11
 
 
12
/* extended stat structure for stat, fstat, chmod */
 
13
/* Written by Jean-Michel Dubois */
 
14
 
 
15
#pragma field word
 
16
struct stat {
 
17
    unsigned short  st_mode;        /* file attributes */
 
18
        #define S_IFMT      0xf000      /* file type mask */
 
19
        #define S_IFIFO     0x1000      /* pipe */
 
20
        #define S_IFCHR     0x2000      /* char device */
 
21
        #define S_IFSOCK    0x3000      /* socket */
 
22
        #define S_IFDIR     0x4000      /* directory */
 
23
        #define S_IFLIB     0x5000      /* library */
 
24
        #define S_IFBLK     0x6000      /* block device */
 
25
        #define S_IFREG     0x8000      /* regular file */
 
26
        #define S_IFREL     0x9000      /* relative (direct) */
 
27
        #define S_IFKEY     0xA000      /* keyed */
 
28
        #define S_IFIND     0xB000      /* indexed */
 
29
        #define S_IFRND     0xC000      /* ???? */
 
30
        #define S_IFR16     0xD000      /* 16 bit real mode program */
 
31
        #define S_IFP16     0xE000      /* 16 bit protected mode prog */
 
32
        #define S_IFP32     0xF000      /* 32 bit protected mode prog */
 
33
 
 
34
        #define S_ISUID     0x0800      /* meaningless */
 
35
        #define S_ISGID     0x0400      /* meaningless */
 
36
        #define S_ISVTX     0x0200      /* meaningless */
 
37
 
 
38
        #define S_IMODF     0x0800      /* modified */
 
39
        #define S_INHID     0x0400      /* not hidden */
 
40
 
 
41
        #define S_IRWXU     0x03c0      /* read,write,execute: owner */
 
42
        #define S_IEUSR     0x0200      /* erase permission: owner */
 
43
        #define S_IRUSR     0x0100      /* read permission: owner */
 
44
        #define S_IWUSR     0x0080      /* write permission: owner */
 
45
        #define S_IXUSR     0x0040      /* execute permission: owner */
 
46
    /* group permissions */
 
47
        #define S_IRWXG     0x0238
 
48
        #define S_IEGRP     0x0200
 
49
        #define S_IRGRP     0x0020
 
50
        #define S_IWGRP     0x0010
 
51
        #define S_IXGRP     0x0008
 
52
    /* other never has erase permission */
 
53
        #define S_IRWXO     0x0207      /* read,write,execute: other */
 
54
        #define S_IROTH     0x0004      /* read permission: other */
 
55
        #define S_IWOTH     0x0002      /* write permission: other */
 
56
        #define S_IXOTH     0x0001      /* execute permission: other */
 
57
 
 
58
        #define S_IREAD     0x0100      /* read permission, owner */
 
59
        #define S_IEXEC     0x0040      /* execute permission, owner */
 
60
        #define S_IWRITE    0x0080      /* write permission, owner */
 
61
    short           st_ino;         /* not used */
 
62
    short           st_dev;         /* not used */
 
63
    short           st_rdev;        /* not used */
 
64
    short           st_nlink;       /* not used */
 
65
    short           st_uid;         /* owner id */
 
66
    short           st_gid;         /* not used */
 
67
    unsigned long   st_size;        /* size of file */
 
68
    unsigned long   st_atime;       /* not used */
 
69
    unsigned long   st_mtime;       /* date & time last modified */
 
70
    unsigned long   st_ctime;       /* not used */
 
71
    unsigned long   st_blksize;     /* buffer size */
 
72
    unsigned short  st_org;         /* organization */
 
73
    unsigned short  st_rlen;        /* record size */
 
74
    unsigned short  st_klen;        /* key size */
 
75
    char            st_grow;        /* growing factor */
 
76
    char            st_protect;     /* native protections */
 
77
};
 
78
#pragma field
 
79
 
 
80
#define S_ISREG(m)      (((m) & S_IFMT) >= S_IFREG)
 
81
#define S_ISLIB(m)      (((m) & S_IFMT) == S_IFLIB)
 
82
#define S_ISDIR(m)      (((m) & S_IFMT) == S_IFDIR)
 
83
#define S_ISCHR(m)      (((m) & S_IFMT) == S_IFCHR)
 
84
#define S_ISBLK(m)      (((m) & S_IFMT) == S_IFBLK)
 
85
 
 
86
#define S_ISSEQ(m)      (((m) & S_IFMT) == S_IFREG)
 
87
#define S_ISREL(m)      (((m) & S_IFMT) == S_IFREL)
 
88
#define S_ISKEY(m)      (((m) & S_IFMT) == S_IFKEY)
 
89
#define S_ISIND(m)      (((m) & S_IFMT) == S_IFIND)
 
90
#define S_ISPRG(m)      (((m) & S_IFMT) >= S_IFP16)
 
91
#define S_ISLNK(m)      0
 
92
 
 
93
/* avoid conflict with original THEOS functions */
 
94
 
 
95
#define stat(a,b)       _stat(a,b)
 
96
#define fstat(a,b)      _fstat(a,b)
 
97
#define chmod(a,b)      _chmod(a,b)
 
98
 
 
99
extern int _stat(const char *file, struct stat *statptr);
 
100
extern int _fstat(int fd, struct stat *statptr);
 
101
extern int _chmod(const char *file, short mask);
 
102
 
 
103
#define _chstat(a,b)    ((int) _sc_168(a,'p',(size_t)(b)))
 
104
extern unsigned short   _sc_168(const char _far *fn, int cmd, size_t value);
 
105
 
 
106
#endif /* !__theos_stat_h */