1
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
2
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
3
3
<title>LibOFX: getopt.c Source File</title>
4
4
<link href="doxygen.css" rel="stylesheet" type="text/css">
5
5
<link href="tabs.css" rel="stylesheet" type="text/css">
7
<!-- Generated by Doxygen 1.4.6 -->
7
<!-- Generated by Doxygen 1.5.3 -->
10
10
<li><a href="main.html"><span>Main Page</span></a></li>
11
11
<li><a href="namespaces.html"><span>Namespaces</span></a></li>
12
12
<li><a href="annotated.html"><span>Data Structures</span></a></li>
13
<li id="current"><a href="files.html"><span>Files</span></a></li>
17
<li><a href="files.html"><span>File List</span></a></li>
18
<li><a href="globals.html"><span>Globals</span></a></li>
13
<li class="current"><a href="files.html"><span>Files</span></a></li>
20
16
<h1>getopt.c</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* Getopt for GNU.</span>
21
17
<a name="l00002"></a>00002 <span class="comment"> NOTE: getopt is now part of the C library, so if you don't know what</span>
22
18
<a name="l00003"></a>00003 <span class="comment"> "Keep this file name-space clean" means, talk to drepper@gnu.org</span>
668
664
<a name="l00649"></a>00649
669
665
<a name="l00650"></a>00650 <span class="comment">/* Test all long options for either exact match</span>
670
666
<a name="l00651"></a>00651 <span class="comment"> or abbreviated matches. */</span>
671
<a name="l00652"></a>00652 <span class="keywordflow">for</span> (p = longopts, option_index = 0; p-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>; p++, option_index++)
672
<a name="l00653"></a>00653 <span class="keywordflow">if</span> (!strncmp (p-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>, nextchar, nameend - nextchar))
667
<a name="l00652"></a>00652 <span class="keywordflow">for</span> (p = longopts, option_index = 0; p-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>; p++, option_index++)
668
<a name="l00653"></a>00653 <span class="keywordflow">if</span> (!strncmp (p-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>, nextchar, nameend - nextchar))
673
669
<a name="l00654"></a>00654 {
674
<a name="l00655"></a>00655 if ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) (nameend - nextchar)
675
<a name="l00656"></a>00656 == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) strlen (p-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>))
670
<a name="l00655"></a>00655 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) (nameend - nextchar)
671
<a name="l00656"></a>00656 == (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) strlen (p-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>))
676
672
<a name="l00657"></a>00657 {
677
673
<a name="l00658"></a>00658 <span class="comment">/* Exact match found. */</span>
678
674
<a name="l00659"></a>00659 pfound = p;
687
683
<a name="l00668"></a>00668 indfound = option_index;
688
684
<a name="l00669"></a>00669 }
689
685
<a name="l00670"></a>00670 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (long_only
690
<a name="l00671"></a>00671 || pfound-><a class="code" href="structoption.html#0f7e57456d9954fb17d182bcfd2ef54c">has_arg</a> != p-><a class="code" href="structoption.html#0f7e57456d9954fb17d182bcfd2ef54c">has_arg</a>
691
<a name="l00672"></a>00672 || pfound-><a class="code" href="structoption.html#8f77295b521f0c6c955608190229d4a3">flag</a> != p-><a class="code" href="structoption.html#8f77295b521f0c6c955608190229d4a3">flag</a>
692
<a name="l00673"></a>00673 || pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a> != p-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>)
686
<a name="l00671"></a>00671 || pfound-><a class="code" href="structoption.html#90d7ee9a51eea5c002682dbd0af149e4">has_arg</a> != p-><a class="code" href="structoption.html#90d7ee9a51eea5c002682dbd0af149e4">has_arg</a>
687
<a name="l00672"></a>00672 || pfound-><a class="code" href="structoption.html#b366eea5fe7be25c1928328ba715e353">flag</a> != p-><a class="code" href="structoption.html#b366eea5fe7be25c1928328ba715e353">flag</a>
688
<a name="l00673"></a>00673 || pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a> != p-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>)
693
689
<a name="l00674"></a>00674 <span class="comment">/* Second or later nonexact match found. */</span>
694
690
<a name="l00675"></a>00675 ambig = 1;
695
691
<a name="l00676"></a>00676 }
713
709
<a name="l00694"></a>00694 {
714
710
<a name="l00695"></a>00695 <span class="comment">/* Don't test has_arg with >, because some C compilers don't</span>
715
711
<a name="l00696"></a>00696 <span class="comment"> allow it to be used on enums. */</span>
716
<a name="l00697"></a>00697 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#0f7e57456d9954fb17d182bcfd2ef54c">has_arg</a>)
712
<a name="l00697"></a>00697 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#90d7ee9a51eea5c002682dbd0af149e4">has_arg</a>)
717
713
<a name="l00698"></a>00698 optarg = nameend + 1;
718
714
<a name="l00699"></a>00699 <span class="keywordflow">else</span>
719
715
<a name="l00700"></a>00700 {
723
719
<a name="l00704"></a>00704 <span class="comment">/* --option */</span>
724
720
<a name="l00705"></a>00705 fprintf (stderr,
725
721
<a name="l00706"></a>00706 _(<span class="stringliteral">"%s: option `--%s' doesn't allow an argument\n"</span>),
726
<a name="l00707"></a>00707 argv[0], pfound-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>);
722
<a name="l00707"></a>00707 argv[0], pfound-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>);
727
723
<a name="l00708"></a>00708 <span class="keywordflow">else</span>
728
724
<a name="l00709"></a>00709 <span class="comment">/* +option or -option */</span>
729
725
<a name="l00710"></a>00710 fprintf (stderr,
730
726
<a name="l00711"></a>00711 _(<span class="stringliteral">"%s: option `%c%s' doesn't allow an argument\n"</span>),
731
<a name="l00712"></a>00712 argv[0], argv[optind - 1][0], pfound-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>);
727
<a name="l00712"></a>00712 argv[0], argv[optind - 1][0], pfound-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>);
732
728
<a name="l00713"></a>00713 }
733
729
<a name="l00714"></a>00714
734
730
<a name="l00715"></a>00715 nextchar += strlen (nextchar);
735
731
<a name="l00716"></a>00716
736
<a name="l00717"></a>00717 optopt = pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>;
732
<a name="l00717"></a>00717 optopt = pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>;
737
733
<a name="l00718"></a>00718 <span class="keywordflow">return</span> <span class="charliteral">'?'</span>;
738
734
<a name="l00719"></a>00719 }
739
735
<a name="l00720"></a>00720 }
740
<a name="l00721"></a>00721 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#0f7e57456d9954fb17d182bcfd2ef54c">has_arg</a> == 1)
736
<a name="l00721"></a>00721 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#90d7ee9a51eea5c002682dbd0af149e4">has_arg</a> == 1)
741
737
<a name="l00722"></a>00722 {
742
738
<a name="l00723"></a>00723 <span class="keywordflow">if</span> (optind < argc)
743
739
<a name="l00724"></a>00724 optarg = argv[optind++];
748
744
<a name="l00729"></a>00729 _(<span class="stringliteral">"%s: option `%s' requires an argument\n"</span>),
749
745
<a name="l00730"></a>00730 argv[0], argv[optind - 1]);
750
746
<a name="l00731"></a>00731 nextchar += strlen (nextchar);
751
<a name="l00732"></a>00732 optopt = pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>;
747
<a name="l00732"></a>00732 optopt = pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>;
752
748
<a name="l00733"></a>00733 <span class="keywordflow">return</span> optstring[0] == <span class="charliteral">':'</span> ? <span class="charliteral">':'</span> : <span class="charliteral">'?'</span>;
753
749
<a name="l00734"></a>00734 }
754
750
<a name="l00735"></a>00735 }
755
751
<a name="l00736"></a>00736 nextchar += strlen (nextchar);
756
752
<a name="l00737"></a>00737 <span class="keywordflow">if</span> (longind != NULL)
757
753
<a name="l00738"></a>00738 *longind = option_index;
758
<a name="l00739"></a>00739 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#8f77295b521f0c6c955608190229d4a3">flag</a>)
754
<a name="l00739"></a>00739 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#b366eea5fe7be25c1928328ba715e353">flag</a>)
759
755
<a name="l00740"></a>00740 {
760
<a name="l00741"></a>00741 *(pfound-><a class="code" href="structoption.html#8f77295b521f0c6c955608190229d4a3">flag</a>) = pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>;
756
<a name="l00741"></a>00741 *(pfound-><a class="code" href="structoption.html#b366eea5fe7be25c1928328ba715e353">flag</a>) = pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>;
761
757
<a name="l00742"></a>00742 <span class="keywordflow">return</span> 0;
762
758
<a name="l00743"></a>00743 }
763
<a name="l00744"></a>00744 <span class="keywordflow">return</span> pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>;
759
<a name="l00744"></a>00744 <span class="keywordflow">return</span> pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>;
764
760
<a name="l00745"></a>00745 }
765
761
<a name="l00746"></a>00746
766
762
<a name="l00747"></a>00747 <span class="comment">/* Can't find it as a long option. If this is not getopt_long_only,</span>
860
856
<a name="l00841"></a>00841
861
857
<a name="l00842"></a>00842 <span class="comment">/* Test all long options for either exact match</span>
862
858
<a name="l00843"></a>00843 <span class="comment"> or abbreviated matches. */</span>
863
<a name="l00844"></a>00844 <span class="keywordflow">for</span> (p = longopts, option_index = 0; p-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>; p++, option_index++)
864
<a name="l00845"></a>00845 <span class="keywordflow">if</span> (!strncmp (p-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>, nextchar, nameend - nextchar))
859
<a name="l00844"></a>00844 <span class="keywordflow">for</span> (p = longopts, option_index = 0; p-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>; p++, option_index++)
860
<a name="l00845"></a>00845 <span class="keywordflow">if</span> (!strncmp (p-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>, nextchar, nameend - nextchar))
865
861
<a name="l00846"></a>00846 {
866
<a name="l00847"></a>00847 if ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) (nameend - nextchar) == strlen (p-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>))
862
<a name="l00847"></a>00847 <span class="keywordflow">if</span> ((<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>) (nameend - nextchar) == strlen (p-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>))
867
863
<a name="l00848"></a>00848 {
868
864
<a name="l00849"></a>00849 <span class="comment">/* Exact match found. */</span>
869
865
<a name="l00850"></a>00850 pfound = p;
897
893
<a name="l00878"></a>00878 {
898
894
<a name="l00879"></a>00879 <span class="comment">/* Don't test has_arg with >, because some C compilers don't</span>
899
895
<a name="l00880"></a>00880 <span class="comment"> allow it to be used on enums. */</span>
900
<a name="l00881"></a>00881 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#0f7e57456d9954fb17d182bcfd2ef54c">has_arg</a>)
896
<a name="l00881"></a>00881 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#90d7ee9a51eea5c002682dbd0af149e4">has_arg</a>)
901
897
<a name="l00882"></a>00882 optarg = nameend + 1;
902
898
<a name="l00883"></a>00883 <span class="keywordflow">else</span>
903
899
<a name="l00884"></a>00884 {
904
900
<a name="l00885"></a>00885 <span class="keywordflow">if</span> (print_errors)
905
901
<a name="l00886"></a>00886 fprintf (stderr, _(<span class="stringliteral">"\</span>
906
902
<a name="l00887"></a>00887 <span class="stringliteral">%s: option `-W %s' doesn't allow an argument\n"</span>),
907
<a name="l00888"></a>00888 argv[0], pfound-><a class="code" href="structoption.html#5c8f7c2972b277e010f9800cc9bc5fb0">name</a>);
903
<a name="l00888"></a>00888 argv[0], pfound-><a class="code" href="structoption.html#92c850a23c7828c1dba453bf8d15e1f0">name</a>);
908
904
<a name="l00889"></a>00889
909
905
<a name="l00890"></a>00890 nextchar += strlen (nextchar);
910
906
<a name="l00891"></a>00891 <span class="keywordflow">return</span> <span class="charliteral">'?'</span>;
911
907
<a name="l00892"></a>00892 }
912
908
<a name="l00893"></a>00893 }
913
<a name="l00894"></a>00894 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#0f7e57456d9954fb17d182bcfd2ef54c">has_arg</a> == 1)
909
<a name="l00894"></a>00894 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#90d7ee9a51eea5c002682dbd0af149e4">has_arg</a> == 1)
914
910
<a name="l00895"></a>00895 {
915
911
<a name="l00896"></a>00896 <span class="keywordflow">if</span> (optind < argc)
916
912
<a name="l00897"></a>00897 optarg = argv[optind++];
927
923
<a name="l00908"></a>00908 nextchar += strlen (nextchar);
928
924
<a name="l00909"></a>00909 <span class="keywordflow">if</span> (longind != NULL)
929
925
<a name="l00910"></a>00910 *longind = option_index;
930
<a name="l00911"></a>00911 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#8f77295b521f0c6c955608190229d4a3">flag</a>)
926
<a name="l00911"></a>00911 <span class="keywordflow">if</span> (pfound-><a class="code" href="structoption.html#b366eea5fe7be25c1928328ba715e353">flag</a>)
931
927
<a name="l00912"></a>00912 {
932
<a name="l00913"></a>00913 *(pfound-><a class="code" href="structoption.html#8f77295b521f0c6c955608190229d4a3">flag</a>) = pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>;
928
<a name="l00913"></a>00913 *(pfound-><a class="code" href="structoption.html#b366eea5fe7be25c1928328ba715e353">flag</a>) = pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>;
933
929
<a name="l00914"></a>00914 <span class="keywordflow">return</span> 0;
934
930
<a name="l00915"></a>00915 }
935
<a name="l00916"></a>00916 <span class="keywordflow">return</span> pfound-><a class="code" href="structoption.html#87e05ca729a19b01fcef8db8320f1930">val</a>;
931
<a name="l00916"></a>00916 <span class="keywordflow">return</span> pfound-><a class="code" href="structoption.html#13bd155ec3b405d29c41ab8d0793be11">val</a>;
936
932
<a name="l00917"></a>00917 }
937
933
<a name="l00918"></a>00918 nextchar = NULL;
938
934
<a name="l00919"></a>00919 <span class="keywordflow">return</span> <span class="charliteral">'W'</span>; <span class="comment">/* Let the application handle it. */</span>
1007
1003
<a name="l00988"></a>00988 <span class="comment"> the above definition of `getopt'. */</span>
1008
1004
<a name="l00989"></a>00989
1009
1005
<a name="l00990"></a>00990 <span class="keywordtype">int</span>
1010
<a name="l00991"></a>00991 <a class="code" href="ofx2qif_8c.html#28052c36c3b61c6c0eaa18f5d226118f">main</a> (argc, argv)
1006
<a name="l00991"></a>00991 <a class="code" href="ofx2qif_8c.html#0ddf1224851353fc92bfbff6f499fa97">main</a> (argc, argv)
1011
1007
<a name="l00992"></a>00992 int argc;
1012
1008
<a name="l00993"></a>00993 <span class="keywordtype">char</span> **argv;
1013
1009
<a name="l00994"></a>00994 {
1072
1068
<a name="l01053"></a>01053 }
1073
1069
<a name="l01054"></a>01054
1074
1070
<a name="l01055"></a>01055 <span class="preprocessor">#endif </span><span class="comment">/* TEST */</span>
1075
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Aug 25 13:25:22 2006 for LibOFX by
1071
</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Mon Nov 19 20:27:58 2007 for LibOFX by
1076
1072
<a href="http://www.doxygen.org/index.html">
1077
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
1073
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.3 </small></address>