(file) Return to io.c CVS log (file) (dir) Up to [OMI] / omi / base

  1 mike  1.1 /*
  2           **==============================================================================
  3           **
  4           ** Open Management Infrastructure (OMI)
  5           **
  6           ** Copyright (c) Microsoft Corporation
  7           ** 
  8           ** Licensed under the Apache License, Version 2.0 (the "License"); you may not 
  9           ** use this file except in compliance with the License. You may obtain a copy 
 10           ** of the License at 
 11           **
 12           **     http://www.apache.org/licenses/LICENSE-2.0 
 13           **
 14           ** THIS CODE IS PROVIDED *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 15           ** KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 
 16           ** WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 
 17           ** MERCHANTABLITY OR NON-INFRINGEMENT. 
 18           **
 19           ** See the Apache 2 License for the specific language governing permissions 
 20           ** and limitations under the License.
 21           **
 22 mike  1.1 **==============================================================================
 23           */
 24           
 25           #include "io.h"
 26           
 27           #if defined(__GNUC__)
 28           extern int vfwprintf(FILE*, const wchar_t*, va_list);
 29           extern int vwprintf(const wchar_t*, va_list);
 30           extern int vswprintf(wchar_t*, size_t, const wchar_t*, va_list);
 31           #endif
 32           
 33           FILE* Fopen(const char* path, const char* mode)
 34           {
 35           #if defined(_MSC_VER)
 36               FILE* fp;
 37               return fopen_s(&fp, path, mode) == 0 ? fp : NULL;
 38           #else
 39               return fopen(path, mode);
 40           #endif
 41           }
 42           
 43 mike  1.1 int Snprintf(char* buf, size_t size, const char* fmt, ...)
 44           {
 45               va_list ap;
 46               int r;
 47           
 48               memset(&ap, 0, sizeof(ap));
 49           
 50               va_start(ap, fmt);
 51           #if defined(_MSC_VER)
 52               r = _vsnprintf_s(buf, size, size, fmt, ap);
 53           #else
 54               r = vsnprintf(buf, size, fmt, ap);
 55           #endif
 56               va_end(ap);
 57           
 58               return r;
 59           }
 60           
 61           int Vsnprintf(char* buf, size_t size, const char* fmt, va_list ap)
 62           {
 63           #if defined(_MSC_VER)
 64 mike  1.1     return _vsnprintf_s(buf, size, size, fmt, ap);
 65           #else
 66               return vsnprintf(buf, size, fmt, ap);
 67           #endif
 68           }
 69           
 70           void Fzprintf(FILE* os, const MI_Char* format, ...)
 71           {
 72               va_list ap;
 73               memset(&ap, 0, sizeof(ap));
 74               va_start(ap, format);
 75           
 76           #if (MI_CHAR_TYPE == 1)
 77               vfprintf(os, format, ap);
 78           #else
 79               vfwprintf(os, format, ap);
 80           #endif
 81           
 82               va_end(ap);
 83           }
 84           
 85 mike  1.1 void Zprintf(const MI_Char* format, ...)
 86           {
 87               va_list ap;
 88               memset(&ap, 0, sizeof(ap));
 89           
 90               va_start(ap, format);
 91           #if (MI_CHAR_TYPE == 1)
 92               vprintf(format, ap);
 93           #else
 94               vwprintf(format, ap);
 95           #endif
 96               va_end(ap);
 97           }
 98           
 99           int Szprintf(MI_Char* buffer, size_t count, const MI_Char* format, ...)
100           {
101               int result;
102               va_list ap;
103               memset(&ap, 0, sizeof(ap));
104           
105               va_start(ap, format);
106 mike  1.1 #if (MI_CHAR_TYPE == 1)
107           # if defined(_MSC_VER)
108               result = _vsnprintf_s(buffer, count, _TRUNCATE, format, ap);
109           # else
110               result = vsnprintf(buffer, count, format, ap);
111           # endif
112           #else
113           # if defined(_MSC_VER)
114               result = _vsnwprintf_s(buffer, count, _TRUNCATE, format, ap);
115           # else
116               result = vswprintf(buffer, count, format, ap);
117           # endif
118           #endif
119               va_end(ap);
120           
121               return result;
122           }

ViewCVS 0.9.2