logind: change to -1+errno
Set errno and return -1 in public API calls like all other weston code does. Most systemd+dbus calls return negative error-codes instead of -1 and setting errno. Thus, we need to explicitly set errno before returning. Also note that we must set errno _after_ the cleanup path. Calling functions like close() in the cleanup path might overwrite errno (which is not what we want). So protect errno until the final return -1;
This commit is contained in:
parent
f86c39058a
commit
fcb6bf43a4
@ -169,9 +169,11 @@ weston_logind_open(struct weston_logind *wl, const char *path,
|
|||||||
|
|
||||||
r = stat(path, &st);
|
r = stat(path, &st);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return -errno;
|
return -1;
|
||||||
if (!S_ISCHR(st.st_mode))
|
if (!S_ISCHR(st.st_mode)) {
|
||||||
return -ENODEV;
|
errno = ENODEV;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
fd = weston_logind_take_device(wl, major(st.st_rdev),
|
fd = weston_logind_take_device(wl, major(st.st_rdev),
|
||||||
minor(st.st_rdev), NULL);
|
minor(st.st_rdev), NULL);
|
||||||
@ -221,7 +223,8 @@ err_close:
|
|||||||
close(fd);
|
close(fd);
|
||||||
weston_logind_release_device(wl, major(st.st_rdev),
|
weston_logind_release_device(wl, major(st.st_rdev),
|
||||||
minor(st.st_rdev));
|
minor(st.st_rdev));
|
||||||
return r;
|
errno = -r;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
@ -264,7 +267,7 @@ weston_logind_activate_vt(struct weston_logind *wl, int vt)
|
|||||||
|
|
||||||
r = ioctl(wl->vt, VT_ACTIVATE, vt);
|
r = ioctl(wl->vt, VT_ACTIVATE, vt);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return -errno;
|
return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -899,7 +902,8 @@ err_wl:
|
|||||||
free(wl);
|
free(wl);
|
||||||
err_out:
|
err_out:
|
||||||
weston_log("logind: cannot setup systemd-logind helper (%d), using legacy fallback\n", r);
|
weston_log("logind: cannot setup systemd-logind helper (%d), using legacy fallback\n", r);
|
||||||
return r;
|
errno = -r;
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
WL_EXPORT void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user