Annotation of embedaddon/ntp/libntp/ntp_libopts.c, revision 1.1

1.1     ! misho       1: /*
        !             2:  * ntp_libopts.c
        !             3:  *
        !             4:  * Common code interfacing with Autogen's libopts command-line option
        !             5:  * processing.
        !             6:  */
        !             7: #ifdef HAVE_CONFIG_H
        !             8: # include <config.h>
        !             9: #endif
        !            10: 
        !            11: #include <stdio.h>
        !            12: #include <stddef.h>
        !            13: #include "ntp_libopts.h"
        !            14: #include "ntp_stdlib.h"
        !            15: 
        !            16: extern const char *Version;    /* version.c for each program */
        !            17: 
        !            18: 
        !            19: /*
        !            20:  * ntpOptionProcess() is a clone of libopts' optionProcess which
        !            21:  * overrides the --version output, appending detail from version.c
        !            22:  * which was not available at Autogen time.
        !            23:  */
        !            24: int
        !            25: ntpOptionProcess(
        !            26:        tOptions *      pOpts,
        !            27:        int             argc,
        !            28:        char **         argv
        !            29:        )
        !            30: {
        !            31:        char *          pchOpts;
        !            32:        char **         ppzFullVersion;
        !            33:        char *          pzNewFV;
        !            34:        char *          pzAutogenFV;
        !            35:        size_t          octets;
        !            36:        int             rc;
        !            37: 
        !            38:        pchOpts = (void *)pOpts;
        !            39:        ppzFullVersion = (char **)(pchOpts + offsetof(tOptions,
        !            40:                                                      pzFullVersion));
        !            41:        pzAutogenFV = *ppzFullVersion;
        !            42:        octets = strlen(pzAutogenFV) +
        !            43:                 1 +    /* '\n' */
        !            44:                 strlen(Version) +
        !            45:                 1;     /* '\0' */
        !            46:        pzNewFV = emalloc(octets);
        !            47:        snprintf(pzNewFV, octets, "%s\n%s", pzAutogenFV, Version);
        !            48:        *ppzFullVersion = pzNewFV;
        !            49:        rc = optionProcess(pOpts, argc, argv);
        !            50:        *ppzFullVersion = pzAutogenFV;
        !            51:        free(pzNewFV);
        !            52: 
        !            53:        return rc;
        !            54: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>