Merge nicolasg's manager/cli patch (bug #2207)
authorMark Spencer <markster@digium.com>
Tue, 3 Aug 2004 17:48:18 +0000 (17:48 +0000)
committerMark Spencer <markster@digium.com>
Tue, 3 Aug 2004 17:48:18 +0000 (17:48 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3575 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cli.c
manager.c

diff --git a/cli.c b/cli.c
index dcc8807..8b132d2 100755 (executable)
--- a/cli.c
+++ b/cli.c
@@ -523,11 +523,17 @@ static int handle_nodebugchan(int fd, int argc, char *argv[])
 static int handle_showchan(int fd, int argc, char *argv[])
 {
        struct ast_channel *c=NULL;
+       struct timeval now;
+       long elapsed_seconds=0;
        if (argc != 3)
                return RESULT_SHOWUSAGE;
+       gettimeofday(&now, NULL);
        c = ast_channel_walk_locked(NULL);
        while(c) {
                if (!strcasecmp(c->name, argv[2])) {
+                       if(c->cdr) {
+                               elapsed_seconds = now.tv_sec - c->cdr->start.tv_sec;
+                       }
                        ast_cli(fd, 
        " -- General --\n"
        "           Name: %s\n"
@@ -544,6 +550,7 @@ static int handle_showchan(int fd, int argc, char *argv[])
        "      Frames in: %d%s\n"
        "     Frames out: %d%s\n"
        " Time to Hangup: %ld\n"
+       "Elapsed Seconds: %ld\n"
        " --   PBX   --\n"
        "        Context: %s\n"
        "      Extension: %s\n"
@@ -559,6 +566,7 @@ static int handle_showchan(int fd, int argc, char *argv[])
        (c->dnid ? c->dnid : "(N/A)" ), ast_state2str(c->_state), c->_state, c->rings, c->nativeformats, c->writeformat, c->readformat,
        c->fds[0], c->fin & 0x7fffffff, (c->fin & 0x80000000) ? " (DEBUGGED)" : "",
        c->fout & 0x7fffffff, (c->fout & 0x80000000) ? " (DEBUGGED)" : "", (long)c->whentohangup,
+       (long)elapsed_seconds, 
        c->context, c->exten, c->priority, c->callgroup, c->pickupgroup, ( c->appl ? c->appl : "(N/A)" ),
        ( c-> data ? (!ast_strlen_zero(c->data) ? c->data : "(Empty)") : "(None)"),
        c->stack, (c->blocking ? c->blockproc : "(Not Blocking)"));
index c3265f2..0db032a 100755 (executable)
--- a/manager.c
+++ b/manager.c
@@ -649,6 +649,10 @@ static int action_status(struct mansession *s, struct message *m)
        char idText[256] = "";
        struct ast_channel *c;
        char bridge[256];
+       struct timeval now;
+       long elapsed_seconds=0;
+
+       gettimeofday(&now, NULL);
        astman_send_ack(s, m, "Channel status will follow");
        c = ast_channel_walk_locked(NULL);
         if (id && !ast_strlen_zero(id))
@@ -672,6 +676,9 @@ static int action_status(struct mansession *s, struct message *m)
                else
                        bridge[0] = '\0';
                if (c->pbx) {
+                       if (c->cdr) {
+                               elapsed_seconds = now.tv_sec - c->cdr->start.tv_sec;
+                       }
                        ast_cli(s->fd,
                        "Event: Status\r\n"
                        "Channel: %s\r\n"
@@ -681,6 +688,7 @@ static int action_status(struct mansession *s, struct message *m)
                        "Context: %s\r\n"
                        "Extension: %s\r\n"
                        "Priority: %d\r\n"
+                       "Seconds: %ld\r\n"
                        "%s"
                        "Uniqueid: %s\r\n"
                        "%s"
@@ -688,7 +696,7 @@ static int action_status(struct mansession *s, struct message *m)
                        c->name, c->callerid ? c->callerid : "<unknown>", 
                        c->accountcode,
                        ast_state2str(c->_state), c->context,
-                       c->exten, c->priority, bridge, c->uniqueid, idText);
+                       c->exten, c->priority, (long)elapsed_seconds, bridge, c->uniqueid, idText);
                } else {
                        ast_cli(s->fd,
                        "Event: Status\r\n"