package restorer

import (
	"os"

	"github.com/restic/restic/internal/debug"
	"golang.org/x/sys/windows"
)

func truncateSparse(f *os.File, size int64) error {
	// try setting the sparse file attribute, but ignore the error if it fails
	var t uint32
	err := windows.DeviceIoControl(windows.Handle(f.Fd()), windows.FSCTL_SET_SPARSE, nil, 0, nil, 0, &t, nil)
	if err != nil {
		debug.Log("failed to set sparse attribute for %v: %v", f.Name(), err)
	}

	return f.Truncate(size)
}