2 * This file was automatically generated by make-map from Mono.Posix.dll.
9 using System.Runtime.InteropServices;
14 public sealed /* static */ class UnixConvert
16 private UnixConvert () {}
18 private const string LIB = "MonoPosixHelper";
20 private static void ThrowArgumentException (object value)
22 throw new ArgumentOutOfRangeException ("value", value,
23 Locale.GetText ("Current platform doesn't support this value."));
26 [DllImport (LIB, EntryPoint="Mono_Posix_FromError")]
27 private static extern int FromError (Error value, out Int32 rval);
29 public static bool TryFromError (Error value, out Int32 rval)
31 return FromError (value, out rval) == 0;
34 public static Int32 FromError (Error value)
37 if (FromError (value, out rval) == -1)
38 ThrowArgumentException (value);
42 [DllImport (LIB, EntryPoint="Mono_Posix_ToError")]
43 private static extern int ToError (Int32 value, out Error rval);
45 public static bool TryToError (Int32 value, out Error rval)
47 return ToError (value, out rval) == 0;
50 public static Error ToError (Int32 value)
53 if (ToError (value, out rval) == -1)
54 ThrowArgumentException (value);
58 [DllImport (LIB, EntryPoint="Mono_Posix_FromSyslogOptions")]
59 private static extern int FromSyslogOptions (SyslogOptions value, out Int32 rval);
61 public static bool TryFromSyslogOptions (SyslogOptions value, out Int32 rval)
63 return FromSyslogOptions (value, out rval) == 0;
66 public static Int32 FromSyslogOptions (SyslogOptions value)
69 if (FromSyslogOptions (value, out rval) == -1)
70 ThrowArgumentException (value);
74 [DllImport (LIB, EntryPoint="Mono_Posix_ToSyslogOptions")]
75 private static extern int ToSyslogOptions (Int32 value, out SyslogOptions rval);
77 public static bool TryToSyslogOptions (Int32 value, out SyslogOptions rval)
79 return ToSyslogOptions (value, out rval) == 0;
82 public static SyslogOptions ToSyslogOptions (Int32 value)
85 if (ToSyslogOptions (value, out rval) == -1)
86 ThrowArgumentException (value);
90 [DllImport (LIB, EntryPoint="Mono_Posix_FromSyslogFacility")]
91 private static extern int FromSyslogFacility (SyslogFacility value, out Int32 rval);
93 public static bool TryFromSyslogFacility (SyslogFacility value, out Int32 rval)
95 return FromSyslogFacility (value, out rval) == 0;
98 public static Int32 FromSyslogFacility (SyslogFacility value)
101 if (FromSyslogFacility (value, out rval) == -1)
102 ThrowArgumentException (value);
106 [DllImport (LIB, EntryPoint="Mono_Posix_ToSyslogFacility")]
107 private static extern int ToSyslogFacility (Int32 value, out SyslogFacility rval);
109 public static bool TryToSyslogFacility (Int32 value, out SyslogFacility rval)
111 return ToSyslogFacility (value, out rval) == 0;
114 public static SyslogFacility ToSyslogFacility (Int32 value)
117 if (ToSyslogFacility (value, out rval) == -1)
118 ThrowArgumentException (value);
122 [DllImport (LIB, EntryPoint="Mono_Posix_FromSyslogLevel")]
123 private static extern int FromSyslogLevel (SyslogLevel value, out Int32 rval);
125 public static bool TryFromSyslogLevel (SyslogLevel value, out Int32 rval)
127 return FromSyslogLevel (value, out rval) == 0;
130 public static Int32 FromSyslogLevel (SyslogLevel value)
133 if (FromSyslogLevel (value, out rval) == -1)
134 ThrowArgumentException (value);
138 [DllImport (LIB, EntryPoint="Mono_Posix_ToSyslogLevel")]
139 private static extern int ToSyslogLevel (Int32 value, out SyslogLevel rval);
141 public static bool TryToSyslogLevel (Int32 value, out SyslogLevel rval)
143 return ToSyslogLevel (value, out rval) == 0;
146 public static SyslogLevel ToSyslogLevel (Int32 value)
149 if (ToSyslogLevel (value, out rval) == -1)
150 ThrowArgumentException (value);
154 [DllImport (LIB, EntryPoint="Mono_Posix_FromOpenFlags")]
155 private static extern int FromOpenFlags (OpenFlags value, out Int32 rval);
157 public static bool TryFromOpenFlags (OpenFlags value, out Int32 rval)
159 return FromOpenFlags (value, out rval) == 0;
162 public static Int32 FromOpenFlags (OpenFlags value)
165 if (FromOpenFlags (value, out rval) == -1)
166 ThrowArgumentException (value);
170 [DllImport (LIB, EntryPoint="Mono_Posix_ToOpenFlags")]
171 private static extern int ToOpenFlags (Int32 value, out OpenFlags rval);
173 public static bool TryToOpenFlags (Int32 value, out OpenFlags rval)
175 return ToOpenFlags (value, out rval) == 0;
178 public static OpenFlags ToOpenFlags (Int32 value)
181 if (ToOpenFlags (value, out rval) == -1)
182 ThrowArgumentException (value);
186 [DllImport (LIB, EntryPoint="Mono_Posix_FromFilePermissions")]
187 private static extern int FromFilePermissions (FilePermissions value, out UInt32 rval);
189 public static bool TryFromFilePermissions (FilePermissions value, out UInt32 rval)
191 return FromFilePermissions (value, out rval) == 0;
194 public static UInt32 FromFilePermissions (FilePermissions value)
197 if (FromFilePermissions (value, out rval) == -1)
198 ThrowArgumentException (value);
202 [DllImport (LIB, EntryPoint="Mono_Posix_ToFilePermissions")]
203 private static extern int ToFilePermissions (UInt32 value, out FilePermissions rval);
205 public static bool TryToFilePermissions (UInt32 value, out FilePermissions rval)
207 return ToFilePermissions (value, out rval) == 0;
210 public static FilePermissions ToFilePermissions (UInt32 value)
212 FilePermissions rval;
213 if (ToFilePermissions (value, out rval) == -1)
214 ThrowArgumentException (value);
218 [DllImport (LIB, EntryPoint="Mono_Posix_FromFcntlCommand")]
219 private static extern int FromFcntlCommand (FcntlCommand value, out Int32 rval);
221 public static bool TryFromFcntlCommand (FcntlCommand value, out Int32 rval)
223 return FromFcntlCommand (value, out rval) == 0;
226 public static Int32 FromFcntlCommand (FcntlCommand value)
229 if (FromFcntlCommand (value, out rval) == -1)
230 ThrowArgumentException (value);
234 [DllImport (LIB, EntryPoint="Mono_Posix_ToFcntlCommand")]
235 private static extern int ToFcntlCommand (Int32 value, out FcntlCommand rval);
237 public static bool TryToFcntlCommand (Int32 value, out FcntlCommand rval)
239 return ToFcntlCommand (value, out rval) == 0;
242 public static FcntlCommand ToFcntlCommand (Int32 value)
245 if (ToFcntlCommand (value, out rval) == -1)
246 ThrowArgumentException (value);
250 [DllImport (LIB, EntryPoint="Mono_Posix_FromLockType")]
251 private static extern int FromLockType (LockType value, out Int16 rval);
253 public static bool TryFromLockType (LockType value, out Int16 rval)
255 return FromLockType (value, out rval) == 0;
258 public static Int16 FromLockType (LockType value)
261 if (FromLockType (value, out rval) == -1)
262 ThrowArgumentException (value);
266 [DllImport (LIB, EntryPoint="Mono_Posix_ToLockType")]
267 private static extern int ToLockType (Int16 value, out LockType rval);
269 public static bool TryToLockType (Int16 value, out LockType rval)
271 return ToLockType (value, out rval) == 0;
274 public static LockType ToLockType (Int16 value)
277 if (ToLockType (value, out rval) == -1)
278 ThrowArgumentException (value);
282 [DllImport (LIB, EntryPoint="Mono_Posix_FromSeekFlags")]
283 private static extern int FromSeekFlags (SeekFlags value, out Int16 rval);
285 public static bool TryFromSeekFlags (SeekFlags value, out Int16 rval)
287 return FromSeekFlags (value, out rval) == 0;
290 public static Int16 FromSeekFlags (SeekFlags value)
293 if (FromSeekFlags (value, out rval) == -1)
294 ThrowArgumentException (value);
298 [DllImport (LIB, EntryPoint="Mono_Posix_ToSeekFlags")]
299 private static extern int ToSeekFlags (Int16 value, out SeekFlags rval);
301 public static bool TryToSeekFlags (Int16 value, out SeekFlags rval)
303 return ToSeekFlags (value, out rval) == 0;
306 public static SeekFlags ToSeekFlags (Int16 value)
309 if (ToSeekFlags (value, out rval) == -1)
310 ThrowArgumentException (value);
314 [DllImport (LIB, EntryPoint="Mono_Posix_FromDirectoryNotifyFlags")]
315 private static extern int FromDirectoryNotifyFlags (DirectoryNotifyFlags value, out Int32 rval);
317 public static bool TryFromDirectoryNotifyFlags (DirectoryNotifyFlags value, out Int32 rval)
319 return FromDirectoryNotifyFlags (value, out rval) == 0;
322 public static Int32 FromDirectoryNotifyFlags (DirectoryNotifyFlags value)
325 if (FromDirectoryNotifyFlags (value, out rval) == -1)
326 ThrowArgumentException (value);
330 [DllImport (LIB, EntryPoint="Mono_Posix_ToDirectoryNotifyFlags")]
331 private static extern int ToDirectoryNotifyFlags (Int32 value, out DirectoryNotifyFlags rval);
333 public static bool TryToDirectoryNotifyFlags (Int32 value, out DirectoryNotifyFlags rval)
335 return ToDirectoryNotifyFlags (value, out rval) == 0;
338 public static DirectoryNotifyFlags ToDirectoryNotifyFlags (Int32 value)
340 DirectoryNotifyFlags rval;
341 if (ToDirectoryNotifyFlags (value, out rval) == -1)
342 ThrowArgumentException (value);
346 [DllImport (LIB, EntryPoint="Mono_Posix_FromPosixFadviseAdvice")]
347 private static extern int FromPosixFadviseAdvice (PosixFadviseAdvice value, out Int32 rval);
349 public static bool TryFromPosixFadviseAdvice (PosixFadviseAdvice value, out Int32 rval)
351 return FromPosixFadviseAdvice (value, out rval) == 0;
354 public static Int32 FromPosixFadviseAdvice (PosixFadviseAdvice value)
357 if (FromPosixFadviseAdvice (value, out rval) == -1)
358 ThrowArgumentException (value);
362 [DllImport (LIB, EntryPoint="Mono_Posix_ToPosixFadviseAdvice")]
363 private static extern int ToPosixFadviseAdvice (Int32 value, out PosixFadviseAdvice rval);
365 public static bool TryToPosixFadviseAdvice (Int32 value, out PosixFadviseAdvice rval)
367 return ToPosixFadviseAdvice (value, out rval) == 0;
370 public static PosixFadviseAdvice ToPosixFadviseAdvice (Int32 value)
372 PosixFadviseAdvice rval;
373 if (ToPosixFadviseAdvice (value, out rval) == -1)
374 ThrowArgumentException (value);
378 [DllImport (LIB, EntryPoint="Mono_Posix_FromPosixMadviseAdvice")]
379 private static extern int FromPosixMadviseAdvice (PosixMadviseAdvice value, out Int32 rval);
381 public static bool TryFromPosixMadviseAdvice (PosixMadviseAdvice value, out Int32 rval)
383 return FromPosixMadviseAdvice (value, out rval) == 0;
386 public static Int32 FromPosixMadviseAdvice (PosixMadviseAdvice value)
389 if (FromPosixMadviseAdvice (value, out rval) == -1)
390 ThrowArgumentException (value);
394 [DllImport (LIB, EntryPoint="Mono_Posix_ToPosixMadviseAdvice")]
395 private static extern int ToPosixMadviseAdvice (Int32 value, out PosixMadviseAdvice rval);
397 public static bool TryToPosixMadviseAdvice (Int32 value, out PosixMadviseAdvice rval)
399 return ToPosixMadviseAdvice (value, out rval) == 0;
402 public static PosixMadviseAdvice ToPosixMadviseAdvice (Int32 value)
404 PosixMadviseAdvice rval;
405 if (ToPosixMadviseAdvice (value, out rval) == -1)
406 ThrowArgumentException (value);
410 [DllImport (LIB, EntryPoint="Mono_Posix_FromSignum")]
411 private static extern int FromSignum (Signum value, out Int32 rval);
413 public static bool TryFromSignum (Signum value, out Int32 rval)
415 return FromSignum (value, out rval) == 0;
418 public static Int32 FromSignum (Signum value)
421 if (FromSignum (value, out rval) == -1)
422 ThrowArgumentException (value);
426 [DllImport (LIB, EntryPoint="Mono_Posix_ToSignum")]
427 private static extern int ToSignum (Int32 value, out Signum rval);
429 public static bool TryToSignum (Int32 value, out Signum rval)
431 return ToSignum (value, out rval) == 0;
434 public static Signum ToSignum (Int32 value)
437 if (ToSignum (value, out rval) == -1)
438 ThrowArgumentException (value);
442 [DllImport (LIB, EntryPoint="Mono_Posix_FromWaitOptions")]
443 private static extern int FromWaitOptions (WaitOptions value, out Int32 rval);
445 public static bool TryFromWaitOptions (WaitOptions value, out Int32 rval)
447 return FromWaitOptions (value, out rval) == 0;
450 public static Int32 FromWaitOptions (WaitOptions value)
453 if (FromWaitOptions (value, out rval) == -1)
454 ThrowArgumentException (value);
458 [DllImport (LIB, EntryPoint="Mono_Posix_ToWaitOptions")]
459 private static extern int ToWaitOptions (Int32 value, out WaitOptions rval);
461 public static bool TryToWaitOptions (Int32 value, out WaitOptions rval)
463 return ToWaitOptions (value, out rval) == 0;
466 public static WaitOptions ToWaitOptions (Int32 value)
469 if (ToWaitOptions (value, out rval) == -1)
470 ThrowArgumentException (value);
474 [DllImport (LIB, EntryPoint="Mono_Posix_FromAccessMode")]
475 private static extern int FromAccessMode (AccessMode value, out Int32 rval);
477 public static bool TryFromAccessMode (AccessMode value, out Int32 rval)
479 return FromAccessMode (value, out rval) == 0;
482 public static Int32 FromAccessMode (AccessMode value)
485 if (FromAccessMode (value, out rval) == -1)
486 ThrowArgumentException (value);
490 [DllImport (LIB, EntryPoint="Mono_Posix_ToAccessMode")]
491 private static extern int ToAccessMode (Int32 value, out AccessMode rval);
493 public static bool TryToAccessMode (Int32 value, out AccessMode rval)
495 return ToAccessMode (value, out rval) == 0;
498 public static AccessMode ToAccessMode (Int32 value)
501 if (ToAccessMode (value, out rval) == -1)
502 ThrowArgumentException (value);
506 [DllImport (LIB, EntryPoint="Mono_Posix_FromPathConf")]
507 private static extern int FromPathConf (PathConf value, out Int32 rval);
509 public static bool TryFromPathConf (PathConf value, out Int32 rval)
511 return FromPathConf (value, out rval) == 0;
514 public static Int32 FromPathConf (PathConf value)
517 if (FromPathConf (value, out rval) == -1)
518 ThrowArgumentException (value);
522 [DllImport (LIB, EntryPoint="Mono_Posix_ToPathConf")]
523 private static extern int ToPathConf (Int32 value, out PathConf rval);
525 public static bool TryToPathConf (Int32 value, out PathConf rval)
527 return ToPathConf (value, out rval) == 0;
530 public static PathConf ToPathConf (Int32 value)
533 if (ToPathConf (value, out rval) == -1)
534 ThrowArgumentException (value);
538 [DllImport (LIB, EntryPoint="Mono_Posix_FromSysConf")]
539 private static extern int FromSysConf (SysConf value, out Int32 rval);
541 public static bool TryFromSysConf (SysConf value, out Int32 rval)
543 return FromSysConf (value, out rval) == 0;
546 public static Int32 FromSysConf (SysConf value)
549 if (FromSysConf (value, out rval) == -1)
550 ThrowArgumentException (value);
554 [DllImport (LIB, EntryPoint="Mono_Posix_ToSysConf")]
555 private static extern int ToSysConf (Int32 value, out SysConf rval);
557 public static bool TryToSysConf (Int32 value, out SysConf rval)
559 return ToSysConf (value, out rval) == 0;
562 public static SysConf ToSysConf (Int32 value)
565 if (ToSysConf (value, out rval) == -1)
566 ThrowArgumentException (value);
570 [DllImport (LIB, EntryPoint="Mono_Posix_FromConfStr")]
571 private static extern int FromConfStr (ConfStr value, out Int32 rval);
573 public static bool TryFromConfStr (ConfStr value, out Int32 rval)
575 return FromConfStr (value, out rval) == 0;
578 public static Int32 FromConfStr (ConfStr value)
581 if (FromConfStr (value, out rval) == -1)
582 ThrowArgumentException (value);
586 [DllImport (LIB, EntryPoint="Mono_Posix_ToConfStr")]
587 private static extern int ToConfStr (Int32 value, out ConfStr rval);
589 public static bool TryToConfStr (Int32 value, out ConfStr rval)
591 return ToConfStr (value, out rval) == 0;
594 public static ConfStr ToConfStr (Int32 value)
597 if (ToConfStr (value, out rval) == -1)
598 ThrowArgumentException (value);
602 [DllImport (LIB, EntryPoint="Mono_Posix_FromLockFlags")]
603 private static extern int FromLockFlags (LockFlags value, out Int32 rval);
605 public static bool TryFromLockFlags (LockFlags value, out Int32 rval)
607 return FromLockFlags (value, out rval) == 0;
610 public static Int32 FromLockFlags (LockFlags value)
613 if (FromLockFlags (value, out rval) == -1)
614 ThrowArgumentException (value);
618 [DllImport (LIB, EntryPoint="Mono_Posix_ToLockFlags")]
619 private static extern int ToLockFlags (Int32 value, out LockFlags rval);
621 public static bool TryToLockFlags (Int32 value, out LockFlags rval)
623 return ToLockFlags (value, out rval) == 0;
626 public static LockFlags ToLockFlags (Int32 value)
629 if (ToLockFlags (value, out rval) == -1)
630 ThrowArgumentException (value);
634 [DllImport (LIB, EntryPoint="Mono_Posix_FromPollEvents")]
635 private static extern int FromPollEvents (PollEvents value, out Int16 rval);
637 public static bool TryFromPollEvents (PollEvents value, out Int16 rval)
639 return FromPollEvents (value, out rval) == 0;
642 public static Int16 FromPollEvents (PollEvents value)
645 if (FromPollEvents (value, out rval) == -1)
646 ThrowArgumentException (value);
650 [DllImport (LIB, EntryPoint="Mono_Posix_ToPollEvents")]
651 private static extern int ToPollEvents (Int16 value, out PollEvents rval);
653 public static bool TryToPollEvents (Int16 value, out PollEvents rval)
655 return ToPollEvents (value, out rval) == 0;
658 public static PollEvents ToPollEvents (Int16 value)
661 if (ToPollEvents (value, out rval) == -1)
662 ThrowArgumentException (value);
666 [DllImport (LIB, EntryPoint="Mono_Posix_FromXattrFlags")]
667 private static extern int FromXattrFlags (XattrFlags value, out Int32 rval);
669 public static bool TryFromXattrFlags (XattrFlags value, out Int32 rval)
671 return FromXattrFlags (value, out rval) == 0;
674 public static Int32 FromXattrFlags (XattrFlags value)
677 if (FromXattrFlags (value, out rval) == -1)
678 ThrowArgumentException (value);
682 [DllImport (LIB, EntryPoint="Mono_Posix_ToXattrFlags")]
683 private static extern int ToXattrFlags (Int32 value, out XattrFlags rval);
685 public static bool TryToXattrFlags (Int32 value, out XattrFlags rval)
687 return ToXattrFlags (value, out rval) == 0;
690 public static XattrFlags ToXattrFlags (Int32 value)
693 if (ToXattrFlags (value, out rval) == -1)
694 ThrowArgumentException (value);
699 // Non-generated exports
702 // convert from octal representation.
703 public static FilePermissions ToFilePermissions (string value)
705 uint n = Convert.ToUInt32 (value, 8);
706 return ToFilePermissions (n);
709 public static readonly DateTime LocalUnixEpoch =
710 new DateTime (1970, 1, 1).ToLocalTime();
712 public static DateTime ToDateTime (long time)
714 return FromTimeT (time);
717 public static long FromDateTime (DateTime time)
719 return ToTimeT (time);
722 public static DateTime FromTimeT (long time)
724 DateTime r = LocalUnixEpoch.AddSeconds (time);
728 public static long ToTimeT (DateTime time)
730 return (long) time.Subtract (LocalUnixEpoch).TotalSeconds;
733 public static OpenFlags ToOpenFlags (FileMode mode, FileAccess access)
737 case FileMode.CreateNew:
738 flags = OpenFlags.O_CREAT | OpenFlags.O_EXCL;
740 case FileMode.Create:
741 flags = OpenFlags.O_CREAT | OpenFlags.O_TRUNC;
746 case FileMode.OpenOrCreate:
747 flags = OpenFlags.O_CREAT;
749 case FileMode.Truncate:
750 flags = OpenFlags.O_TRUNC;
752 case FileMode.Append:
753 flags = OpenFlags.O_APPEND;
756 throw new ArgumentException (Locale.GetText ("Unsupported mode value"), "mode");
759 // Is O_LARGEFILE supported?
761 if (TryFromOpenFlags (OpenFlags.O_LARGEFILE, out _v))
762 flags |= OpenFlags.O_LARGEFILE;
765 case FileAccess.Read:
766 flags |= OpenFlags.O_RDONLY;
768 case FileAccess.Write:
769 flags |= OpenFlags.O_WRONLY;
771 case FileAccess.ReadWrite:
772 flags |= OpenFlags.O_RDWR;
775 throw new ArgumentOutOfRangeException (Locale.GetText ("Unsupported access value"), "access");
781 public static string ToFopenMode (FileAccess access)
784 case FileAccess.Read: return "rb";
785 case FileAccess.Write: return "wb";
786 case FileAccess.ReadWrite: return "r+b";
787 default: throw new ArgumentOutOfRangeException ("access");
791 public static string ToFopenMode (FileMode mode)
794 case FileMode.CreateNew: case FileMode.Create: return "w+b";
795 case FileMode.Open: case FileMode.OpenOrCreate: return "r+b";
796 case FileMode.Truncate: return "w+b";
797 case FileMode.Append: return "a+b";
798 default: throw new ArgumentOutOfRangeException ("mode");
802 private static readonly string[][] fopen_modes = new string[][]{
803 // Read Write ReadWrite
804 /* FileMode.CreateNew: */ new string[]{"Can't Read+Create", "wb", "w+b"},
805 /* FileMode.Create: */ new string[]{"Can't Read+Create", "wb", "w+b"},
806 /* FileMode.Open: */ new string[]{"rb", "wb", "r+b"},
807 /* FileMode.OpenOrCreate: */ new string[]{"rb", "wb", "r+b"},
808 /* FileMode.Truncate: */ new string[]{"Cannot Truncate and Read","wb", "w+b"},
809 /* FileMode.Append: */ new string[]{"Cannot Append and Read", "ab", "a+b"},
812 public static string ToFopenMode (FileMode mode, FileAccess access)
814 int fm = -1, fa = -1;
816 case FileMode.CreateNew: fm = 0; break;
817 case FileMode.Create: fm = 1; break;
818 case FileMode.Open: fm = 2; break;
819 case FileMode.OpenOrCreate: fm = 3; break;
820 case FileMode.Truncate: fm = 4; break;
821 case FileMode.Append: fm = 5; break;
824 case FileAccess.Read: fa = 0; break;
825 case FileAccess.Write: fa = 1; break;
826 case FileAccess.ReadWrite: fa = 2; break;
830 throw new ArgumentOutOfRangeException ("mode");
832 throw new ArgumentOutOfRangeException ("access");
834 string fopen_mode = fopen_modes [fm][fa];
835 if (fopen_mode [0] != 'r' && fopen_mode [0] != 'w' && fopen_mode [0] != 'a')
836 throw new ArgumentException (fopen_mode);