1
0
mirror of https://github.com/lammertb/libhttp.git synced 2025-09-03 01:21:16 +03:00

Add version to the settings menu title, change management of the server_name variable, and add some assert to check buffer sizes

This commit is contained in:
bel
2014-03-07 18:28:28 +01:00
parent 492d3f567d
commit 78b4a45886

View File

@@ -39,6 +39,7 @@
#include <stddef.h>
#include <stdarg.h>
#include <ctype.h>
#include <assert.h>
#include "civetweb.h"
@@ -76,10 +77,10 @@ extern char *_getcwd(char *buf, size_t size);
#define MAX_CONF_FILE_LINE_SIZE (8 * 1024)
static int exit_flag;
static char server_name[40]; /* Set by init_server_name() */
static char config_file[PATH_MAX] = ""; /* Set by
process_command_line_arguments() */
static struct mg_context *ctx; /* Set by start_civetweb() */
static char server_base_name[40]; /* Set by init_server_name() */
static char *server_name; /* Set by init_server_name() */
static char config_file[PATH_MAX] = ""; /* Set by process_command_line_arguments() */
static struct mg_context *ctx; /* Set by start_civetweb() */
#if !defined(CONFIG_FILE)
#define CONFIG_FILE "civetweb.conf"
@@ -360,8 +361,10 @@ static void process_command_line_arguments(char *argv[], char **options)
static void init_server_name(void)
{
snprintf(server_name, sizeof(server_name), "Civetweb v%s",
assert((strlen(mg_version())+12)<sizeof(server_base_name));
snprintf(server_base_name, sizeof(server_base_name), "Civetweb V%s",
mg_version());
server_name = server_base_name;
}
static int log_message(const struct mg_connection *conn, const char *message)
@@ -619,6 +622,7 @@ static BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP)
const char *name, *value;
const struct mg_option *default_options = mg_get_valid_options();
char *file_options[MAX_OPTIONS] = {0};
char *title;
switch (msg) {
case WM_CLOSE:
@@ -727,7 +731,13 @@ static BOOL CALLBACK DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lP)
case WM_INITDIALOG:
SendMessage(hDlg, WM_SETICON,(WPARAM) ICON_SMALL, (LPARAM) hIcon);
SendMessage(hDlg, WM_SETICON,(WPARAM) ICON_BIG, (LPARAM) hIcon);
SetWindowText(hDlg, "Civetweb settings");
title = malloc(strlen(server_name)+16);
if (title) {
strcpy(title, server_name);
strcat(title, " settings");
SetWindowText(hDlg, title);
free(title);
}
SetFocus(GetDlgItem(hDlg, ID_SAVE));
for (i = 0; default_options[i].name != NULL; i++) {
name = default_options[i].name;
@@ -850,6 +860,8 @@ static void show_settings_dialog()
add_control(&p, dia, cl, ID_CONTROLS + i, style,
(WORD) (x + LABEL_WIDTH), y, width, 12, "");
nelems++;
assert((int)p - (int)mem < sizeof(mem));
}
y = (WORD) (((nelems + 1) / 2 + 1) * HEIGHT + 5);
@@ -870,7 +882,9 @@ static void show_settings_dialog()
WIDTH - 280, y, 65, 12, "Reload active");
add_control(&p, dia, 0x82, ID_STATIC,
WS_CHILD | WS_VISIBLE | WS_DISABLED,
5, y, 100, 12, server_name);
5, y, 100, 12, server_base_name);
assert((int)p - (int)mem < sizeof(mem));
dia->cy = ((nelems + 1) / 2 + 1) * HEIGHT + 30;
DialogBoxIndirectParam(NULL, dia, NULL, DlgProc, (LPARAM) NULL);
@@ -879,7 +893,7 @@ static void show_settings_dialog()
static int manage_service(int action)
{
static const char *service_name = "Civetweb";
static const char *service_name = "Civetweb"; /* TODO: check using server_name instead of service_name */
SC_HANDLE hSCM = NULL, hService = NULL;
SERVICE_DESCRIPTION descr = {server_name};
char path[PATH_MAX + 20] = "";/* Path to executable plus magic argument */
@@ -924,16 +938,16 @@ static int manage_service(int action)
static LRESULT CALLBACK WindowProc(HWND hWnd, UINT msg, WPARAM wParam,
LPARAM lParam)
{
static SERVICE_TABLE_ENTRY service_table[] = {
{server_name, (LPSERVICE_MAIN_FUNCTION) ServiceMain},
{NULL, NULL}
};
static SERVICE_TABLE_ENTRY service_table[2] = {0};
int service_installed;
char buf[200], *service_argv[] = {__argv[0], NULL};
POINT pt;
HMENU hMenu;
static UINT s_uTaskbarRestart; /* for taskbar creation */
service_table[0].lpServiceName = server_name;
service_table[0].lpServiceProc = (LPSERVICE_MAIN_FUNCTION)ServiceMain;
switch (msg) {
case WM_CREATE:
if (__argv[1] != NULL &&