Wes Hardaker <[email protected]> writes:
>You're probably right (I'm not a windows expert), but it sounds like we should
>be doing something like:
>
>int ns_errno() {
> #ifdef windows
> return dosomething();
> #else
> return errno;
> #endif
>}
Something like that. And if dosomething() is just WSAGetLastError() there
should be constants for the error codes as well. Because WSAGetLastError()
returns for example WSAEINTR and not EINTR and EINTR is still defined in
Windows (with EINTR equals to 4 in errno.h and WSAEINTR being 10004 in
winsock2.h)
So what I would do, additional to your suggested "ns_errno()", is something
like this in a header (assuming that the prefix NS makes some sense in the
project.)
#ifdef windows
#define NS_EINTR WSAEINTR
#define NS_EBADF WSAEBADF
#define NS_EACCES WSAEACCES
#define NS_EFAULT WSAEFAULT
#define NS_EINVAL WSAEINVAL
#define NS_EMFILE WSAEMFILE
...
#else
#define NS_EINTR EINTR
#define NS_EBADF EBADF
...
#endif
This would be the easy part. And then every occurrence of errno has to be
checked and if it is used to evaluate the errors of a socket call it must be
replaced with ns_errno and the associated constants have to be replaced with
their NS_* counterparts.
Alternatively dosomething() is not WSAGetLastError but looks something like
that:
int dosomething() {
switch(WSAGetLastError) {
case WSAEINTR:
return EINTR;
case WSAEBADF:
return EBADF;
...
}
}
Then the constants in the source code must not be replaced. But still errno has
to be replaced with ns_errno() where applicable.
I would prefer the first variant because there is probably not a suitable
constant in errno.h for every error code in winsock2.h.
These are just my suggestions of what could be done. Probably you have much
better ideas. Probably you don't care. I'm not annoyed if you store my ideas on
/dev/null, or on NUL, if it comes to Windows :-).
I'm still wondering that I should be the first to mention this problem, with
all those years of net-snmp. Anyway...
Thanks for your answer!
Walter
#####################################################################################
This message and any attachments are solely for the use of the intended
recipients. They may contain privileged and/or confidential information or
other information protected from disclosure. If you are not an intended
recipient, you are hereby notified that you received this email in error and
that any review, dissemination, distribution or copying of this email and any
attachment is strictly prohibited. If you have received this email in error,
please contact the sender and delete the message and any attachment from your
system.
Thank You.
ANDRITZ HYDRO GmbH
Rechtsform/ Legal form: Gesellschaft mit beschr?nkter Haftung / Corporation
Firmensitz/ Registered seat: Wien
Firmenbuchgericht/ Court of registry: Handelsgericht Wien
Firmenbuchnummer/ Company registration: FN 61833 g
DVR: 0605077
UID-Nr.: ATU14756806
#####################################################################################
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders