Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quellcode-Bibliothek postconf_node.c

  Sprache: C
 

/*++
/* NAME
/* postconf_node 3
/* SUMMARY
/* low-level parameter node support
/* SYNOPSIS
/* #include <postconf.h>
/*
/* PCF_PARAM_TABLE *PCF_PARAM_TABLE_CREATE(size)
/* ssize_t size;
/*
/* PCF_PARAM_INFO **PCF_PARAM_TABLE_LIST(table)
/* PCF_PARAM_TABLE *table;
/*
/* const char *PCF_PARAM_INFO_NAME(info)
/* PCF_PARAM_INFO *info;
/*
/* PCF_PARAM_NODE *PCF_PARAM_INFO_NODE(info)
/* PCF_PARAM_INFO *info;
/*
/* PCF_PARAM_NODE *PCF_PARAM_TABLE_FIND(table, name)
/* PCF_PARAM_TABLE *table;
/* const char *name;
/*
/* PCF_PARAM_INFO *PCF_PARAM_TABLE_LOCATE(table, name)
/* PCF_PARAM_TABLE *table;
/* const char *name;
/*
/* PCF_PARAM_INFO *PCF_PARAM_TABLE_ENTER(table, name, flags,
/* param_data, convert_fn)
/* PCF_PARAM_TABLE *table;
/* const char *name;
/* int flags;
/* void *param_data;
/* const char *(*convert_fn)(void *);
/*
/* PCF_PARAM_NODE *pcf_make_param_node(flags, param_data, convert_fn)
/* int flags;
/* void *param_data;
/* const char *(*convert_fn) (void *);
/*
/* const char *pcf_convert_param_node(mode, name, node)
/* int mode;
/* const char *name;
/* PCF_PARAM_NODE *node;
/*
/* VSTRING *pcf_param_string_buf;
/*
/* PCF_RAW_PARAMETER(node)
/* const PCF_PARAM_NODE *node;
/* DESCRIPTION
/* This module maintains data structures (PCF_PARAM_NODE) with
/* information about known-legitimate parameters.  These data
/* structures are stored in a hash table.
/*
/* The PCF_PARAM_MUMBLE() macros are wrappers around the
/* htable(3) module. Their sole purpose is to encapsulate all
/* the pointer casting from and to (PCF_PARAM_NODE *). Apart
/* from that, the macros have no features worth discussing.
/*
/* pcf_make_param_node() creates a node for the global parameter
/* table. This node provides a parameter default value, and a
/* function that converts the default value to string.
/*
/* pcf_convert_param_node() produces a string representation
/* for a global parameter default value.
/*
/* PCF_RAW_PARAMETER() returns non-zero if the specified
/* parameter node represents a "raw parameter". The value of
/* such parameters must not be scanned for macro names.  Some
/* "raw parameter" values contain "$" without macros, such as
/* the smtpd_expansion_filter "safe character" set; and some
/* contain $name from a private name space, such as forward_path.
/* Some "raw parameter" values in postscreen(8) are safe to
/* expand by one level.  Support for that may be added later.
/*
/* pcf_param_string_buf is a buffer that is initialized on the
/* fly and that parameter-to-string conversion functions may
/* use for temporary result storage.
/*
/* Arguments:
/* .IP size
/* The initial size of the hash table.
/* .IP table
/* A hash table for storage of "valid parameter" information.
/* .IP info
/* A data structure with a name component and a PCF_PARAM_NODE
/* component. Use PCF_PARAM_INFO_NAME() and PCF_PARAM_INFO_NODE()
/* to access these components.
/* .IP name
/* The name of a "valid parameter".
/* .IP flags
/* PCF_PARAM_FLAG_RAW for a "raw parameter", PCF_PARAM_FLAG_NONE
/* otherwise. See the PCF_RAW_PARAMETER() discussion above for
/* discussion of "raw parameter" values.
/* .IP param_data
/* Information about the parameter value.  Specify PCF_PARAM_NO_DATA
/* if this is not applicable.
/* .IP convert_fn
/* The function that will be invoked to produce a string
/* representation of the information in param_data. The function
/* receives the param_data value as argument.
/* .IP mode
/* For now, the PCF_SHOW_DEFS flag is required.
/* .IP name
/* The name of the parameter whose value is requested.  This
/* is used for diagnostics.
/* .IP node
/* The (flags, param_data, convert_fn) information that needs
/* to be converted to a string representation of the default
/* value.
/* DIAGNOSTICS
/* Problems are reported to the standard error stream.
/* 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 library. */

#include <sys_defs.h>

/* Utility library. */

#include <msg.h>
#include <mymalloc.h>
#include <vstring.h>

/* Application-specific. */

#include <postconf.h>

VSTRING *pcf_param_string_buf;

/* pcf_make_param_node - make node for global parameter table */

PCF_PARAM_NODE *pcf_make_param_node(int flags, void *param_data,
             const char *(*convert_fn) (void *))
{
    PCF_PARAM_NODE *node;

    node = (PCF_PARAM_NODE *) mymalloc(sizeof(*node));
    node->flags = flags;
    node->param_data = param_data;
    node->convert_fn = convert_fn;
    return (node);
}

/* pcf_convert_param_node - get default parameter value */

const char *pcf_convert_param_node(int mode, const char *name, PCF_PARAM_NODE *node)
{
    const char *myname = "pcf_convert_param_node";
    const char *value;

    /*
     * One-off initialization.
     */

    if (pcf_param_string_buf == 0)
 pcf_param_string_buf = vstring_alloc(100);

    /*
     * Sanity check. A null value indicates that a parameter does not have
     * the requested value. At this time, the only requested value can be the
     * default value, and a null pointer value makes no sense here.
     */

    if ((mode & PCF_SHOW_DEFS) == 0)
 msg_panic("%s: request for non-default value of parameter %s",
    myname, name);
    if ((value = node->convert_fn(node->param_data)) == 0)
 msg_panic("%s: parameter %s has null pointer default value",
    myname, name);

    /*
     * Return the parameter default value.
     */

    return (value);
}

Messung V0.5 in Prozent
C=74 H=94 G=84

¤ Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.0.19Bemerkung:  (vorverarbeitet am  2026-08-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=141584
#Domains=752002