*outaddr = tempaddr;
return 0;
}
-
-#if 0
-/*
- * Append an address array, to another address array, with fresh allocation.
- * Note that this function may change the value of *outaddr even if it
- * returns failure, but it will not change the contents of the list.
- */
-krb5_error_code
-krb5_append_addresses(context, inaddr, outaddr)
- krb5_context context;
- krb5_address * const * inaddr;
- krb5_address ***outaddr;
-{
- krb5_error_code retval;
- krb5_address ** tempaddr;
- krb5_address ** tempaddr2;
- register unsigned int nelems = 0;
- register int norigelems = 0;
-
- if (!inaddr)
- return 0;
-
- tempaddr2 = *outaddr;
-
- while (inaddr[nelems]) nelems++;
- while (tempaddr2[norigelems]) norigelems++;
-
- tempaddr = (krb5_address **) realloc((char *)*outaddr,
- (nelems + norigelems + 1) * sizeof(*tempaddr));
- if (!tempaddr)
- return ENOMEM;
-
- /* The old storage has been freed. */
- *outaddr = tempaddr;
-
-
- for (nelems = 0; inaddr[nelems]; nelems++) {
- retval = krb5_copy_addr(context, inaddr[nelems],
- &tempaddr[norigelems + nelems]);
- if (retval)
- goto cleanup;
- }
-
- tempaddr[norigelems + nelems] = 0;
- return 0;
-
-cleanup:
- while (--nelems >= 0)
- krb5_free_address(context, tempaddr[norigelems + nelems]);
-
- /* Try to allocate a smaller amount of memory for *outaddr. */
- tempaddr = (krb5_address **) realloc((char *)tempaddr,
- (norigelems + 1) * sizeof(*tempaddr));
- if (tempaddr)
- *outaddr = tempaddr;
- return retval;
-}
-#endif