Annotation of embedaddon/ntp/libntp/ntp_libopts.c, revision 1.1.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>