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 <ctype.h>
00028 #include <sys/types.h>
00029 #include <sys/socket.h>
00030 #include <netinet/in.h>
00031 #include <arpa/inet.h>
00032 #include <unistd.h>
00033
00034 #include "eripc.h"
00035 #include "eripcclient.h"
00036 #include "eripceba.h"
00037 #include "eripcparser.h"
00038
00039
00040 int ebaJumpToPage(erClientChannel_t channel, int uaID, int page)
00041 {
00042 erIpcCmd_t cmd;
00043
00044 strcpy(cmd.name, "ebaJumpToPage");
00045 cmd.cc = (int) ccEbaJumpToPage;
00046 cmd.nArg = 2;
00047 sprintf(cmd.arg[0], "%d", uaID);
00048 sprintf(cmd.arg[1], "%d", page);
00049
00050 return erIpcSndCommand(channel, &cmd);
00051 }
00052
00053 int ebaBookmarkPage(erClientChannel_t channel, int uaID)
00054 {
00055 erIpcCmd_t cmd;
00056
00057 strcpy(cmd.name, "ebaBookmarkPage");
00058 cmd.cc = (int) ccEbaBookmarkPage;
00059 cmd.nArg = 1;
00060 sprintf(cmd.arg[0], "%d", uaID);
00061
00062 return erIpcSndCommand(channel, &cmd);
00063 }
00064
00065 int ebaInvokeFindDialog(erClientChannel_t channel, int uaID)
00066 {
00067 erIpcCmd_t cmd;
00068
00069 strcpy(cmd.name, "ebaInvokeFindDialog");
00070 cmd.cc = (int) ccEbaInvokeFindDialog;
00071 cmd.nArg = 1;
00072 sprintf(cmd.arg[0], "%d", uaID);
00073
00074 return erIpcSndCommand(channel, &cmd);
00075 }
00076
00077 int ebaZoomIn(erClientChannel_t channel, int uaID)
00078 {
00079 erIpcCmd_t cmd;
00080
00081 strcpy(cmd.name, "ebaZoomIn");
00082 cmd.cc = (int) ccEbaZoomIn;
00083 cmd.nArg = 1;
00084 sprintf(cmd.arg[0], "%d", uaID);
00085
00086 return erIpcSndCommand(channel, &cmd);
00087 }
00088
00089 int ebaZoomOut(erClientChannel_t channel, int uaID)
00090 {
00091 erIpcCmd_t cmd;
00092
00093 strcpy(cmd.name, "ebaZoomOut");
00094 cmd.cc = (int) ccEbaZoomOut;
00095 cmd.nArg = 1;
00096 sprintf(cmd.arg[0], "%d", uaID);
00097
00098 return erIpcSndCommand(channel, &cmd);
00099 }
00100
00101
00102
00103
00104 int ebaParseCommand(char *szCommand, erIpcCmd_t * pCmd)
00105 {
00106 int i;
00107 char *pChar;
00108 int cmdcode;
00109 char szToken[TB_MAXCHARONLINE];
00110 int nReqArgs = 0;
00111
00112 pCmd->cc = (int) ccEbaUndefined;
00113 for (i = 0; i < TB_N_ARG; i++)
00114 {
00115 strcpy(pCmd->arg[i], "");
00116 }
00117
00118
00119 pChar = szCommand;
00120 i = 0;
00121 while (*pChar != '\0')
00122 {
00123 szToken[i] = '\0';
00124 if (*pChar == ',')
00125 {
00126 pChar++;
00127 break;
00128 }
00129 szToken[i] = *pChar++;
00130 i++;
00131 szToken[i] = '\0';
00132 }
00133
00134
00135
00136
00137 if (isdigit(szToken[0]))
00138 {
00139 cmdcode = atoi(szToken);
00140 }
00141 else
00142 {
00143 cmdcode = -1;
00144 }
00145 if (strcmp(szToken, "ebaJumpToPage") == 0 || cmdcode == ccEbaJumpToPage)
00146 {
00147 strcpy(pCmd->name, szToken);
00148 pCmd->cc = (int) ccEbaJumpToPage;
00149 nReqArgs = 2;
00150 pCmd->nArg = 2;
00151 }
00152 else if (strcmp(szToken, "ebaBookmarkPage") == 0 || cmdcode == ccEbaBookmarkPage)
00153 {
00154 strcpy(pCmd->name, szToken);
00155 pCmd->cc = (int) ccEbaBookmarkPage;
00156 nReqArgs = 1;
00157 pCmd->nArg = 1;
00158 }
00159 else if (strcmp(szToken, "ebaInvokeFindDialog") == 0 || cmdcode == ccEbaInvokeFindDialog)
00160 {
00161 strcpy(pCmd->name, szToken);
00162 pCmd->cc = (int) ccEbaInvokeFindDialog;
00163 nReqArgs = 1;
00164 pCmd->nArg = 1;
00165 }
00166 else if (strcmp(szToken, "ebaZoomIn") == 0 || cmdcode == ccEbaZoomIn)
00167 {
00168 strcpy(pCmd->name, szToken);
00169 pCmd->cc = (int) ccEbaZoomIn;
00170 nReqArgs = 1;
00171 pCmd->nArg = 1;
00172 }
00173 else if (strcmp(szToken, "ebaZoomOut") == 0 || cmdcode == ccEbaZoomOut)
00174 {
00175 strcpy(pCmd->name, szToken);
00176 pCmd->cc = (int) ccEbaZoomOut;
00177 nReqArgs = 1;
00178 pCmd->nArg = 1;
00179 }
00180 else if (strcmp(szToken, "ebaStore") == 0 || cmdcode == ccEbaStore)
00181 {
00182 strcpy(pCmd->name, szToken);
00183 pCmd->cc = (int) ccEbaStore;
00184 nReqArgs = 3;
00185 pCmd->nArg = 3;
00186 }
00187 else if (strcmp(szToken, "ebaToolbar") == 0 || cmdcode == ccEbaToolbar)
00188 {
00189 strcpy(pCmd->name, szToken);
00190 pCmd->cc = (int) ccEbaToolbar;
00191 nReqArgs = 2;
00192 pCmd->nArg = 2;
00193 }
00194 else
00195 {
00196 strcpy(pCmd->name, "Undefined");
00197 pCmd->cc = (int) ccEbaUndefined;
00198 fprintf(stderr, "%s: Command %s \n", __FUNCTION__, szToken);
00199 fprintf(stderr, "Error parsing (%s). Command undefined\n", szCommand);
00200 pCmd->nArg = -1;
00201 return -1;
00202 }
00203
00204 if (nReqArgs > 0)
00205 {
00206 erIpcGetArgs(pChar, pCmd, nReqArgs);
00207 }
00208 return 0;
00209 }
00210
00211 int ebaStore(erClientChannel_t channel, int uaID, int category, char* itemID)
00212 {
00213 erIpcCmd_t cmd;
00214
00215 strcpy(cmd.name, "ebaStore");
00216 cmd.cc = (int) ccEbaStore;
00217 cmd.nArg = 3;
00218 sprintf(cmd.arg[0], "%d", uaID);
00219 sprintf(cmd.arg[1], "%d", category);
00220
00221 if ((itemID) && (strlen(itemID) < TB_ARGLENGTH))
00222 {
00223 strncpy(cmd.arg[2], itemID, TB_ARGLENGTH);
00224 }
00225 else
00226 {
00227 sprintf(cmd.arg[2],"%s", "");
00228 fprintf(stderr, "Command %s \n", cmd.name);
00229 fprintf(stderr, "invalid itemID (%s)\n", itemID);
00230 }
00231
00232 return erIpcSndCommand(channel, &cmd);
00233 }