os_specific.c
Go to the documentation of this file.
00001 // g2o - General Graph Optimization
00002 // Copyright (C) 2011 R. Kuemmerle, G. Grisetti, W. Burgard
00003 // 
00004 // g2o is free software: you can redistribute it and/or modify
00005 // it under the terms of the GNU Lesser General Public License as published
00006 // by the Free Software Foundation, either version 3 of the License, or
00007 // (at your option) any later version.
00008 // 
00009 // g2o is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 // GNU Lesser General Public License for more details.
00013 // 
00014 // You should have received a copy of the GNU Lesser General Public License
00015 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
00016 
00017 #include "os_specific.h"
00018 
00019 #ifdef WINDOWS
00020 
00021 int vasprintf(char** strp, const char* fmt, va_list ap)
00022 {
00023   int n;
00024   int size = 100;
00025   char* p;
00026   char* np;
00027 
00028   if ((p = (char*)malloc(size * sizeof(char))) == NULL)
00029     return -1;
00030 
00031   while (1) {
00032 #ifdef _MSC_VER
00033     n = vsnprintf_s(p, size, size - 1, fmt, ap);
00034 #else
00035     n = vsnprintf(p, size, fmt, ap);
00036 #endif
00037     if (n > -1 && n < size) {
00038       *strp = p;
00039       return n;
00040     }
00041     if (n > -1)
00042       size = n+1;
00043     else
00044       size *= 2;
00045     if ((np = (char*)realloc (p, size * sizeof(char))) == NULL) {
00046       free(p);
00047       return -1;
00048     } else
00049       p = np;
00050   }
00051 }
00052 
00053 
00054 #endif


re_vision
Author(s): Dorian Galvez-Lopez
autogenerated on Sun Jan 5 2014 11:32:02