Yep. Sorry, I should've been more specific. As long as you only are
passing integers to ovs_retval_to_string, it will behave as you expect.
If that is fine, stop reading here.
-Reid
Some examples of possibly unexpected behavior could be:
retval | ovs_retval_to_string(retval)
----------+------------------------------
None | returns ""
{} | returns ""
"foo" | TypeError("an integer is required") via 'os.strerror(retval)'
set([1]) | TypeError("can only compare to a set") via 'retval > 0'
<?> | TypeError: %d format: a number is required, not <?> via '%d'
Where <?> is some hypothetical value that is boolean True and
compares as <= 0, couldn't find any though, everything besides None
seemed to sort above integer types.
On Mon, Mar 5, 2012 at 1:59 PM, Ben Pfaff <[email protected]> wrote:
> I think Reid is just saying that "if not retval:" accepts more than
> just 0. It also treats None, "", (), and [], for example, as false.
>
> On Mon, Mar 05, 2012 at 01:57:05PM -0800, Ethan Jackson wrote:
> > I'm sorry, I don't fully understand what you're suggesting. Could you
> > please give an example of a piece of code that should change?
> >
> > Based on my reading of the code, when there's an error we return a
> > non-zero errno. The errno is always an integer type. Sometimes in
> > addition to the errno we return some additional information, but that
> > isn't used for checking error conditions.
> >
> > Ethan
> >
> > On Sun, Mar 4, 2012 at 21:23, Reid Price <[email protected]> wrote:
> > > One other note, are you deliberately allowing None (along with other
> python
> > > expressions that are False as booleans) to equate to a 0 return code?
> You
> > > may just want to check for integer type at the beginning of the
> function,
> > > since
> > > things compare across type without error (for error-free sorting
> purposes,
> > > ostensibly). E.g.:
> > >
> > > {1: 2} > 0 == True
> > > "string" > 0 == True
> > >
> > > Some things will throw TypeErrors for the >0, like sets and complex
> numbers.
> > >
> > > -Reid
> > >
> > > On Thu, Mar 1, 2012 at 5:40 PM, Ethan Jackson <[email protected]>
> wrote:
> > >>
> > >> > In the final case in ovs_retval_to_string(), I think I'd use %s
> > >> > instead of %d: maybe some non-integer value got passed in and my
> > >> > instinct is that it's probably better to convert it to a string than
> > >> > to throw an exception.
> > >>
> > >> Sounds good, I've folded the change in.
> > >>
> > >> Ethan
> > >> _______________________________________________
> > >> dev mailing list
> > >> [email protected]
> > >> http://openvswitch.org/mailman/listinfo/dev
> > >
> > >
>
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev