[dvblast-devel] [PATCH 6/6] dvblastctl: Cleanup command handling.

Georgi Chorbadzhiyski gf at unixsol.org
Mon Sep 12 22:40:03 CEST 2011


There should be no functional changes with this patch. It is
just a code cleanup.

Signed-off-by: Georgi Chorbadzhiyski <gf at unixsol.org>
---
 dvblastctl.c |   79 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 40 insertions(+), 39 deletions(-)

diff --git a/dvblastctl.c b/dvblastctl.c
index 18fa0b6..fea24ed 100644
--- a/dvblastctl.c
+++ b/dvblastctl.c
@@ -328,43 +328,45 @@ int main( int i_argc, char **ppsz_argv )
     sun_server.sun_path[sizeof(sun_server.sun_path) - 1] = '\0';
 
     p_buffer[0] = COMM_HEADER_MAGIC;
+    p_buffer[1] = opt.cmd;
     p_buffer[2] = 0;
     p_buffer[3] = 0;
     i_size = COMM_HEADER_SIZE;
 
-    if ( !strcmp(ppsz_argv[optind], "reload") )
-        p_buffer[1] = CMD_RELOAD;
-    else if ( !strcmp(ppsz_argv[optind], "shutdown") )
-        p_buffer[1] = CMD_SHUTDOWN;
-    else if ( !strcmp(ppsz_argv[optind], "fe_status") )
-        p_buffer[1] = CMD_FRONTEND_STATUS;
-    else if ( !strcmp(ppsz_argv[optind], "get_pat") )
-        p_buffer[1] = CMD_GET_PAT;
-    else if ( !strcmp(ppsz_argv[optind], "get_cat") )
-        p_buffer[1] = CMD_GET_CAT;
-    else if ( !strcmp(ppsz_argv[optind], "get_nit") )
-        p_buffer[1] = CMD_GET_NIT;
-    else if ( !strcmp(ppsz_argv[optind], "get_sdt") )
-        p_buffer[1] = CMD_GET_SDT;
-    else if ( !strcmp(ppsz_argv[optind], "get_pmt") ) {
+    /* Handle commands that send parameters */
+    switch ( opt.cmd )
+    {
+    case CMD_INVALID:
+    case CMD_RELOAD:
+    case CMD_SHUTDOWN:
+    case CMD_FRONTEND_STATUS:
+    case CMD_MMI_STATUS:
+    case CMD_MMI_SEND:
+    case CMD_GET_PAT:
+    case CMD_GET_CAT:
+    case CMD_GET_NIT:
+    case CMD_GET_SDT:
+    case CMD_GET_PIDS:
+        /* These commands need no special handling because they have no parameters */
+        break;
+    case CMD_GET_PMT:
+    {
         uint16_t i_sid = atoi(p_arg1);
-        p_buffer[1] = CMD_GET_PMT;
         i_size = COMM_HEADER_SIZE + 2;
         p_data[0] = (uint8_t)((i_sid >> 8) & 0xff);
         p_data[1] = (uint8_t)(i_sid & 0xff);
-    } else if ( !strcmp(ppsz_argv[optind], "get_pids") )
-        p_buffer[1] = CMD_GET_PIDS;
-    else if ( !strcmp(ppsz_argv[optind], "get_pid") ) {
+        break;
+    }
+    case CMD_GET_PID:
+    {
         i_pid = (uint16_t)atoi(p_arg1);
-        p_buffer[1] = CMD_GET_PID;
         i_size = COMM_HEADER_SIZE + 2;
         p_data[0] = (uint8_t)((i_pid >> 8) & 0xff);
         p_data[1] = (uint8_t)(i_pid & 0xff);
-    } else if ( !strcmp(ppsz_argv[optind], "mmi_status") )
-        p_buffer[1] = CMD_MMI_STATUS;
-    else if ( !strcmp(ppsz_argv[optind], "mmi_send_text") ) {
+    }
+    case CMD_MMI_SEND_TEXT:
+    {
         struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)&p_buffer[4];
-        p_buffer[1] = CMD_MMI_SEND_TEXT;
         p_cmd->i_slot = atoi(p_arg1);
 
         en50221_mmi_object_t object;
@@ -392,30 +394,26 @@ int main( int i_argc, char **ppsz_argv )
         i_size += COMM_HEADER_SIZE
                    + ((void *)&p_cmd->object - (void *)p_cmd);
     }
-    else if ( !strcmp(ppsz_argv[optind], "mmi_send_choice") ) {
+    case CMD_MMI_SEND_CHOICE:
+    {
         struct cmd_mmi_send *p_cmd = (struct cmd_mmi_send *)&p_buffer[4];
-        p_buffer[1] = CMD_MMI_SEND_CHOICE;
         p_cmd->i_slot = atoi(p_arg1);
 
         i_size = COMM_HEADER_SIZE + sizeof(struct cmd_mmi_send);
         p_cmd->object.i_object_type = EN50221_MMI_MENU_ANSW;
         p_cmd->object.u.menu_answ.i_choice = atoi(p_arg2);
     }
-    else
+    case CMD_MMI_SLOT_STATUS:
+    case CMD_MMI_OPEN:
+    case CMD_MMI_CLOSE:
+    case CMD_MMI_RECV:
     {
         p_buffer[4] = atoi(p_arg1);
         i_size = COMM_HEADER_SIZE + 1;
-
-        if ( !strcmp(ppsz_argv[optind], "mmi_slot_status") )
-            p_buffer[1] = CMD_MMI_SLOT_STATUS;
-        else if ( !strcmp(ppsz_argv[optind], "mmi_open") )
-            p_buffer[1] = CMD_MMI_OPEN;
-        else if ( !strcmp(ppsz_argv[optind], "mmi_close") )
-            p_buffer[1] = CMD_MMI_CLOSE;
-        else if ( !strcmp(ppsz_argv[optind], "mmi_get") )
-            p_buffer[1] = CMD_MMI_RECV;
+    }
     }
 
+    /* Send command and receive answer */
     if ( sendto( i_fd, p_buffer, i_size, 0, (struct sockaddr *)&sun_server,
                  SUN_LEN(&sun_server) ) < 0 )
     {
@@ -449,6 +447,7 @@ int main( int i_argc, char **ppsz_argv )
         exit(255);
     }
 
+    /* Process answer */
     if ( p_buffer[0] != COMM_HEADER_MAGIC )
     {
         msg_Err( NULL, "wrong protocol version 0x%x", p_buffer[0] );
@@ -457,7 +456,8 @@ int main( int i_argc, char **ppsz_argv )
 
     now = mdate();
 
-    switch ( p_buffer[1] )
+    ctl_cmd_answer_t c_answer = p_buffer[1];
+    switch ( c_answer )
     {
     case RET_OK:
         exit(0);
@@ -491,12 +491,13 @@ int main( int i_argc, char **ppsz_argv )
         unsigned int i_flat_data_size = i_size - COMM_HEADER_SIZE;
         uint8_t **pp_sections = psi_unpack_sections( p_flat_data, i_flat_data_size );
 
-        switch( p_buffer[1] )
+        switch( c_answer )
         {
             case RET_PAT: pat_table_print( pp_sections, psi_print, NULL, i_print_type ); break;
             case RET_CAT: cat_table_print( pp_sections, psi_print, NULL, i_print_type ); break;
             case RET_NIT: nit_table_print( pp_sections, psi_print, NULL, psi_iconv, NULL, i_print_type ); break;
             case RET_SDT: sdt_table_print( pp_sections, psi_print, NULL, psi_iconv, NULL, i_print_type ); break;
+            default: break; /* Can't happen */
         }
 
         psi_table_free( pp_sections );
@@ -798,7 +799,7 @@ int main( int i_argc, char **ppsz_argv )
     }
 
     default:
-        msg_Err( NULL, "wrong answer %u", p_buffer[1] );
+        msg_Err( NULL, "wrong answer %u", c_answer );
         exit(255);
     }
 }
-- 
1.7.5.1



More information about the dvblast-devel mailing list