1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <xvfs-core.h>
#include <string.h>
#include <tcl.h>
#if defined(XVFS_MODE_FLEXIBLE) || defined(XVFS_MODE_SERVER)
#define XVFS_INTERNAL_SERVER_MAGIC "\xD4\xF3\x05\x96\x25\xCF\xAF\xFE"
#define XVFS_INTERNAL_SERVER_MAGIC_LEN 8
struct xvfs_tclfs_server_info {
char magic[XVFS_PROTOCOL_SERVER_MAGIC_LEN];
int (*registerProc)(Tcl_Interp *interp, struct Xvfs_FSInfo *fsInfo);
};
#endif /* XVFS_MODE_FLEXIBLE || XVFS_MODE_SERVER */
#if defined(XVFS_MODE_SERVER) || defined(XVFS_MODE_STANDALONE) || defined(XVFS_MODE_FLEXIBLE)
#define XVFS_ROOT_MOUNTPOINT "//xvfs:/"
|
|
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <xvfs-core.h>
#include <string.h>
#include <tcl.h>
#if defined(XVFS_MODE_FLEXIBLE) || defined(XVFS_MODE_SERVER)
#define XVFS_INTERNAL_SERVER_MAGIC "\xD4\xF3\x05\x96\x25\xCF\xAF\xFE"
#define XVFS_INTERNAL_SERVER_MAGIC_LEN 8
struct xvfs_tclfs_server_info {
char magic[XVFS_INTERNAL_SERVER_MAGIC_LEN];
int (*registerProc)(Tcl_Interp *interp, struct Xvfs_FSInfo *fsInfo);
};
#endif /* XVFS_MODE_FLEXIBLE || XVFS_MODE_SERVER */
#if defined(XVFS_MODE_SERVER) || defined(XVFS_MODE_STANDALONE) || defined(XVFS_MODE_FLEXIBLE)
#define XVFS_ROOT_MOUNTPOINT "//xvfs:/"
|
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
return(xvfs_register(interp, fsInfo));
}
fsHandlerData = (struct xvfs_tclfs_server_info *) fsHandlerDataRaw;
/*
* XXX:TODO: What is the chance that the handler for //xvfs:/ hold
* client data smaller than XVFS_PROTOCOL_SERVER_MAGIC_LEN ?
*/
if (memcmp(fsHandlerData->magic, XVFS_PROTOCOL_SERVER_MAGIC, sizeof(fsHandlerData->magic)) == 0) {
xvfs_register = fsHandlerData->registerProc;
}
return(xvfs_register(interp, fsInfo));
}
#endif /* XVFS_MODE_FLEXIBLE */
#if defined(XVFS_MODE_SERVER)
int Xvfs_Register(Tcl_Interp *interp, struct Xvfs_FSInfo *fsInfo) {
return(TCL_ERROR);
}
#endif /* XVFS_MODE_SERVER */
|
|
|
|
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
|
return(xvfs_register(interp, fsInfo));
}
fsHandlerData = (struct xvfs_tclfs_server_info *) fsHandlerDataRaw;
/*
* XXX:TODO: What is the chance that the handler for //xvfs:/ hold
* client data smaller than XVFS_INTERNAL_SERVER_MAGIC_LEN ?
*/
if (memcmp(fsHandlerData->magic, XVFS_INTERNAL_SERVER_MAGIC, sizeof(fsHandlerData->magic)) == 0) {
xvfs_register = fsHandlerData->registerProc;
}
return(xvfs_register(interp, fsInfo));
}
#endif /* XVFS_MODE_FLEXIBLE */
#if defined(XVFS_MODE_SERVER)
int Xvfs_Register(Tcl_Interp *interp, struct Xvfs_FSInfo *fsInfo) {
return(TCL_ERROR);
}
#endif /* XVFS_MODE_SERVER */
|