Files
oldlinux-files/Minix/2.0.0/fixes/fix-3
2024-02-19 00:21:39 -05:00

51 lines
1.6 KiB
Plaintext

This fix repairs a bug in a routine in the isoread command that matches
filenames. The exact nature of the bug has been lost in the mist of time,
but it is for certain that isoread works badly without this fix.
To apply this this do the following as bin:
! cd /usr
! patch -p0 < "this-file"
! cd src/commands/simple
! make install
You will find the original isoread.c file renamed to isoread.c~ in
src/commands/simple/. You may wish to delete it to clean things up.
diff -c -r /save/std/2.0.0/src/commands/simple/isoread.c ./src/commands/simple/isoread.c
*** /save/std/2.0.0/src/commands/simple/isoread.c Mon Aug 07 20:33:32 1995
--- ./src/commands/simple/isoread.c Sat Nov 16 12:15:41 1996
***************
*** 175,187 ****
int dir_flag;
{
int i;
/* First match the filename */
! for (i = 0; (i < strlen(name) && i < iso_711(dir_ptr->name_length)); i++)
{
! if (dir_ptr->name[i] == ';') break;
if (name[i] != LOWER_CASE(dir_ptr->name[i])) return 1;
}
/* The filename is ok, now look at the file type */
if (dir_flag && !IS_DIR(dir_ptr)) return 1; /* File type not correct */
--- 175,191 ----
int dir_flag;
{
int i;
+ int len;
/* First match the filename */
! len = strlen(name);
! if (len > iso_711(dir_ptr->name_length)) return 1;
! for (i = 0; i < len; i++)
{
! if (dir_ptr->name[i] == ';') return 1;
if (name[i] != LOWER_CASE(dir_ptr->name[i])) return 1;
}
+ if (dir_ptr->name[i] != ';' && dir_ptr->name[i] != 0) return 1;
/* The filename is ok, now look at the file type */
if (dir_flag && !IS_DIR(dir_ptr)) return 1; /* File type not correct */