From decwrl!wuarchive!zaphod.mps.ohio-state.edu!usc!cs.utexas.edu!uunet!allbery Sat May 19 20:37:11 PDT 1990 Article 1590 of comp.sources.misc: Path: decwrl!wuarchive!zaphod.mps.ohio-state.edu!usc!cs.utexas.edu!uunet!allbery From: tony@ajfcal.UUCP (Tony Field) Newsgroups: comp.sources.misc Subject: v12i110: fm patch01 Message-ID: <89510@uunet.UU.NET> Date: 19 May 90 20:36:25 GMT Sender: allbery@uunet.UU.NET Lines: 336 Approved: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) Posting-number: Volume 12, Issue 110 Submitted-by: tony@ajfcal.UUCP (Tony Field) Archive-name: fm/patch01 Hello Brandon, Please accept this patch to "fm". ----------------------------------------------- This patch to fm fixes cursor activity while editing a hex nibble, and corrects a problem that mis-formats the last 16 bytes of a file while saving to a print file. tony.. ----------------------------------------------------------------------- #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh 'patch01' <<'END_OF_FILE' XPrereq: 0 X*** old/patchlevel.h X--- patchlevel.h X************** X*** 1 X! #define PATCHLEVEL 0 X--- 1 ----- X! #define PATCHLEVEL 1 X*** old/fm.c X--- fm.c X************** X*** 14,20 X X Permission is given to distribute the source and documentation files X and/or compiled binaries associated with fm as long as no monies are X! exchanged for their use or distribution. X X No responsibility is taken for any errors on inaccuracies inherent X either to the comments or the code of this program, but, if reported X--- 14,20 ----- X X Permission is given to distribute the source and documentation files X and/or compiled binaries associated with fm as long as no monies are X! exchanged for their use. X X No responsibility is taken for any errors on inaccuracies inherent X either to the comments or the code of this program, but, if reported X************** X*** 22,28 X X Author: Tony Field X tony@ajfcal X- */ X X #include X #include X--- 22,27 ----- X X Author: Tony Field X tony@ajfcal X X Patchlevels X =========== X************** X*** 24,29 X tony@ajfcal X */ X X #include X #include X #include X--- 23,36 ----- X Author: Tony Field X tony@ajfcal X X+ Patchlevels X+ =========== X+ Patchlevel 1: May-1990 X+ 1. clean up cursor motion while editing hex side of screen. X+ 2. KEY_UNDO removed for M_TERMCAP compilation X+ 3. fixed file print on last 16 bytes of file X+ */ X+ X #include X #include X #include X************** X*** 89,95 X || (statbuf.st_mode & S_IFMT) == S_IFREG) X max_fpos = (long) statbuf.st_size; X else X! max_fpos = 1999999999; /* infinity??? */ X X if ((fp = open (fname, O_RDWR)) == -1) X { if ((fp = open (fname, O_RDONLY)) == -1) X--- 96,102 ----- X || (statbuf.st_mode & S_IFMT) == S_IFREG) X max_fpos = (long) statbuf.st_size; X else X! max_fpos = 0x7fffffffL; /* infinity??? */ X X if ((fp = open (fname, O_RDWR)) == -1) X { if ((fp = open (fname, O_RDONLY)) == -1) X************** X*** 369,374 X fputc (hbuf[1], pfile); X fputc (' ', pfile); X } X /* display ascii side */ X X fprintf (pfile, " "); X--- 376,385 ----- X fputc (hbuf[1], pfile); X fputc (' ', pfile); X } X+ X+ for ( ; m % 16; m++) X+ fprintf (pfile, " "); X+ X /* display ascii side */ X X fprintf (pfile, " "); X************** X*** 402,407 X int x, y; /* screen coords. */ X int hexa, hexb, cbyte; X int reflected; /* was a change really done */ X X if (byte_pos >= nbytes) X byte_pos = nbytes - 1; X--- 413,419 ----- X int x, y; /* screen coords. */ X int hexa, hexb, cbyte; X int reflected; /* was a change really done */ X+ int have_key; X X if (byte_pos >= nbytes) X byte_pos = nbytes - 1; X************** X*** 407,413 X byte_pos = nbytes - 1; X if (byte_pos < 0) X byte_pos = 0; X! X while (1) X { X mvwprintw (stdscr, 1, 6, "%lx ", fpos + byte_pos); X--- 419,426 ----- X byte_pos = nbytes - 1; X if (byte_pos < 0) X byte_pos = 0; X! X! have_key = 0; X while (1) X { X mvwprintw (stdscr, 1, 6, "%lx ", fpos + byte_pos); X************** X*** 416,422 X wmove (stdscr, y, x); X wrefresh (stdscr); X #endif X! key = mvwgetch (stdscr, y, x); X X switch (key) /* any user keys or function keys */ X { X--- 429,436 ----- X wmove (stdscr, y, x); X wrefresh (stdscr); X #endif X! if (have_key == 0) X! key = mvwgetch (stdscr, y, x); X X have_key = 0; X switch (key) /* any user keys or function keys */ X************** X*** 418,423 X #endif X key = mvwgetch (stdscr, y, x); X X switch (key) /* any user keys or function keys */ X { X case FWD: X--- 432,438 ----- X if (have_key == 0) X key = mvwgetch (stdscr, y, x); X X+ have_key = 0; X switch (key) /* any user keys or function keys */ X { X case FWD: X************** X*** 479,484 X X case UND: X case KEY_F(5): X case KEY_UNDO: X return (UND); X break; X--- 494,500 ----- X X case UND: X case KEY_F(5): X+ #ifndef M_TERMCAP X case KEY_UNDO: X #endif X return (UND); X************** X*** 480,485 X case UND: X case KEY_F(5): X case KEY_UNDO: X return (UND); X break; X X--- 496,502 ----- X case KEY_F(5): X #ifndef M_TERMCAP X case KEY_UNDO: X+ #endif X return (UND); X break; X X************** X*** 520,528 X { if (isvalid (key)) X { wattrset (stdscr, A_STANDOUT); X waddch (stdscr, key); X- #ifdef M_TERMCAP X- wrefresh (stdscr); X- #endif X maybe_dirty = 1; X wbuf[byte_pos] = key; X reflect_change (byte_pos, HEX, wbuf); X--- 537,542 ----- X { if (isvalid (key)) X { wattrset (stdscr, A_STANDOUT); X waddch (stdscr, key); X maybe_dirty = 1; X wbuf[byte_pos] = key; X reflect_change (byte_pos, HEX, wbuf); X************** X*** 542,550 X key = wgetch (stdscr); /* 2nd nibble */ X if (isxdigit (key)) X { waddch (stdscr, key); X- #ifdef M_TERMCAP X- wrefresh (stdscr); X- #endif X hexb = key; X } X reflected = 1; X--- 556,561 ----- X key = wgetch (stdscr); /* 2nd nibble */ X if (isxdigit (key)) X { waddch (stdscr, key); X hexb = key; X } X reflected = 1; X************** X*** 560,567 X if (hexa || hexb) X reflect_change (byte_pos, ASC, wbuf); X } X! if (byte_pos < BSIZE - 1 && (reflected || key == ' ')) X! { byte_pos++; X } X wattrset (stdscr, 0); X if (key == UND || key == KEY_F(5)) X--- 571,584 ----- X if (hexa || hexb) X reflect_change (byte_pos, ASC, wbuf); X } X! if ((key < 0 || key > 256) && key != KEY_LEFT) /* function key ?? */ X! have_key = 1; X! else X! { X! if (byte_pos < BSIZE - 1 && (reflected || key == ' ') X! && key != KEY_LEFT) X! { byte_pos++; X! } X } X wattrset (stdscr, 0); X #ifdef M_TERMCAP X************** X*** 564,569 X { byte_pos++; X } X wattrset (stdscr, 0); X if (key == UND || key == KEY_F(5)) X return (UND); X break; X--- 581,587 ----- X } X } X wattrset (stdscr, 0); X+ #ifdef M_TERMCAP X if (key == UND || key == KEY_F(5)) X #else X if (key == UND || key == KEY_F(5) || key == KEY_UNDO) X************** X*** 565,570 X } X wattrset (stdscr, 0); X if (key == UND || key == KEY_F(5)) X return (UND); X break; X } X--- 583,591 ----- X wattrset (stdscr, 0); X #ifdef M_TERMCAP X if (key == UND || key == KEY_F(5)) X+ #else X+ if (key == UND || key == KEY_F(5) || key == KEY_UNDO) X+ #endif X return (UND); X break; X } END_OF_FILE if test 6789 -ne `wc -c <'patch01'`; then echo shar: \"'patch01'\" unpacked with wrong size! fi # end of 'patch01' fi echo shar: End of shell archive. exit 0