+static int main_detach(char *type)
+{
+ libubi_t libubi;
+ char mtd[64];
+ int err;
+
+ if (!strcmp(type, "kernel"))
+ err = mtd_find("kernel_ubi", mtd);
+ else if (!strcmp(type, "rootfs"))
+ err = mtd_find("rootfs_ubi", mtd);
+ else
+ return print_usage();
+
+ if (err) {
+ fprintf(stderr, "failed to find mtd partition %s_ubi\n", type);
+ return -1;
+ }
+
+ libubi = libubi_open();
+ if (!libubi) {
+ fprintf(stderr, "cannot open libubi");
+ return -1;
+ }
+
+ err = ubidetach(libubi, mtd);
+ if (err) {
+ fprintf(stderr, "cannot detach \"%s\"", mtd);
+ return -1;
+ }
+
+ return 0;
+}
+