summaryrefslogtreecommitdiff
path: root/minix/lib/libpuffs/time.c
blob: 73c07aaf6746c4de6071662920239ab3dfc3d89a (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
/* Created (MFS based):
 *   February 2010 (Evgeniy Ivanov)
 */

#include "fs.h"


/*===========================================================================*
 *				fs_utime				     *
 *===========================================================================*/
int fs_utime(ino_t ino_nr, struct timespec *atime, struct timespec *mtime)
{
  struct puffs_node *pn;
  struct vattr va;
  PUFFS_MAKECRED(pcr, &global_kcred);

  if (global_pu->pu_ops.puffs_node_setattr == NULL)
	return(EINVAL);

  if( (pn = puffs_pn_nodewalk(global_pu, find_inode_cb, &ino_nr)) == NULL)
        return(EINVAL);

  puffs_vattr_null(&va);
  va.va_atime = *atime;
  va.va_mtime = *mtime;
  (void)clock_time(&va.va_ctime);

  if (global_pu->pu_ops.puffs_node_setattr(global_pu, pn, &va, pcr) != 0)
	return(EINVAL);

  return(OK);
}