diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | nis/nis_call.c | 23 |
2 files changed, 11 insertions, 16 deletions
@@ -1,3 +1,7 @@ +2005-12-08 Ulrich Drepper <drepper@redhat.com> + + * nis/nis_call.c (inetstr2int): Optimize. + 2005-12-08 Jakub Jelinek <jakub@redhat.com> * nis/nis_call.c (__nisbind_create): Remove __nisbind_destroy, diff --git a/nis/nis_call.c b/nis/nis_call.c index 07f95f0..5b432b7 100644 --- a/nis/nis_call.c +++ b/nis/nis_call.c @@ -40,25 +40,16 @@ extern u_short __pmap_getnisport (struct sockaddr_in *address, u_long program, unsigned long inetstr2int (const char *str) { - char buffer[strlen (str) + 3]; - size_t buflen; - size_t i, j; - - buflen = stpcpy (buffer, str) - buffer; - - j = 0; - for (i = 0; i < buflen; ++i) - if (buffer[i] == '.') + size_t j = 0; + for (size_t i = 0; str[i] != '\0'; ++i) + if (str[i] == '.' && ++j == 4) { - ++j; - if (j == 4) - { - buffer[i] = '\0'; - break; - } + char buffer[i + 1]; + buffer[i] = '\0'; + return inet_addr (memcpy (buffer, str, i)); } - return inet_addr (buffer); + return inet_addr (str); } void |