]> andersk Git - openssh.git/blobdiff - bsd-login.c
- Don't touch utmp if USE_UTMPX defined
[openssh.git] / bsd-login.c
index 6a80928e0c1523a1d636fe1385fbfc1d5e36bfa6..de49214c09538b1034ed8ae3c1246c62074d709d 100644 (file)
@@ -73,7 +73,7 @@ struct utmp * utp;
        int t = 0;
        struct utmp * u;
 
-#ifdef HAVE_TYPE_IN_UTMP
+#if defined(HAVE_TYPE_IN_UTMP) || defined(HAVE_TYPE_IN_UTMPX)
        setutent();
 
        while((u = getutent()) != NULL) {
@@ -123,16 +123,26 @@ login(utp)
         */
        tty = find_tty_slot(utp);
 
+#ifdef USE_UTMPX
+       fd = open(_PATH_UTMPX, O_RDWR|O_CREAT, 0644);
+       if (fd == -1) {
+               log("Couldn't open %s: %s", _PATH_UTMPX, strerror(errno));
+#else /* USE_UTMPX */
        fd = open(_PATH_UTMP, O_RDWR|O_CREAT, 0644);
        if (fd == -1) {
                log("Couldn't open %s: %s", _PATH_UTMP, strerror(errno));
+#endif /* USE_UTMPX */
        } else {
                /* If no tty was found... */
                if (tty == -1) {
                        /* ... append it to utmp on login */
-#ifdef HAVE_TYPE_IN_UTMP
+#if defined(HAVE_TYPE_IN_UTMP) || defined(HAVE_TYPE_IN_UTMPX)
                        if (utp->ut_type == USER_PROCESS) {
+#ifdef USE_UTMPX
+                               if ((fd = open(_PATH_UTMPX, O_WRONLY|O_APPEND, 0)) >= 0) {
+#else /* USE_UTMPX */
                                if ((fd = open(_PATH_UTMP, O_WRONLY|O_APPEND, 0)) >= 0) {
+#endif /* USE_UTMPX */
                                        (void)write(fd, utp, sizeof(struct utmp));
                                        (void)close(fd);
                                }
This page took 0.062106 seconds and 4 git commands to generate.