[asterisk-dev] common functions for int2string conversion

Luigi Rizzo rizzo at icir.org
Mon Jul 16 09:50:18 CDT 2007


On Mon, Jul 16, 2007 at 07:34:26AM -0700, Luigi Rizzo wrote:
> On Mon, Jul 16, 2007 at 04:13:55PM +0200, Klaus Darilion wrote:
> > Hi!
> > 
> > Are somewhere common functions for string/integer conversion defined?

re-reading the subject, it seems that you asked for int -> string
conversion, whereas in my message below i was referring to string -> integer
(and more). I am not sure which one of the two you were looking
for, my apologies if my answer is not for something you were looking for.

	cheers
	luigi


> i don't think there are. As a matter of fact i am working right now
> on a common function to convert argument into int/sockaddr/port
> numbers, with optional bounds checks and assignment of default
> values, so that the parsing of config file options will be
> simplified and made more consistent (and correct).
> The interface should be something like this:
> 
> enum ast_parse_flags {
>         PARSE_TYPE      =       0x000f,	/* mask for argument type */
> 	/* numeric types have optional bounds checks and default value */
>         PARSE_INT16     =       0x0001,
>         PARSE_INT32     =       0x0002,
>         PARSE_UINT16    =       0x0003,
>         PARSE_UINT32    =       0x0004,
>         PARSE_DOUBLE    =       0x0005,
> 	/* string have optional default value, malloc, regexp matching */
>         PARSE_STRING    =       0x0006,
> 	/* inaddr have optional default value and port
>         PARSE_INADDR    =       0x0007,
>         /* next 8 bits are used for restrictions */
>         PARSE_DEFAULT   =       0x0010, /* assign default on error */
>         /* applicable to numeric types */
>         PARSE_IN_RANGE =        0x0020, /* accept values inside a range */
>         PARSE_OUT_RANGE =       0x0040, /* accept values outside a range */
> 	/* applicable to strings */
> 	PARSE_STRING_MALLOC =	0x1000,	/* malloc a buffer for the result */
> 	PARSE_STRING_REGEXP =	0x2000,	/* use regexp to match */
>         /* options to handle port numbers */
>         PARSE_PORT_MASK =       0x0300, /* 0x000: accept if present */
>         PARSE_PORT_IGNORE =     0x0100, /* 0x100: ignore if present */
>         PARSE_PORT_REQUIRE =    0x0200, /* 0x200: mandatory */
>         PARSE_PORT_FORBID =     0x0300, /* 0x100: forbidden */
> };
> 
> int ast_parsearg(const char *arg, enum ast_parse_flags flags,
>         void *result, void *p_default, void *p_low, void *p_high)
> 
> cheers
> luigi
> 
> _______________________________________________
> --Bandwidth and Colocation Provided by http://www.api-digital.com--
> 
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev



More information about the asterisk-dev mailing list