home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume26 / most-3.2 / part01 / edit.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-04-13  |  1.9 KB  |  93 lines

  1. /* editor functions */
  2.  
  3. #include "externs.h"
  4. #include "window.h"
  5. #include "sysdep.h"
  6.  
  7. #ifdef VMS
  8.  
  9. int call_edt_tpu(char *file, int line, int what)
  10. {
  11.     char the_file[100];
  12.     extern void edt$edit();
  13.     extern void tpu$tpu();
  14.     struct dsc$descriptor_s  file_desc;
  15.     if (what == 1)  /* tpu */
  16.       strcpy(the_file,"TPU ");
  17.     else
  18.       the_file[0] = '\0';
  19.     
  20.     strcat(the_file,file);
  21.     
  22.     file_desc.dsc$w_length = strlen(the_file);
  23.     file_desc.dsc$a_pointer = the_file;
  24.     file_desc.dsc$b_class = DSC$K_CLASS_S; /* scalar, string type */
  25.     file_desc.dsc$b_dtype = DSC$K_DTYPE_T; /* ascii string */
  26.  
  27.     if (what == 1)
  28.       tpu$tpu(&file_desc);
  29.     else
  30.       edt$edit(&file_desc);
  31.  
  32.     return(1);
  33. }
  34.  
  35. int call_emacs(char *file, int line)
  36. {
  37.     int status;
  38.     char lstr[40];
  39.     (void) sprintf(lstr,"%d",line);
  40.     define_logical_name("EMACS_FILE_LINE",lstr);
  41.     define_logical_name("EMACS_FILE_NAME",file);
  42.     status = do_emacs_command();
  43.     delete_logical_name("EMACS_FILE_NAME");
  44.     delete_logical_name("EMACS_FILE_LINE");
  45.     return(status);
  46. }
  47.  
  48. void edit_cmd()
  49. {
  50.     char *editor, file[80], *strp;
  51.     int status;
  52.     
  53.     if ((editor = getenv("MOST_EDITOR")) == NULL)  editor = "EDT";
  54.           
  55.     strcpy(file,WIN->buf->file);
  56.     strp = file;
  57.     /*  lose the version number */
  58.     while((*strp != '\0') && (*strp != ';')) strp++;
  59.     *strp = '\0';
  60.     
  61.     reset_tty();
  62.     reset_display();
  63.     fflush(stdout);
  64.     
  65.     if (!strcmp(editor,"EMACS"))
  66.       {
  67.           status = call_emacs(file,C_LINE);
  68.       }
  69.     else if (!strcmp(editor,"EDT"))
  70.       {
  71.           status = call_edt_tpu(file,C_LINE,0);
  72.       }
  73.     else if (!strcmp(editor,"TPU"))
  74.       {
  75.           status = call_edt_tpu(file,C_LINE,1);
  76.       }
  77.     else message("Unknown editor.",1);
  78.     if (status)
  79.       {
  80.           redraw_display();
  81.       }
  82.     else message("Unable to edit.",1);
  83. }
  84.     
  85. #else
  86.  
  87. void edit_cmd()
  88.   {
  89.       ;
  90.   }
  91.  
  92. #endif
  93.