inet_util.c   [plain text]


/*++
/* NAME
/*	inet_util 3
/* SUMMARY
/*	INET-domain utilities
/* SYNOPSIS
/*	#include <inet_util.h>
/*
/*	char	*inet_parse(addr, hostp, portp)
/*	const char *addr;
/*	char	**hostp;
/*	char	**portp;
/* DESCRIPTION
/*	This module implements various support routines for
/*	dealing with AF_INET connections, addresses etc.
/*
/*	inet_parse() takes an address of the form host:port and
/*	breaks it up into its constituent parts. The resulting
/*	host information is an empty string when the address
/*	contains no host part or no host: part. inet_parse()
/*	returns a pointer to memory that it has allocated for
/*	string storage. The caller should pass the host to the
/*	myfree() function when the storage is no longer needed.
/* DIAGNOSTICS
/*	Fatal errors: invalid address or host forms.
/* LICENSE
/* .ad
/* .fi
/*	The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/*	Wietse Venema
/*	IBM T.J. Watson Research
/*	P.O. Box 704
/*	Yorktown Heights, NY 10598, USA
/*--*/

/* System libraries. */

#include <sys_defs.h>

/* Utility library. */

#include "mymalloc.h"
#include "split_at.h"
#include "inet_util.h"

/* inet_parse - parse host:port address spec */

char   *inet_parse(const char *addr, char **hostp, char **portp)
{
    char   *buf;

    buf = mystrdup(addr);
    if ((*portp = split_at_right(buf, ':')) != 0) {
	*hostp = buf;
    } else {
	*portp = buf;
	*hostp = "";
    }
    return (buf);
}