Parcourir la source

options-generator: fixed generation for 'daemon'

Evgeny Grin (Karlson2k) il y a 1 an
Parent
commit
81fd1fb51f
2 fichiers modifiés avec 32 ajouts et 21 suppressions
  1. 12 12
      src/include/Makefile.am
  2. 20 9
      src/include/options-generator.c

+ 12 - 12
src/include/Makefile.am

@@ -1,25 +1,25 @@
 # This Makefile.am is in the public domain
 SUBDIRS = .
 
-#microhttpd2_inline_daemon_documentation.h.in microhttpd2_generated_daemon_options.h: d_options.rec options-generator
-#	rm -f microhttpd2_inline_daemon_documentation.h.in microhttpd2_generated_daemon_options.h
-#	./options-generator daemon > microhttpd2_generated_daemon_options.h
-#	chmod -w $@
+microhttpd2_inline_daemon_documentation.h.in microhttpd2_generated_daemon_options.h: d_options.rec options-generator
+	rm -f microhttpd2_inline_daemon_documentation.h.in microhttpd2_generated_daemon_options.h
+	./options-generator daemon > microhttpd2_generated_daemon_options.h
+	chmod -w $@
 #microhttpd2_inline_response_documentation.h.in microhttpd2_generated_response_options.h: r_options.rec options-generator
 #	rm -f microhttpd2_inline_response_documentation.h.in microhttpd2_generated_response_options.h
 #	./options-generator response > microhttpd2_generated_response_options.h
 #	chmod -w $@
 
-#microhttpd2.h: microhttpd2_preamble.h.in microhttpd2_inline_daemon_documentation.h.in microhttpd2_inline_response_documentation.h.in microhttpd2_main.h.in microhttpd2_postamble.h.in
-#	rm -f $@
-#	cat $^ >$@
-#	chmod -w $@
+microhttpd2.h: microhttpd2_preamble.h.in microhttpd2_inline_daemon_documentation.h.in microhttpd2_inline_response_documentation.h.in microhttpd2_main.h.in microhttpd2_postamble.h.in
+	rm -f $@
+	cat $^ >$@
+	chmod -w $@
 
-#noinst_PROGRAMS = \
-#  options-generator
+noinst_PROGRAMS = \
+  options-generator
 
-#options_generator_SOURCES = \
-# options-generator.c
+options_generator_SOURCES = \
+ options-generator.c
 
 mhd2includedir = $(includedir)/mhd2
 

+ 20 - 9
src/include/options-generator.c

@@ -466,7 +466,7 @@ dump_option_static_functions (const char *name,
   printf (" * @return structure with the requested setting\n */\n");
   printf ("static MHD_INLINE struct MHD_%sOptionAndValue\n"
           "MHD_%c_OPTION_%s (\n",
-          category,
+          capitalize (category),
           (char) toupper (*category),
           uppercase (name));
   if (0 == argc)
@@ -1020,20 +1020,31 @@ TOP:
              category,
              capitalize (category));
     fprintf (f,
-             "  struct %sOptions *const settings = %s->psettings;\n"
+             "  struct %sOptions *const settings = %s->settings;\n"
              "  size_t i;\n"
-             "\n"
-             "  if (NULL == settings)\n"
-             "    return MHD_SC_TOO_LATE;\n"
-             "\n"
+             "\n",
+             capitalize (category),
+             category);
+    if (0 == strcmp (category, "daemon"))
+    {
+      fprintf (f,
+               "  if (mhd_DAEMON_STATE_NOT_STARTED != daemon->state)\n"
+               "    return MHD_SC_TOO_LATE;\n"
+               "\n");
+    }
+    else
+    {
+      fprintf (f,
+               "  if (NULL == settings)\n"
+               "    return MHD_SC_TOO_LATE;\n"
+               "\n");
+    }
+    fprintf (f,
              "  for (i = 0; i < options_max_num; i++)\n"
              "  {\n"
              "    const struct MHD_%sOptionAndValue *const option = options + i;\n"
              "    switch (option->opt)\n"
              "    {\n",
-             capitalize (category),
-             category,
-             category,
              capitalize (category));
     fprintf (f,
              "    case MHD_%c_O_END:\n"