/[pearpc]/src/system/file.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /src/system/file.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (hide annotations)
Wed Sep 5 17:11:21 2007 UTC (16 years, 7 months ago) by dpavlin
File MIME type: text/plain
File size: 5021 byte(s)
import upstream CVS
1 dpavlin 1 /*
2     * HT Editor
3     * file.h
4     *
5     * file system functions
6     *
7     * Copyright (C) 1999-2002 Stefan Weyergraf
8     *
9     * This program is free software; you can redistribute it and/or modify
10     * it under the terms of the GNU General Public License version 2 as
11     * published by the Free Software Foundation.
12     *
13     * This program is distributed in the hope that it will be useful,
14     * but WITHOUT ANY WARRANTY; without even the implied warranty of
15     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16     * GNU General Public License for more details.
17     *
18     * You should have received a copy of the GNU General Public License
19     * along with this program; if not, write to the Free Software
20     * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21     */
22    
23     #ifndef __FILE_H__
24     #define __FILE_H__
25    
26     /* Note: all functions only take absolute dir/filenames ! */
27    
28     #include "types.h"
29     #include "fileofs.h"
30    
31     //#include <dirent.h>
32     #include <sys/types.h>
33     #include <time.h>
34    
35     #ifdef PATH_MAX
36     #define HT_NAME_MAX PATH_MAX /* DJGPP at least */
37     #else
38     #ifdef MAXNAMLEN
39     #define HT_NAME_MAX MAXNAMLEN /* some BSD... */
40     #else
41     #ifdef NAME_MAX
42     #define HT_NAME_MAX NAME_MAX /* POSIX and friends... */
43     #else
44     #define HT_NAME_MAX 260 /* unknown... */
45     #endif
46     #endif
47     #endif
48    
49     #define HT_S_IFREG 0x1000
50     #define HT_S_IFBLK 0x2000
51     #define HT_S_IFCHR 0x3000
52     #define HT_S_IFDIR 0x4000
53     #define HT_S_IFFIFO 0x5000
54     #define HT_S_IFLNK 0x6000
55     #define HT_S_IFSOCK 0x7000
56    
57     #define HT_S_IFMT 0xf000
58    
59     #define HT_S_ISREG(m) (((m) & HT_S_IFMT) == HT_S_IFREG)
60     #define HT_S_ISBLK(m) (((m) & HT_S_IFMT) == HT_S_IFBLK)
61     #define HT_S_ISCHR(m) (((m) & HT_S_IFMT) == HT_S_IFCHR)
62     #define HT_S_ISDIR(m) (((m) & HT_S_IFMT) == HT_S_IFDIR)
63     #define HT_S_ISFIFO(m) (((m) & HT_S_IFMT) == HT_S_IFFIFO)
64     #define HT_S_ISLNK(m) (((m) & HT_S_IFMT) == HT_S_IFLNK)
65     #define HT_S_ISSOCK(m) (((m) & HT_S_IFMT) == HT_S_IFSOCK)
66    
67     #define HT_S_IRUSR 0x0100
68     #define HT_S_IRGRP 0x0020
69     #define HT_S_IROTH 0x0004
70     #define HT_S_IWUSR 0x0080
71     #define HT_S_IWGRP 0x0010
72     #define HT_S_IWOTH 0x0002
73     #define HT_S_IXUSR 0x0040
74     #define HT_S_IXGRP 0x0008
75     #define HT_S_IXOTH 0x0001
76     #define HT_S_IRWXU (HT_S_IRUSR || HT_S_IWUSR || HT_S_IXUSR)
77     #define HT_S_IRWXG (HT_S_IRGRP || HT_S_IWGRP || HT_S_IXGRP)
78     #define HT_S_IRWXO (HT_S_IROTH || HT_S_IWOTH || HT_S_IXOTH)
79    
80     #define pstat_ctime 0x00000001
81     #define pstat_mtime 0x00000002
82     #define pstat_atime 0x00000004
83     #define pstat_uid 0x00000008
84     #define pstat_gid 0x00000010
85     #define pstat_mode_usr 0x00000020
86     #define pstat_mode_grp 0x00000040
87     #define pstat_mode_oth 0x00000080
88     #define pstat_mode_r 0x00000100
89     #define pstat_mode_w 0x00000200
90     #define pstat_mode_x 0x00000400
91     #define pstat_mode_type 0x00000800
92     #define pstat_size 0x00001000
93     #define pstat_inode 0x00002000
94     #define pstat_cluster 0x00004000
95     #define pstat_fsid 0x00008000
96     #define pstat_desc 0x00010000
97    
98     #define pstat_mode_all (pstat_mode_usr|pstat_mode_grp|pstat_mode_oth|pstat_mode_r|pstat_mode_w|pstat_mode_x|pstat_mode_type)
99    
100     struct pstat_t {
101     uint32 caps;
102     time_t ctime;
103     time_t mtime;
104     time_t atime;
105     uint uid;
106     uint gid;
107     mode_t mode; // S_ISUID, S_ISGID, S_I[RWX](USR|GRP|OTH)
108     uint64 size;
109     union {
110     uint inode;
111     uint cluster;
112     uint fsid;
113     };
114     char desc[32];
115     };
116    
117     struct pfind_t {
118     const char *name;
119     pstat_t stat;
120     void *findstate;
121     };
122    
123     typedef bool (*is_path_delim)(char c);
124    
125     #define SYS_OPEN_READ 1
126     #define SYS_OPEN_WRITE 2
127     #define SYS_OPEN_CREATE 4
128    
129     #define SYS_SEEK_SET 1
130     #define SYS_SEEK_REL 2
131     #define SYS_SEEK_END 3
132    
133     #define SYS_FILE void
134    
135    
136     /* system-independent (implementation in sys.cc) */
137     int sys_basename(char *result, const char *filename);
138     int sys_dirname(char *result, const char *filename);
139     int sys_relname(char *result, const char *filename, const char *cwd);
140     int sys_common_canonicalize(char *result, const char *in_name, const char *cwd, is_path_delim delim);
141     char * sys_filename_suffix(const char *fn);
142     int sys_tmpfile_fd();
143    
144     /* system-dependent (implementation in $MYSYSTEM/ *.cc) */
145     int sys_canonicalize(char *result, const char *filename);
146     int sys_file_mode(int mode);
147     int sys_findclose(pfind_t &pfind);
148     int sys_findfirst(pfind_t &pfind, const char *dirname);
149     int sys_findnext(pfind_t &pfind);
150     int sys_pstat(pstat_t &s, const char *filename);
151     int sys_pstat_fd(pstat_t &s, int fd);
152     int sys_truncate(const char *filename, FileOfs ofs);
153     int sys_truncate_fd(int fd, FileOfs ofs);
154     int sys_deletefile(const char *filename);
155     bool sys_is_path_delim(char c);
156     int sys_filename_cmp(const char *a, const char *b);
157     bool sys_filename_is_absolute(const char *filename);
158    
159     SYS_FILE * sys_fopen(const char *filename, int openmode);
160     void sys_fclose(SYS_FILE *file);
161     int sys_fread(SYS_FILE *file, byte *buf, int size);
162     int sys_fwrite(SYS_FILE *file, byte *buf, int size);
163     int sys_fseek(SYS_FILE *file, FileOfs newofs, int seekmode = SYS_SEEK_SET);
164     FileOfs sys_ftell(SYS_FILE *file);
165     void sys_flush(SYS_FILE *file);
166     //int sys_geterror();
167    
168     #endif /* __FILE_H__ */

  ViewVC Help
Powered by ViewVC 1.1.26