Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
typedef struct File	File;
2
typedef struct Node	Node;
3
typedef struct OS	OS;
4
 
5
#pragma incomplete File
6
 
7
enum
8
{
9
	Maxpath=	512,
10
};
11
 
12
/* a tree for file path's - this mirrors the directory structure */
13
struct Node
14
{
15
	String	*remname;
16
	Dir	*d;
17
	Node	*parent;
18
	Node	*sibs;
19
	Node	*children;
20
	File	*fp;
21
	short	depth;
22
	char	chdirunknown;	/* true if QTDIR bit of files in this dir is unknown */
23
	int	opens;
24
};
25
 
26
/* OS types */
27
enum
28
{
29
	Unix=		1,
30
	Tops=		2,
31
	Plan9=		3,
32
	VM=		4,
33
	VMS=		5,
34
	MVS=		6,
35
	NetWare=	7,
36
	OSĀ½=		8,
37
	TSO=		9,
38
	NT=		10,
39
	Unknown=	11,
40
};
41
 
42
struct OS
43
{
44
	int	os;
45
	char	*name;
46
};
47
extern OS oslist[];
48
 
49
/* temporary files */
50
void	filefree(Node*);
51
int	fileread(Node*, char*, long, int);
52
int	filewrite(Node*, char*, long, int);
53
void	filedirty(Node*);
54
void	fileclean(Node*);
55
int	fileisdirty(Node*);
56
 
57
/* ftp protocol */
58
void	hello(char*);
59
void	quit(void);
60
void	preamble(char*);
61
void	rlogin(char *, char *);
62
void	clogin(char *, char *);
63
void	nop(void);
64
int	readdir(Node*);
65
int	createdir(Node*);
66
int	readfile(Node*);
67
int	createfile(Node*);
68
int	changedir(Node*);
69
int	removefile(Node*);
70
int	removedir(Node*);
71
 
72
/* misc */
73
void*	safecpy(void*, void*, int);
74
void	fatal(char*, ...);
75
int	seterr(char*, ...);
76
Node*	extendpath(Node*, String*);
77
Node*	newnode(Node*, String*);
78
void	uncache(Node*);
79
void	invalidate(Node*);
80
void	uncachedir(Node*, Node*);
81
Node*	newtopsdir(char*);
82
void	fixsymbolic(Node*);
83
Dir*	reallocdir(Dir *d, int dofree);
84
Dir*	dir_change_name(Dir *d, char *name);
85
Dir*	dir_change_uid(Dir *d, char *name);
86
Dir*	dir_change_gid(Dir *d, char *name);
87
Dir*	dir_change_muid(Dir *d, char *name);
88
 
89
extern Node *remdir;	/* current directory on remote side */
90
extern Node *remroot;	/* root on remote side */
91
extern int os;		/* remote os */
92
extern int debug;	/* non-zero triggers debugging output */
93
extern int usenlst;
94
extern char *nosuchfile;
95
extern char *ext;	/* add to names of non-dir files */
96
extern int defos;
97
extern int quiet;
98
extern char *user;
99
 
100
#define ISCACHED(x) ((x)->d->type)
101
#define UNCACHED(x) (x)->d->type = 0
102
#define CACHED(x) { (x)->d->type = 1; (x)->d->atime = time(0); }
103
#define ISOLD(x) (x)->d->atime + TIMEOUT < time(0)
104
#define ISVALID(x) ((x)->d->dev)
105
#define INVALID(x) (x)->d->dev = 0
106
#define VALID(x) (x)->d->dev = 1
107
#define TIMEOUT 5*60
108
#define DMSYML 0x10000000
109
 
110
#define MAXFDATA 8192
111
 
112
extern char	net[];		/* network for connections */