zeroc-ice 3.6.2 → 3.6.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (209) hide show
  1. checksums.yaml +4 -4
  2. data/bin/slice2rb +0 -0
  3. data/ext/Slice.cpp +32 -39
  4. data/ext/ice/cpp/include/Ice/BasicStream.h +15 -4
  5. data/ext/ice/cpp/include/Ice/BuiltinSequences.h +2 -2
  6. data/ext/ice/cpp/include/Ice/Communicator.h +2 -2
  7. data/ext/ice/cpp/include/Ice/CommunicatorF.h +2 -2
  8. data/ext/ice/cpp/include/Ice/Connection.h +2 -2
  9. data/ext/ice/cpp/include/Ice/ConnectionF.h +2 -2
  10. data/ext/ice/cpp/include/Ice/Current.h +2 -2
  11. data/ext/ice/cpp/include/Ice/Endpoint.h +2 -2
  12. data/ext/ice/cpp/include/Ice/EndpointF.h +2 -2
  13. data/ext/ice/cpp/include/Ice/EndpointTypes.h +2 -2
  14. data/ext/ice/cpp/include/Ice/FacetMap.h +2 -2
  15. data/ext/ice/cpp/include/Ice/Identity.h +2 -2
  16. data/ext/ice/cpp/include/Ice/ImplicitContext.h +2 -2
  17. data/ext/ice/cpp/include/Ice/ImplicitContextF.h +2 -2
  18. data/ext/ice/cpp/include/Ice/Instrumentation.h +2 -2
  19. data/ext/ice/cpp/include/Ice/InstrumentationF.h +2 -2
  20. data/ext/ice/cpp/include/Ice/LocalException.h +2 -2
  21. data/ext/ice/cpp/include/Ice/Locator.h +2 -2
  22. data/ext/ice/cpp/include/Ice/LocatorF.h +2 -2
  23. data/ext/ice/cpp/include/Ice/Logger.h +2 -2
  24. data/ext/ice/cpp/include/Ice/LoggerF.h +2 -2
  25. data/ext/ice/cpp/include/Ice/Metrics.h +2 -2
  26. data/ext/ice/cpp/include/Ice/ObjectAdapter.h +2 -2
  27. data/ext/ice/cpp/include/Ice/ObjectAdapterF.h +2 -2
  28. data/ext/ice/cpp/include/Ice/ObjectFactory.h +2 -2
  29. data/ext/ice/cpp/include/Ice/ObjectFactoryF.h +2 -2
  30. data/ext/ice/cpp/include/Ice/Plugin.h +2 -2
  31. data/ext/ice/cpp/include/Ice/PluginF.h +2 -2
  32. data/ext/ice/cpp/include/Ice/Process.h +2 -2
  33. data/ext/ice/cpp/include/Ice/ProcessF.h +2 -2
  34. data/ext/ice/cpp/include/Ice/Properties.h +2 -2
  35. data/ext/ice/cpp/include/Ice/PropertiesAdmin.h +2 -2
  36. data/ext/ice/cpp/include/Ice/PropertiesF.h +2 -2
  37. data/ext/ice/cpp/include/Ice/RemoteLogger.h +2 -2
  38. data/ext/ice/cpp/include/Ice/Router.h +2 -2
  39. data/ext/ice/cpp/include/Ice/RouterF.h +2 -2
  40. data/ext/ice/cpp/include/Ice/ServantLocator.h +2 -2
  41. data/ext/ice/cpp/include/Ice/ServantLocatorF.h +2 -2
  42. data/ext/ice/cpp/include/Ice/SliceChecksumDict.h +2 -2
  43. data/ext/ice/cpp/include/Ice/SlicedData.h +6 -0
  44. data/ext/ice/cpp/include/Ice/Version.h +2 -2
  45. data/ext/ice/cpp/include/IceSSL/ConnectionInfo.h +2 -2
  46. data/ext/ice/cpp/include/IceSSL/EndpointInfo.h +2 -2
  47. data/ext/ice/cpp/include/IceUtil/Config.h +86 -26
  48. data/ext/ice/cpp/include/IceUtil/IconvStringConverter.h +1 -1
  49. data/ext/ice/cpp/include/IceUtil/Time.h +3 -2
  50. data/ext/ice/cpp/include/Slice/PythonUtil.h +1 -1
  51. data/ext/ice/cpp/include/Slice/RubyUtil.h +1 -1
  52. data/ext/ice/cpp/include/Slice/Util.h +5 -0
  53. data/ext/ice/cpp/src/Ice/BuiltinSequences.cpp +2 -2
  54. data/ext/ice/cpp/src/Ice/Communicator.cpp +2 -2
  55. data/ext/ice/cpp/src/Ice/CommunicatorF.cpp +2 -2
  56. data/ext/ice/cpp/src/Ice/Connection.cpp +2 -2
  57. data/ext/ice/cpp/src/Ice/ConnectionF.cpp +2 -2
  58. data/ext/ice/cpp/src/Ice/ConnectionFactory.cpp +57 -42
  59. data/ext/ice/cpp/src/Ice/ConnectionFactory.h +2 -0
  60. data/ext/ice/cpp/src/Ice/Current.cpp +2 -2
  61. data/ext/ice/cpp/src/Ice/DynamicLibrary.cpp +9 -5
  62. data/ext/ice/cpp/src/Ice/Endpoint.cpp +2 -2
  63. data/ext/ice/cpp/src/Ice/EndpointF.cpp +2 -2
  64. data/ext/ice/cpp/src/Ice/EndpointTypes.cpp +2 -2
  65. data/ext/ice/cpp/src/Ice/FacetMap.cpp +2 -2
  66. data/ext/ice/cpp/src/Ice/Identity.cpp +2 -2
  67. data/ext/ice/cpp/src/Ice/ImplicitContext.cpp +2 -2
  68. data/ext/ice/cpp/src/Ice/ImplicitContextF.cpp +2 -2
  69. data/ext/ice/cpp/src/Ice/Incoming.cpp +11 -4
  70. data/ext/ice/cpp/src/Ice/Instance.cpp +4 -2
  71. data/ext/ice/cpp/src/Ice/Instrumentation.cpp +2 -2
  72. data/ext/ice/cpp/src/Ice/InstrumentationF.cpp +2 -2
  73. data/ext/ice/cpp/src/Ice/InstrumentationI.cpp +1 -3
  74. data/ext/ice/cpp/src/Ice/LocalException.cpp +2 -2
  75. data/ext/ice/cpp/src/Ice/Locator.cpp +2 -2
  76. data/ext/ice/cpp/src/Ice/LocatorF.cpp +2 -2
  77. data/ext/ice/cpp/src/Ice/Logger.cpp +2 -2
  78. data/ext/ice/cpp/src/Ice/LoggerF.cpp +2 -2
  79. data/ext/ice/cpp/src/Ice/LoggerI.cpp +94 -5
  80. data/ext/ice/cpp/src/Ice/LoggerI.h +7 -1
  81. data/ext/ice/cpp/src/Ice/Metrics.cpp +2 -2
  82. data/ext/ice/cpp/src/Ice/Network.cpp +23 -7
  83. data/ext/ice/cpp/src/Ice/Network.h +1 -1
  84. data/ext/ice/cpp/src/Ice/ObjectAdapter.cpp +2 -2
  85. data/ext/ice/cpp/src/Ice/ObjectAdapterF.cpp +2 -2
  86. data/ext/ice/cpp/src/Ice/ObjectFactory.cpp +2 -2
  87. data/ext/ice/cpp/src/Ice/ObjectFactoryF.cpp +2 -2
  88. data/ext/ice/cpp/src/Ice/Plugin.cpp +2 -2
  89. data/ext/ice/cpp/src/Ice/PluginF.cpp +2 -2
  90. data/ext/ice/cpp/src/Ice/PluginManagerI.cpp +5 -0
  91. data/ext/ice/cpp/src/Ice/Process.cpp +2 -2
  92. data/ext/ice/cpp/src/Ice/ProcessF.cpp +2 -2
  93. data/ext/ice/cpp/src/Ice/Properties.cpp +2 -2
  94. data/ext/ice/cpp/src/Ice/PropertiesAdmin.cpp +2 -2
  95. data/ext/ice/cpp/src/Ice/PropertiesF.cpp +2 -2
  96. data/ext/ice/cpp/src/Ice/PropertyNames.cpp +4 -3
  97. data/ext/ice/cpp/src/Ice/PropertyNames.h +1 -1
  98. data/ext/ice/cpp/src/Ice/RemoteLogger.cpp +2 -2
  99. data/ext/ice/cpp/src/Ice/RetryQueue.cpp +1 -1
  100. data/ext/ice/cpp/src/Ice/Router.cpp +2 -2
  101. data/ext/ice/cpp/src/Ice/RouterF.cpp +2 -2
  102. data/ext/ice/cpp/src/Ice/ServantLocator.cpp +2 -2
  103. data/ext/ice/cpp/src/Ice/ServantLocatorF.cpp +2 -2
  104. data/ext/ice/cpp/src/Ice/SliceChecksumDict.cpp +2 -2
  105. data/ext/ice/cpp/src/Ice/StreamSocket.cpp +19 -3
  106. data/ext/ice/cpp/src/Ice/Version.cpp +2 -2
  107. data/ext/ice/cpp/src/Ice/WSConnector.h +2 -2
  108. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.cpp +2 -2
  109. data/ext/ice/cpp/src/IceDiscovery/IceDiscovery.h +2 -2
  110. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.cpp +2 -2
  111. data/ext/ice/cpp/src/IceLocatorDiscovery/IceLocatorDiscovery.h +2 -2
  112. data/ext/ice/cpp/src/IceSSL/ConnectionInfo.cpp +2 -2
  113. data/ext/ice/cpp/src/IceSSL/EndpointInfo.cpp +2 -2
  114. data/ext/ice/cpp/src/IceSSL/OpenSSLEngine.cpp +54 -39
  115. data/ext/ice/cpp/src/IceSSL/SecureTransportTransceiverI.cpp +5 -8
  116. data/ext/ice/cpp/src/IceSSL/Util.cpp +155 -4
  117. data/ext/ice/cpp/src/IceUtil/Cond.cpp +1 -1
  118. data/ext/ice/cpp/src/IceUtil/FileUtil.cpp +8 -0
  119. data/ext/ice/cpp/src/IceUtil/FileUtil.h +18 -5
  120. data/ext/ice/cpp/src/IceUtil/OutputUtil.cpp +5 -5
  121. data/ext/ice/cpp/src/IceUtil/Time.cpp +25 -17
  122. data/ext/ice/cpp/src/Slice/JavaUtil.cpp +5 -11
  123. data/ext/ice/cpp/src/Slice/Preprocessor.cpp +3 -3
  124. data/ext/ice/cpp/src/Slice/Python.cpp +14 -17
  125. data/ext/ice/cpp/src/Slice/PythonUtil.cpp +183 -48
  126. data/ext/ice/cpp/src/Slice/Ruby.cpp +6 -6
  127. data/ext/ice/cpp/src/Slice/RubyUtil.cpp +0 -10
  128. data/ext/ice/cpp/src/Slice/Util.cpp +28 -3
  129. data/ext/ice/mcpp/Makefile +10 -6
  130. data/ext/ice/mcpp/configed.H +3 -0
  131. data/ext/ice/mcpp/main.c +2 -2
  132. data/ext/ice/mcpp/mcpp.gyp +6 -0
  133. data/ext/ice/mcpp/support.c +1 -1
  134. data/ext/ice/mcpp/system.H +6 -1
  135. data/ext/ice/mcpp/system.c +52 -15
  136. data/ice.gemspec +1 -1
  137. data/lib/Glacier2/Metrics.rb +1 -1
  138. data/lib/Glacier2/PermissionsVerifier.rb +1 -1
  139. data/lib/Glacier2/PermissionsVerifierF.rb +1 -1
  140. data/lib/Glacier2/Router.rb +1 -1
  141. data/lib/Glacier2/RouterF.rb +1 -1
  142. data/lib/Glacier2/SSLInfo.rb +1 -1
  143. data/lib/Glacier2/Session.rb +1 -1
  144. data/lib/Ice/BuiltinSequences.rb +1 -1
  145. data/lib/Ice/Communicator.rb +1 -1
  146. data/lib/Ice/CommunicatorF.rb +1 -1
  147. data/lib/Ice/Connection.rb +1 -1
  148. data/lib/Ice/ConnectionF.rb +1 -1
  149. data/lib/Ice/Current.rb +1 -1
  150. data/lib/Ice/Endpoint.rb +1 -1
  151. data/lib/Ice/EndpointF.rb +1 -1
  152. data/lib/Ice/EndpointTypes.rb +1 -1
  153. data/lib/Ice/FacetMap.rb +1 -1
  154. data/lib/Ice/Identity.rb +1 -1
  155. data/lib/Ice/ImplicitContext.rb +1 -1
  156. data/lib/Ice/ImplicitContextF.rb +1 -1
  157. data/lib/Ice/Instrumentation.rb +1 -1
  158. data/lib/Ice/InstrumentationF.rb +1 -1
  159. data/lib/Ice/LocalException.rb +1 -1
  160. data/lib/Ice/Locator.rb +1 -1
  161. data/lib/Ice/LocatorF.rb +1 -1
  162. data/lib/Ice/Logger.rb +1 -1
  163. data/lib/Ice/LoggerF.rb +1 -1
  164. data/lib/Ice/Metrics.rb +1 -1
  165. data/lib/Ice/ObjectAdapterF.rb +1 -1
  166. data/lib/Ice/ObjectFactory.rb +1 -1
  167. data/lib/Ice/ObjectFactoryF.rb +1 -1
  168. data/lib/Ice/Plugin.rb +1 -1
  169. data/lib/Ice/PluginF.rb +1 -1
  170. data/lib/Ice/Process.rb +1 -1
  171. data/lib/Ice/ProcessF.rb +1 -1
  172. data/lib/Ice/Properties.rb +1 -1
  173. data/lib/Ice/PropertiesAdmin.rb +1 -1
  174. data/lib/Ice/PropertiesF.rb +1 -1
  175. data/lib/Ice/RemoteLogger.rb +1 -1
  176. data/lib/Ice/Router.rb +1 -1
  177. data/lib/Ice/RouterF.rb +1 -1
  178. data/lib/Ice/SliceChecksumDict.rb +1 -1
  179. data/lib/Ice/Version.rb +1 -1
  180. data/lib/IceBox/IceBox.rb +1 -1
  181. data/lib/IceGrid/Admin.rb +1 -1
  182. data/lib/IceGrid/Descriptor.rb +1 -1
  183. data/lib/IceGrid/Exception.rb +1 -1
  184. data/lib/IceGrid/FileParser.rb +1 -1
  185. data/lib/IceGrid/Locator.rb +1 -1
  186. data/lib/IceGrid/Observer.rb +1 -1
  187. data/lib/IceGrid/Query.rb +1 -1
  188. data/lib/IceGrid/Registry.rb +1 -1
  189. data/lib/IceGrid/Session.rb +1 -1
  190. data/lib/IceGrid/UserAccountMapper.rb +1 -1
  191. data/lib/IcePatch2/FileInfo.rb +1 -1
  192. data/lib/IcePatch2/FileServer.rb +1 -1
  193. data/lib/IceStorm/IceStorm.rb +1 -1
  194. data/lib/IceStorm/Metrics.rb +1 -1
  195. data/slice/Glacier2/PermissionsVerifier.ice +0 -3
  196. data/slice/Glacier2/Session.ice +2 -9
  197. data/slice/Ice/Communicator.ice +3 -3
  198. data/slice/Ice/ImplicitContext.ice +4 -5
  199. data/slice/Ice/Instrumentation.ice +26 -26
  200. data/slice/Ice/LocalException.ice +1 -1
  201. data/slice/Ice/Locator.ice +5 -3
  202. data/slice/Ice/Metrics.ice +1 -1
  203. data/slice/Ice/ObjectFactory.ice +0 -2
  204. data/slice/Ice/RemoteLogger.ice +32 -32
  205. data/slice/Ice/Router.ice +3 -0
  206. data/slice/IceGrid/Session.ice +5 -9
  207. data/slice/IceLocatorDiscovery/IceLocatorDiscovery.ice +7 -7
  208. data/slice/IcePatch2/FileServer.ice +28 -34
  209. metadata +30 -30
@@ -56,10 +56,10 @@ interruptedCallback(int /*signal*/)
56
56
  }
57
57
 
58
58
  void
59
- usage(const char* n)
59
+ usage(const string& n)
60
60
  {
61
61
  getErrorStream() << "Usage: " << n << " [options] slice-files...\n";
62
- getErrorStream() <<
62
+ getErrorStream() <<
63
63
  "Options:\n"
64
64
  "-h, --help Show this message.\n"
65
65
  "-v, --version Display the Ice version.\n"
@@ -83,7 +83,7 @@ usage(const char* n)
83
83
  }
84
84
 
85
85
  int
86
- Slice::Ruby::compile(int argc, char* argv[])
86
+ Slice::Ruby::compile(const vector<string>& argv)
87
87
  {
88
88
  IceUtilInternal::Options opts;
89
89
  opts.addOpt("h", "help");
@@ -101,11 +101,11 @@ Slice::Ruby::compile(int argc, char* argv[])
101
101
  opts.addOpt("", "underscore");
102
102
  opts.addOpt("", "all");
103
103
  opts.addOpt("", "checksum");
104
-
104
+
105
105
  vector<string> args;
106
106
  try
107
107
  {
108
- args = opts.parse(argc, const_cast<const char**>(argv));
108
+ args = opts.parse(argv);
109
109
  }
110
110
  catch(const IceUtilInternal::BadOptException& e)
111
111
  {
@@ -222,7 +222,7 @@ Slice::Ruby::compile(int argc, char* argv[])
222
222
  return EXIT_FAILURE;
223
223
  }
224
224
 
225
- if(!icecpp->printMakefileDependencies(out.os(), depend ? Preprocessor::Ruby : Preprocessor::SliceXML, includePaths,
225
+ if(!icecpp->printMakefileDependencies(out.os(), depend ? Preprocessor::Ruby : Preprocessor::SliceXML, includePaths,
226
226
  "-D__SLICE2RB__"))
227
227
  {
228
228
  out.cleanup();
@@ -245,17 +245,7 @@ Slice::Ruby::CodeVisitor::visitClassDefStart(const ClassDefPtr& p)
245
245
  //
246
246
  ClassList allBases = p->allBases();
247
247
  StringList ids;
248
- #if defined(__IBMCPP__) && defined(NDEBUG)
249
- //
250
- // VisualAge C++ 6.0 does not see that ClassDef is a Contained,
251
- // when inlining is on. The code below issues a warning: better
252
- // than an error!
253
- //
254
- transform(allBases.begin(), allBases.end(), back_inserter(ids),
255
- IceUtil::constMemFun<string,ClassDef>(&Contained::scoped));
256
- #else
257
248
  transform(allBases.begin(), allBases.end(), back_inserter(ids), IceUtil::constMemFun(&Contained::scoped));
258
- #endif
259
249
  StringList other;
260
250
  other.push_back(scoped);
261
251
  other.push_back("::Ice::Object");
@@ -10,6 +10,7 @@
10
10
  #include <Slice/Util.h>
11
11
  #include <IceUtil/FileUtil.h>
12
12
  #include <IceUtil/StringUtil.h>
13
+ #include <IceUtil/StringConverter.h>
13
14
  #include <climits>
14
15
 
15
16
  #ifndef _MSC_VER
@@ -172,11 +173,11 @@ Slice::changeInclude(const string& path, const vector<string>& includePaths)
172
173
  {
173
174
  paths.push_back(canonicalPath);
174
175
  }
175
-
176
+
176
177
  for(vector<string>::const_iterator i = paths.begin(); i != paths.end(); ++i)
177
178
  {
178
179
  for(vector<string>::const_iterator j = includePaths.begin(); j != includePaths.end(); ++j)
179
- {
180
+ {
180
181
  if(i->compare(0, j->length(), *j) == 0)
181
182
  {
182
183
  string s = i->substr(j->length() + 1); // + 1 for the '/'
@@ -186,7 +187,7 @@ Slice::changeInclude(const string& path, const vector<string>& includePaths)
186
187
  }
187
188
  }
188
189
  }
189
-
190
+
190
191
  //
191
192
  // If the path has been already shortened no need to test
192
193
  // with canonical path.
@@ -430,3 +431,27 @@ Slice::DependOutputUtil::os()
430
431
  {
431
432
  return _file.empty() ? cout : _os;
432
433
  }
434
+
435
+ #ifdef _WIN32
436
+ vector<string>
437
+ Slice::argvToArgs(int argc, wchar_t* argv[])
438
+ {
439
+ vector<string> args;
440
+ for(int i = 0; i < argc; i++)
441
+ {
442
+ args.push_back(IceUtil::wstringToString(argv[i]));
443
+ }
444
+ return args;
445
+ }
446
+ #else
447
+ vector<string>
448
+ Slice::argvToArgs(int argc, char* argv[])
449
+ {
450
+ vector<string> args;
451
+ for(int i = 0; i < argc; i++)
452
+ {
453
+ args.push_back(argv[i]);
454
+ }
455
+ return args;
456
+ }
457
+ #endif
@@ -4,7 +4,7 @@
4
4
  #
5
5
  # **********************************************************************
6
6
 
7
- PREFIX = /opt/mcpp-2.7.2
7
+ PREFIX ?= /opt/mcpp-2.7.2
8
8
 
9
9
  CFLAGS += -O -w
10
10
 
@@ -18,9 +18,9 @@ ifeq ($(UNAME),Darwin)
18
18
  endif
19
19
 
20
20
  ifeq ($(UNAME),Linux)
21
- CFLAGS += -fPIC
21
+ CFLAGS += -fPIC
22
22
 
23
- ifeq ($(MACHINE),i686)
23
+ ifeq ($(MACHINE),i686)
24
24
  CFLAGS += -m32
25
25
 
26
26
  #
@@ -29,7 +29,7 @@ ifeq ($(UNAME),Linux)
29
29
  ifeq ($(shell test -d /usr/lib/i386-linux-gnu && echo 0),0)
30
30
  LIBDIR = lib/i386-linux-gnu
31
31
  endif
32
- else
32
+ else
33
33
  #
34
34
  # Ubuntu.
35
35
  #
@@ -43,14 +43,18 @@ ifeq ($(UNAME),Linux)
43
43
  ifeq ($(shell test -d /usr/lib64 && echo 0),0)
44
44
  LIBDIR = lib64
45
45
  endif
46
- endif
46
+ endif
47
+ endif
48
+
49
+ ifeq ($(UNAME),AIX)
50
+ CC ?= xlc_r
47
51
  endif
48
52
 
49
53
  #
50
54
  # The default C compiler (cc) is undefined with MinGW
51
55
  #
52
56
  ifneq ($(findstring MINGW,$(UNAME)),)
53
- CC = gcc
57
+ CC ?= gcc
54
58
  endif
55
59
 
56
60
  OBJS = directive.o eval.o expand.o main.o mbchar.o support.o system.o
@@ -193,6 +193,9 @@
193
193
  #define _POSIX_C_SOURCE_defined 1
194
194
  #endif
195
195
  #include "limits.h"
196
+ #ifdef _AIX
197
+ #include "sys/stat.h"
198
+ #endif
196
199
  #undef _POSIX_
197
200
  #undef _POSIX_SOURCE
198
201
  #ifdef _POSIX_C_SOURCE_defined
@@ -307,7 +307,7 @@ int mcpp_lib_main
307
307
 
308
308
  /* Open input file, "-" means stdin. */
309
309
  if (in_file != NULL && ! str_eq( in_file, "-")) {
310
- if ((fp_in = fopen( in_file, "r")) == NULL) {
310
+ if ((fp_in = mcpp_fopen( in_file, "r")) == NULL) {
311
311
  mcpp_fprintf( ERR, "Can't open input file \"%s\".\n", in_file);
312
312
  errors++;
313
313
  goto fatal_error_exit;
@@ -317,7 +317,7 @@ int mcpp_lib_main
317
317
  }
318
318
  /* Open output file, "-" means stdout. */
319
319
  if (out_file != NULL && ! str_eq( out_file, "-")) {
320
- if ((fp_out = fopen( out_file, "w")) == NULL) {
320
+ if ((fp_out = mcpp_fopen( out_file, "w")) == NULL) {
321
321
  mcpp_fprintf( ERR, "Can't open output file \"%s\".\n", out_file);
322
322
  errors++;
323
323
  goto fatal_error_exit;
@@ -55,6 +55,12 @@
55
55
  '-fPIC',
56
56
  '-w'
57
57
  ]
58
+ }],
59
+ ['OS=="win"', {
60
+ 'defines' : [
61
+ '_WIN32_WINNT=0x600',
62
+ 'WIN32_LEAN_AND_MEAN'
63
+ ]
58
64
  }]
59
65
  ]
60
66
  }
@@ -1033,7 +1033,7 @@ int get_ch( void)
1033
1033
  cur_fullname = infile->full_fname;
1034
1034
  cur_fname = infile->real_fname; /* Restore current fname*/
1035
1035
  if (infile->pos != 0L) { /* Includer was closed */
1036
- infile->fp = fopen( cur_fullname, "r");
1036
+ infile->fp = mcpp_fopen( cur_fullname, "r");
1037
1037
  fseek( infile->fp, infile->pos, SEEK_SET);
1038
1038
  } /* Re-open the includer and restore the file-position */
1039
1039
  len = (int) (infile->bptr - infile->buffer);
@@ -70,7 +70,7 @@
70
70
  */
71
71
 
72
72
  /*
73
- * The variable 'mcpp_mode' specifies the mode of preprocessing as one of
73
+ * The variable 'mcpp_mode' specifies the mode of preprocessing as one of
74
74
  * OLD_PREP, KR, STD, or POST_STD.
75
75
  * Those modes have many differences each other --
76
76
  * i.e. handling of translation phases; handling of some
@@ -371,3 +371,8 @@ typedef long expr_t;
371
371
  */
372
372
  #define CPLUS 1 /* 199711L for C++ Standard */
373
373
 
374
+
375
+ //
376
+ // helper methods to open files using UNICODE paths
377
+ //
378
+ FILE* mcpp_fopen(const char *filename, const char *mode);
@@ -36,6 +36,7 @@
36
36
  * 1. specify the constants in "configed.H" or "noconfig.H",
37
37
  * 2. append the system-dependent routines in this file.
38
38
  */
39
+
39
40
  #include "system.H"
40
41
  #include "internal.H"
41
42
 
@@ -414,9 +415,9 @@ opt_search: ;
414
415
  set_sys_dirs( set_cplus_dir);
415
416
 
416
417
  if (mkdep_mf) { /* -MF overrides -MD */
417
- mkdep_fp = fopen( mkdep_mf, "w");
418
+ mkdep_fp = mcpp_fopen( mkdep_mf, "w");
418
419
  } else if (mkdep_md) {
419
- mkdep_fp = fopen( mkdep_md, "w");
420
+ mkdep_fp = mcpp_fopen( mkdep_md, "w");
420
421
  }
421
422
  if (mkdep_mq) /* -MQ overrides -MT */
422
423
  mkdep_target = mkdep_mq;
@@ -580,7 +581,7 @@ static void def_a_macro(
580
581
  skip_nl(); /* Clear the appended <newline> */
581
582
  }
582
583
 
583
- static void chk_opts(
584
+ static void chk_opts(
584
585
  int sflag, /* Flag of Standard or post-Standard mode */
585
586
  int trad /* -traditional (GCC only) */
586
587
  )
@@ -835,7 +836,7 @@ static void set_sys_dirs(
835
836
  set_a_dir( "/usr/local/include");
836
837
  #endif
837
838
 
838
- #ifdef C_INCLUDE_DIR1
839
+ #ifdef C_INCLUDE_DIR1
839
840
  set_a_dir( C_INCLUDE_DIR1);
840
841
  #endif
841
842
  #ifdef C_INCLUDE_DIR2
@@ -882,7 +883,7 @@ static void set_a_dir(
882
883
  incdir = (const char **) xrealloc( (void *) incdir
883
884
  , sizeof (char *) * max_inc * 2);
884
885
  incend = &incdir[ max_inc];
885
- max_inc *= 2;
886
+ max_inc *= 2;
886
887
  }
887
888
 
888
889
  if (dirname == NULL)
@@ -1140,7 +1141,7 @@ static char * norm_path(
1140
1141
  } else { /* Impossible */
1141
1142
  break;
1142
1143
  }
1143
- } else { /* Impossible */
1144
+ } else { /* Impossible */
1144
1145
  break;
1145
1146
  }
1146
1147
  }
@@ -1348,7 +1349,7 @@ void put_depend(
1348
1349
  }
1349
1350
 
1350
1351
  static char * md_init(
1351
- const char * filename, /* The source file name */
1352
+ const char * filename, /* The source file name */
1352
1353
  char * output /* Output to dependency file */
1353
1354
  )
1354
1355
  /*
@@ -1379,7 +1380,7 @@ static char * md_init(
1379
1380
  if (! mkdep_fp) { /* Unless already opened by -MF, -MD, -MMD options */
1380
1381
  if (mkdep & MD_FILE) {
1381
1382
  strcpy( cp, "d");
1382
- mkdep_fp = fopen( prefix, "w");
1383
+ mkdep_fp = mcpp_fopen(prefix, "w");
1383
1384
  } else {
1384
1385
  mkdep_fp = fp_out; /* Output dependency line to normal output */
1385
1386
  no_output++; /* Without normal output */
@@ -1617,7 +1618,7 @@ static int has_directory(
1617
1618
  )
1618
1619
  /*
1619
1620
  * If a directory is found in the 'source' filename string (i.e. "includer"),
1620
- * the directory part of the string is copied to 'directory' and
1621
+ * the directory part of the string is copied to 'directory' and
1621
1622
  * has_directory() returns TRUE.
1622
1623
  * Else, nothing is copied and it returns FALSE.
1623
1624
  */
@@ -1734,10 +1735,10 @@ static int open_file(
1734
1735
  return FALSE;
1735
1736
  if (included( fullname)) /* Once included */
1736
1737
  goto true;
1737
-
1738
+
1738
1739
  if ((max_open != 0 && max_open <= include_nest)
1739
1740
  /* Exceed the known limit of open files */
1740
- || ((fp = fopen( fullname, "r")) == NULL && errno == EMFILE)) {
1741
+ || ((fp = mcpp_fopen( fullname, "r")) == NULL && errno == EMFILE)) {
1741
1742
  /* Reached the limit for the first time */
1742
1743
  if (mcpp_debug & PATH) {
1743
1744
  #if HOST_COMPILER == BORLANDC
@@ -1757,14 +1758,14 @@ static int open_file(
1757
1758
  file->pos = ftell( file->fp);
1758
1759
  fclose( file->fp);
1759
1760
  /* In case of failure, re-open the includer */
1760
- if ((fp = fopen( fullname, "r")) == NULL) {
1761
- file->fp = fopen( cur_fullname, "r");
1761
+ if ((fp = mcpp_fopen( fullname, "r")) == NULL) {
1762
+ file->fp = mcpp_fopen( cur_fullname, "r");
1762
1763
  fseek( file->fp, file->pos, SEEK_SET);
1763
1764
  goto false;
1764
1765
  }
1765
1766
  if (max_open == 0) /* Remember the limit of the system */
1766
1767
  max_open = include_nest;
1767
- } else if (fp == NULL) /* No read permission */
1768
+ } else if (fp == NULL) /* No read permission */
1768
1769
  goto false;
1769
1770
  /* Truncate buffer of the includer to save memory */
1770
1771
  len = (int) (file->bptr - file->buffer);
@@ -1821,7 +1822,7 @@ void add_file(
1821
1822
  FILEINFO * file;
1822
1823
  const char * too_many_include_nest =
1823
1824
  "More than %.0s%ld nesting of #include"; /* _F_ _W4_ */
1824
-
1825
+
1825
1826
  //
1826
1827
  // When encoding is UTF-8, skip BOM if present.
1827
1828
  //
@@ -2698,3 +2699,39 @@ void clear_filelist( void)
2698
2699
  free( (void *) fnamelist);
2699
2700
  free( (void *) once_list);
2700
2701
  }
2702
+
2703
+ #ifdef _WIN32
2704
+ # include <Windows.h>
2705
+ #endif
2706
+
2707
+ FILE* mcpp_fopen(const char* filename, const char* mode)
2708
+ {
2709
+ #ifdef _WIN32
2710
+ FILE* f = 0;
2711
+ if(filename && mode)
2712
+ {
2713
+ int wfilenameLength = strlen(filename) + 1;
2714
+ wchar_t* wfilename = malloc(wfilenameLength * sizeof(wchar_t));
2715
+ if(wfilename)
2716
+ {
2717
+ if(MultiByteToWideChar(CP_UTF8, 0, filename, -1, wfilename, wfilenameLength))
2718
+ {
2719
+ int wmodeLength = strlen(mode) + 1;
2720
+ wchar_t* wmode = malloc(wmodeLength * sizeof(wchar_t));
2721
+ if(wmode)
2722
+ {
2723
+ if(MultiByteToWideChar(CP_UTF8, 0, mode, -1, wmode, wmodeLength))
2724
+ {
2725
+ _wfopen_s(&f, wfilename, wmode);
2726
+ }
2727
+ free(wmode);
2728
+ }
2729
+ }
2730
+ free(wfilename);
2731
+ }
2732
+ }
2733
+ return f;
2734
+ #else
2735
+ return fopen(filename, mode);
2736
+ #endif
2737
+ }
@@ -9,7 +9,7 @@
9
9
 
10
10
  Gem::Specification.new do |s|
11
11
  s.name = 'zeroc-ice'
12
- s.version = '3.6.2'
12
+ s.version = '3.6.3'
13
13
  s.summary = "ZeroC Ice for Ruby"
14
14
  s.description = <<-eos
15
15
  The Internet Communications Engine (Ice) provides a robust, proven
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # **********************************************************************
10
10
  #
11
- # Ice version 3.6.2
11
+ # Ice version 3.6.3
12
12
  #
13
13
  # <auto-generated>
14
14
  #