aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2024-02-11 10:32:08 +0000
committerRon Yorston <rmy@pobox.com>2024-02-11 10:32:08 +0000
commit5809565f70bd51451ef51da7dfc33716458abec3 (patch)
treeee3343303b7f6f06c1bba556025226c1e655f961
parent5604ec323049c89b09ec7b5f4c816ab659e25dfc (diff)
downloadbusybox-w32-5809565f70bd51451ef51da7dfc33716458abec3.tar.gz
busybox-w32-5809565f70bd51451ef51da7dfc33716458abec3.tar.bz2
busybox-w32-5809565f70bd51451ef51da7dfc33716458abec3.zip
httpd: code shrink
When setting up the arguments for the CGI handler: - Use '-I0' rather than two separate arguments. - Use memcpy() to copy the server arguments. Saves 32 bytes.
-rw-r--r--networking/httpd.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/networking/httpd.c b/networking/httpd.c
index 0853eaad1..26656fd16 100644
--- a/networking/httpd.c
+++ b/networking/httpd.c
@@ -1656,7 +1656,6 @@ static void send_cgi_and_exit(
1656 int pid; 1656 int pid;
1657#if ENABLE_PLATFORM_MINGW32 1657#if ENABLE_PLATFORM_MINGW32
1658 char **argv; 1658 char **argv;
1659 int i;
1660#endif 1659#endif
1661 1660
1662 /* Make a copy. NB: caller guarantees: 1661 /* Make a copy. NB: caller guarantees:
@@ -1752,19 +1751,17 @@ static void send_cgi_and_exit(
1752 } 1751 }
1753 script++; 1752 script++;
1754 1753
1755 argv = xzalloc((server_argc + 9) * sizeof(char *)); 1754 argv = xzalloc((server_argc + 8) * sizeof(char *));
1756 argv[0] = (char *)bb_busybox_exec_path; 1755 argv[0] = (char *)bb_busybox_exec_path;
1757 argv[1] = (char *)"--busybox"; 1756 argv[1] = (char *)"--busybox";
1758 argv[2] = (char *)"-httpd"; // don't daemonise in main() 1757 argv[2] = (char *)"-httpd"; // don't daemonise in main()
1759 argv[3] = (char *)"-I"; 1758 argv[3] = (char *)"-I0";
1760 argv[4] = (char *)"0"; 1759 memcpy(argv + 4, server_argv, sizeof(*argv) * server_argc);
1761 for (i = 0; i < server_argc; ++i) 1760 argv[server_argc + 4] = xasprintf("%d:%d:%d:%d", toCgi.wr, toCgi.rd,
1762 argv[i + 5] = server_argv[i];
1763 argv[server_argc + 5] = xasprintf("%d:%d:%d:%d", toCgi.wr, toCgi.rd,
1764 fromCgi.wr, fromCgi.rd); 1761 fromCgi.wr, fromCgi.rd);
1765 argv[server_argc + 6] = (char *)url + 1; // script directory 1762 argv[server_argc + 5] = (char *)url + 1; // script directory
1766 argv[server_argc + 7] = (char *)script; // script name 1763 argv[server_argc + 6] = (char *)script; // script name
1767 /* argv[server_argc + 8] = NULL; - xzalloc did it */ 1764 /* argv[server_argc + 7] = NULL; - xzalloc did it */
1768 1765
1769 pid = foreground ? mingw_spawn(argv) : mingw_spawn_detach(argv); 1766 pid = foreground ? mingw_spawn(argv) : mingw_spawn_detach(argv);
1770 if (pid == -1) 1767 if (pid == -1)