Prechádzať zdrojové kódy

Trimming whitespaces properly in windows CGI interpreter name

Sergey Lyubka 12 rokov pred
rodič
commit
2aaedef4af
1 zmenil súbory, kde vykonal 8 pridanie a 4 odobranie
  1. 8 4
      mongoose.c

+ 8 - 4
mongoose.c

@@ -1243,6 +1243,13 @@ static int kill(pid_t pid, int sig_num) {
   return 0;
   return 0;
 }
 }
 
 
+static void trim_trailing_whitespaces(char *s) {
+  char *e = s + strlen(s) - 1;
+  while (e > s && isspace(* (unsigned char *) e)) {
+    *e-- = '\0';
+  }
+}
+
 static pid_t spawn_process(struct mg_connection *conn, const char *prog,
 static pid_t spawn_process(struct mg_connection *conn, const char *prog,
                            char *envblk, char *envp[], int fd_stdin,
                            char *envblk, char *envp[], int fd_stdin,
                            int fd_stdout, const char *dir) {
                            int fd_stdout, const char *dir) {
@@ -1279,10 +1286,7 @@ static pid_t spawn_process(struct mg_connection *conn, const char *prog,
     }
     }
 
 
     if (buf[0] == '#' && buf[1] == '!') {
     if (buf[0] == '#' && buf[1] == '!') {
-      // Trim whitespace in interpreter name
-      for (p = buf + 2; *p != '\0' && isspace(* (unsigned char *) p); )
-        p++;
-      *p = '\0';
+      trim_trailing_whitespaces(buf + 2);
     } else {
     } else {
       buf[2] = '\0';
       buf[2] = '\0';
     }
     }