]> ruderich.org/simon Gitweb - socket2unix/socket2unix.git/blobdiff - src/socket2unix.c
get_options(): change loop style
[socket2unix/socket2unix.git] / src / socket2unix.c
index 1f741b5f5680e9b97d0f09be17540f718523d2cd..693892d5c44c8190c2f5b39b38e0e89ef1cdf4d4 100644 (file)
@@ -46,7 +46,7 @@
 #define LOG_LEVEL_DEBUG   3
 #define LOG_LEVEL_MASK    LOG_LEVEL_DEBUG
 
-#define LOG_LEVEL_PERROR  42
+#define LOG_LEVEL_PERROR  (1 << 10)
 
 #define OPTION_PARSED                                   (1 << 1)
 /* Don't intercept listen(), accept(). */
@@ -230,22 +230,24 @@ static int get_log_level(void) {
     return number;
 }
 static int get_options(void) {
-    const char *pos = getenv("SOCKET2UNIX_OPTIONS");
-    if (!pos) {
+    const char *start = getenv("SOCKET2UNIX_OPTIONS");
+    if (!start) {
         return OPTION_PARSED;
     }
 
     int options = OPTION_PARSED;
 
-    while (*pos != '\0') {
+    const char *end = start + strlen(start);
+    const char *pos, *curend;
+
+    for (pos = start; pos < end; pos = curend + 1) {
         size_t length;
 
-        const char *end = strchr(pos, ',');
-        if (end == NULL) {
-            length = strlen(pos);
-        } else {
-            length = (size_t)(end - pos);
+        curend = strchr(pos, ',');
+        if (curend == NULL) {
+            curend = end;
         }
+        length = (size_t)(curend - pos);
 
         if (!strncmp("client_only", pos, length)) {
             options |= OPTION_CLIENT_ONLY;
@@ -258,11 +260,6 @@ static int get_options(void) {
             ERROR("unknown option '%s' in SOCKET2UNIX_OPTIONS\n",
                   option);
         }
-
-        if (end == NULL) {
-            break;
-        }
-        pos = end + 1;
     }
 
     if ((options & OPTION_CLIENT_ONLY) && (options & OPTION_SERVER_ONLY)) {
@@ -370,10 +367,10 @@ static int set_sockaddr_un(struct sockaddr_un *sockaddr,
     int port;
     if (addr->sa_family == AF_INET) {
         af   = "v4";
-        port = ntohs(((struct sockaddr_in *)addr)->sin_port);
+        port = ntohs(((const struct sockaddr_in *)addr)->sin_port);
     } else if (addr->sa_family == AF_INET6) {
         af   = "v6";
-        port = ntohs(((struct sockaddr_in6 *)addr)->sin6_port);
+        port = ntohs(((const struct sockaddr_in6 *)addr)->sin6_port);
     } else {
         af   = "unknown";
         port = 0;
@@ -448,14 +445,14 @@ int close(int fd) {
     static int (*real_close)(int);
     LOAD_FUNCTION(real_close, "close");
 
-    DBG("close(%d)\n", fd);
-
     struct list *entry = remove_sockfd(fd);
     if (entry == NULL) {
         DBG("close(%d): sockfd not found\n", fd);
         return real_close(fd);
     }
     assert(fd == entry->orig_sockfd);
+
+    DBG("close(%d)\n", fd);
     free(entry->orig_addr);
     free(entry);
 
@@ -466,8 +463,6 @@ int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
     static int (*real_bind)(int, const struct sockaddr *, socklen_t);
     LOAD_FUNCTION(real_bind, "bind");
 
-    DBG("bind(%d, ..)\n", sockfd);
-
     if (addr == NULL || addrlen < sizeof(addr->sa_family)
             || addr->sa_family == AF_UNIX
             || addr->sa_family == AF_LOCAL) {
@@ -593,8 +588,6 @@ int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) {
         return real_accept(sockfd, addr, addrlen);
     }
 
-    DBG("accept(%d, ..)\n", sockfd);
-
     struct list *entry = find_sockfd(sockfd);
     if (!entry) {
         DBG("accept(%d, ..): sockfd not found\n", sockfd);
@@ -647,8 +640,6 @@ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
         return real_connect(sockfd, addr, addrlen);
     }
 
-    DBG("connect(%d, ..)\n", sockfd);
-
     if (addr == NULL || addrlen < sizeof(addr->sa_family)
             || addr->sa_family == AF_UNIX
             || addr->sa_family == AF_LOCAL) {