Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  charac-
       ters; it	is executed 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 in-
       teger.

       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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=arg&sektion=3&manpath=FreeBSD+Ports+15.0.quarterly>

home | help