Ejemplo n.º 1
0
/**
 * Touch access or modify date
 **/
static void recycle_do_touch(vfs_handle_struct *handle, const char *fname, BOOL touch_mtime)
{
    SMB_STRUCT_STAT st;
    struct timespec ts[2];

    if (SMB_VFS_NEXT_STAT(handle, fname, &st) != 0) {
        DEBUG(0,("recycle: stat for %s returned %s\n", fname, strerror(errno)));
        return;
    }
    ts[0] = timespec_current(); /* atime */
    ts[1] = touch_mtime ? ts[0] : get_mtimespec(&st); /* mtime */

    if (SMB_VFS_NEXT_NTIMES(handle, fname, ts) == -1 ) {
        DEBUG(0, ("recycle: touching %s failed, reason = %s\n", fname, strerror(errno)));
    }
}
Ejemplo n.º 2
0
/**
 * Touch access or modify date
 **/
static void recycle_do_touch(vfs_handle_struct *handle,
			     const struct smb_filename *smb_fname,
			     bool touch_mtime)
{
	struct smb_filename *smb_fname_tmp = NULL;
	struct smb_file_time ft;
	NTSTATUS status;
	int ret, err;

	ZERO_STRUCT(ft);

	status = copy_smb_filename(talloc_tos(), smb_fname, &smb_fname_tmp);
	if (!NT_STATUS_IS_OK(status)) {
		return;
	}

	if (SMB_VFS_STAT(handle->conn, smb_fname_tmp) != 0) {
		DEBUG(0,("recycle: stat for %s returned %s\n",
			 smb_fname_str_dbg(smb_fname_tmp), strerror(errno)));
		goto out;
	}
	/* atime */
	ft.atime = timespec_current();
	/* mtime */
	ft.mtime = touch_mtime ? ft.atime : smb_fname_tmp->st.st_ex_mtime;

	become_root();
	ret = SMB_VFS_NEXT_NTIMES(handle, smb_fname_tmp, &ft);
	err = errno;
	unbecome_root();
	if (ret == -1 ) {
		DEBUG(0, ("recycle: touching %s failed, reason = %s\n",
			  smb_fname_str_dbg(smb_fname_tmp), strerror(err)));
	}
 out:
	TALLOC_FREE(smb_fname_tmp);
}
Ejemplo n.º 3
0
static int skel_ntimes(vfs_handle_struct *handle,
		       const struct smb_filename *smb_fname,
		       struct smb_file_time *ft)
{
	return SMB_VFS_NEXT_NTIMES(handle, smb_fname, ft);
}
Ejemplo n.º 4
0
static int skel_ntimes(vfs_handle_struct *handle,  const char *path, const struct timespec ts[2])
{
	return SMB_VFS_NEXT_NTIMES(handle, path, ts);
}