/[mailutils]/mailutils/mh/mh_argp.c
ViewVC logotype

Diff of /mailutils/mh/mh_argp.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.21 by gray, Sat Feb 22 22:26:40 2003 UTC revision 1.22 by gray, Tue Nov 4 14:32:51 2003 UTC
# Line 95  my_argp_parse (struct argp *argp, int ar Line 95  my_argp_parse (struct argp *argp, int ar
95  }  }
96    
97  int  int
98  mh_argp_parse (int argc, char **argv,  mh_argp_parse (int *pargc, char **pargv[],
99                 int flags,                 int flags,
100                 struct argp_option *option,                 struct argp_option *option,
101                 struct mh_option *mh_option,                 struct mh_option *mh_option,
# Line 108  mh_argp_parse (int argc, char **argv, Line 108  mh_argp_parse (int argc, char **argv,
108    int index;    int index;
109    int extra  = 0;    int extra  = 0;
110        
111    program_invocation_name = argv[0];    program_invocation_name = (*pargv)[0];
112    p = strrchr (argv[0], '/');    p = strrchr ((*pargv)[0], '/');
113    if (p)    if (p)
114      program_invocation_short_name = p+1;      program_invocation_short_name = p+1;
115    else    else
# Line 131  mh_argp_parse (int argc, char **argv, Line 131  mh_argp_parse (int argc, char **argv,
131    p = mh_global_profile_get (program_invocation_short_name, NULL);    p = mh_global_profile_get (program_invocation_short_name, NULL);
132    if (p)    if (p)
133      {      {
134        int _argc;        int argc;
135        char **_argv;        char **argv;
136        int xargc;        int xargc;
137        char **xargv;        char **xargv;
138        int i, j;        int i, j;
139                
140        argcv_get (p, "", NULL, &xargc, &xargv);        argcv_get (p, "", NULL, &xargc, &xargv);
141    
142        _argc = argc + xargc;        argc = *pargc + xargc;
143        _argv = calloc (_argc+1, sizeof *_argv);        argv = calloc (argc+1, sizeof *argv);
144        if (!_argv)        if (!argv)
145          mh_err_memory (1);          mh_err_memory (1);
146    
147        i = 0;        i = 0;
148        _argv[i++] = argv[0];        argv[i++] = (*pargv)[0];
149        for (j = 0; j < xargc; i++, j++)        for (j = 0; j < xargc; i++, j++)
150          _argv[i] = xargv[j];          argv[i] = xargv[j];
151        for (j = 1; i < _argc; i++, j++)        for (j = 1; i < argc; i++, j++)
152          _argv[i] = argv[j];          argv[i] = (*pargv)[j];
153        _argv[i] = NULL;        argv[i] = NULL;
154        mh_argv_preproc (_argc, _argv, &data);        
   
       my_argp_parse (&argp, _argc, _argv, flags, &index, &data);  
   
       free (_argv);  
       extra = index < _argc;  
       index -= xargc;  
       if (index < 0)  
         index = argc;  
     }  
   else  
     {  
155        mh_argv_preproc (argc, argv, &data);        mh_argv_preproc (argc, argv, &data);
156    
157        my_argp_parse (&argp, argc, argv, flags, &index, &data);        my_argp_parse (&argp, argc, argv, flags, &index, &data);
158    
159        extra = index < argc;        extra = index < argc;
160    
161          *pargc = argc;
162          *pargv = argv;
163          free (xargv);
164        }
165      else
166        {
167          mh_argv_preproc (*pargc, *pargv, &data);
168          my_argp_parse (&argp, *pargc, *pargv, flags, &index, &data);
169          extra = index < *pargc;
170      }      }
171    if (pindex)    if (pindex)
172      *pindex = index;      *pindex = index;

Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26