X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=src%2Fdevice.c;h=459851af42b47f9704b3d1f0b30410b96b533aed;hb=e05a6f05e7fce66ac7560e066d995c456073d29f;hp=fb7a9f77d50c413501d4eb0eb85cd50d6a12a745;hpb=23c77cc092dbbb1e12c47c2b0021d4476b543702;p=rrq%2Fmaintain_lilo.git diff --git a/src/device.c b/src/device.c index fb7a9f7..459851a 100644 --- a/src/device.c +++ b/src/device.c @@ -1,13 +1,13 @@ -/* device.c - Device access */ -/* -Copyright 1992-1997 Werner Almesberger. -Copyright 1999-2006 John Coffman. -All rights reserved. - -Licensed under the terms contained in the file 'COPYING' in the -source directory. - -*/ +/* device.c - Device access + * + * Copyright 1992-1997 Werner Almesberger + * Copyright 1999-2006 John Coffman + * Copyright 2009-2014 Joachim Wiedorn + * All rights reserved. + * + * Licensed under the terms contained in the file 'COPYING' + * in the source directory. + */ #define _GNU_SOURCE #include @@ -197,6 +197,7 @@ int dev_open(DEVICE *dev,int number,int flags) char name[PATH_MAX]; ST_BUF st; int count; + int err; if (lookup_dev(name,dev,number)) dev->delete = 0; else { @@ -235,11 +236,12 @@ int dev_open(DEVICE *dev,int number,int flags) #endif if (flags == O_BYPASS) dev->fd = -1; else if ((dev->fd = open(name,flags)) < 0) { - fprintf (errstd, "Cannot proceed. Maybe you need to add " + err = errno; + fprintf (errstd, "Cannot proceed. Maybe you need to add " "this to your lilo.conf:\n" "\tdisk=%s inaccessible\n" "(real error shown below)\n", name); - die("open %s: %s",name,strerror(errno)); + die("open %s: %s",name,strerror(err)); } dev->name = stralloc(name); return dev->fd; @@ -345,7 +347,6 @@ void preload_dev_cache(void) cache_add(DEV_DIR "/fd1", 0x0201); } -#if 1 cache_ide(DEV_DISK_DIR "/hdt", MAJOR_IDE10); cache_ide(DEV_DISK_DIR "/hds", MAJOR_IDE10); cache_ide(DEV_DISK_DIR "/hdr", MAJOR_IDE9); @@ -358,11 +359,9 @@ void preload_dev_cache(void) cache_ide(DEV_DISK_DIR "/hdl", MAJOR_IDE6); cache_ide(DEV_DISK_DIR "/hdk", MAJOR_IDE6); -#ifdef MAJOR_IDE5 + cache_ide(DEV_DISK_DIR "/hdj", MAJOR_IDE5); cache_ide(DEV_DISK_DIR "/hdi", MAJOR_IDE5); -#endif -#endif for (i = MAX; i >= 0; i--) { sprintf(tmp, is_devfs() ? DEV_DISK_DIR "/md/%d" : DEV_DISK_DIR "/md%d", i); @@ -383,8 +382,8 @@ void preload_dev_cache(void) cache_ide(DEV_DISK_DIR "/hdd", MAJOR_IDE2); cache_ide(DEV_DISK_DIR "/hdc", MAJOR_IDE2); - cache_ide(DEV_DISK_DIR "/hdb", MAJOR_HD); - cache_ide(DEV_DISK_DIR "/hda", MAJOR_HD); + cache_ide(DEV_DISK_DIR "/hdb", MAJOR_IDE); + cache_ide(DEV_DISK_DIR "/hda", MAJOR_IDE); verbose = vsave; } @@ -639,7 +638,7 @@ unsigned int register_bios(int bios, int device) *(int*)&buff.sector[PART_TABLE_OFFSET-6] = serial; if (*(short*)&buff.sector[PART_TABLE_OFFSET - 2] == 0) - *(short*)&buff.sector[PART_TABLE_OFFSET - 2] = MAGIC_SERIAL; + *(unsigned short*)&buff.sector[PART_TABLE_OFFSET - 2] = MAGIC_SERIAL; if (verbose) printf("Assigning new Volume ID to (%04X) '%s' ID = %08X\n", device, dev.name, (int)serial); @@ -655,7 +654,7 @@ unsigned int register_bios(int bios, int device) if (device_code[i]==device) die("register_bios: device code duplicated: %04X", device); if (serial_no[i]==serial) - die("register_bios: volume ID serial no. duplicated: %08lX", serial); + die("register_bios: volume ID serial no. duplicated: %08X", serial); } device_code[bios] = device; serial_no[bios] = serial; @@ -714,11 +713,11 @@ static int volid_get_set(int device, int vol_in, int option) fd = dev_open(&dev, device, option ? O_RDWR : O_RDONLY); if (read(fd, &buf, sizeof(buf)) != sizeof(buf)) { - fprintf (errstd, "Cannot proceed. Maybe you need to add " + fprintf (errstd, "Cannot proceed. Maybe you need to add " "this to your lilo.conf:\n" "\tdisk=%s inaccessible\n" "(real error shown below)\n", dev.name); - die("VolumeID read error: sector 0 of %s not readable", dev.name); + die("VolumeID read error: sector 0 of %s not readable", dev.name); } if (option==ID_SET) { make_backup(NULL, 0, &buf, device,