- if (S_ISDIR(source_st.st_mode))
- mkdir_label(where, 0755);
- else if (S_ISFIFO(source_st.st_mode))
- mkfifo(where, 0644);
- else if (S_ISSOCK(source_st.st_mode))
- mknod(where, 0644 | S_IFSOCK, 0);
- else if (S_ISREG(source_st.st_mode))
- touch(where);
- else {
+ if (S_ISDIR(source_st.st_mode)) {
+ r = mkdir_label(where, 0755);
+ if (r < 0) {
+ log_error("Failed to create mount point %s: %s", where, strerror(-r));
+
+ return r;
+ }
+ } else if (S_ISFIFO(source_st.st_mode)) {
+ r = mkfifo(where, 0644);
+ if (r < 0 && errno != EEXIST) {
+ log_error("Failed to create mount point %s: %m", where);
+
+ return -errno;
+ }
+ } else if (S_ISSOCK(source_st.st_mode)) {
+ r = mknod(where, 0644 | S_IFSOCK, 0);
+ if (r < 0 && errno != EEXIST) {
+ log_error("Failed to create mount point %s: %m", where);
+
+ return -errno;
+ }
+ } else if (S_ISREG(source_st.st_mode)) {
+ r = touch(where);
+ if (r < 0) {
+ log_error("Failed to create mount point %s: %s", where, strerror(-r));
+
+ return r;
+ }
+ } else {