summaryrefslogtreecommitdiff
blob: 00edacb55be28a1808add591a7d4a10c6b737786 (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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
This patch makes it possible to compile lufis without the lufs package.
It has been merged to the lufis cvs tree.
We would like to remove lufs soon in favour of the newer system fuse.

diff -Naur lufis-0.2.orig/lufs/fs.h lufis-0.2/lufs/fs.h
--- lufis-0.2.orig/lufs/fs.h	1970-01-01 01:00:00.000000000 +0100
+++ lufis-0.2/lufs/fs.h	2004-11-12 21:07:45.714978800 +0100
@@ -0,0 +1,112 @@
+/*
+ * lufs.h
+ * Copyright (C) 2002 Florin Malita <mali@go.ro>
+ *
+ * This file is part of LUFS, a free userspace filesystem implementation.
+ * See http://lufs.sourceforge.net/ for updates.
+ *
+ * LUFS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * LUFS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _LUFS_FS_H_
+#define _LUFS_FS_H_
+
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct dir_cache;
+struct directory;
+struct lufs_fattr;
+struct file_system;
+struct list_head;
+struct dir_cache;
+
+#define MAX_LEN		64
+
+struct credentials{
+    char	user[MAX_LEN];
+    char	group[MAX_LEN];
+    uid_t	uid;
+    gid_t	gid;
+};
+
+
+struct directory* lu_cache_mkdir(char*);
+int lu_cache_add2dir(struct directory*, char*, char*, struct lufs_fattr*);
+int lu_cache_lookup(struct dir_cache*, char*, char*, struct lufs_fattr*, char*, int);
+void lu_cache_add_dir(struct dir_cache*, struct directory*);
+void lu_cache_killdir(struct directory*);
+
+int lu_check_to(int, int, int);
+int lu_atomic_read(int, char*, int, int);
+int lu_atomic_write(int, char*, int, int);
+
+int lu_opt_loadcfg(struct list_head*, char*);
+int lu_opt_parse(struct list_head*, char*, char*);
+int lu_opt_getint(struct list_head*, char*, char*, long int*, int);
+const char* lu_opt_getchar(struct list_head*, char*, char*);
+
+
+#ifdef __cplusplus
+} /* end of extern "C" { */
+#endif
+
+#ifdef TRACE
+#undef TRACE
+#endif
+#ifdef WARN
+#undef WARN
+#endif
+#ifdef ERROR
+#undef ERROR
+#endif
+
+#ifdef __cplusplus
+
+#include <iostream>
+
+#ifdef DEBUG
+#define TRACE(x) 	cout<<std::hex<<"["<<getpid()<<"]("<<__func__<<")"<<x<<"\n"
+#define WARN(x)		cerr<<std::hex<<"["<<getpid()<<"]("<<__func__<<")"<<x<<"\n"
+#define ERROR(x)	cerr<<std::hex<<"["<<getpid()<<"]("<<__func__<<")"<<x<<"\n"
+#else
+#define TRACE(x...)	do{}while(0)
+#define WARN(x...)	do{}while(0)
+#define ERROR(x...)	cerr<<x<<"\n"
+#endif
+
+#else
+
+#include <stdio.h>
+
+#ifdef DEBUG
+#define TRACE(x...)	do{fprintf(stderr, "[%x](%s) ", getpid(), __func__); fprintf(stderr, x); fprintf(stderr, "\n");}while(0)
+#define WARN(x...)	do{fprintf(stderr, "[%x](%s) ", getpid(), __func__); fprintf(stderr, x); fprintf(stderr, "\n");}while(0)
+#define ERROR(x...)	do{fprintf(stderr, "[%x](%s) ", getpid(), __func__); fprintf(stderr, x); fprintf(stderr, "\n");}while(0)
+#else
+#define TRACE(x...)	do{}while(0)
+#define WARN(x...)	do{}while(0)
+#define ERROR(x...)	do{fprintf(stderr, x); fprintf(stderr, "\n");}while(0)
+#endif
+
+#endif
+
+
+
+#endif
+
diff -Naur lufis-0.2.orig/lufs/proto.h lufis-0.2/lufs/proto.h
--- lufis-0.2.orig/lufs/proto.h	1970-01-01 01:00:00.000000000 +0100
+++ lufis-0.2/lufs/proto.h	2004-11-12 21:07:45.715978648 +0100
@@ -0,0 +1,116 @@
+/*
+ * proto.h
+ * Copyright (C) 2002 Florin Malita <mali@go.ro>
+ *
+ * This file is part of LUFS, a free userspace filesystem implementation.
+ * See http://lufs.sourceforge.net/ for updates.
+ *
+ * LUFS is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * LUFS is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#ifndef _LU_PROTO_H_
+#define _LU_PROTO_H_
+
+#define LU_MAXDATA	4096
+
+#define PVERSION	0x02
+
+#define PTYPE_OK	0x00
+#define PTYPE_MOUNT	0x01
+#define PTYPE_READ	0x02
+#define PTYPE_WRITE	0x03
+#define PTYPE_READDIR	0x04
+#define PTYPE_STAT	0x05
+#define PTYPE_UMOUNT	0x06
+#define PTYPE_SETATTR	0x07
+#define PTYPE_MKDIR	0x08
+#define PTYPE_RMDIR	0x09
+#define PTYPE_CREATE	0x0A
+#define PTYPE_UNLINK	0x0B
+#define PTYPE_RENAME	0x0C
+#define PTYPE_OPEN	0x0D
+#define PTYPE_RELEASE	0x0E
+#define PTYPE_READLINK	0x0F
+#define PTYPE_LINK	0x10
+#define PTYPE_SYMLINK	0x11
+#define PTYPE_STATFS	0x12
+
+#define PTYPE_MAX	0x12
+
+
+#define PTYPE_ERROR	0x100
+
+#define PERROR(x)	(-(x & (PTYPE_ERROR - 1)) - 1)
+#define PIS_ERROR(x)	(x & PTYPE_ERROR)
+
+struct lu_msg {
+    unsigned short	msg_version;
+    unsigned short	msg_type;
+    unsigned short	msg_datalen;
+    unsigned short	msg_pid;
+};
+
+
+struct lufs_fattr{
+    unsigned long	f_ino;
+    unsigned long	f_mode;
+    unsigned long	f_nlink;
+    unsigned long	f_uid;
+    unsigned long	f_gid;
+    long long		f_size;
+    unsigned long	f_atime;
+    unsigned long	f_mtime;
+    unsigned long	f_ctime;
+    unsigned long	f_blksize;
+    unsigned long	f_blocks;
+};
+
+
+struct lufs_sbattr{	/* struct statfs64 */
+    unsigned long long sb_bytes;
+    unsigned long long sb_bytes_free;
+    unsigned long long sb_bytes_available;
+    unsigned long long sb_files;
+    unsigned long long sb_ffree;
+};
+
+
+struct lufs_req_readdir{
+    unsigned short	offset;
+    char		dirname[0];
+};
+
+struct lufs_req_mkdir{
+    int		mode;
+    char	dirname[0];
+};
+
+struct lufs_req_rw{
+    long long		offset;
+    unsigned long	count;
+    char		name[0];
+};
+
+struct lufs_req_open{
+    unsigned 	mode;
+    char	name[0];
+};
+
+struct lufs_req_setattr{
+    struct lufs_fattr 	fattr;
+    char		name[0];
+};
+
+#endif
diff -Naur lufis-0.2.orig/Makefile lufis-0.2/Makefile
--- lufis-0.2.orig/Makefile	2004-11-12 21:07:36.138434656 +0100
+++ lufis-0.2/Makefile	2004-11-12 21:10:04.342904152 +0100
@@ -1,5 +1,5 @@
 CC = gcc
-CFLAGS = -Wall -W -g
+CFLAGS += -Wall -W -g -I.
 LDLIBS = -lfuse -lpthread -ldl -rdynamic
 CPPFLAGS := -D_FILE_OFFSET_BITS=64
 #CPPFLAGS += -DDEBUG