root/fs/stat.c

/* [previous][next][first][last][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. cp_stat
  2. sys_stat
  3. sys_fstat

   1 /*
   2  *  linux/fs/stat.c
   3  *
   4  *  (C) 1991  Linus Torvalds
   5  */
   6 
   7 #include <errno.h>
   8 #include <sys/stat.h>
   9 
  10 #include <linux/fs.h>
  11 #include <linux/sched.h>
  12 #include <linux/kernel.h>
  13 #include <asm/segment.h>
  14 
  15 static void cp_stat(struct m_inode * inode, struct stat * statbuf)
     /* [previous][next][first][last][top][bottom][index][help] */
  16 {
  17         struct stat tmp;
  18         int i;
  19 
  20         verify_area(statbuf,sizeof (* statbuf));
  21         tmp.st_dev = inode->i_dev;
  22         tmp.st_ino = inode->i_num;
  23         tmp.st_mode = inode->i_mode;
  24         tmp.st_nlink = inode->i_nlinks;
  25         tmp.st_uid = inode->i_uid;
  26         tmp.st_gid = inode->i_gid;
  27         tmp.st_rdev = inode->i_zone[0];
  28         tmp.st_size = inode->i_size;
  29         tmp.st_atime = inode->i_atime;
  30         tmp.st_mtime = inode->i_mtime;
  31         tmp.st_ctime = inode->i_ctime;
  32         for (i=0 ; i<sizeof (tmp) ; i++)
  33                 put_fs_byte(((char *) &tmp)[i],&((char *) statbuf)[i]);
  34 }
  35 
  36 int sys_stat(char * filename, struct stat * statbuf)
     /* [previous][next][first][last][top][bottom][index][help] */
  37 {
  38         struct m_inode * inode;
  39 
  40         if (!(inode=namei(filename)))
  41                 return -ENOENT;
  42         cp_stat(inode,statbuf);
  43         iput(inode);
  44         return 0;
  45 }
  46 
  47 int sys_fstat(unsigned int fd, struct stat * statbuf)
     /* [previous][next][first][last][top][bottom][index][help] */
  48 {
  49         struct file * f;
  50         struct m_inode * inode;
  51 
  52         if (fd >= NR_OPEN || !(f=current->filp[fd]) || !(inode=f->f_inode))
  53                 return -EBADF;
  54         cp_stat(inode,statbuf);
  55         return 0;
  56 }

/* [previous][next][first][last][top][bottom][index][help] */