package main

import (
	"syscall"

	"github.com/freddierice/go-losetup/v2"
)

var loDevices = map[string]losetup.Device{}

func losetupAttach(file string) losetup.Device {
	if _, ok := loDevices[file]; !ok {
		dev, err := losetup.Attach(file, 0, true)
		if err != nil {
			fatalf("failed to attach %q to a loop device: %v", file, err)
		}

		loDevices[file] = dev
	}
	return loDevices[file]
}

func mountSquahfs(source, target string) {
	dev := losetupAttach(source)
	mount(dev.Path(), target, "squashfs", syscall.MS_RDONLY, "")
}
