diff --git a/buffer.h b/buffer.h index 878df4f..5917ffd 100644 --- a/buffer.h +++ b/buffer.h @@ -4,8 +4,8 @@ #include "crypt.h" #include "line.h" -typedef char fname_t[ 80] ; /* file name type */ -typedef char bname_t[ 16] ; /* buffer name type */ +typedef char fname_t[ 256] ; /* file name type */ +typedef char bname_t[ 16] ; /* buffer name type */ #define NBUFN sizeof( bname_t) #if CRYPT diff --git a/file.c b/file.c index dff4c8c..24c9ee0 100644 --- a/file.c +++ b/file.c @@ -537,21 +537,24 @@ int filewrite( int f, int n) { status = newmlarg( &fname, "Write file: ", sizeof( fname_t)) ; if( status == TRUE) { - status = writeout( fname) ; - if( status == TRUE) { - struct window *wp ; + if( strlen( fname) > sizeof( fname_t) - 1) + status = FALSE ; + else { + status = writeout( fname) ; + if( status == TRUE) { + struct window *wp ; - strncpy( curbp->b_fname, fname, sizeof( fname_t) - 1) ; - curbp->b_fname[ sizeof( fname_t) - 1] = '\0' ; - curbp->b_flag &= ~BFCHG ; - wp = wheadp ; /* Update mode lines. */ - while( wp != NULL) { - if( wp->w_bufp == curbp) - wp->w_flag |= WFMODE ; + strcpy( curbp->b_fname, fname) ; + curbp->b_flag &= ~BFCHG ; + wp = wheadp ; /* Update mode lines. */ + while( wp != NULL) { + if( wp->w_bufp == curbp) + wp->w_flag |= WFMODE ; - wp = wp->w_wndp ; - } - } + wp = wp->w_wndp ; + } + } + } free( fname) ; } diff --git a/tststr.cmd b/tststr.cmd index 00d9650..8788da9 100644 --- a/tststr.cmd +++ b/tststr.cmd @@ -28,17 +28,14 @@ insert-string 123456789012345678901234567890123456789012345678901234567890123456 next-line insert-string _________1_________2_________3_________4_________5_________6_________7_________8_________9_________0_________1_________2_________3 next-line -; Create and insert string variable until size exceed string limit [will be truncated to NSTRING - 1 (127) +; Create and insert string variable until size exceed 1024 characters or variable get truncated set %nam 123 set %expect &len %nam -!while &equ &len %nam %expect +!while &and &les %expect 1024 &equ &len %nam %expect insert-string %nam newline set %nam &cat %nam %nam set %expect &tim %expect 2 - !if ¬ &les %expect 1024 - !break - !endif !endwhile insert-string %nam newline @@ -47,6 +44,7 @@ newline insert-string &cat "Expected: " %expect newline ; Use the variable as filename [will be truncated to NFILEN - 1 (79)] +set %nam &mid %nam 1 255 write-file %nam insert-string &cat "Filename: " $cfname newline @@ -71,3 +69,4 @@ set-mark end-of-file copy-region insert-string $kill +redraw-display