Home Man
Search
Today's Posts
Register

Linux & Unix Commands - Search Man Pages

Plan 9 - man page for arg (plan9 section 2)

ARG(2)				       System Calls Manual				   ARG(2)

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

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

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

       extern char *argv0;

       /* Alef only */

       Arg  *arginit(int argc, byte **argv);

       Rune argopt(Arg *arg);

       byte *argf(Arg *arg);

DESCRIPTION
       These  macros  assume  the  names  argc	and argv are in scope; see exec(2).  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 --, before an argument -, or before an argument that doesn't begin  with
       -.

       ARGC() returns the current option character.

       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.

       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.

   Alef
       The  Alef argument processing routines are unrelated.  Instead, an aggr called Arg is ini-
       tialized by a call to arginit.  Successive calls to argopt return successive option  char-
       acters,	or  zero at the end of the options.  After a call to argopt, argf will return any
       argument string associated with the option.

EXAMPLES
       This C program can take option b and option f, which requires an argument.

	      #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(0);
	      }

       Here is the output for the run prog -bffile1 -r -f file2 arg1 arg2

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

       This Alef program accepts options b and, with an attached file name, f.

	      #include <alef.h>
	      void
	      main(int argc, byte **argv)
	      {
		      int a, ac, bflag;
		      byte *file;
		      Arg *arg;

		      arg = arginit(argc, argv);
		      while(ac = argopt(arg)) switch(ac){
		      case 'b':
			      bflag = 1;
			      break;
		      case 'f':
			      file = argf(arg);
			      break;
		      }
		      for(a=0; a<arg->ac; a++)
			      print("argument %s\n", arg->av[a]);
	      }

SOURCE
       /sys/include/libc.h

											   ARG(2)


All times are GMT -4. The time now is 02:10 PM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
UNIX.COM Login
Username:
Password:  
Show Password