From: Mark Wooding Date: Mon, 1 Jan 2007 15:30:39 +0000 (+0000) Subject: Merge branches 'cleanup' and 'services' X-Git-Tag: 1.0.0pre8~94 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/tripe/commitdiff_plain/d167fc1b2599ab06f857e984fc203fd7f64f4c0a Merge branches 'cleanup' and 'services' * cleanup: server/admin: Fix tokenization of statistics output. Fix typos in messages. doc: Various small cleanups to tripe-admin.5. cleanup: Various simple whitespace changes. cleanup: Rename a few badly-chosen variables. * services: doc: Document the services messages. admin: Implement the main job commands. admin: Implement job table infrastructure. admin: Service ownership infrastructure and commands. servutil: Implement version number comparison. admin: New ?TOKENS formatting directive. admin: Rename the unknown-service error. admin: Improve handling of background jobs. admin: Option parser macros. admin: Put all command options at the start of the command-line. admin: Fix premature close in a_bgrelease. admin: Remove locking; new safe client destruction. Conflicts: server/admin.c --- d167fc1b2599ab06f857e984fc203fd7f64f4c0a diff --cc server/admin.c index b166b853,bd5cc029,d0201693..797b4786 --- a/server/admin.c +++ b/server/admin.c @@@@ -437,16 -441,17 -440,14 +444,15 @@@@ static void a_valert(unsigned f_and, un dstr_destroy(&d); } -- #if 0 /*unused*/ - -static void a_alert(unsigned f_and, unsigned f_eq, const char *tag, + +static void a_alert(unsigned f_and, unsigned f_eq, const char *status, const char *fmt, ...) { va_list ap; + + va_start(ap, fmt); - - a_valert(f_and, f_eq, tag, fmt, ap); + + a_valert(f_and, f_eq, status, fmt, ap); va_end(ap); } -- #endif /* --- @a_warn@ --- * * @@@@ -1174,35 -1177,30 -1613,23 +1616,18 @@@@ static void acmd_trace(admin *a, unsign #endif static void acmd_watch(admin *a, unsigned ac, char *av[]) - -{ - - traceish(a, ac, av, "watch", w_opts, &a->f); - -} + + { traceish(a, ac, av, "watch", w_opts, &a->f); } static void alertcmd(admin *a, unsigned f_and, unsigned f_eq, -- const char *tag, unsigned ac, char *av[]) -- { -- dstr d = DSTR_INIT; -- unsigned i; -- -- dstr_puts(&d, "USER"); -- for (i = 0; i < ac; i++) -- quotify(&d, av[i]); -- dstr_putz(&d); -- a_rawalert(f_and, f_eq, tag, d.buf, d.len); -- dstr_destroy(&d); -- a_ok(a); -- } -- ++ const char *status, char *av[]) ++ { a_alert(f_and, f_eq, status, "USER", "?TOKENS", av, A_END); a_ok(a); } static void acmd_notify(admin *a, unsigned ac, char *av[]) -- { alertcmd(a, AF_NOTE, AF_NOTE, "NOTE", ac, av); } ++ { alertcmd(a, AF_NOTE, AF_NOTE, "NOTE", av); } static void acmd_warn(admin *a, unsigned ac, char *av[]) -- { alertcmd(a, AF_WARN, AF_WARN, "WARN", ac, av); } ++ { alertcmd(a, AF_WARN, AF_WARN, "WARN", av); } static void acmd_port(admin *a, unsigned ac, char *av[]) - -{ - - a_info(a, "%u", p_port(), A_END); - - a_ok(a); - -} + + { a_info(a, "%u", p_port(), A_END); a_ok(a); } static void acmd_daemon(admin *a, unsigned ac, char *av[]) { @@@@ -1454,21 -1467,21 -1916,9 +1929,9 @@@@ static void acmd_help(admin *a, unsigne /*----- Connection handling -----------------------------------------------*/ -- /* --- @a_lock@ --- * - * - * Arguments: @admin *a@ = pointer to an admin block - * - * Returns: --- - * - * Use: Locks an admin block so that it won't be destroyed - * immediately. - */ - - static void a_lock(admin *a) { a->ref++; } - - /* --- @a_dodestroy@ --- * ++ /* --- @a_destroypending@ --- * * - * Arguments: @admin *a@ = pointer to an admin block - * - * Returns: --- - * - * Use: Locks an admin block so that it won't be destroyed - * immediately. - */ - - static void a_lock(admin *a) { a->ref++; } - - /* --- @a_dodestroy@ --- * - * -- * Arguments: @admin *a@ = pointer to an admin block ++ * Arguments: --- * * Returns: --- *