]> jspc29.x-matter.uni-frankfurt.de Git - trbnettools.git/commitdiff
Added the TCP mode command delimiter # to the Client/Server protocoll.
authorhadeshyp <hadeshyp>
Wed, 10 Nov 2010 17:40:11 +0000 (17:40 +0000)
committerhadeshyp <hadeshyp>
Wed, 10 Nov 2010 17:40:11 +0000 (17:40 +0000)
If commands get caught up together, an Error is returned.
This is only relevant for the daqop.
Boris

libtrbnet/trbcmd.c

index 9d1fd1f56a197a709480628e90ae3dc915640bd6..9c001a9b96f96e3cd8f29d125d0b2b474b344a80 100644 (file)
 #ifndef HEXMODE
 #define HEXMODE 0
 #endif
-
+                                         
 static int hexMode = HEXMODE;
 
-static const char trbcmd_version[] = "$Revision: 2.60 $";
+static const char trbcmd_version[] = "$Revision: 2.61 $";
 
 #define BACKLOG 10
 static uint16_t tcp_port = 55555;
@@ -1421,51 +1421,72 @@ int main(int argc, char **argv)
             fprintf(stderr, "%d: empty package\n", myPid);
             continue;
           }
-          msgLen -= 2;
+          
+          
+          msgLen -= 3;
           command[msgLen] = '\0';
-      
-          start_argv[start_argc++] = argv[0];
-          for (i = 0; i < (unsigned int)msgLen; i++) {
-            if (isspace((int)command[i]) != 0) {
-              command[i] = '\0';
-            }
-            if (command[i] != '\0') {
-              if (start_arg == 0) {
-                start_argv[start_argc++] = &command[i];
-                start_arg = 1;
-              } else {
-                continue;
-              }
-            } else {
-              command[i] = '\0';
-              start_arg = 0;
-            }
-          }
-
-          if (tcp_debug > 0) {
-            fprintf(stderr, "%d: received: %i\n", myPid, msgLen);
-            if (msgLen > 0) {
-              fprintf(stderr, "%d: command: ", myPid);
-              for (i = 1; i < (unsigned int)start_argc; i++) {
-                fprintf(stderr, "%s ", start_argv[i]);
-              }
-              fprintf(stderr, "\n");
-            }
-          }
-
-          /* Execute command */
-          if (start_argc == 1) continue;
-          if ((strcmp(start_argv[1], "exit") == 0) ||
-              (strcmp(start_argv[1], "quit") == 0)) {
-            if (tcp_debug > 0) {
-              fprintf(stderr, "%d: client disconnected\n", myPid);
-            }
-            exit(EXIT_SUCCESS);
+          
+          char *p;
+          p = strpbrk( command, "#");
+                                       if (p != NULL){
+                                               fprintf(stdout, ">ERROR: The client transfered 2 commands as one.");
+                                               fprintf(clientout, "\n----------------------------\n\n");
+               fflush(clientout);
+               if (tcp_debug > 0) {
+               fprintf(stderr, "%d: received: %i\n", myPid, msgLen);
+               if (msgLen > 0) {
+               fprintf(stderr, "%d: command: ", myPid);
+               for (i = 1; i < (unsigned int)start_argc; i++) {
+                       fprintf(stderr, "%s ", start_argv[i]);
+               }
+               fprintf(stderr, "\n");
+               }
+               }
+                                       }
+                                       else{
+               start_argv[start_argc++] = argv[0];
+               for (i = 0; i < (unsigned int)msgLen; i++) {
+               if (isspace((int)command[i]) != 0) {
+                     command[i] = '\0';
+               }
+               if (command[i] != '\0') {
+                     if (start_arg == 0) {
+                       start_argv[start_argc++] = &command[i];
+                       start_arg = 1;
+               } else {
+                       continue;
+               }
+               } else {
+                     command[i] = '\0';
+               start_arg = 0;
+               }
+               }
+
+               if (tcp_debug > 0) {
+               fprintf(stderr, "%d: received: %i\n", myPid, msgLen);
+               if (msgLen > 0) {
+               fprintf(stderr, "%d: command: ", myPid);
+               for (i = 1; i < (unsigned int)start_argc; i++) {
+                       fprintf(stderr, "%s ", start_argv[i]);
+               }
+               fprintf(stderr, "\n");
+               }
+               }
+
+               /* Execute command */
+               if (start_argc == 1) continue;
+               if ((strcmp(start_argv[1], "exit") == 0) ||
+               (strcmp(start_argv[1], "quit") == 0)) {
+               if (tcp_debug > 0) {
+               fprintf(stderr, "%d: client disconnected\n", myPid);
+               }
+               exit(EXIT_SUCCESS);
+               }
+
+               start(start_argc, start_argv);
+               fprintf(clientout, "\n----------------------------\n\n");
+               fflush(clientout);
           }
-
-          start(start_argc, start_argv);
-          fprintf(clientout, "\n----------------------------\n\n");
-          fflush(clientout);
         }
       }
     }