aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rfsv16.h
blob: bb6a94726bafaaee88df7f4b9865da8b64cc89de (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
#ifndef _rfsv16_h_
#define _rfsv16_h_

#include "rfsv.h"

class rfsv16 : public rfsv {
	public:
	rfsv16(ppsocket *);
	~rfsv16();
	void reset(); // these 2 added
	void reconnect();

	// these are the original publics
	long dir(const char *, bufferArray *);
	/*long read(const char* psionName, const char* localName);
	long write(const char* localName, const char* psionName);*/
	long mkdir(const char *);

	// these are FS' promotions
	long dircount(const char *, long *);
	long copyFromPsion(const char *, const char *, cpCallback_t);
	long copyToPsion(const char *, const char *, cpCallback_t);
	long rmdir(const char *);
	long remove(const char *); // MJG: was this del? FE: yes
	long rename(const char *, const char *);
	long mktemp(long *, char *);
	long fgeteattr(const char *, long *, long *, long *);
	long fgetattr(const char *, long *);
	long fsetattr(const char *, long seta, long unseta);
	long fgetmtime(const char *, long *);
	long fsetmtime(const char *, long);
	long fopendir(long, const char *, long &);
	long fopen(long, const char *, long &);
	long fcreatefile(long, const char *, long &);
	long freplacefile(long, const char *, long &);
	long fseek(long, long, long);
	long fread(long, unsigned char *, long);
	long fwrite(long, unsigned char *, long);
	long fsetsize(long, long);
	long fclose(long);

	long devlist(long *);
	char *devinfo(int, long *, long *, long *, long *);
	long getStatus();
	char *opErr(long);
	char *opAttr(long);
	long opMode(long);

	long attr2std(long);
	long std2attr(long);

private:
  enum commands {
    FOPEN = 0, // File Open
    FCLOSE = 2, // File Close
    FREAD = 4, // File Read
    FDIRREAD = 6, // Read Directory entries
    FDEVICEREAD = 8, // Device Information
    FWRITE = 10, // File Write
    FSEEK = 12, // File Seek
    FFLUSH = 14, // Flush
    FSETEOF = 16,
    RENAME = 18,
    DELETE = 20,
    FINFO = 22,
    SFSTAT = 24,
    PARSE = 26,
    MKDIR = 28,
    OPENUNIQUE = 30,
    STATUSDEVICE = 32,
    PATHTEST = 34,
    STATUSSYSTEM = 36,
    CHANGEDIR = 38,
    SFDATE = 40,
    RESPONSE = 42
  };
  
  enum fopen_attrib {
    P_FOPEN = 0x0000, /* Open file */
    P_FCREATE = 0x0001, /* Create file */
    P_FREPLACE = 0x0002, /* Replace file */
    P_FAPPEND = 0x0003, /* Append records */
    P_FUNIQUE = 0x0004, /* Unique file open */
    P_FSTREAM = 0x0000, /* Stream access to a binary file */
    P_FSTREAM_TEXT = 0x0010, /* Stream access to a text file */
    P_FTEXT = 0x0020, /* Record access to a text file */
    P_FDIR = 0x0030, /* Record access to a directory file */
    P_FFORMAT = 0x0040, /* Format a device */
    P_FDEVICE = 0x0050, /* Record access to device name list */
    P_FNODE = 0x0060, /* Record access to node name list */
    P_FUPDATE = 0x0100, /* Read and write access */
    P_FRANDOM = 0x0200, /* Random access */
    P_FSHARE = 0x0400 /* File can be shared */
  };

  enum status_enum {
    P_FAWRITE = 0x0001, /* can the file be written to? */    
    P_FAHIDDEN = 0x0002, /* set if file is hidden */    
    P_FASYSTEM = 0x0004, /* set if file is a system file */
    P_FAVOLUME = 0x0008, /* set if the name is a volume name */    
    P_FADIR = 0x0010, /* set if file is a directory file */    
    P_FAMOD = 0x0020, /* has the file been modified? */    
    P_FAREAD = 0x0100, /* can the file be read? */    
    P_FAEXEC = 0x0200, /* is the file executable? */
    P_FASTREAM = 0x0400, /* is the file a byte stream file? */    
    P_FATEXT = 0x0800 /* is it a text file? */
  };
  
  const char *getConnectName();

  // File handlers
  //long fopen(fopen_attrib a, const char* file, int &handle); // returns status 0=OK
  //long fclose(int fileHandle);

	// Miscellaneous
	int convertName(const char*, char *);

	// Communication
	bool sendCommand(enum commands, bufferStore &);
	long getResponse(bufferStore &);
  
	// Vars
	ppsocket *skt;
	// MJG: not sure what these are yet
	int serNum;
	long status;	// current connection status
	int tDiff;	// don't think this is used anywhere
};

#endif