#include "utils_loop.h"
+#ifndef LOOP_CTL_GET_FREE
+#define LOOP_CTL_GET_FREE 0x4C82
+#endif
+
char *crypt_loop_get_device(void)
{
char dev[20];
return NULL;
}
+/* loop-control not yet upstream */
+#if 0
+char *crypt_loop_get_device(void)
+{
+ char dev[64];
+ int i, loop_fd;
+ struct stat st;
+
+ loop_fd = open("/dev/loop-control", O_RDONLY);
+ if (loop_fd < 0)
+ return NULL;
+
+ i = ioctl(loop_fd, LOOP_CTL_GET_FREE);
+ if (i < 0) {
+ close(loop_fd);
+ return NULL;
+ }
+ close(loop_fd);
+
+ snprintf(dev, "/dev/loop%d", i, sizeof(dev));
+
+ if (stat(dev, &st) || !S_ISBLK(st.st_mode))
+ return NULL;
+
+ return strdup(dev);
+}
+#endif
+
int crypt_loop_attach(const char *loop, const char *file, int offset,
int autoclear, int *readonly)
{