[Click] %{element} syntax
Ian Rose
ianrose at eecs.harvard.edu
Wed Mar 10 21:03:22 EST 2010
Hmm really? That's a bit worrisome. Is it vsnprintf that you think may
crash or code that's actually in some elements themselves?
I note that in line 112 of glue.cc, you fall back on just a simple
vsnprintf if ErrorHandler::default_handler() returns NULL:
> 112 if (ErrorHandler *errh = ErrorHandler::default_handler()) {
> 113 errh->xmessage(ErrorHandler::e_info, fmt, val);
> 114 } else {
> [...]
So is this behavior also dangerous? Now admittedly, I'm not sure why
default_handler would ever be NULL, so maybe this is just a "this should
never happen but if it does let's do our best to print something even if
its unsafe" type thing?
All I am actually trying to do is make click_chatter go to stdout while
leaving all other errors going to stderr. I guess I could create a new
FileErrorHandler using stdout instead of stderr and then change line 112
above to be something like:
if (ErrorHandler *errh = <my-stdout-handler>) {
thanks,
Ian
Eddie Kohler wrote:
> Ah, OK.
>
> Whatever you're doing, I would definitely do it by subclassing
> ErrorHandler. Elements definitely expect the %{..} syntax to work and
> you will get crashes if it is ignored.
>
> E
>
>
> On 3/10/10 5:47 PM, Ian Rose wrote:
>> AH HA!
>>
>> My mistake - I totally forgot that (normally) click_chatter calls
>> through an ErrorHandler rather than directly to vsnprintf or the like. I
>> have changed my glue.cc to NOT use ErrorHandler::default_handler(),
>> which is why this special syntax is not working for me.
>>
>> Sorry about the false alarm there!
>>
>> - Ian
>>
>>
>> Eddie Kohler wrote:
>>> The code that handles this case starts at error.cc:690, if you're
>>> interested in single stepping.
>>>
>>>
>>> On 3/10/10 4:54 PM, Ian Rose wrote:
>>>> Hi all -
>>>>
>>>> In various places (such as simplequeue.cc), there are lines like this:
>>>>
>>>>> click_chatter("%{element}: overflow", this);
>>>>
>>>> I'm guessing that this is supposed to print some kind of
>>>> description/representation of the element, followed by ": overflow",
>>>> but
>>>> on my machine (userspace click, FreeBSD 7.2-STABLE) it just prints
>>>> "{element}: overflow".
>>>>
>>>> Does this "work" (as I am assuming its supposed to) for other people or
>>>> does it print oddly for everyone?
>>>>
>>>> - Ian
>>>> _______________________________________________
>>>> click mailing list
>>>> click at amsterdam.lcs.mit.edu
>>>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
More information about the click
mailing list