]> andersk Git - openssh.git/blobdiff - misc.c
- markus@cvs.openbsd.org 2001/04/22 23:58:36
[openssh.git] / misc.c
diff --git a/misc.c b/misc.c
index 4ec5d55fff67d2e73681dfca3a7f60b156df0d62..feeacb8593b0be7ac416f5b6b579e8e5ee7ff6c8 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1,4 +1,4 @@
-/*     $OpenBSD: misc.c,v 1.1 2001/01/21 19:05:52 markus Exp $ */
+/*     $OpenBSD: misc.c,v 1.5 2001/04/12 20:09:37 stevesk Exp $        */
 
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: misc.c,v 1.1 2001/01/21 19:05:52 markus Exp $");
+RCSID("$OpenBSD: misc.c,v 1.5 2001/04/12 20:09:37 stevesk Exp $");
 
 #include "misc.h"
 #include "log.h"
+#include "xmalloc.h"
 
 char *
 chop(char *s)
@@ -96,6 +97,40 @@ strdelim(char **s)
        return (old);
 }
 
+struct passwd *
+pwcopy(struct passwd *pw)
+{
+       struct passwd *copy = xmalloc(sizeof(*copy));
+
+       memset(copy, 0, sizeof(*copy));
+       copy->pw_name = xstrdup(pw->pw_name);
+       copy->pw_passwd = xstrdup(pw->pw_passwd);
+       copy->pw_gecos = xstrdup(pw->pw_gecos);
+       copy->pw_uid = pw->pw_uid;
+       copy->pw_gid = pw->pw_gid;
+#ifdef HAVE_PW_CLASS_IN_PASSWD
+       copy->pw_class = xstrdup(pw->pw_class);
+#endif
+       copy->pw_dir = xstrdup(pw->pw_dir);
+       copy->pw_shell = xstrdup(pw->pw_shell);
+       return copy;
+}
+
+int a2port(const char *s)
+{
+       long port;
+       char *endp;
+
+       errno = 0;
+       port = strtol(s, &endp, 0);
+       if (s == endp || *endp != '\0' ||
+           (errno == ERANGE && (port == LONG_MIN || port == LONG_MAX)) ||
+           port <= 0 || port > 65535)
+               return 0;
+
+       return port;
+}
+
 mysig_t
 mysignal(int sig, mysig_t act)
 {
@@ -108,12 +143,12 @@ mysignal(int sig, mysig_t act)
                memset(&sa, 0, sizeof(sa));
                sigemptyset(&sa.sa_mask);
                sa.sa_flags = 0;
-#ifdef SA_RESTART
+#if defined(SA_RESTART)
                if (sig == SIGCHLD)
                        sa.sa_flags |= SA_RESTART;
 #endif
-#ifdef SA_INTERRUPT
-               if (sig == SIGCHLD)
+#if defined(SA_INTERRUPT)
+               if (sig == SIGALRM)
                        sa.sa_flags |= SA_INTERRUPT;
 #endif
                sa.sa_handler = act;
This page took 0.037395 seconds and 4 git commands to generate.