( NevemTeve | 2022. 08. 06., szo – 19:30 )

Az legalább meglett, hogy van egy lib/libsa/strerror.c, amiben az ismert errno-értékeket szöveggé fordítja, de speciel a 20 nem megy neki. Itt kellene nézelődni:

Itt: sys/sys/errno.h

...
#define ENODEV          19      /* Operation not supported by device */
#define ENOTDIR         20      /* Not a directory */
#define EISDIR          21      /* Is a directory */
...
#define ELAST           95      /* Must be equal largest errno */

Továbbá itt: sys/lib/libsa/saerrno.h (ELAST=95)

#define EADAPT  (ELAST+1)       /* bad adaptor */
#define ECTLR   (ELAST+2)       /* bad controller */
#define EUNIT   (ELAST+3)       /* bad drive */
#define EPART   (ELAST+4)       /* bad partition */
#define ERDLAB  (ELAST+5)       /* can't read disk label */
#define EOFFSET (ELAST+6)       /* relative seek not supported */
#define EBSE    (ELAST+7)       /* bad sector error */
#define EECC    (ELAST+8)       /* uncorrectable ecc error */
#define EHER    (ELAST+9)       /* hard error */
#define ESALAST (ELAST+9)

Na szóval ez a lib/libsa/strerror.c:strerror ez csak egy részhalmazát tartalmazza a hibakódoknak, mivel ez nem a libc publikus függvénye, csak egy afféle adhoc belső strerror.

Lenne itt egy gyanúsított: sys/stand/boot/cmd.c:

     97 int
     98 read_conf(void)
     99 {
    113   if ((fd = open(qualify(cmd.conf), O_RDONLY)) < 0) {
    114     if (errno != ENOENT && errno != ENXIO) {
    115       printf("open(%s): %s\n", cmd.path, strerror(errno));
    116       return 0;
    117     }
    118     return -1;
    119   }

A qualify írja a cmd.path-ba a cmd.bootdev:cmd.conf értékét.

     43 struct cmd_state {
     44   char bootdev[BOOTDEVLEN]; /* device */
     45   char image[MAXPATHLEN - 16]; /* image */
     46   int  boothowto; /* howto */
     47   char *conf; /* /etc/boot.conf normally */
     48   void *addr; /* load here */
     49   int timeout;
     50
     51   char path[MAXPATHLEN]; /* buffer for pathname compose */
     52   const struct cmd_table *cmd;
     53   int argc;
     54   char *argv[8];<>/* XXX i hope this is enough */
     55 };