/* Display an ARCnet socket address. */ static char *pr_sarcnet(struct sockaddr *sap) { static char buf[64]; if (sap->sa_family == 0xFFFF || sap->sa_family == 0) return safe_strncpy(buf, _("[NONE SET]"), sizeof(buf)); return (pr_arcnet(sap->sa_data)); }
/* Display an ARCnet socket address. */ static char * pr_sarcnet(struct sockaddr *sap) { static char buf[64]; if (sap->sa_family == 0xFFFF || sap->sa_family == 0) return(NLS_CATBUFF (catfd, arcnetSet, arcnet_none, "[NONE SET]", buf, 64)); return(pr_arcnet(sap->sa_data)); }
/* Input an ARCnet address and convert to binary. */ static int in_arcnet(char *bufp, struct sockaddr *sap) { unsigned char *ptr; char c, *orig; int i, val; sap->sa_family = arcnet_hwtype.type; ptr = sap->sa_data; i = 0; orig = bufp; while ((*bufp != '\0') && (i < 1)) { val = 0; c = *bufp++; if (isdigit(c)) val = c - '0'; else if (c >= 'a' && c <= 'f') val = c - 'a' + 10; else if (c >= 'A' && c <= 'F') val = c - 'A' + 10; else { #ifdef DEBUG fprintf(stderr, _("in_arcnet(%s): invalid arcnet address!\n"), orig); #endif errno = EINVAL; return (-1); } val <<= 4; c = *bufp++; if (isdigit(c)) val |= c - '0'; else if (c >= 'a' && c <= 'f') val |= c - 'a' + 10; else if (c >= 'A' && c <= 'F') val |= c - 'A' + 10; else { #ifdef DEBUG fprintf(stderr, _("in_arcnet(%s): invalid arcnet address!\n"), orig); #endif errno = EINVAL; return (-1); } *ptr++ = (unsigned char) (val & 0377); i++; /* We might get a semicolon here - not required. */ if (*bufp == ':') { if (i == ETH_ALEN) { #ifdef DEBUG fprintf(stderr, _("in_arcnet(%s): trailing : ignored!\n"), orig) #endif ; /* nothing */ } bufp++; } } /* That's it. Any trailing junk? */ if ((i == ETH_ALEN) && (*bufp != '\0')) { #ifdef DEBUG fprintf(stderr, _("in_arcnet(%s): trailing junk!\n"), orig); errno = EINVAL; return (-1); #endif } #ifdef DEBUG fprintf(stderr, "in_arcnet(%s): %s\n", orig, pr_arcnet(sap->sa_data)); #endif return (0); }