2 Subject: save errno for second command
3 Author: Joachim Wiedorn <ad_debian at joonet.de>
5 Last-Update: 2011-02-17
7 The problem is that fprintf can alter the value of errno
8 (see man perror). In a weired case the user get a bogus error
9 because the real error was hidden by fprintf.
12 diff -urN s11/src/device.c s12/src/device.c
13 --- s11/src/device.c 2011-02-17 22:07:17.167142581 +0100
14 +++ s12/src/device.c 2011-02-17 22:20:03.047152869 +0100
21 if (lookup_dev(name,dev,number)) dev->delete = 0;
25 if (flags == O_BYPASS) dev->fd = -1;
26 else if ((dev->fd = open(name,flags)) < 0) {
27 - fprintf (errstd, "Cannot proceed. Maybe you need to add "
29 + fprintf (errstd, "Cannot proceed. Maybe you need to add "
30 "this to your lilo.conf:\n"
31 "\tdisk=%s inaccessible\n"
32 "(real error shown below)\n", name);
33 - die("open %s: %s",name,strerror(errno));
34 + die("open %s: %s",name,strerror(err));
36 dev->name = stralloc(name);
40 fd = dev_open(&dev, device, option ? O_RDWR : O_RDONLY);
41 if (read(fd, &buf, sizeof(buf)) != sizeof(buf)) {
42 - fprintf (errstd, "Cannot proceed. Maybe you need to add "
43 + fprintf (errstd, "Cannot proceed. Maybe you need to add "
44 "this to your lilo.conf:\n"
45 "\tdisk=%s inaccessible\n"
46 "(real error shown below)\n", dev.name);
47 - die("VolumeID read error: sector 0 of %s not readable", dev.name);
48 + die("VolumeID read error: sector 0 of %s not readable", dev.name);
51 make_backup(NULL, 0, &buf, device,