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_FromLockfCommand")]
603 private static extern int FromLockfCommand (LockfCommand value, out Int32 rval);
605 public static bool TryFromLockfCommand (LockfCommand value, out Int32 rval)
607 return FromLockfCommand (value, out rval) == 0;
610 public static Int32 FromLockfCommand (LockfCommand value)
613 if (FromLockfCommand (value, out rval) == -1)
614 ThrowArgumentException (value);
618 [DllImport (LIB, EntryPoint="Mono_Posix_ToLockfCommand")]
619 private static extern int ToLockfCommand (Int32 value, out LockfCommand rval);
621 public static bool TryToLockfCommand (Int32 value, out LockfCommand rval)
623 return ToLockfCommand (value, out rval) == 0;
626 public static LockfCommand ToLockfCommand (Int32 value)
629 if (ToLockfCommand (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);
698 [DllImport (LIB, EntryPoint="Mono_Posix_FromMountFlags")]
699 private static extern int FromMountFlags (MountFlags value, out UInt64 rval);
701 public static bool TryFromMountFlags (MountFlags value, out UInt64 rval)
703 return FromMountFlags (value, out rval) == 0;
706 public static UInt64 FromMountFlags (MountFlags value)
709 if (FromMountFlags (value, out rval) == -1)
710 ThrowArgumentException (value);
714 [DllImport (LIB, EntryPoint="Mono_Posix_ToMountFlags")]
715 private static extern int ToMountFlags (UInt64 value, out MountFlags rval);
717 public static bool TryToMountFlags (UInt64 value, out MountFlags rval)
719 return ToMountFlags (value, out rval) == 0;
722 public static MountFlags ToMountFlags (UInt64 value)
725 if (ToMountFlags (value, out rval) == -1)
726 ThrowArgumentException (value);
730 [DllImport (LIB, EntryPoint="Mono_Posix_FromMmapFlags")]
731 private static extern int FromMmapFlags (MmapFlags value, out Int32 rval);
733 public static bool TryFromMmapFlags (MmapFlags value, out Int32 rval)
735 return FromMmapFlags (value, out rval) == 0;
738 public static Int32 FromMmapFlags (MmapFlags value)
741 if (FromMmapFlags (value, out rval) == -1)
742 ThrowArgumentException (value);
746 [DllImport (LIB, EntryPoint="Mono_Posix_ToMmapFlags")]
747 private static extern int ToMmapFlags (Int32 value, out MmapFlags rval);
749 public static bool TryToMmapFlags (Int32 value, out MmapFlags rval)
751 return ToMmapFlags (value, out rval) == 0;
754 public static MmapFlags ToMmapFlags (Int32 value)
757 if (ToMmapFlags (value, out rval) == -1)
758 ThrowArgumentException (value);
762 [DllImport (LIB, EntryPoint="Mono_Posix_FromMmapProt")]
763 private static extern int FromMmapProt (MmapProt value, out Int32 rval);
765 public static bool TryFromMmapProt (MmapProt value, out Int32 rval)
767 return FromMmapProt (value, out rval) == 0;
770 public static Int32 FromMmapProt (MmapProt value)
773 if (FromMmapProt (value, out rval) == -1)
774 ThrowArgumentException (value);
778 [DllImport (LIB, EntryPoint="Mono_Posix_ToMmapProt")]
779 private static extern int ToMmapProt (Int32 value, out MmapProt rval);
781 public static bool TryToMmapProt (Int32 value, out MmapProt rval)
783 return ToMmapProt (value, out rval) == 0;
786 public static MmapProt ToMmapProt (Int32 value)
789 if (ToMmapProt (value, out rval) == -1)
790 ThrowArgumentException (value);
794 [DllImport (LIB, EntryPoint="Mono_Posix_FromMsyncFlags")]
795 private static extern int FromMsyncFlags (MsyncFlags value, out Int32 rval);
797 public static bool TryFromMsyncFlags (MsyncFlags value, out Int32 rval)
799 return FromMsyncFlags (value, out rval) == 0;
802 public static Int32 FromMsyncFlags (MsyncFlags value)
805 if (FromMsyncFlags (value, out rval) == -1)
806 ThrowArgumentException (value);
810 [DllImport (LIB, EntryPoint="Mono_Posix_ToMsyncFlags")]
811 private static extern int ToMsyncFlags (Int32 value, out MsyncFlags rval);
813 public static bool TryToMsyncFlags (Int32 value, out MsyncFlags rval)
815 return ToMsyncFlags (value, out rval) == 0;
818 public static MsyncFlags ToMsyncFlags (Int32 value)
821 if (ToMsyncFlags (value, out rval) == -1)
822 ThrowArgumentException (value);
826 [DllImport (LIB, EntryPoint="Mono_Posix_FromMlockallFlags")]
827 private static extern int FromMlockallFlags (MlockallFlags value, out Int32 rval);
829 public static bool TryFromMlockallFlags (MlockallFlags value, out Int32 rval)
831 return FromMlockallFlags (value, out rval) == 0;
834 public static Int32 FromMlockallFlags (MlockallFlags value)
837 if (FromMlockallFlags (value, out rval) == -1)
838 ThrowArgumentException (value);
842 [DllImport (LIB, EntryPoint="Mono_Posix_ToMlockallFlags")]
843 private static extern int ToMlockallFlags (Int32 value, out MlockallFlags rval);
845 public static bool TryToMlockallFlags (Int32 value, out MlockallFlags rval)
847 return ToMlockallFlags (value, out rval) == 0;
850 public static MlockallFlags ToMlockallFlags (Int32 value)
853 if (ToMlockallFlags (value, out rval) == -1)
854 ThrowArgumentException (value);
858 [DllImport (LIB, EntryPoint="Mono_Posix_FromMremapFlags")]
859 private static extern int FromMremapFlags (MremapFlags value, out UInt64 rval);
861 public static bool TryFromMremapFlags (MremapFlags value, out UInt64 rval)
863 return FromMremapFlags (value, out rval) == 0;
866 public static UInt64 FromMremapFlags (MremapFlags value)
869 if (FromMremapFlags (value, out rval) == -1)
870 ThrowArgumentException (value);
874 [DllImport (LIB, EntryPoint="Mono_Posix_ToMremapFlags")]
875 private static extern int ToMremapFlags (UInt64 value, out MremapFlags rval);
877 public static bool TryToMremapFlags (UInt64 value, out MremapFlags rval)
879 return ToMremapFlags (value, out rval) == 0;
882 public static MremapFlags ToMremapFlags (UInt64 value)
885 if (ToMremapFlags (value, out rval) == -1)
886 ThrowArgumentException (value);
891 // Non-generated exports
894 // convert from octal representation.
895 public static FilePermissions FromOctalPermissionString (string value)
897 uint n = Convert.ToUInt32 (value, 8);
898 return ToFilePermissions (n);
901 public static string ToOctalPermissionString (FilePermissions value)
903 string s = Convert.ToString ((int) (value & ~FilePermissions.S_IFMT), 8);
904 return new string ('0', 4-s.Length) + s;
907 public static FilePermissions FromUnixPermissionString (string value)
910 throw new ArgumentNullException ("value");
911 if (value.Length != 9 && value.Length != 10)
912 throw new ArgumentException ("value", "must contain 9 or 10 characters");
915 FilePermissions perms = new FilePermissions ();
917 if (value.Length == 10) {
918 perms |= GetUnixPermissionDevice (value [i]);
922 perms |= GetUnixPermissionGroup (
923 value [i++], FilePermissions.S_IRUSR,
924 value [i++], FilePermissions.S_IWUSR,
925 value [i++], FilePermissions.S_IXUSR,
926 's', 'S', FilePermissions.S_ISUID);
928 perms |= GetUnixPermissionGroup (
929 value [i++], FilePermissions.S_IRGRP,
930 value [i++], FilePermissions.S_IWGRP,
931 value [i++], FilePermissions.S_IXGRP,
932 's', 'S', FilePermissions.S_ISGID);
934 perms |= GetUnixPermissionGroup (
935 value [i++], FilePermissions.S_IROTH,
936 value [i++], FilePermissions.S_IWOTH,
937 value [i++], FilePermissions.S_IXOTH,
938 't', 'T', FilePermissions.S_ISVTX);
943 private static FilePermissions GetUnixPermissionDevice (char value)
946 case 'd': return FilePermissions.S_IFDIR;
947 case 'c': return FilePermissions.S_IFCHR;
948 case 'b': return FilePermissions.S_IFBLK;
949 case '-': return FilePermissions.S_IFREG;
950 case 'p': return FilePermissions.S_IFIFO;
951 case 'l': return FilePermissions.S_IFLNK;
952 case 's': return FilePermissions.S_IFSOCK;
954 throw new ArgumentException ("value", "invalid device specification: " +
958 private static FilePermissions GetUnixPermissionGroup (
959 char read, FilePermissions readb,
960 char write, FilePermissions writeb,
961 char exec, FilePermissions execb,
962 char xboth, char xbitonly, FilePermissions xbit)
964 FilePermissions perms = new FilePermissions ();
971 else if (exec == xbitonly)
973 else if (exec == xboth)
974 perms |= (execb | xbit);
978 // Create ls(1) drwxrwxrwx permissions display
979 public static string ToUnixPermissionString (FilePermissions value)
981 char [] access = new char[] {
983 '-', '-', '-', // owner
984 '-', '-', '-', // group
985 '-', '-', '-', // other
987 bool have_device = true;
988 switch (value & FilePermissions.S_IFMT) {
989 case FilePermissions.S_IFDIR: access [0] = 'd'; break;
990 case FilePermissions.S_IFCHR: access [0] = 'c'; break;
991 case FilePermissions.S_IFBLK: access [0] = 'b'; break;
992 case FilePermissions.S_IFREG: access [0] = '-'; break;
993 case FilePermissions.S_IFIFO: access [0] = 'p'; break;
994 case FilePermissions.S_IFLNK: access [0] = 'l'; break;
995 case FilePermissions.S_IFSOCK: access [0] = 's'; break;
996 default: have_device = false; break;
998 SetUnixPermissionGroup (value, access, 1,
999 FilePermissions.S_IRUSR, FilePermissions.S_IWUSR, FilePermissions.S_IXUSR,
1000 's', 'S', FilePermissions.S_ISUID);
1001 SetUnixPermissionGroup (value, access, 4,
1002 FilePermissions.S_IRGRP, FilePermissions.S_IWGRP, FilePermissions.S_IXGRP,
1003 's', 'S', FilePermissions.S_ISGID);
1004 SetUnixPermissionGroup (value, access, 7,
1005 FilePermissions.S_IROTH, FilePermissions.S_IWOTH, FilePermissions.S_IXOTH,
1006 't', 'T', FilePermissions.S_ISVTX);
1008 ? new string (access)
1009 : new string (access, 1, 9);
1012 private static void SetUnixPermissionGroup (FilePermissions value,
1013 char[] access, int index,
1014 FilePermissions read, FilePermissions write, FilePermissions exec,
1015 char both, char setonly, FilePermissions setxbit)
1017 if (UnixFileSystemInfo.IsType (value, read))
1018 access [index] = 'r';
1019 if (UnixFileSystemInfo.IsType (value, write))
1020 access [index+1] = 'w';
1021 access [index+2] = GetSymbolicMode (value, exec, both, setonly, setxbit);
1024 // Implement the GNU ls(1) permissions spec; see `info coreutils ls`,
1025 // section 10.1.2, the `-l' argument information.
1026 private static char GetSymbolicMode (FilePermissions value,
1027 FilePermissions xbit, char both, char setonly, FilePermissions setxbit)
1029 bool is_x = UnixFileSystemInfo.IsType (value, xbit);
1030 bool is_sx = UnixFileSystemInfo.IsType (value, setxbit);
1041 public static readonly DateTime LocalUnixEpoch =
1042 new DateTime (1970, 1, 1).ToLocalTime();
1044 public static DateTime ToDateTime (long time)
1046 return FromTimeT (time);
1049 public static long FromDateTime (DateTime time)
1051 return ToTimeT (time);
1054 public static DateTime FromTimeT (long time)
1056 DateTime r = LocalUnixEpoch.AddSeconds (time);
1060 public static long ToTimeT (DateTime time)
1062 return (long) time.Subtract (LocalUnixEpoch).TotalSeconds;
1065 public static OpenFlags ToOpenFlags (FileMode mode, FileAccess access)
1067 OpenFlags flags = 0;
1069 case FileMode.CreateNew:
1070 flags = OpenFlags.O_CREAT | OpenFlags.O_EXCL;
1072 case FileMode.Create:
1073 flags = OpenFlags.O_CREAT | OpenFlags.O_TRUNC;
1078 case FileMode.OpenOrCreate:
1079 flags = OpenFlags.O_CREAT;
1081 case FileMode.Truncate:
1082 flags = OpenFlags.O_TRUNC;
1084 case FileMode.Append:
1085 flags = OpenFlags.O_APPEND;
1088 throw new ArgumentException (Locale.GetText ("Unsupported mode value"), "mode");
1091 // Is O_LARGEFILE supported?
1093 if (TryFromOpenFlags (OpenFlags.O_LARGEFILE, out _v))
1094 flags |= OpenFlags.O_LARGEFILE;
1097 case FileAccess.Read:
1098 flags |= OpenFlags.O_RDONLY;
1100 case FileAccess.Write:
1101 flags |= OpenFlags.O_WRONLY;
1103 case FileAccess.ReadWrite:
1104 flags |= OpenFlags.O_RDWR;
1107 throw new ArgumentOutOfRangeException (Locale.GetText ("Unsupported access value"), "access");
1113 public static string ToFopenMode (FileAccess access)
1116 case FileAccess.Read: return "rb";
1117 case FileAccess.Write: return "wb";
1118 case FileAccess.ReadWrite: return "r+b";
1119 default: throw new ArgumentOutOfRangeException ("access");
1123 public static string ToFopenMode (FileMode mode)
1126 case FileMode.CreateNew: case FileMode.Create: return "w+b";
1127 case FileMode.Open: case FileMode.OpenOrCreate: return "r+b";
1128 case FileMode.Truncate: return "w+b";
1129 case FileMode.Append: return "a+b";
1130 default: throw new ArgumentOutOfRangeException ("mode");
1134 private static readonly string[][] fopen_modes = new string[][]{
1135 // Read Write ReadWrite
1136 /* FileMode.CreateNew: */ new string[]{"Can't Read+Create", "wb", "w+b"},
1137 /* FileMode.Create: */ new string[]{"Can't Read+Create", "wb", "w+b"},
1138 /* FileMode.Open: */ new string[]{"rb", "wb", "r+b"},
1139 /* FileMode.OpenOrCreate: */ new string[]{"rb", "wb", "r+b"},
1140 /* FileMode.Truncate: */ new string[]{"Cannot Truncate and Read","wb", "w+b"},
1141 /* FileMode.Append: */ new string[]{"Cannot Append and Read", "ab", "a+b"},
1144 public static string ToFopenMode (FileMode mode, FileAccess access)
1146 int fm = -1, fa = -1;
1148 case FileMode.CreateNew: fm = 0; break;
1149 case FileMode.Create: fm = 1; break;
1150 case FileMode.Open: fm = 2; break;
1151 case FileMode.OpenOrCreate: fm = 3; break;
1152 case FileMode.Truncate: fm = 4; break;
1153 case FileMode.Append: fm = 5; break;
1156 case FileAccess.Read: fa = 0; break;
1157 case FileAccess.Write: fa = 1; break;
1158 case FileAccess.ReadWrite: fa = 2; break;
1162 throw new ArgumentOutOfRangeException ("mode");
1164 throw new ArgumentOutOfRangeException ("access");
1166 string fopen_mode = fopen_modes [fm][fa];
1167 if (fopen_mode [0] != 'r' && fopen_mode [0] != 'w' && fopen_mode [0] != 'a')
1168 throw new ArgumentException (fopen_mode);