static void errCatchWarnHandler(char *format, va_list args) /* Write an error to top of errCatchStack. */ { struct errCatch **pErrCatchStack = getStack(), *errCatchStack = *pErrCatchStack; dyStringVaPrintf(errCatchStack->message, format, args); dyStringAppendC(errCatchStack->message, '\n'); }
void dyStringPrintf(struct dyString *ds, char *format, ...) /* Printf to end of dyString. */ { va_list args; va_start(args, format); dyStringVaPrintf(ds, format, args); va_end(args); }
static void puntWarnHandler(char *format, va_list args) /* Our handler for warn - which would be coming from a library * function, not from ParaFlow application. */ { dyStringClear(punter.message); dyStringVaPrintf(punter.message, format, args); dyStringClear(punter.source); dyStringAppend(punter.source, "library"); }
void lineFileVaAbort(struct lineFile *lf, char *format, va_list args) /* Print file name, line number, and error message, and abort. */ { struct dyString *dy = dyStringNew(0); dyStringPrintf(dy, "Error line %d of %s: ", lf->lineIx, lf->fileName); dyStringVaPrintf(dy, format, args); errAbort("%s", dy->string); dyStringFree(&dy); }
struct dyString *dyStringCreate(char *format, ...) /* Create a dyString with a printf style initial content */ { int len = strlen(format) * 3; struct dyString *ds = newDyString(len); va_list args; va_start(args, format); dyStringVaPrintf(ds, format, args); va_end(args); return ds; }
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, jsonStringEscape(dyStringCannibalize(&buf))); dyStringPrintf(ds, "\"}"); va_end(args); }
void cppVaAbort(struct customPp *cpp, char *format, va_list args) /* Print file name, line number, and error message, and abort. */ { struct dyString *dy = dyStringNew(0); struct lineFile *lf = cpp->fileStack; if (lf) dyStringPrintf(dy, "Error line %d of %s: ", lf->lineIx, lf->fileName); else dyStringPrintf(dy, "Error: "); dyStringVaPrintf(dy, format, args); errAbort("%s", dy->string); dyStringFree(&dy); }
void qaStatusSoftError(struct qaStatus *qs, char *format, ...) /* Add error message for something less than a crash. */ { struct dyString *dy = dyStringNew(0); va_list args; va_start(args, format); vaWarn(format, args); if (qs->errMessage) { dyStringAppend(dy, qs->errMessage); dyStringAppendC(dy, '\n'); } dyStringVaPrintf(dy, format, args); va_end(args); freez(&qs->errMessage); qs->errMessage = cloneString(dy->string); dyStringFree(&dy); }
int dsPrintf(char *format, ...) // Prints into end of the top ds buffer, and return resulting string length // If there is no current buffer, this acts like a simple printf and returns -1 { int len = -1; // caller could assert returned length > 0 to ensure dsPrint is open! va_list args; va_start(args, format); if (dsStack != NULL) { dyStringVaPrintf(dsStack, format, args); len = dyStringLen(dsStack); } else { dsInitializeOut() vfprintf(dsOut,format, args); } va_end(args); return len; }
static void cartJsonVaWarn(char *format, va_list args) /* Save warnings for later. */ { dyStringVaPrintf(dyWarn, format, args); }