Question à propos d'un return
Hello tout le monde,
J'ai un doute quant à la signification de cette ligne :
return err < 0 ? errno : 0
Qui se trouve à la fin d'une fonction simple issue d'un package (bridge-utils) :
Code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| int br_add_interface(const char *bridge, const char *dev)
{
struct ifreq ifr;
int err;
int ifindex = if_nametoindex(dev);
if (ifindex == 0)
return ENODEV;
strncpy(ifr.ifr_name, bridge, IFNAMSIZ);
#ifdef SIOCBRADDIF
ifr.ifr_ifindex = ifindex;
err = ioctl(br_socket_fd, SIOCBRADDIF, &ifr);
if (err < 0)
#endif
{
unsigned long args[4] = { BRCTL_ADD_IF, ifindex, 0, 0 };
ifr.ifr_data = (char *) args;
err = ioctl(br_socket_fd, SIOCDEVPRIVATE, &ifr);
}
return err < 0 ? errno : 0;
} |
La fonction retourne-t-elle une valeur négative dans le cadre d'une erreur, et sinon, elle renvoie 0, est-ce bien cela ?