

#ifndef _UTILITY_H_
#define _UTILITY_H_

int get_string_by_name(char *p, const char *name, char *string, int max_len,
                       char **next);
int get_string_by_token(char *p, int num, char *string, int max_len,
                        char **next);
int get_quote_string_by_name(char *p, const char *name, char *string,
                             int max_len, char **next);
int get_int_val_by_name(char *p, const char *name, int *val, char **next);

struct channel_list_t *_create_channel_list(int num);
void _release_channel_list(struct channel_list_t *cl);
struct channel_list_t *_joint_channel_list(struct channel_list_t *cl1,
                                           struct channel_list_t *cl2);

#endif
