.TP
.BR \-N , " \-\-namespace " \fIns
Perform umount in namespace specified by \fIns\fR.
-\fIns\fR is typically in form \fI/proc/[pid]/ns/mnt\fR.
+\fIns\fR is either PID of process running in that namespace
+or special file representing that namespace.
+See \fBnamespaces\fR(7) for more information.
.TP
.BR \-n , " \-\-no\-mtab"
Unmount without writing in
return p;
}
+static pid_t parse_pid(const char *str)
+{
+ char *end;
+ pid_t ret;
+
+ errno = 0;
+ ret = strtoul(str, &end, 10);
+
+ if (ret < 0 || errno || end == str || (end && *end))
+ return 0;
+ return ret;
+}
+
int main(int argc, char **argv)
{
int c, rc = 0, all = 0, recursive = 0, alltargets = 0;
print_version();
break;
case 'N':
- if (mnt_context_set_target_ns(cxt, optarg))
- err(MNT_EX_SYSERR, _("failed to set target namespace"));
+ {
+ char path[PATH_MAX];
+ pid_t pid = parse_pid(optarg);
+
+ if (pid)
+ snprintf(path, sizeof(path), "/proc/%i/ns/mnt", pid);
+
+ if (mnt_context_set_target_ns(cxt, pid ? path : optarg))
+ err(MNT_EX_SYSERR, _("failed to set target namespace to %s"), pid ? path : optarg);
break;
}
default: