int getttyname_malloc(char **r) {
char path[PATH_MAX], *p, *c;
+ int k;
assert(r);
- if (ttyname_r(STDIN_FILENO, path, sizeof(path)) < 0)
- return -errno;
+ if ((k = ttyname_r(STDIN_FILENO, path, sizeof(path))) != 0)
+ return -k;
char_array_0(path);
return r;
}
-void nss_disable_nscd(void) {
+int touch(const char *path) {
+ int fd;
- void (*func)(void);
+ assert(path);
- /* This is an internal glibc function call. We are not
- * supposed to call this, because we are not nscd. However
- * sometimes we feel really dangerous and do it
- * nonetheless. Muahahah! But at least we protect this with a
- * dlsym() just in case glibc takes this away from us. */
+ if ((fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666)) < 0)
+ return -errno;
- if ((func = dlsym(RTLD_DEFAULT, "__nss_disable_nscd"))) {
- log_debug("Disabling nscd.");
- func();
- } else
- log_debug("Cannot disable nscd.");
+ close_nointr_nofail(fd);
+ return 0;
}
-
static const char *const ioprio_class_table[] = {
[IOPRIO_CLASS_NONE] = "none",
[IOPRIO_CLASS_RT] = "realtime",