The unified diff between revisions [43bb367e..] and [63fe9cf9..] is displayed below. It can also be downloaded as a raw diff.

This diff has been restricted to the following files: 'src/lsi/cmdsocket.c'

#
# old_revision [43bb367e69d2a944206fd7f641ce73111e4bb780]
# new_revision [63fe9cf91eccf15b977d5be7600ee10a17d08d95]
#
# patch "src/lsi/cmdsocket.c"
#  from [855bbabd21448d3ac37ff460a412a951df7d226a]
#    to [a6b79ffd22f3df90c3d7cca971192dadbfa3e7bb]
#
============================================================
--- src/lsi/cmdsocket.c	855bbabd21448d3ac37ff460a412a951df7d226a
+++ src/lsi/cmdsocket.c	a6b79ffd22f3df90c3d7cca971192dadbfa3e7bb
@@ -130,7 +130,7 @@ void cmd_parse(char *cmd) {
 	char function[CMD_MAXSIZE + PREFIX_MAXSIZE];
 
 	*strchr(cmd, '\n') = '\0';
-	printf("DEBUG: Received command: %s\n", cmd);
+//	printf("DEBUG: Received command: %s\n", cmd);
 	fflush(stdout);
 
 	sp = strtok(cmd, " \t\r");
@@ -143,7 +143,7 @@ void cmd_parse(char *cmd) {
 	strcpy(function, cmd_prefix);
 	strncat(function, cmd, CMD_MAXSIZE);
 
-	printf("DEBUG: function: %s, arg %d\n", function, arg);
+//	printf("DEBUG: function: %s, arg %d\n", function, arg);
 	fflush(stdout);
 	if (vm_spawn_args(function, 1, arg)) {
 		/* Write an ack here, once a proper function exists */
@@ -154,7 +154,7 @@ void cmd_parse(char *cmd) {
 		write(cmd_active, "ERROR\n", strlen("ERROR\n"));
 	}
 
-	printf("Received command: %s\n", cmd);
+//	printf("Received command: %s\n", cmd);
 }
 
 int cmdsocket_read(void)
@@ -202,3 +202,31 @@ int cmdsocket_read(void)
 		}
 	}
 }
+
+/*
+ * Returns offset to restart at. If off == len, then we have finished.
+ * If the return value is the same as off passed in, then the caller
+ * should sleep.
+ */
+int cmdsocket_write(char *buffer, int len, int off)
+{
+//	printf("cmdsocket_write called with %p, %d, %d\n", buffer, len, off);
+	if (!cmdsocket_initialised)
+		return 0;
+	if (!cmd_active)
+		return 0;
+
+	while (off < len) {
+		int r;
+		r = write(cmd_active, buffer + off, len - off);
+		if (r == -1) {
+			if (errno == EAGAIN)
+				return off;
+			warn("error writing packet");
+		}
+		if (r == 0)
+			return off;
+		off += r;
+	}
+	return off;
+}