/******************************************************************************* Copyright(C) Jonas 'Sortie' Termansen 2012. This file is part of LibMaxsi. LibMaxsi is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with LibMaxsi. If not, see . vsscanf.cpp Input format conversion. *******************************************************************************/ #include #include #include #include #include extern "C" int vsscanf(const char* str, const char* format, va_list ap) { const char* filename = "/ugly-vsscanf-hack"; FILE* fp = fopen(filename, "w+"); if ( !fp ) return -1; int ret = -1; size_t len = strlen(str); if ( fwrite(str, sizeof(char), len, fp) == len ) if ( fseek(fp, 0, SEEK_SET) == 0 ) ret = vfscanf(fp, format, ap); int savederrno = errno; fclose(fp); unlink(filename); errno = savederrno; return ret; }