1
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
3
* The contents of this file are subject to the Mozilla Public
4
* License Version 1.1 (the "License"); you may not use this file
5
* except in compliance with the License. You may obtain a copy of
6
* the License at http://www.mozilla.org/MPL/
8
* Software distributed under the License is distributed on an "AS
9
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
10
* implied. See the License for the specific language governing
11
* rights and limitations under the License.
13
* The Original Code is the Netscape Portable Runtime (NSPR).
15
* The Initial Developer of the Original Code is Netscape
16
* Communications Corporation. Portions created by Netscape are
17
* Copyright (C) 1998-2000 Netscape Communications Corporation. All
22
* Alternatively, the contents of this file may be used under the
23
* terms of the GNU General Public License Version 2 or later (the
24
* "GPL"), in which case the provisions of the GPL are applicable
25
* instead of those above. If you wish to allow use of your
26
* version of this file only under the terms of the GPL and not to
27
* allow others to use your version of this file under the MPL,
28
* indicate your decision by deleting the provisions above and
29
* replace them with the notice and other provisions required by
30
* the GPL. If you do not delete the provisions above, a recipient
31
* may use your version of this file under either the MPL or the
38
void _MD_os2_map_default_error(PRInt32 err)
42
PR_SetError(PR_WOULD_BLOCK_ERROR, err);
45
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
48
PR_SetError(PR_NOT_SOCKET_ERROR, err);
52
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
55
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
58
PR_SetError(PR_CONNECT_REFUSED_ERROR, err);
61
PR_SetError(PR_IS_CONNECTED_ERROR, err);
65
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
68
case ERROR_NETNAME_DELETED:
69
PR_SetError(PR_CONNECT_RESET_ERROR, err);
72
PR_SetError(PR_UNKNOWN_ERROR, err);
76
void _MD_os2_map_opendir_error(PRInt32 err)
79
case ERROR_FILE_NOT_FOUND:
80
case ERROR_PATH_NOT_FOUND:
81
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
83
case ERROR_ACCESS_DENIED:
84
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
86
case ERROR_INVALID_ADDRESS:
87
case ERROR_INVALID_ACCESS:
88
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
90
case ERROR_INVALID_NAME:
91
case ERROR_INVALID_PARAMETER:
92
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
94
case ERROR_TOO_MANY_OPEN_FILES:
95
case ERROR_NOT_DOS_DISK:
97
case ERROR_OPEN_FAILED:
99
case ERROR_CANNOT_MAKE:
100
PR_SetError(PR_IO_ERROR, err);
102
case ERROR_DRIVE_LOCKED:
103
case ERROR_DEVICE_IN_USE:
104
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
106
case ERROR_FILENAME_EXCED_RANGE:
107
PR_SetError(PR_NAME_TOO_LONG_ERROR, err);
109
case ERROR_NOT_ENOUGH_MEMORY:
110
case ERROR_SHARING_BUFFER_EXCEEDED:
111
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
114
PR_SetError(PR_UNKNOWN_ERROR, err);
119
void _MD_os2_map_closedir_error(PRInt32 err)
122
case ERROR_FILE_NOT_FOUND:
123
case ERROR_ACCESS_DENIED:
124
case ERROR_INVALID_HANDLE:
125
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
128
PR_SetError(PR_UNKNOWN_ERROR, err);
133
void _MD_os2_readdir_error(PRInt32 err)
137
case ERROR_NO_MORE_FILES:
138
PR_SetError(PR_NO_MORE_FILES_ERROR, err);
140
case ERROR_FILE_NOT_FOUND:
141
case ERROR_INVALID_HANDLE:
142
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
144
case ERROR_INVALID_ADDRESS:
145
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
147
case ERROR_NOT_DOS_DISK:
148
case ERROR_LOCK_VIOLATION:
149
case ERROR_BROKEN_PIPE:
150
case ERROR_NOT_READY:
151
PR_SetError(PR_IO_ERROR, err);
153
case ERROR_NOT_ENOUGH_MEMORY:
154
case ERROR_MORE_DATA:
155
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
158
PR_SetError(PR_UNKNOWN_ERROR, err);
163
void _MD_os2_map_delete_error(PRInt32 err)
166
case ERROR_FILE_NOT_FOUND:
167
case ERROR_PATH_NOT_FOUND:
168
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
170
case ERROR_ACCESS_DENIED:
171
case ERROR_WRITE_PROTECT:
172
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
174
case ERROR_INVALID_ADDRESS:
175
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
177
case ERROR_DRIVE_LOCKED:
179
case ERROR_SHARING_VIOLATION:
180
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
183
PR_SetError(PR_UNKNOWN_ERROR, err);
188
/* The error code for stat() is in errno. */
189
void _MD_os2_map_stat_error(PRInt32 err)
193
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
196
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
199
PR_SetError(PR_UNKNOWN_ERROR, err);
203
void _MD_os2_map_fstat_error(PRInt32 err)
206
case ERROR_ACCESS_DENIED:
207
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
209
case ERROR_INVALID_HANDLE:
210
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
212
case ERROR_INVALID_ADDRESS:
213
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
215
case ERROR_NOT_READY:
216
case ERROR_PATH_BUSY:
217
PR_SetError(PR_IO_ERROR, err);
219
case ERROR_NOT_ENOUGH_MEMORY:
220
case ERROR_MORE_DATA:
221
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
223
case ERROR_DRIVE_LOCKED:
225
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
228
PR_SetError(PR_UNKNOWN_ERROR, err);
233
void _MD_os2_map_rename_error(PRInt32 err)
236
case ERROR_FILE_NOT_FOUND:
237
case ERROR_PATH_NOT_FOUND:
238
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
240
case ERROR_ACCESS_DENIED:
241
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
243
case ERROR_INVALID_ADDRESS:
244
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
246
case ERROR_INVALID_NAME:
247
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
249
case ERROR_NOT_READY:
250
case ERROR_PATH_BUSY:
251
PR_SetError(PR_IO_ERROR, err);
253
case ERROR_DRIVE_LOCKED:
254
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
256
case ERROR_FILENAME_EXCED_RANGE:
257
PR_SetError(PR_NAME_TOO_LONG_ERROR, err);
259
case ERROR_NOT_ENOUGH_MEMORY:
260
case ERROR_MORE_DATA:
261
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
263
case ERROR_ALREADY_EXISTS:
264
case ERROR_FILE_EXISTS:
265
PR_SetError(PR_FILE_EXISTS_ERROR, err);
268
PR_SetError(PR_UNKNOWN_ERROR, err);
273
/* The error code for access() is in errno. */
274
void _MD_os2_map_access_error(PRInt32 err)
278
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
281
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
284
PR_SetError(PR_UNKNOWN_ERROR, err);
288
void _MD_os2_map_mkdir_error(PRInt32 err)
291
case ERROR_ALREADY_EXISTS:
292
case ERROR_FILE_EXISTS:
293
PR_SetError(PR_FILE_EXISTS_ERROR, err);
295
case ERROR_FILE_NOT_FOUND:
296
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
298
case ERROR_ACCESS_DENIED:
299
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
301
case ERROR_INVALID_ADDRESS:
302
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
304
case ERROR_INVALID_NAME:
305
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
307
case ERROR_NOT_READY:
308
case ERROR_PATH_BUSY:
309
PR_SetError(PR_IO_ERROR, err);
311
case ERROR_DRIVE_LOCKED:
312
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
314
case ERROR_FILENAME_EXCED_RANGE:
315
PR_SetError(PR_NAME_TOO_LONG_ERROR, err);
317
case ERROR_TOO_MANY_OPEN_FILES:
318
PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err);
320
case ERROR_PATH_NOT_FOUND:
321
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
323
case ERROR_NOT_ENOUGH_MEMORY:
324
case ERROR_MORE_DATA:
325
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
327
case ERROR_DISK_FULL:
328
case ERROR_HANDLE_DISK_FULL:
329
PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err);
331
case ERROR_WRITE_PROTECT:
332
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
335
PR_SetError(PR_UNKNOWN_ERROR, err);
340
void _MD_os2_map_rmdir_error(PRInt32 err)
344
case ERROR_FILE_NOT_FOUND:
345
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
347
case ERROR_ACCESS_DENIED:
348
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
350
case ERROR_INVALID_ADDRESS:
351
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
353
case ERROR_INVALID_NAME:
354
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
356
case ERROR_NOT_READY:
357
case ERROR_PATH_BUSY:
358
PR_SetError(PR_IO_ERROR, err);
360
case ERROR_DRIVE_LOCKED:
361
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
363
case ERROR_FILENAME_EXCED_RANGE:
364
PR_SetError(PR_NAME_TOO_LONG_ERROR, err);
366
case ERROR_TOO_MANY_OPEN_FILES:
367
PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err);
369
case ERROR_PATH_NOT_FOUND:
370
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
372
case ERROR_NOT_ENOUGH_MEMORY:
373
case ERROR_MORE_DATA:
374
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
376
case ERROR_WRITE_PROTECT:
377
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
380
PR_SetError(PR_UNKNOWN_ERROR, err);
385
void _MD_os2_map_read_error(PRInt32 err)
388
case ERROR_ACCESS_DENIED:
389
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
391
case ERROR_INVALID_HANDLE:
392
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
394
case ERROR_INVALID_ADDRESS:
395
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
397
case ERROR_NOT_READY:
398
case ERROR_PATH_BUSY:
399
PR_SetError(PR_IO_ERROR, err);
401
case ERROR_NOT_ENOUGH_MEMORY:
402
case ERROR_MORE_DATA:
403
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
405
case ERROR_DRIVE_LOCKED:
407
case ERROR_SHARING_VIOLATION:
408
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
410
case ERROR_NETNAME_DELETED:
411
PR_SetError(PR_CONNECT_RESET_ERROR, err);
414
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
417
PR_SetError(PR_NOT_SOCKET_ERROR, err);
421
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
425
PR_SetError(PR_UNKNOWN_ERROR, err);
430
void _MD_os2_map_transmitfile_error(PRInt32 err)
433
case ERROR_ACCESS_DENIED:
434
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
436
case ERROR_INVALID_HANDLE:
437
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
439
case ERROR_INVALID_ADDRESS:
440
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
442
case ERROR_NOT_READY:
443
case ERROR_PATH_BUSY:
444
PR_SetError(PR_IO_ERROR, err);
446
case ERROR_NOT_ENOUGH_MEMORY:
447
case ERROR_MORE_DATA:
448
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
450
case ERROR_DRIVE_LOCKED:
452
case ERROR_SHARING_VIOLATION:
453
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
455
case ERROR_FILENAME_EXCED_RANGE:
456
PR_SetError(PR_NAME_TOO_LONG_ERROR, err);
458
case ERROR_TOO_MANY_OPEN_FILES:
459
PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err);
461
case ERROR_PATH_NOT_FOUND:
462
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
465
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
468
PR_SetError(PR_NOT_SOCKET_ERROR, err);
472
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
476
PR_SetError(PR_UNKNOWN_ERROR, err);
481
void _MD_os2_map_write_error(PRInt32 err)
484
case ERROR_ACCESS_DENIED:
485
case ERROR_WRITE_PROTECT:
486
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
488
case ERROR_INVALID_HANDLE:
489
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
491
case ERROR_INVALID_ADDRESS:
492
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
494
case ERROR_NOT_READY:
495
case ERROR_PATH_BUSY:
496
PR_SetError(PR_IO_ERROR, err);
498
case ERROR_DRIVE_LOCKED:
500
case ERROR_SHARING_VIOLATION:
501
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
503
case ERROR_NOT_ENOUGH_MEMORY:
504
case ERROR_MORE_DATA:
505
case ERROR_DISK_FULL:
506
case ERROR_HANDLE_DISK_FULL:
508
PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err);
510
case ERROR_NETNAME_DELETED:
511
PR_SetError(PR_CONNECT_RESET_ERROR, err);
514
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
517
PR_SetError(PR_NOT_SOCKET_ERROR, err);
521
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
524
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
527
PR_SetError(PR_CONNECT_REFUSED_ERROR, err);
530
PR_SetError(PR_IS_CONNECTED_ERROR, err);
534
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
538
PR_SetError(PR_UNKNOWN_ERROR, err);
543
void _MD_os2_map_lseek_error(PRInt32 err)
546
case ERROR_INVALID_HANDLE:
547
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
549
case ERROR_SEEK_ON_DEVICE:
550
PR_SetError(PR_IO_ERROR, err);
553
PR_SetError(PR_UNKNOWN_ERROR, err);
558
void _MD_os2_map_fsync_error(PRInt32 err)
561
case ERROR_ACCESS_DENIED:
562
case ERROR_WRITE_PROTECT:
563
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
565
case ERROR_INVALID_HANDLE:
566
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
568
case ERROR_NOT_ENOUGH_MEMORY:
569
case ERROR_MORE_DATA:
570
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
572
case ERROR_DISK_FULL:
573
case ERROR_HANDLE_DISK_FULL:
574
PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err);
577
PR_SetError(PR_UNKNOWN_ERROR, err);
582
void _MD_os2_map_close_error(PRInt32 err)
585
case ERROR_INVALID_HANDLE:
587
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
589
case ERROR_NOT_READY:
590
case ERROR_PATH_BUSY:
591
PR_SetError(PR_IO_ERROR, err);
594
PR_SetError(PR_UNKNOWN_ERROR, err);
599
void _MD_os2_map_socket_error(PRInt32 err)
602
case EPROTONOSUPPORT:
603
PR_SetError(PR_PROTOCOL_NOT_SUPPORTED_ERROR, err);
606
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
608
case ERROR_NOT_ENOUGH_MEMORY:
609
case ERROR_MORE_DATA:
611
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
614
PR_SetError(PR_UNKNOWN_ERROR, err);
619
void _MD_os2_map_recv_error(PRInt32 err)
623
PR_SetError(PR_WOULD_BLOCK_ERROR, err);
626
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
629
PR_SetError(PR_NOT_SOCKET_ERROR, err);
633
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
636
case ERROR_NETNAME_DELETED:
637
PR_SetError(PR_CONNECT_RESET_ERROR, err);
640
PR_SetError(PR_UNKNOWN_ERROR, err);
645
void _MD_os2_map_recvfrom_error(PRInt32 err)
649
PR_SetError(PR_WOULD_BLOCK_ERROR, err);
652
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
655
PR_SetError(PR_NOT_SOCKET_ERROR, err);
659
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
662
case ERROR_NETNAME_DELETED:
663
PR_SetError(PR_CONNECT_RESET_ERROR, err);
666
PR_SetError(PR_UNKNOWN_ERROR, err);
671
void _MD_os2_map_send_error(PRInt32 err)
675
PR_SetError(PR_WOULD_BLOCK_ERROR, err);
678
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
681
PR_SetError(PR_NOT_SOCKET_ERROR, err);
685
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
688
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
691
PR_SetError(PR_CONNECT_REFUSED_ERROR, err);
694
PR_SetError(PR_IS_CONNECTED_ERROR, err);
698
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
701
case ERROR_NETNAME_DELETED:
702
PR_SetError(PR_CONNECT_RESET_ERROR, err);
705
PR_SetError(PR_UNKNOWN_ERROR, err);
710
void _MD_os2_map_sendto_error(PRInt32 err)
712
_MD_os2_map_default_error(err);
715
void _MD_os2_map_writev_error(int err)
717
_MD_os2_map_default_error(err);
720
void _MD_os2_map_accept_error(PRInt32 err)
722
_MD_os2_map_default_error(err);
725
void _MD_os2_map_acceptex_error(PRInt32 err)
728
case ERROR_INVALID_HANDLE:
729
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
731
case ERROR_INVALID_ADDRESS:
732
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
734
case ERROR_NOT_ENOUGH_MEMORY:
735
case ERROR_MORE_DATA:
736
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
739
PR_SetError(PR_UNKNOWN_ERROR, err);
745
* An error code of 0 means that the nonblocking connect succeeded.
748
int _MD_os2_get_nonblocking_connect_error(int osfd)
751
int len = sizeof(err);
752
if (getsockopt(osfd, SOL_SOCKET, SO_ERROR, (char *) &err, &len) == -1) {
759
void _MD_os2_map_connect_error(PRInt32 err)
763
PR_SetError(PR_WOULD_BLOCK_ERROR, err);
766
PR_SetError(PR_IN_PROGRESS_ERROR, err);
770
PR_SetError(PR_ALREADY_INITIATED_ERROR, err);
773
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
776
PR_SetError(PR_ADDRESS_NOT_AVAILABLE_ERROR, err);
779
PR_SetError(PR_NOT_SOCKET_ERROR, err);
782
PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err);
785
PR_SetError(PR_IO_TIMEOUT_ERROR, err);
788
PR_SetError(PR_CONNECT_REFUSED_ERROR, err);
791
PR_SetError(PR_NETWORK_UNREACHABLE_ERROR, err);
794
PR_SetError(PR_ADDRESS_IN_USE_ERROR, err);
797
PR_SetError(PR_IS_CONNECTED_ERROR, err);
801
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
805
PR_SetError(PR_UNKNOWN_ERROR, err);
810
void _MD_os2_map_bind_error(PRInt32 err)
814
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
817
PR_SetError(PR_NOT_SOCKET_ERROR, err);
821
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
825
PR_SetError(PR_ADDRESS_NOT_AVAILABLE_ERROR, err);
828
PR_SetError(PR_ADDRESS_IN_USE_ERROR, err);
831
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
834
PR_SetError(PR_SOCKET_ADDRESS_IS_BOUND_ERROR, err);
837
PR_SetError(PR_UNKNOWN_ERROR, err);
842
void _MD_os2_map_listen_error(PRInt32 err)
846
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
849
PR_SetError(PR_NOT_SOCKET_ERROR, err);
852
PR_SetError(PR_NOT_TCP_SOCKET_ERROR, err);
855
PR_SetError(PR_UNKNOWN_ERROR, err);
860
void _MD_os2_map_shutdown_error(PRInt32 err)
864
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
867
PR_SetError(PR_NOT_SOCKET_ERROR, err);
870
PR_SetError(PR_NOT_CONNECTED_ERROR, err);
873
PR_SetError(PR_UNKNOWN_ERROR, err);
878
void _MD_os2_map_socketpair_error(PRInt32 err)
882
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
885
PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err);
887
case EPROTONOSUPPORT:
888
PR_SetError(PR_PROTOCOL_NOT_SUPPORTED_ERROR, err);
891
PR_SetError(PR_NOT_TCP_SOCKET_ERROR, err);
894
PR_SetError(PR_ADDRESS_NOT_SUPPORTED_ERROR, err);
897
_MD_os2_map_default_error(err);
902
void _MD_os2_map_getsockname_error(PRInt32 err)
906
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
909
PR_SetError(PR_NOT_SOCKET_ERROR, err);
913
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
917
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
920
PR_SetError(PR_UNKNOWN_ERROR, err);
925
void _MD_os2_map_getpeername_error(PRInt32 err)
930
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
933
PR_SetError(PR_NOT_SOCKET_ERROR, err);
936
PR_SetError(PR_NOT_CONNECTED_ERROR, err);
940
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
944
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
947
PR_SetError(PR_UNKNOWN_ERROR, err);
952
void _MD_os2_map_getsockopt_error(PRInt32 err)
956
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
959
PR_SetError(PR_NOT_SOCKET_ERROR, err);
962
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
966
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
970
PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err);
973
PR_SetError(PR_UNKNOWN_ERROR, err);
978
void _MD_os2_map_setsockopt_error(PRInt32 err)
982
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
985
PR_SetError(PR_NOT_SOCKET_ERROR, err);
988
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
992
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
996
PR_SetError(PR_BUFFER_OVERFLOW_ERROR, err);
999
PR_SetError(PR_UNKNOWN_ERROR, err);
1004
void _MD_os2_map_open_error(PRInt32 err)
1007
case ERROR_ALREADY_EXISTS:
1008
case ERROR_FILE_EXISTS:
1009
PR_SetError(PR_FILE_EXISTS_ERROR, err);
1011
case ERROR_FILE_NOT_FOUND:
1012
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
1014
case ERROR_ACCESS_DENIED:
1015
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
1017
case ERROR_INVALID_ADDRESS:
1018
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
1020
case ERROR_INVALID_NAME:
1021
PR_SetError(PR_INVALID_ARGUMENT_ERROR, err);
1023
case ERROR_NOT_READY:
1024
case ERROR_OPEN_FAILED:
1025
case ERROR_PATH_BUSY:
1026
PR_SetError(PR_IO_ERROR, err);
1028
case ERROR_DRIVE_LOCKED:
1029
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
1031
case ERROR_FILENAME_EXCED_RANGE:
1032
PR_SetError(PR_NAME_TOO_LONG_ERROR, err);
1034
case ERROR_TOO_MANY_OPEN_FILES:
1035
PR_SetError(PR_SYS_DESC_TABLE_FULL_ERROR, err);
1037
case ERROR_PATH_NOT_FOUND:
1038
PR_SetError(PR_FILE_NOT_FOUND_ERROR, err);
1040
case ERROR_NOT_ENOUGH_MEMORY:
1041
case ERROR_MORE_DATA:
1042
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
1044
case ERROR_DISK_FULL:
1045
case ERROR_HANDLE_DISK_FULL:
1046
PR_SetError(PR_NO_DEVICE_SPACE_ERROR, err);
1048
case ERROR_WRITE_PROTECT:
1049
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
1052
PR_SetError(PR_UNKNOWN_ERROR, err);
1057
void _MD_os2_map_gethostname_error(PRInt32 err)
1062
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
1068
PR_SetError(PR_UNKNOWN_ERROR, err);
1073
void _MD_os2_map_select_error(PRInt32 err)
1075
PRErrorCode prerror;
1079
* OS/2 select() only works on sockets. So in this
1080
* context, ENOTSOCK is equivalent to EBADF on Unix.
1083
prerror = PR_BAD_DESCRIPTOR_ERROR;
1086
prerror = PR_INVALID_ARGUMENT_ERROR;
1090
prerror = PR_ACCESS_FAULT_ERROR;
1094
prerror = PR_UNKNOWN_ERROR;
1096
PR_SetError(prerror, err);
1099
void _MD_os2_map_lockf_error(PRInt32 err)
1102
case ERROR_ACCESS_DENIED:
1103
PR_SetError(PR_NO_ACCESS_RIGHTS_ERROR, err);
1105
case ERROR_INVALID_HANDLE:
1106
PR_SetError(PR_BAD_DESCRIPTOR_ERROR, err);
1108
case ERROR_INVALID_ADDRESS:
1109
PR_SetError(PR_ACCESS_FAULT_ERROR, err);
1111
case ERROR_DRIVE_LOCKED:
1113
case ERROR_SHARING_VIOLATION:
1114
PR_SetError(PR_FILE_IS_LOCKED_ERROR, err);
1116
case ERROR_NOT_ENOUGH_MEMORY:
1117
case ERROR_MORE_DATA:
1118
PR_SetError(PR_INSUFFICIENT_RESOURCES_ERROR, err);
1121
PR_SetError(PR_UNKNOWN_ERROR, err);