diff options
Diffstat (limited to 'src/progman.c')
-rw-r--r-- | src/progman.c | 136 |
1 files changed, 1 insertions, 135 deletions
diff --git a/src/progman.c b/src/progman.c index 8c33db8..216fb72 100644 --- a/src/progman.c +++ b/src/progman.c @@ -1,5 +1,5 @@ /* This file is part of GNU Pies. - Copyright (C) 2007-2013 Sergey Poznyakoff + Copyright (C) 2007-2016 Sergey Poznyakoff GNU Pies is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2469,138 +2469,4 @@ progman_stop_tag (const char *name) struct prog *prog = progman_locate (name); progman_stop_component (prog); } - -void -progman_dump_stats (const char *filename) -{ - FILE *fp; - struct prog *prog; - char *tmpfile = NULL; - - if (asprintf (&tmpfile, "%s.%lu", filename, (unsigned long) getpid ()) == -1) - { - logmsg (LOG_ERR, "%s", strerror (ENOMEM)); - return; - } - logmsg (LOG_INFO, _("dumping statistics to `%s'"), tmpfile); - fp = fopen (tmpfile, "w"); - if (!fp) - { - logmsg (LOG_ERR, _("cannot open file `%s' for writing: %s"), - tmpfile, strerror (errno)); - return; - } - - for (prog = proghead; prog; prog = prog->next) - { - int i; - char fbuf[5]; - int fidx = 0; - - fprintf (fp, "%-16s ", prog->tag); - switch (prog->type) - { - case TYPE_COMPONENT: - switch (prog->v.p.comp->mode) - { - case pies_comp_exec: - fbuf[fidx++] = 'C'; - break; - - case pies_comp_once: - fbuf[fidx++] = 'c'; - break; - - case pies_comp_accept: - fbuf[fidx++] = 'A'; - break; - - case pies_comp_inetd: - fbuf[fidx++] = 'I'; - break; - - case pies_comp_pass_fd: - fbuf[fidx++] = 'P'; - - default: - break; - } - - switch (prog->v.p.status) - { - case status_enabled: - fbuf[fidx++] = (prog->pid != 0) ? 'R' : ' '; - break; - - case status_disabled: - fbuf[fidx++] = 'D'; - break; - - case status_listener: - fbuf[fidx++] = 'L'; - break; - - case status_sleeping: - fbuf[fidx++] = 's'; - break; - - case status_stopping: - fbuf[fidx++] = 'S'; - break; - - case status_finished: - fbuf[fidx++] = 'f'; - } - break; - - case TYPE_REDIRECTOR: - fbuf[fidx++] = 'R'; - break; - - case TYPE_COMMAND: - fbuf[fidx++] = 'E'; - } - fbuf[fidx++] = 0; - fprintf (fp, "%-8.8s ", fbuf); - - switch (prog->type) - { - case TYPE_COMPONENT: - if (prog->pid) - fprintf (fp, "%10lu ", (unsigned long) prog->pid); - else if (prog->v.p.status == status_listener - && prog->v.p.comp->socket_url) - fprintf (fp, "%-10s ", prog->v.p.comp->socket_url->string); - else - fprintf (fp, "%-10s ", "N/A"); - - if (prog->v.p.status == status_sleeping) - { - time_t t = prog->v.p.timestamp + SLEEPTIME; - fprintftime (fp, "%H:%M:%S", localtime (&t), 0, 0); - } - - for (i = 0; i < prog->v.p.comp->argc; i++) - fprintf (fp, " %s", quotearg (prog->v.p.comp->argv[i])); - break; - - case TYPE_REDIRECTOR: - fprintf (fp, "%10lu ", (unsigned long) prog->pid); - break; - - case TYPE_COMMAND: - fprintf (fp, "%s", prog->v.c.command); - } - fputc ('\n', fp); - } - fclose (fp); - unlink (filename); - if (rename (tmpfile, filename)) - { - logmsg (LOG_ERR, _("cannot rename %s to %s: %s"), tmpfile, filename, - strerror (errno)); - unlink (tmpfile); - } - free (tmpfile); -} /* EOF */ |