Rodrigo, What do you think as a pattern (there are quite a few places like this) if it were to do something like:
[Conditional("DEBUG")] private void VerifyCommandEnum<T>(T enum) { if(!Enum.IsDefined(typeof(T), command)) throw new Exception(string.Format("The value passed '{0}' for {1} is not a defined value and will fail at runtime.", enum, typeof(T).ToString()); } This will be slower but will give a reasonably sane error in debug at least. I can send over a PR with a few of them covered but wanted to run it by here before I spent the time on it. Greg On Tue, Jan 13, 2015 at 4:16 AM, Greg Young <gregoryyou...@gmail.com> wrote: > btw if anyone runs into this (should be a top google result) and the > constants are not in commands here is how to do it: > > Not the prettiest but it should work > > #if __MonoCS__ || USE_UNIX_IO > [DllImport("libc")] > static extern int fcntl(int fd, uint command, int arg); > #endif > > if (OS.OsFlavor != OsFlavor.MacOS) return; > #if __MonoCS__ || USE_UNIX_IO > long r = 0; > do { > r = fcntl (handle.DangerousGetHandle().ToInt32(), MAC_F_NOCACHE, 1); > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); > if (r == -1) > UnixMarshal.ThrowExceptionForLastError (); > #endif > > On Tue, Jan 13, 2015 at 3:49 AM, Greg Young <gregoryyou...@gmail.com> wrote: >> If we can get a list of all the params that need to be supported and >> the varying mappings I have no problem working on it. >> >> I will look into its build etc as I have never dealt with it internally. >> >> Greg >> >> On Tue, Jan 13, 2015 at 3:48 AM, Rodrigo Kumpera <kump...@gmail.com> wrote: >>> I agree we would be better with a better error message. >>> >>> Said that, right now Mono.Posix lacks a more dedicated maintainer and it >>> would be lovely if you >>> could bring some love to it. :) >>> >>> On Mon, Jan 12, 2015 at 8:39 PM, Greg Young <gregoryyou...@gmail.com> wrote: >>>> >>>> There are a ton to surface ... I just ran into this one :) >>>> >>>> In general I agree with you surfacing is better I was thinking just >>>> letting me call it if it doesn't understand it (or having a better >>>> message) would be useful. I spun for hours thinking what was wrong >>>> with my parameters to the call thinking it for some undocumented >>>> reason was returning EINVAL :) >>>> >>>> On Tue, Jan 13, 2015 at 3:30 AM, Rodrigo Kumpera <kump...@gmail.com> >>>> wrote: >>>> > That would change the behavior of the function and translate into a more >>>> > fragile API. >>>> > >>>> > The way to go is to surface this option. >>>> > >>>> > On Mon, Jan 12, 2015 at 8:23 PM, Greg Young <gregoryyou...@gmail.com> >>>> > wrote: >>>> >> >>>> >> I figured out why after a while of looking. The C code translates the >>>> >> argument >>>> >> >>>> >> int Mono_Posix_FromFcntlCommand (int x, int *r) >>>> >> >>>> >> When its something that is not a known command it returns EINVAL. >>>> >> Might a better option be to try to let it pass through otherwise how >>>> >> could I call for instance a value on a ac? >>>> >> >>>> >> Cheers, >>>> >> >>>> >> Greg >>>> >> >>>> >> On Tue, Jan 13, 2015 at 2:28 AM, Greg Young <gregoryyou...@gmail.com> >>>> >> wrote: >>>> >> > I have been trying to set F_NOCACHE via fcntl on a mac to no avail. >>>> >> > >>>> >> > r = Syscall.fcntl >>>> >> > (handle.DangerousGetHandle().ToInt32(), (FcntlCommand) MAC_F_NOCACHE, >>>> >> > 1); >>>> >> > } while (UnixMarshal.ShouldRetrySyscall ((int) r)); >>>> >> > if (r == -1) >>>> >> > UnixMarshal.ThrowExceptionForLastError (); >>>> >> > >>>> >> > (EINVAL) >>>> >> > >>>> >> > I have tried >>>> >> > 48 >>>> >> > 0x400 >>>> >> > and 0x40000 >>>> >> > for F_NOCACHE though from >>>> >> > >>>> >> > >>>> >> > https://github.com/realthunder/mac-headers/blob/master/usr/include/sys/fcntl.h#L256 >>>> >> > >>>> >> > Given FcntlCommandFlags does not expose F_NOCACHE but it still should >>>> >> > be fine to jam the value into the enum >>>> >> > >>>> >> > Has anyone set this before? Chances of finding this on google are >>>> >> > slightly better than 0 :) >>>> >> > >>>> >> > Cheers, >>>> >> > >>>> >> > Greg >>>> >> > -- >>>> >> > Studying for the Turing test >>>> >> >>>> >> >>>> >> >>>> >> -- >>>> >> Studying for the Turing test >>>> >> _______________________________________________ >>>> >> Mono-devel-list mailing list >>>> >> Mono-devel-list@lists.ximian.com >>>> >> http://lists.ximian.com/mailman/listinfo/mono-devel-list >>>> > >>>> > >>>> >>>> >>>> >>>> -- >>>> Studying for the Turing test >>> >>> >> >> >> >> -- >> Studying for the Turing test > > > > -- > Studying for the Turing test -- Studying for the Turing test _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list