⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config_file.c

📁 samba最新软件
💻 C
📖 第 1 页 / 共 2 页
字号:
	  const krb5_config_binding **pointer,	  int type,	  const char *name,	  va_list args){    const char *p = va_arg(args, const char *);    while(b != NULL) {	if(strcmp(b->name, name) == 0) {	    if(b->type == type && p == NULL) {		*pointer = b;		return b->u.generic;	    } else if(b->type == krb5_config_list && p != NULL) {		return vget_next(context, b->u.list, pointer, type, p, args);	    }	}	b = b->next;    }    return NULL;}const void *krb5_config_vget_next (krb5_context context,		       const krb5_config_section *c,		       const krb5_config_binding **pointer,		       int type,		       va_list args){    const krb5_config_binding *b;    const char *p;    if(c == NULL)	c = context->cf;    if (c == NULL)	return NULL;    if (*pointer == NULL) {	/* first time here, walk down the tree looking for the right           section */	p = va_arg(args, const char *);	if (p == NULL)	    return NULL;	return vget_next(context, c, pointer, type, p, args);    }    /* we were called again, so just look for more entries with the       same name and type */    for (b = (*pointer)->next; b != NULL; b = b->next) {	if(strcmp(b->name, (*pointer)->name) == 0 && b->type == type) {	    *pointer = b;	    return b->u.generic;	}    }    return NULL;}const void *krb5_config_get (krb5_context context,		 const krb5_config_section *c,		 int type,		 ...){    const void *ret;    va_list args;    va_start(args, type);    ret = krb5_config_vget (context, c, type, args);    va_end(args);    return ret;}const void *krb5_config_vget (krb5_context context,		  const krb5_config_section *c,		  int type,		  va_list args){    const krb5_config_binding *foo = NULL;    return krb5_config_vget_next (context, c, &foo, type, args);}const krb5_config_binding *krb5_config_get_list (krb5_context context,		      const krb5_config_section *c,		      ...){    const krb5_config_binding *ret;    va_list args;    va_start(args, c);    ret = krb5_config_vget_list (context, c, args);    va_end(args);    return ret;}const krb5_config_binding *krb5_config_vget_list (krb5_context context,		       const krb5_config_section *c,		       va_list args){    return krb5_config_vget (context, c, krb5_config_list, args);}const char* KRB5_LIB_FUNCTIONkrb5_config_get_string (krb5_context context,			const krb5_config_section *c,			...){    const char *ret;    va_list args;    va_start(args, c);    ret = krb5_config_vget_string (context, c, args);    va_end(args);    return ret;}const char* KRB5_LIB_FUNCTIONkrb5_config_vget_string (krb5_context context,			 const krb5_config_section *c,			 va_list args){    return krb5_config_vget (context, c, krb5_config_string, args);}const char* KRB5_LIB_FUNCTIONkrb5_config_vget_string_default (krb5_context context,				 const krb5_config_section *c,				 const char *def_value,				 va_list args){    const char *ret;    ret = krb5_config_vget_string (context, c, args);    if (ret == NULL)	ret = def_value;    return ret;}const char* KRB5_LIB_FUNCTIONkrb5_config_get_string_default (krb5_context context,				const krb5_config_section *c,				const char *def_value,				...){    const char *ret;    va_list args;    va_start(args, def_value);    ret = krb5_config_vget_string_default (context, c, def_value, args);    va_end(args);    return ret;}char ** KRB5_LIB_FUNCTIONkrb5_config_vget_strings(krb5_context context,			 const krb5_config_section *c,			 va_list args){    char **strings = NULL;    int nstr = 0;    const krb5_config_binding *b = NULL;    const char *p;    while((p = krb5_config_vget_next(context, c, &b, 				     krb5_config_string, args))) {	char *tmp = strdup(p);	char *pos = NULL;	char *s;	if(tmp == NULL)	    goto cleanup;	s = strtok_r(tmp, " \t", &pos);	while(s){	    char **tmp2 = realloc(strings, (nstr + 1) * sizeof(*strings));	    if(tmp2 == NULL)		goto cleanup;	    strings = tmp2;	    strings[nstr] = strdup(s);	    nstr++;	    if(strings[nstr-1] == NULL)		goto cleanup;	    s = strtok_r(NULL, " \t", &pos);	}	free(tmp);    }    if(nstr){	char **tmp = realloc(strings, (nstr + 1) * sizeof(*strings));	if(tmp == NULL)	    goto cleanup;	strings = tmp;	strings[nstr] = NULL;    }    return strings;cleanup:    while(nstr--)	free(strings[nstr]);    free(strings);    return NULL;}char**krb5_config_get_strings(krb5_context context,			const krb5_config_section *c,			...){    va_list ap;    char **ret;    va_start(ap, c);    ret = krb5_config_vget_strings(context, c, ap);    va_end(ap);    return ret;}void KRB5_LIB_FUNCTIONkrb5_config_free_strings(char **strings){    char **s = strings;    while(s && *s){	free(*s);	s++;    }    free(strings);}krb5_boolean KRB5_LIB_FUNCTIONkrb5_config_vget_bool_default (krb5_context context,			       const krb5_config_section *c,			       krb5_boolean def_value,			       va_list args){    const char *str;    str = krb5_config_vget_string (context, c, args);    if(str == NULL)	return def_value;    if(strcasecmp(str, "yes") == 0 ||       strcasecmp(str, "true") == 0 ||       atoi(str)) return TRUE;    return FALSE;}krb5_boolean KRB5_LIB_FUNCTIONkrb5_config_vget_bool  (krb5_context context,			const krb5_config_section *c,			va_list args){    return krb5_config_vget_bool_default (context, c, FALSE, args);}krb5_boolean KRB5_LIB_FUNCTIONkrb5_config_get_bool_default (krb5_context context,			      const krb5_config_section *c,			      krb5_boolean def_value,			      ...){    va_list ap;    krb5_boolean ret;    va_start(ap, def_value);    ret = krb5_config_vget_bool_default(context, c, def_value, ap);    va_end(ap);    return ret;}krb5_boolean KRB5_LIB_FUNCTIONkrb5_config_get_bool (krb5_context context,		      const krb5_config_section *c,		      ...){    va_list ap;    krb5_boolean ret;    va_start(ap, c);    ret = krb5_config_vget_bool (context, c, ap);    va_end(ap);    return ret;}int KRB5_LIB_FUNCTIONkrb5_config_vget_time_default (krb5_context context,			       const krb5_config_section *c,			       int def_value,			       va_list args){    const char *str;    krb5_deltat t;    str = krb5_config_vget_string (context, c, args);    if(str == NULL)	return def_value;    if (krb5_string_to_deltat(str, &t))	return def_value;    return t;}int KRB5_LIB_FUNCTIONkrb5_config_vget_time  (krb5_context context,			const krb5_config_section *c,			va_list args){    return krb5_config_vget_time_default (context, c, -1, args);}int KRB5_LIB_FUNCTIONkrb5_config_get_time_default (krb5_context context,			      const krb5_config_section *c,			      int def_value,			      ...){    va_list ap;    int ret;    va_start(ap, def_value);    ret = krb5_config_vget_time_default(context, c, def_value, ap);    va_end(ap);    return ret;}int KRB5_LIB_FUNCTIONkrb5_config_get_time (krb5_context context,		      const krb5_config_section *c,		      ...){    va_list ap;    int ret;    va_start(ap, c);    ret = krb5_config_vget_time (context, c, ap);    va_end(ap);    return ret;}int KRB5_LIB_FUNCTIONkrb5_config_vget_int_default (krb5_context context,			      const krb5_config_section *c,			      int def_value,			      va_list args){    const char *str;    str = krb5_config_vget_string (context, c, args);    if(str == NULL)	return def_value;    else { 	char *endptr; 	long l; 	l = strtol(str, &endptr, 0); 	if (endptr == str) 	    return def_value; 	else 	    return l;    }}int KRB5_LIB_FUNCTIONkrb5_config_vget_int  (krb5_context context,		       const krb5_config_section *c,		       va_list args){    return krb5_config_vget_int_default (context, c, -1, args);}int KRB5_LIB_FUNCTIONkrb5_config_get_int_default (krb5_context context,			     const krb5_config_section *c,			     int def_value,			     ...){    va_list ap;    int ret;    va_start(ap, def_value);    ret = krb5_config_vget_int_default(context, c, def_value, ap);    va_end(ap);    return ret;}int KRB5_LIB_FUNCTIONkrb5_config_get_int (krb5_context context,		     const krb5_config_section *c,		     ...){    va_list ap;    int ret;    va_start(ap, c);    ret = krb5_config_vget_int (context, c, ap);    va_end(ap);    return ret;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -