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

Diff of /mailutils/mh/mh_whatnow.c

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

revision 1.4 by gray, Wed Jan 22 21:44:15 2003 UTC revision 1.5 by gray, Sat Feb 8 02:21:35 2003 UTC
# Line 215  display_file (const char *name) Line 215  display_file (const char *name)
215      }      }
216  }        }      
217    
218    static int
219    invoke (char *compname, char *defval, int argc, char **argv,
220            char *extra0, char *extra1, int *status)
221    {
222      int i, rc;
223      char **xargv;
224      char *progname;
225    
226      progname = mh_global_profile_get (compname, defval);
227      if (!progname)
228        return -1;
229      
230      xargv = calloc (argc+3, sizeof (*xargv));
231      if (!xargv)
232        {
233          mh_err_memory (0);
234          return -1;
235        }
236    
237      xargv[0] = progname;
238      for (i = 1; i < argc; i++)
239        xargv[i] = argv[i];
240      if (extra0)
241        xargv[i++] = extra0;
242      if (extra1)
243        xargv[i++] = extra1;
244      xargv[i++] = NULL;
245      rc = mu_spawnvp (xargv[0], (const char **) xargv, status);
246      free (xargv);
247      return rc;
248    }
249    
250    
251  /* ************************ Shell Function ************************* */  /* ************************ Shell Function ************************* */
252    
# Line 272  display (struct mh_whatnow_env *wh, int Line 304  display (struct mh_whatnow_env *wh, int
304  static int  static int
305  edit (struct mh_whatnow_env *wh, int argc, char **argv, int *status)  edit (struct mh_whatnow_env *wh, int argc, char **argv, int *status)
306  {  {
   char *editor;  
307    char *name;    char *name;
308      int rc;
309      
310    asprintf (&name, "%s-next", wh->editor);    asprintf (&name, "%s-next", wh->editor);
311    editor = mh_global_profile_get (name, wh->editor);    invoke (name, wh->editor, argc, argv, wh->file, NULL, &rc);
312    free (name);    free (name);
   
   if (argc == 1)  
     {  
       mh_spawnp (editor, wh->file);  
     }  
   else  
     {  
       int i, rc, status;  
       char **xargv;  
   
       xargv = calloc (argc+2, sizeof (*xargv));  
       if (!xargv)  
         {  
           mh_err_memory (0);  
           return 0;  
         }  
   
       xargv[0] = editor;  
       for (i = 1; i < argc; i++)  
         xargv[i] = argv[i];  
       xargv[i++] = wh->file;  
       xargv[i++] = NULL;  
       rc = mu_spawnvp (xargv[0], (const char **) xargv, &status);  
       free (xargv);  
     }  
313        
314    return 0;    return 0;
315  }  }
# Line 349  quit (struct mh_whatnow_env *wh, int arg Line 356  quit (struct mh_whatnow_env *wh, int arg
356  static int  static int
357  refile (struct mh_whatnow_env *wh, int argc, char **argv, int *status)  refile (struct mh_whatnow_env *wh, int argc, char **argv, int *status)
358  {  {
359      int rc;
360      invoke ("fileproc", "refile", argc, argv, "-file", wh->file, &rc);
361    return 0;    return 0;
362  }  }
363    

Legend:
Removed from v.1.4  
changed lines
  Added in v.1.5

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