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  ARGBEGIN
       and  ARGEND  surround  code  for	 processing program options.  The code
       should be the cases of a	C switch on option characters; it is  executed
       once  for each option character.	 Options end after an argument --, be-
       fore 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 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)

NAME | SYNOPSIS | DESCRIPTION | EXAMPLE | SOURCE

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

home | help