00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00023 #include <stdio.h>
00024 #include <stddef.h>
00025 #include <stdlib.h>
00026 #include <string.h>
00027 #include <sys/types.h>
00028 #include <sys/socket.h>
00029 #include <netinet/in.h>
00030 #include <arpa/inet.h>
00031 #include <unistd.h>
00032 #include <ctype.h>
00033
00034 #include "eripc.h"
00035 #include "eripcclient.h"
00036 #include "eripcconnect.h"
00037 #include "eripcparser.h"
00038
00039
00040 int cnGotoPage(erClientChannel_t channel, int page)
00041 {
00042 erIpcCmd_t cmd;
00043
00044 strcpy(cmd.name, "cnGotoPage");
00045 cmd.cc = (int) ccCnGotoPage;
00046 cmd.nArg = 1;
00047 sprintf(cmd.arg[0], "%d", page);
00048
00049 return erIpcSndCommand(channel, &cmd);
00050 }
00051
00052
00053
00054
00055
00056 int cnParseCommand(char *szCommand, erIpcCmd_t * pCmd)
00057 {
00058 int i;
00059 char *pChar;
00060 int cmdcode;
00061 char szToken[TB_MAXCHARONLINE];
00062 int nReqArgs = 0;
00063
00064 pCmd->cc = (int) ccCnUndefined;
00065 for (i = 0; i < TB_N_ARG; i++)
00066 {
00067 strcpy(pCmd->arg[i], "");
00068 }
00069
00070
00071 pChar = szCommand;
00072 i = 0;
00073 while (*pChar != '\0')
00074 {
00075 szToken[i] = '\0';
00076 if (*pChar == ',')
00077 {
00078 pChar++;
00079 break;
00080 }
00081 szToken[i] = *pChar++;
00082 i++;
00083 szToken[i] = '\0';
00084 }
00085
00086
00087
00088
00089 if (isdigit(szToken[0]))
00090 {
00091 cmdcode = atoi(szToken);
00092 }
00093 else
00094 {
00095 cmdcode = -1;
00096 }
00097
00098 if (!strcmp(szToken, "cnGotoPage") || !strcmp(szToken, "0"))
00099 {
00100 strcpy(pCmd->name, szToken);
00101 pCmd->cc = (int) ccCnGotoPage;
00102 nReqArgs = 1;
00103 pCmd->nArg = 1;
00104 }
00105 else if (strcmp(szToken, "cnToolbar") == 0 || cmdcode == ccCnToolbar)
00106 {
00107 strcpy(pCmd->name, szToken);
00108 pCmd->cc = (int) ccCnToolbar;
00109 nReqArgs = 2;
00110 pCmd->nArg = 2;
00111 }
00112 else if (strcmp(szToken, "cnToolbarSync") == 0 || cmdcode == ccCnToolbarSync)
00113 {
00114 strcpy(pCmd->name, szToken);
00115 pCmd->cc = (int) ccCnToolbarSync;
00116 nReqArgs = 0;
00117 pCmd->nArg = 0;
00118 }
00119 else
00120 {
00121 strcpy(pCmd->name, "Undefined");
00122 pCmd->cc = (int) ccCnUndefined;
00123 fprintf(stderr, "%s: Command %s \n", __FUNCTION__, szToken);
00124 fprintf(stderr, "Error parsing (%s). Command undefined\n", szCommand);
00125 pCmd->nArg = -1;
00126 return -1;
00127 }
00128
00129 if (nReqArgs > 0)
00130 {
00131 erIpcGetArgs(pChar, pCmd, nReqArgs);
00132 }
00133 return 0;
00134 }
00135