Skip to content

japanoise/arg.h

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

This library provides a simple way to manage the argc and argv of a C program.

Use `main(int argc, char *argv[])`.

Man page below:

ARG(3)                     Library Functions Manual                     ARG(3)

NAME
       ARGBEGIN,  ARGEND,  ARGC, ARGF, EARGF, arginit, argopt - process option
       letters from argv

SYNOPSIS
       #include <u.h>
       #include <libc.h>

       ARGBEGIN {
       char *ARGF();
       char *EARGF(code);
       Rune ARGC();
       } ARGEND

       extern char *argv0;

DESCRIPTION
       These macros assume the names argc and argv are in scope; see  exec(3).
       ARGBEGIN  and ARGEND surround code for processing program options.  The
       code should be the cases of a C switch on option characters; it is exe‐
       cuted  once  for  each option character.  Options end after an argument
       --, before an argument -, or before an argument that doesn't begin with
       -.

       The  function  macro  ARGC  returns the current option character, as an
       integer.

       The function macro ARGF returns the current option argument: a  pointer
       to  the rest of the option string if not empty, or the next argument in
       argv if any, or 0.  ARGF must be called just once for each option  that
       takes an argument.  The macro EARGF is like ARGF but instead of return‐
       ing zero runs code and, if that returns,  calls  abort(3).   A  typical
       value for code is usage(), as in EARGF(usage()).

       After  ARGBEGIN, argv0 is a copy of argv[0] (conventionally the name of
       the program).

       After ARGEND, argv points at a zero-terminated list  of  the  remaining
       argc arguments.

EXAMPLE
       This  C program can take option b and option f, which requires an argu‐
       ment.

              #include <u.h>
              #include <libc.h>
              void
              main(int argc, char *argv[])
              {
                      char *f;
                      print("%s", argv[0]);
                      ARGBEGIN {
                      case 'b':
                              print(" -b");
                              break;
                      case 'f':
                              print(" -f(%s)", (f=ARGF())? f: "no arg");
                              break;
                      default:
                              print(" badflag('%c')", ARGC());
                      } ARGEND
                      print(" %d args:", argc);
                      while(*argv)
                              print(" '%s'", *argv++);
                      print("\n");
                      exits(nil);
              }

       Here is the output from running the command prog -bffile1 -r  -f  file2
       arg1 arg2

              prog -b -f(file1) badflag('r') -f(file2) 2 args: 'arg1' 'arg2'

SOURCE
       /include/libc.h

                                                                        ARG(3)

About

20h's arg.h

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors