diff options
author | Michał Cichoń <michcic@gmail.com> | 2012-05-01 16:05:17 +0200 |
---|---|---|
committer | Michał Cichoń <michcic@gmail.com> | 2012-05-01 16:05:17 +0200 |
commit | 30b6a77f86a35dab16b3bf9b815e089657fc6890 (patch) | |
tree | e428795ca6f70e5eae78e236ec7feb0a986abf8b /json-c/src/printbuf.h | |
parent | c8da87b5718f4637beedbab5ab2ebf24fa1b2039 (diff) | |
download | pianobar-windows-build-30b6a77f86a35dab16b3bf9b815e089657fc6890.tar.gz pianobar-windows-build-30b6a77f86a35dab16b3bf9b815e089657fc6890.tar.bz2 pianobar-windows-build-30b6a77f86a35dab16b3bf9b815e089657fc6890.zip |
Update build environment to comply with latest pianobar requirements.
Replace gcrypt with blowfist library - this will allow us to keep pianobar.exe portable.
Diffstat (limited to 'json-c/src/printbuf.h')
-rw-r--r-- | json-c/src/printbuf.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/json-c/src/printbuf.h b/json-c/src/printbuf.h new file mode 100644 index 0000000..b1bde7f --- /dev/null +++ b/json-c/src/printbuf.h @@ -0,0 +1,77 @@ +/* + * $Id: printbuf.h,v 1.4 2006/01/26 02:16:28 mclark Exp $ + * + * Copyright (c) 2004, 2005 Metaparadigm Pte. Ltd. + * Michael Clark <michael@metaparadigm.com> + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See COPYING for details. + * + * + * Copyright (c) 2008-2009 Yahoo! Inc. All rights reserved. + * The copyrights to the contents of this file are licensed under the MIT License + * (http://www.opensource.org/licenses/mit-license.php) + */ + +#ifndef _printbuf_h_ +#define _printbuf_h_ + +#ifdef __cplusplus +extern "C" { +#endif + +struct printbuf { + char *buf; + int bpos; + int size; +}; + +extern struct printbuf* +printbuf_new(void); + +/* As an optimization, printbuf_memappend_fast is defined as a macro + * that handles copying data if the buffer is large enough; otherwise + * it invokes printbuf_memappend_real() which performs the heavy + * lifting of realloc()ing the buffer and copying data. + * Your code should not use printbuf_memappend directly--use + * printbuf_memappend_fast instead. + */ +extern int +printbuf_memappend(struct printbuf *p, const char *buf, int size); + +#define printbuf_memappend_fast(p, bufptr, bufsize) \ +do { \ + if ((p->size - p->bpos) > bufsize) { \ + memcpy(p->buf + p->bpos, (bufptr), bufsize); \ + p->bpos += bufsize; \ + p->buf[p->bpos]= '\0'; \ + } else { printbuf_memappend(p, (bufptr), bufsize); } \ +} while (0) + +#define printbuf_length(p) ((p)->bpos) + +/** + * Set len bytes of the buffer to charvalue, starting at offset offset. + * Similar to calling memset(x, charvalue, len); + * + * The memory allocated for the buffer is extended as necessary. + * + * If offset is -1, this starts at the end of the current data in the buffer. + */ +extern int +printbuf_memset(struct printbuf *pb, int offset, int charvalue, int len); + +extern int +sprintbuf(struct printbuf *p, const char *msg, ...); + +extern void +printbuf_reset(struct printbuf *p); + +extern void +printbuf_free(struct printbuf *p); + +#ifdef __cplusplus +} +#endif + +#endif |