c521796a3d530b285cf15f713fac2aa0961c3bcb
larrym
  Mon Jul 18 21:40:47 2011 -0700
add jsonErrPrintf
diff --git src/hg/lib/jsHelper.c src/hg/lib/jsHelper.c
index 987f2f1..afa079e 100644
--- src/hg/lib/jsHelper.c
+++ src/hg/lib/jsHelper.c
@@ -526,15 +526,29 @@
 indentBuf[i] = 0;
 if(hashNumEntries(hash))
     {
     struct hashEl *el, *list = hashElListHash(hash);
     slSort(&list, hashElCmp);
     // We add START and END comments to facilitate scraping out this variable by javascript.
     hPrintf("// START %s\n%svar %s = {\n", name, indentBuf, name);
     for (el = list; el != NULL; el = el->next)
         {
         hPrintf("%s\t\"%s\": %s%s\n", indentBuf, el->name, (char *) el->val, el->next == NULL ? "" : ",");
         }
     hPrintf("%s};\n// END %s\n", indentBuf, name);
     hashElFreeList(&list);
     }
 }
+
+void jsonErrPrintf(struct dyString *ds, char *format, ...)
+//  Printf a json error to a dyString for communicating with ajax code; format is:
+//  {"error": error message here}
+{
+va_list args;
+va_start(args, format);
+dyStringPrintf(ds, "{\"error\": \"");
+struct dyString *buf = newDyString(1000);
+dyStringVaPrintf(buf, format, args);
+dyStringAppend(ds, javaScriptLiteralEncode(dyStringCannibalize(&buf)));
+dyStringPrintf(ds, "\"}");
+va_end(args);
+}