On Tue, 21 May 2002, Jason Gunthorpe wrote:

>
> On Tue, 21 May 2002, Tomas Pospisek wrote:
>
> > 1) I'm using:
> >
> >     return _error->Errno("ssl","Could not create a ssl structure");
> >
> >    which is wrong [1], but IMO useful. Should I leave it that way or
> >    should I replace it by:
>
> Well, I don't think there is a function called 'ssl', but if there was
> then it would right only if errno contained valid stuff.. Otherwise
> you'll have to make a sslerror(....); type function to get the
> string error code via the means in the ssl library.

Ummm, the problem I was refering to is that the comment in error.cc is
talking about stdlib. But I think the real problem is, that I don't
understand the GlobalError API. More a bit further down.

You say I should make some sslerror function - but the problem is that
everyone expects stuff in _errno, so AFAIK I _have_ to put my error
messages in there as well (?).

You are declaring:

        // Call to generate an error from a library call.
        bool Errno(const char *Function,const char *Description,...) 
APT_MFORMAT2;
        bool WarningE(const char *Function,const char *Description,...) 
APT_MFORMAT2;

        /* A warning should be considered less severe than an error, and may be
           ignored by the client. */
        bool Error(const char *Description,...) APT_MFORMAT1;
        bool Warning(const char *Description,...) APT_MFORMAT1;

Since the ssl functions are not using errno, I don't think they're
compatible wrt ERR* numbers. So I'd rather not use it. That's what the
second Errno method is for - is that correct?

Now the linker has no criterium to distinguish between the first and the
second definition if you pass more than one char* to Errno. Additionaly,
if I use:

        return _error->Errno((const char *)"Ssl connection failed");

I get:
        connect_ssl.cc:134: no matching function for call to 
`GlobalError::Errno (const char[22])'
        ../build/include/apt-pkg/error.h:76: candidates are:
        bool GlobalError::Errno(const char *, const char *, ...)

Or wasn't that the intention of that interface? As I said, I'm probably
missing sth.

*t

-----------------------------------------------------------------------
     Tomas Pospisek
     sourcepole    -   Linux & Open Source Solutions
     http://sourcepole.com
     Elestastrasse 18,  7310 Bad Ragaz,  Switzerland
     Tel:+41 (81) 330 77 13,  Fax:+41 (81) 330 77 12
------------------------------------------------------------------------



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to