Closed
Description
ssize_t adapterWrite(void* p, const char *buf, size_t n) {
return ((Print*) p) -> write(buf, n);
}
FILE* openAdapter(void *p) {
cookie_io_functions_t fncs;
fncs.write = adapterWrite;
fncs.close = NULL;
return fopencookie(p, "w", fncs);
}
size_t Print::printf(const char *fmt, ...) {
va_list args;
va_start(args, fmt);
FILE* adapter = openAdapter(this);
size_t len = vfprintf(adapter, fmt, args);
fclose(adapter);
va_end(args);
return len;
}
size_t Print::printf(const __FlashStringHelper *fmt, ...) {
size_t fmtLen = strlen_P((PGM_P) fmt);
char format[fmtLen + 1];
strcpy_P(format, (PGM_P) fmt);
va_list args;
va_start(args, fmt);
FILE* adapter = openAdapter(this);
size_t len = vfprintf(adapter, format, args);
fclose(adapter);
va_end(args);
return len;
}
Metadata
Metadata
Assignees
Labels
No labels