Annotation of researchv10dc/man/adm/man3/varargs.3, revision 1.1

1.1     ! root        1: .TH VARARGS 3
        !             2: .CT 2 data_man
        !             3: .SH NAME
        !             4: varargs \(mi variable argument list
        !             5: .SH SYNOPSIS
        !             6: .nf
        !             7: .B #include <varargs.h>
        !             8: .IB function (va_alist)
        !             9: .B va_dcl
        !            10: .PP
        !            11: .B va_list  pvar;
        !            12: .PP
        !            13: .B va_start(pvar);
        !            14: .PP
        !            15: .B va_arg(pvar, type);
        !            16: .PP
        !            17: .B va_end(pvar);
        !            18: .fi
        !            19: .SH DESCRIPTION
        !            20: This set of macros allows portable procedures that accept variable
        !            21: argument lists to be written.
        !            22: Routines which have variable argument lists (such as
        !            23: .IR printf (3))
        !            24: that do not use varargs are inherently nonportable, since different
        !            25: machines use different argument passing conventions.
        !            26: .PP
        !            27: The literal identifier
        !            28: .I va_alist
        !            29: is used in a function header to declare a variable argument list.
        !            30: It is declared by
        !            31: .I va_dcl.
        !            32: Note that there is no semicolon after
        !            33: .I va_dcl.
        !            34: .PP
        !            35: .B Va_list
        !            36: is the type of the variable
        !            37: .I pvar,
        !            38: which is used to traverse the list.
        !            39: One variable of this type must always be declared.
        !            40: .PP
        !            41: .I Va_start
        !            42: initializes
        !            43: .I pvar
        !            44: to the beginning of the list.
        !            45: .PP
        !            46: .I Va_arg
        !            47: returns the next argument in the list
        !            48: pointed to by
        !            49: .IR pvar .
        !            50: .I Type
        !            51: is the type the argument is expected to be.
        !            52: Different types can be mixed, but it is up
        !            53: to the routine to know what type is
        !            54: expected, since it cannot be determined at runtime.
        !            55: .PP
        !            56: .I Va_end
        !            57: is used to finish up.
        !            58: .PP
        !            59: Multiple traversals, each bracketed by
        !            60: .I va_start
        !            61: and
        !            62: .I va_end,
        !            63: are possible.
        !            64: .SH EXAMPLES
        !            65: How to define
        !            66: .I execl
        !            67: in terms of
        !            68: .IR execv ;
        !            69: see
        !            70: .IR exec (2):
        !            71: .IP
        !            72: .nf
        !            73: .ft L
        !            74: #include <varargs.h>
        !            75: execl(va_alist)
        !            76: va_dcl
        !            77: {
        !            78:        va_list ap;
        !            79:        char *file;
        !            80:        char *args[100];
        !            81:        int argno = 0;
        !            82:        va_start(ap);
        !            83:        file = va_arg(ap, char*);
        !            84:        while(args[argno++] = va_arg(ap, char*));
        !            85:        va_end(ap);
        !            86:        execv(file, args);
        !            87: }
        !            88: .fi
        !            89: .ft P

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.