version 1.8, 2005/02/27 09:37:56
|
version 1.9, 2005/02/27 10:44:25
|
|
|
#include "tvfs.h" | #include "tvfs.h" |
#include <string.h> | #include <string.h> |
| |
#define MAXFILES 10 |
#define MAXFILES 20 |
#define MAXHANDLES 10 |
#define MAXHANDLES 20 |
#define MAXFNAME 255 | #define MAXFNAME 255 |
#define MAXFLEN 65536 |
#define MAXFLEN 65536*2 |
| |
#include <fcntl.h> | #include <fcntl.h> |
#include <stdlib.h> | #include <stdlib.h> |
|
|
handler = malloc(sizeof(struct tvfs_fcb)); | handler = malloc(sizeof(struct tvfs_fcb)); |
handler->inode = inode; | handler->inode = inode; |
handler->pos=0; | handler->pos=0; |
h = nfiles++; |
h = nhandles++; |
handles[h] = handler; | handles[h] = handler; |
| |
#ifdef TVFS_DEBUG | #ifdef TVFS_DEBUG |
|
|
| |
void tvfs_free() | void tvfs_free() |
{ | { |
|
|
int inode; | int inode; |
|
int handle; |
| |
#ifdef TVFS_DEBUG | #ifdef TVFS_DEBUG |
trace("tvfs_free\n"); | trace("tvfs_free\n"); |
|
|
continue; | continue; |
free(files[inode]); | free(files[inode]); |
} | } |
|
|
|
for (handle=0; handle<nhandles; handle++) { |
|
if (!handles[handle]) |
|
continue; |
|
free(handles[handle]); |
|
} |
|
|
} | } |
| |
/* Compare given file with given contents, return 0 on equal, else nonzero */ | /* Compare given file with given contents, return 0 on equal, else nonzero */ |
|
|
if (!strcmp(files[inode]->fname, fname)) | if (!strcmp(files[inode]->fname, fname)) |
break; | break; |
} | } |
|
|
if (inode == nfiles) { | if (inode == nfiles) { |
/* File did not exist */ | /* File did not exist */ |
#ifdef TVFS_DEBUG | #ifdef TVFS_DEBUG |
|
|
#endif | #endif |
memcpy(files[inode]->buf+pos, buf, len); | memcpy(files[inode]->buf+pos, buf, len); |
files[inode]->bytes_used += len; | files[inode]->bytes_used += len; |
|
handles[h]->pos += len; |
| |
return len; | return len; |
/* return -1 to simulate diskfull or some other error */ | /* return -1 to simulate diskfull or some other error */ |