Sorry, missed patch and sample lslR file. -- Regards, Andrew V. Samoilov.
vfs/ChangeLog: * utilvfs.c (vfs_parse_ls_lga): Handle device without comma between major and minor. Use "%s" pattern in message(). --- vfs/utilvfs.c Fri Dec 26 15:55:10 2003 +++ vfs/utilvfs.c Fri Dec 26 16:29:04 2003 @@ -748,12 +748,17 @@ vfs_parse_ls_lga (const char *p, struct if (S_ISCHR (s->st_mode) || S_ISBLK (s->st_mode)) { int maj, min; - if (!is_num (idx2) || sscanf (columns[idx2], " %d,", &maj) != 1) - goto error; - - if (!is_num (++idx2) || sscanf (columns[idx2], " %d", &min) != 1) - goto error; + /* Corner case: there is no comma between maj & min */ + if (!is_num (idx2) && idx2 == 2) { + if (!is_num (++idx2) || sscanf (columns[idx2], " %d,%d", &min, &min) != 2) + goto error; + } else { + if (!is_num (idx2) || sscanf (columns[idx2], " %d,", &maj) != 1) + goto error; + if (!is_num (++idx2) || sscanf (columns[idx2], " %d", &min) != 1) + goto error; + } #ifdef HAVE_STRUCT_STAT_ST_RDEV s->st_rdev = ((maj & 0xff) << 8) | (min & 0xffff00ff); #endif @@ -833,10 +838,10 @@ vfs_parse_ls_lga (const char *p, struct static int errorcount = 0; if (++errorcount < 5) { - message (1, _("Cannot parse:"), + message (1, _("Cannot parse:"), "%s", (p_copy && *p_copy) ? p_copy : line); } else if (errorcount == 5) - message (1, _("Error"), + message (1, MSG_ERROR, _("More parsing errors will be ignored.")); }
Attachment:
lslR
Description: Binary data