home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume4 / tvx / patch1 < prev    next >
Internet Message Format  |  1986-11-30  |  5KB

  1. From: talcott!seismo!gatech!unmvax!wampler (Bruce Wampler)
  2. Subject: 1st batch of TVX Bug fixes
  3. Newsgroups: mod.sources
  4. Approved: jpn@panda.UUCP
  5.  
  6. Mod.sources:  Volume 4, Issue 62
  7. Submitted by: gatech!unmvax!wampler (Bruce Wampler)
  8.  
  9. Following are bugs that have been discovered in the version of TVX
  10. posted to mod.sources in early March.  After making all these
  11. fixes, you have version 4/5/86 of TVX.  Please report any other bugs
  12. directly to me, and I will summarize as needed.
  13.  
  14. Dr. Bruce E. Wampler
  15. University of New Mexico
  16. Department of Computer Science
  17. Albuquerque, NM 87131
  18.  
  19. ..{ucbvax | seismo!gatech | ihnp4!lanl}!unmvax!wampler
  20.  
  21.  
  22. ****************************************************************************
  23. 1. Bad entry for ATARI520 in tvx_term.ic
  24.  
  25.    In tvx_term.ic, in the entry for ATARI520, change the initialization for
  26.     cdelchr to all 0's.
  27.  
  28. ****************************************************************************
  29. 2. Bug when terminal has clear screen and home screen control
  30.  
  31.    In tvx_io.c, fix the cclears part of the if in routine tvclr.
  32.    This only seems to show up when the very first character of the file
  33.    is a TAB and the terminal has a cclears control sequence:
  34.  
  35. ----------  new TVCLR code: ----------
  36. /* =============================>>> TVCLR  <<<============================= */
  37.   tvclr()
  38.   {  /* tvclr - clear the entire screen and home */
  39.  
  40.     if (cclears[0])
  41.       {
  42.     sendcs(cclears);
  43.     tvx = tvy = 1;        /* must update these! */
  44.       }
  45.     else
  46.       {
  47.     tvxy(1,1);
  48.     tvescr();
  49.       }
  50. #ifdef SCR_BUF
  51.     ttflush();
  52. #endif
  53.   }
  54. ----------  end new TVCLR code --------
  55.  
  56. ****************************************************************************
  57. 3. Serious initialization bug forces TVX to tty mode sometimes
  58.  
  59.    In tvx_io.c, in routine fopenx, add one line to initialize
  60.    set_ttymode to FALSE.  On some systems (like SYSV) where SLOW
  61.    has been defined to be dynamic, set_ttymode defaults to whatever
  62.    was on the stack.  (BSD seemed to have a 0 there, so I didn't find
  63.    this one till now.)  Thus, tvx could come up in ttymode sometimes by
  64.    default.  Fix it like this:
  65.  
  66. ------- fix in fopenx -------
  67.     set_ttymode =        /* assume visual mode +++ bug fix +++ */
  68.     ttymode = FALSE;        /* not in tty mode, so io ok */
  69.     ttynext = 1000;        /* force read */
  70. -----------------------------
  71.  
  72. ****************************************************************************
  73. 4. Bug using -o= switch, mostly on micros
  74.  
  75.    The old code uses orig_file to generate the work_file.  If
  76.    the -o= switch is used to specify a new output file that is on a
  77.    different drive or directory, rename won't work, and you are left
  78.    with the edits in the work file.  dest_file should be used to
  79.    generate the work_file name.  (On unix, 'mv' is forked if rename
  80.    fails, avoiding this problem.)
  81.  
  82. In file tvx_io.c, in the routine fopenx, change the following:
  83. ----- old code ----
  84.     ineof = FALSE;
  85.     strcpy(source_file,orig_file);    /* copy to other names */
  86.     strcpy(work_file,orig_file);
  87.     if (!*dest_file)        /* no -o specified */
  88.         strcpy(dest_file,orig_file);
  89. ---- new code ----
  90.     ineof = FALSE;
  91.     strcpy(source_file,orig_file);    /* copy to other names */
  92.     if (!*dest_file)        /* no -o specified */
  93.         strcpy(dest_file,orig_file);
  94.     strcpy(work_file,dest_file);    /* use dest file for diff drives */
  95. ---------------
  96.  
  97. ****************************************************************************
  98. 5. Better rename code for Atari-ST
  99.  
  100.    The GEMDOS rename call on the Atari ST version doesn't return
  101.    status.  The following code checks status "manually".
  102.  
  103. In file tvx_io.c, change routine ren_file to be:
  104. --------- replacement ren_file code -------
  105. /* =============================>>> ren_file <<<=========================== */
  106.   ren_file(old,new)
  107.   char *old, *new;
  108.   {
  109. #ifndef GEMDOS
  110.     if (rename(old,new) != 0)
  111.       {
  112.     prompt(old) ; prompt(" not renamed to "); remark(new);
  113.     prompt("Edits found in "); remark(old);
  114.       }
  115. #endif
  116. #ifdef GEMDOS
  117.     FILE *temp;
  118.  
  119.     gemdos(0x56,0,old,new);    /* can't find C version */
  120.     if (!(temp = fopen(new,FILEREAD)))    /* see if it was successful */
  121.       {
  122.     prompt(old) ; prompt(" not renamed to "); remark(new);
  123.     prompt("Edits found in "); remark(old);
  124.       }
  125.     else
  126.     fclose(temp);
  127. #endif
  128.   }
  129. -----------------
  130.  
  131. ****************************************************************************
  132. 6. Optional new invocation time switch
  133.  
  134.    In response to several requests for an "execute a command"
  135.    option when starting TVX, the following code can be added into
  136.    the switch handling code in fopenx in file tvx_io.c.
  137.  
  138.    TVX can then be started like 'tvx file -x=49d' to go to
  139.    the 50th line in the file, for example.  Any command that could
  140.    be used in a repeat loop may be placed after the -x.  It may
  141.    be a problem to enter some special characters like Escape.
  142.  
  143. ------ add as new else condition in the switch handling code of fopenx -----
  144.  
  145.         else if (ch == 'x' && (stemp[iswbeg+1] == '=' ||
  146.           stemp[iswbeg+1] == ':'))    /* specifying string to execute */
  147.           {
  148.         if (!iswval)        /* wrong order! */
  149.           {
  150.             remark("Bad -X= switch");
  151.             quit();
  152.           }
  153.         scopy(stemp,iswbeg+2,&rptbuf[0][0],0);  /* store command */
  154.         rptcnt[0] = 1;                /* execute once */
  155.         nxtrpt[0] = 0;                /* from beginning */
  156.           }
  157. -------------
  158. ****************************************************************************
  159.