6fad2b2b65e1a0b580fbcd6da8a862f244a57f40
kent
  Sun Jan 19 18:04:18 2014 -0800
Making paraPstat2Job - a parsed version of parasol pstat2 output - public.
diff --git src/parasol/lib/paraMessage.c src/parasol/lib/paraMessage.c
index 7afe561..9ecb93a 100644
--- src/parasol/lib/paraMessage.c
+++ src/parasol/lib/paraMessage.c
@@ -223,31 +223,31 @@
 {
 struct paraMultiMessage pmm;
 FILE *f = mustOpen(fileName, "w");
 /* ensure the multi-message response comes from the correct ip and has no duplicate msgs*/
 pmmInit(&pmm, pm, pm->ipAddress.sin_addr);
 while (pmmReceive(&pmm, ru))
     {
     if (pm->size == 0)
 	break;
     mustWrite(f, pm->data, pm->size);
     }
 carefulClose(&f);
 }
 
 void pmFetchFile(char *host, char *sourceName, char *destName)
-/* Fetch small file. */
+/* Fetch small file. Only works if you are on hub if they've set up any security. */
 {
 struct rudp *ru = rudpOpen();
 struct paraMessage pm;
 if (ru != NULL)
     {
     pmInitFromName(&pm, host, paraNodePort);
     pmPrintf(&pm, "fetch %s %s", getUser(), sourceName);
     if (pmSend(&pm, ru))
 	pmFetchOpenFile(&pm, ru, destName);
     rudpClose(&ru);
     }
 }
 
 boolean pmSendStringWithRetries(struct paraMessage *pm, struct rudp *ru, char *string)
 /* Send out given message strng.  Print warning message and return FALSE if
@@ -324,16 +324,28 @@
 	break;
     count = chopByChar(pm.data, '\n', row, sizeof(row));
     if (count > 1) --count;  /* for multiline, count is inflated by one */
 
     int i;
     for(i=0;i<count;++i)
 	{
 	slNameAddHead(&list, row[i]);
 	}
     }
 rudpClose(&ru);
 slReverse(&list);
 return list;
 }
 
+struct paraPstat2Job *paraPstat2JobLoad(char **row)
+/* Turn an array of 5 strings into a paraPstat2Job. */
+{
+struct paraPstat2Job *job;
+AllocVar(job);
+job->status = cloneString(row[0]);
+job->parasolId = cloneString(row[1]);
+job->user = cloneString(row[2]);
+job->program = cloneString(row[3]);
+job->host = cloneString(row[4]);
+return job;
+}