X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Foserver%2F_info;fp=ccan%2Foserver%2F_info;h=7bfaa3b129e6cbd101b9c9804d22ec903709fcd1;hb=92f7f79eb9535a281cab710eedb9878c74b950b8;hp=7d05837c06f3fc3f45a9d6c5967e22e605446778;hpb=b6c158bea04f0b8ec13b70c5a3f68aef74c4e356;p=ccan-lca-2011.git diff --git a/ccan/oserver/_info b/ccan/oserver/_info index 7d05837..7bfaa3b 100644 --- a/ccan/oserver/_info +++ b/ccan/oserver/_info @@ -16,21 +16,36 @@ * #include * #include * + * #define STATE_FILE "/var/run/oserver/dump" + * * int main(int argc, char *argv[]) * { * struct tevent_context *ev = tevent_context_init(NULL); * unsigned int port = OSERVER_PORT; + * bool restore = false; + * char **restore_argv; + * + * // Save args before opt_parse mangles them. + * restore_argv = talloc_array(NULL, char *, argc+2); + * restore_argv[0] = argv[0]; + * restore_argv[1] = "--restore"; + * memcpy(restore_argv+2, argv+1, sizeof(argv[0])*argc); * * opt_register_noarg("--help|--usage|-h", opt_usage_and_exit, * "\nA oserver program", "Usage information"); * opt_register_arg("--port", opt_set_uintval, opt_show_uintval, * &port, "Server port number"); + * opt_register_noarg("--restore", opt_set_bool, + * &restore, opt_hidden); * * opt_parse(&argc, argv, opt_log_stderr_exit); * if (argc != 1) * opt_log_stderr_exit("Unknown extra arguments"); * - * if (!oserver_setup(ev, port, "/var/run/oserver/dump")) + * if (restore) { + * if (!oserver_restore(ev, STATE_FILE)) + * err(1, "Restoring server"); + * } else if (!oserver_setup(ev, port, STATE_FILE, restore_argv)) * err(1, "Failed to set up server"); * * while (tevent_loop_wait(ev) == 0);