GETOPT.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:3k
源码类别:

操作系统开发

开发平台:

C/C++

  1. ." Copyright (c) 1985 Regents of the University of California.
  2. ." All rights reserved.  The Berkeley software License Agreement
  3. ." specifies the terms and conditions for redistribution.
  4. ."
  5. ." @(#)getopt.3 6.4 (Berkeley) 5/27/86
  6. ."
  7. .TH GETOPT 3 "May 27, 1986"
  8. .UC 6
  9. .SH NAME
  10. getopt - get option letter from argv
  11. .SH SYNOPSIS
  12. .ft B
  13. int getopt(argc, argv, optstring)
  14. .br
  15. int argc;
  16. .br
  17. char **argv;
  18. .br
  19. char *optstring;
  20. .sp
  21. extern char *optarg;
  22. .br
  23. extern int optind;
  24. .ft
  25. .SH DESCRIPTION
  26. .I Getopt
  27. returns the next option letter in
  28. .I argv
  29. that matches a letter in
  30. .IR optstring .
  31. .I Optstring
  32. is a string of recognized option letters;
  33. if a letter is followed by a colon, the option is expected to have
  34. an argument that may or may not be separated from it by white space.
  35. .I Optarg
  36. is set to point to the start of the option argument on return from
  37. .IR getopt .
  38. .PP
  39. .I Getopt
  40. places in
  41. .I optind
  42. the
  43. .I argv
  44. index of the next argument to be processed.
  45. Because
  46. .I optind
  47. is external, it is normally initialized to zero automatically
  48. before the first call to 
  49. .IR getopt .
  50. .PP
  51. When all options have been processed (i.e., up to the first
  52. non-option argument),
  53. .I getopt
  54. returns
  55. .BR EOF .
  56. The special option
  57. .B --
  58. may be used to delimit the end of the options;
  59. .B EOF
  60. will be returned, and
  61. .B --
  62. will be skipped.
  63. .SH DIAGNOSTICS
  64. .I Getopt
  65. prints an error message on
  66. .I stderr
  67. and returns a question mark
  68. .RB ( ? )
  69. when it encounters an option letter not included in
  70. .IR optstring .
  71. .SH EXAMPLE
  72. The following code fragment shows how one might process the arguments
  73. for a command that can take the mutually exclusive options
  74. .B a
  75. and
  76. .BR b ,
  77. and the options
  78. .B f
  79. and
  80. .BR o ,
  81. both of which require arguments:
  82. .PP
  83. .RS
  84. .nf
  85. main(argc, argv)
  86. int argc;
  87. char **argv;
  88. {
  89. int c;
  90. extern int optind;
  91. extern char *optarg;
  92. &.
  93. &.
  94. &.
  95. while ((c = getopt(argc, argv, "abf:o:")) != EOF)
  96. switch (c) {
  97. case `a':
  98. if (bflg)
  99. errflg++;
  100. else
  101. aflg++;
  102. break;
  103. case `b':
  104. if (aflg)
  105. errflg++;
  106. else
  107. bproc();
  108. break;
  109. case `f':
  110. ifile = optarg;
  111. break;
  112. case `o':
  113. ofile = optarg;
  114. break;
  115. case `?':
  116. default:
  117. errflg++;
  118. break;
  119. }
  120. if (errflg) {
  121. fprintf(stderr, "Usage: ...");
  122. exit(2);
  123. }
  124. for (; optind < argc; optind++) {
  125. &.
  126. &.
  127. &.
  128. }
  129. &.
  130. &.
  131. &.
  132. }
  133. .RE
  134. .SH HISTORY
  135. Written by Henry Spencer, working from a Bell Labs manual page.
  136. Modified by Keith Bostic to behave more like the System V version.
  137. .SH BUGS
  138. It is not obvious how
  139. `-'
  140. standing alone should be treated;  this version treats it as
  141. a non-option argument, which is not always right.
  142. .PP
  143. Option arguments are allowed to begin with `-';
  144. this is reasonable but reduces the amount of error checking possible.
  145. .PP
  146. .I Getopt
  147. is quite flexible but the obvious price must be paid:  there is much
  148. it could do that it doesn't, like
  149. checking mutually exclusive options, checking type of
  150. option arguments, etc.