diff options
author | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2014-04-07 08:20:09 +0200 |
---|---|---|
committer | Emiel Bruijntjes <emiel.bruijntjes@copernica.com> | 2014-04-07 08:20:09 +0200 |
commit | bfab72e50fe8b94bd3a7dbcf63114002008575ea (patch) | |
tree | c3bcb603a500f4f42e694514f7fba86570024390 /hhvm/streambuf.cpp | |
parent | 6d05c17a8d00075f1578094163237c43128e1df9 (diff) |
very simple non-working implementation of streambufs for hhvm
Diffstat (limited to 'hhvm/streambuf.cpp')
-rw-r--r-- | hhvm/streambuf.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/hhvm/streambuf.cpp b/hhvm/streambuf.cpp new file mode 100644 index 0000000..805fc0f --- /dev/null +++ b/hhvm/streambuf.cpp @@ -0,0 +1,59 @@ +/** + * StreamBuf.cpp + * + * Implementation file for the StreamBuf class + * + * @see http://www.mr-edd.co.uk/blog/beginners_guide_streambuf + * + * @author Emiel Bruijntjes <emiel.bruijntjes@copernica.com> + * @copyright 2014 Copernica BV + */ +#include "includes.h" + +/** + * Set up namespace + */ +namespace Php { + +/** + * Called when the internal buffer should be synchronized + * @return int + */ +int StreamBuf::sync() +{ + // current buffer size + size_t size = pptr() - pbase(); + + // is this the error stream or the regular output stream? + if (_error) + { + // write to error (the zend_error() method is a varargs function, + // which means that we have to include a printf() like format as first + // parameter. We can not specify pbase() directly, because (1) it is + // not null terminated and (2) it could contain % signs and allow all + // sorts of buffer overflows. + + // @todo hhvm implementation + +// zend_error(_error, "%.*s", (int)size, pbase()); + + } + else + { + // @todo hhvm implementation + + // write to zend +// zend_write(pbase(), size); + } + + // reset the buffer + pbump(-size); + + // done + return 0; +} + +/** + * End namespace + */ +} |