From 1513ff9b7899ab588401c89db0e99903dbf5f886 Mon Sep 17 00:00:00 2001 From: Ralf Baechle Date: Mon, 28 Nov 1994 11:59:19 +0000 Subject: Import of Linus's Linux 1.1.68 --- fs/umsdos/file.c | 103 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 fs/umsdos/file.c (limited to 'fs/umsdos/file.c') diff --git a/fs/umsdos/file.c b/fs/umsdos/file.c new file mode 100644 index 000000000..d292ea3c2 --- /dev/null +++ b/fs/umsdos/file.c @@ -0,0 +1,103 @@ +/* + * linux/fs/umsdos/file.c + * + * Written 1993 by Jacques Gelinas + * inspired from linux/fs/msdos/file.c Werner Almesberger + * + * Extended MS-DOS regular file handling primitives + */ + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + + +#define PRINTK(x) +#define Printk(x) printk x +/* + Read a file into user space memory +*/ +static int UMSDOS_file_read( + struct inode *inode, + struct file *filp, + char *buf, + int count) +{ + /* We have to set the access time because msdos don't care */ + int ret = msdos_file_read(inode,filp,buf,count); + inode->i_atime = CURRENT_TIME; + inode->i_dirt = 1; + return ret; +} +/* + Write a file from user space memory +*/ +static int UMSDOS_file_write( + struct inode *inode, + struct file *filp, + char *buf, + int count) +{ + return msdos_file_write(inode,filp,buf,count); +} +/* + Truncate a file to 0 length. +*/ +static void UMSDOS_truncate(struct inode *inode) +{ + PRINTK (("UMSDOS_truncate\n")); + msdos_truncate (inode); + inode->i_ctime = inode->i_mtime = CURRENT_TIME; + inode->i_dirt = 1; +} +/* + See inode.c + + Some entry point are filled dynamically with function pointers + from the msdos file_operations and file_inode_operations. + + The idea is to have the code as independent as possible from + the msdos file system. +*/ + +struct file_operations umsdos_file_operations = { + NULL, /* lseek - default */ + UMSDOS_file_read, /* read */ + UMSDOS_file_write, /* write */ + NULL, /* readdir - bad */ + NULL, /* select - default */ + NULL, /* ioctl - default */ + generic_mmap, /* mmap */ + NULL, /* no special open is needed */ + NULL, /* release */ + file_fsync /* fsync */ +}; + +struct inode_operations umsdos_file_inode_operations = { + &umsdos_file_operations, /* default file operations */ + NULL, /* create */ + NULL, /* lookup */ + NULL, /* link */ + NULL, /* unlink */ + NULL, /* symlink */ + NULL, /* mkdir */ + NULL, /* rmdir */ + NULL, /* mknod */ + NULL, /* rename */ + NULL, /* readlink */ + NULL, /* follow_link */ + NULL, /* bmap */ + UMSDOS_truncate,/* truncate */ + NULL, /* permission */ + msdos_smap /* smap */ +}; + + -- cgit v1.2.3