~hamo/ubuntu/precise/grub2/grub2.hi_res

« back to all changes in this revision

Viewing changes to grub-core/gnulib/strerror.c

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson, Colin Watson, Evan Broder, Mario Limonciello
  • Date: 2010-11-24 13:59:55 UTC
  • mfrom: (1.17.6 upstream) (17.6.15 experimental)
  • Revision ID: james.westby@ubuntu.com-20101124135955-r6ii5sepayr7jt53
Tags: 1.99~20101124-1ubuntu1
[ Colin Watson ]
* Resynchronise with Debian experimental.  Remaining changes:
  - Adjust for default Ubuntu boot options ("quiet splash").
  - Default to hiding the menu; holding down Shift at boot will show it.
  - Set a monochromatic theme for Ubuntu.
  - Apply Ubuntu GRUB Legacy changes to legacy update-grub script: title,
    recovery mode, quiet option, tweak how memtest86+ is displayed, and
    use UUIDs where appropriate.
  - Fix backslash-escaping in merge_debconf_into_conf.
  - Remove "GNU/Linux" from default distributor string.
  - Add crashkernel= options if kdump and makedumpfile are available.
  - If other operating systems are installed, then automatically unhide
    the menu.  Otherwise, if GRUB_HIDDEN_TIMEOUT is 0, then use keystatus
    if available to check whether Shift is pressed.  If it is, show the
    menu, otherwise boot immediately.  If keystatus is not available, then
    fall back to a short delay interruptible with Escape.
  - Allow Shift to interrupt 'sleep --interruptible'.
  - Don't display introductory message about line editing unless we're
    actually offering a shell prompt.  Don't clear the screen just before
    booting if we never drew the menu in the first place.
  - Remove some verbose messages printed before reading the configuration
    file.
  - Suppress progress messages as the kernel and initrd load for
    non-recovery kernel menu entries.
  - Change prepare_grub_to_access_device to handle filesystems
    loop-mounted on file images.
  - Ignore devices loop-mounted from files in 10_linux.
  - Show the boot menu if the previous boot failed, that is if it failed
    to get to the end of one of the normal runlevels.
  - Don't generate /boot/grub/device.map during grub-install or
    grub-mkconfig by default.
  - Adjust upgrade version checks for Ubuntu.
  - Don't display "GRUB loading" unless Shift is held down.
  - Adjust versions of grub-doc and grub-legacy-doc conflicts to tolerate
    our backport of the grub-doc split.
  - Fix LVM/RAID probing in the absence of /boot/grub/device.map.
  - Look for .mo files in /usr/share/locale-langpack as well, in
    preference.
  - Make sure GRUB_TIMEOUT isn't quoted unnecessarily.
  - Probe all devices in 'grub-probe --target=drive' if
    /boot/grub/device.map is missing.
  - Build-depend on qemu-kvm rather than qemu-system for grub-pc tests.
  - Use qemu rather than qemu-system-i386.
  - Program vesafb on BIOS systems rather than efifb.
  - Add a grub-rescue-efi-amd64 package containing a rescue CD-ROM image
    for EFI-AMD64.
  - On Wubi, don't ask for an install device, but just update wubildr
    using the diverted grub-install.
  - When embedding the core image in a post-MBR gap, check for and avoid
    sectors matching any of a list of known signatures.
  - Disable video_bochs and video_cirrus on PC BIOS systems, as probing
    PCI space seems to break on some systems.
* Downgrade "ACPI shutdown failed" error to a debug message, since it can
  cause spurious test failures.

[ Evan Broder ]
* Enable lua from grub-extras.
* Incorporate the bitop library into lua.
* Add enum_pci function to grub module in lua.
* Switch back to gfxpayload=keep by default, unless the video hardware
  is known to not support it.

[ Mario Limonciello ]
* Built part_msdos and vfat into bootx64.efi (LP: #677758)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* strerror.c --- POSIX compatible system error routine
 
2
 
 
3
   Copyright (C) 2007-2010 Free Software Foundation, Inc.
 
4
 
 
5
   This program is free software: you can redistribute it and/or modify
 
6
   it under the terms of the GNU General Public License as published by
 
7
   the Free Software Foundation; either version 3 of the License, or
 
8
   (at your option) any later version.
 
9
 
 
10
   This program is distributed in the hope that it will be useful,
 
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
13
   GNU General Public License for more details.
 
14
 
 
15
   You should have received a copy of the GNU General Public License
 
16
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
17
 
 
18
#include <config.h>
 
19
 
 
20
#include <string.h>
 
21
 
 
22
#if REPLACE_STRERROR
 
23
 
 
24
# include <errno.h>
 
25
# include <stdio.h>
 
26
 
 
27
# if GNULIB_defined_ESOCK /* native Windows platforms */
 
28
#  if HAVE_WINSOCK2_H
 
29
#   include <winsock2.h>
 
30
#  endif
 
31
# endif
 
32
 
 
33
# include "intprops.h"
 
34
 
 
35
/* Use the system functions, not the gnulib overrides in this file.  */
 
36
# undef sprintf
 
37
 
 
38
# undef strerror
 
39
# if ! HAVE_DECL_STRERROR
 
40
#  define strerror(n) NULL
 
41
# endif
 
42
 
 
43
char *
 
44
rpl_strerror (int n)
 
45
{
 
46
  char const *msg = NULL;
 
47
  /* These error messages are taken from glibc/sysdeps/gnu/errlist.c.  */
 
48
  switch (n)
 
49
    {
 
50
# if GNULIB_defined_ETXTBSY
 
51
    case ETXTBSY:
 
52
      msg = "Text file busy";
 
53
      break;
 
54
# endif
 
55
 
 
56
# if GNULIB_defined_ESOCK /* native Windows platforms */
 
57
    /* EWOULDBLOCK is the same as EAGAIN.  */
 
58
    case EINPROGRESS:
 
59
      msg = "Operation now in progress";
 
60
      break;
 
61
    case EALREADY:
 
62
      msg = "Operation already in progress";
 
63
      break;
 
64
    case ENOTSOCK:
 
65
      msg = "Socket operation on non-socket";
 
66
      break;
 
67
    case EDESTADDRREQ:
 
68
      msg = "Destination address required";
 
69
      break;
 
70
    case EMSGSIZE:
 
71
      msg = "Message too long";
 
72
      break;
 
73
    case EPROTOTYPE:
 
74
      msg = "Protocol wrong type for socket";
 
75
      break;
 
76
    case ENOPROTOOPT:
 
77
      msg = "Protocol not available";
 
78
      break;
 
79
    case EPROTONOSUPPORT:
 
80
      msg = "Protocol not supported";
 
81
      break;
 
82
    case ESOCKTNOSUPPORT:
 
83
      msg = "Socket type not supported";
 
84
      break;
 
85
    case EOPNOTSUPP:
 
86
      msg = "Operation not supported";
 
87
      break;
 
88
    case EPFNOSUPPORT:
 
89
      msg = "Protocol family not supported";
 
90
      break;
 
91
    case EAFNOSUPPORT:
 
92
      msg = "Address family not supported by protocol";
 
93
      break;
 
94
    case EADDRINUSE:
 
95
      msg = "Address already in use";
 
96
      break;
 
97
    case EADDRNOTAVAIL:
 
98
      msg = "Cannot assign requested address";
 
99
      break;
 
100
    case ENETDOWN:
 
101
      msg = "Network is down";
 
102
      break;
 
103
    case ENETUNREACH:
 
104
      msg = "Network is unreachable";
 
105
      break;
 
106
    case ENETRESET:
 
107
      msg = "Network dropped connection on reset";
 
108
      break;
 
109
    case ECONNABORTED:
 
110
      msg = "Software caused connection abort";
 
111
      break;
 
112
    case ECONNRESET:
 
113
      msg = "Connection reset by peer";
 
114
      break;
 
115
    case ENOBUFS:
 
116
      msg = "No buffer space available";
 
117
      break;
 
118
    case EISCONN:
 
119
      msg = "Transport endpoint is already connected";
 
120
      break;
 
121
    case ENOTCONN:
 
122
      msg = "Transport endpoint is not connected";
 
123
      break;
 
124
    case ESHUTDOWN:
 
125
      msg = "Cannot send after transport endpoint shutdown";
 
126
      break;
 
127
    case ETOOMANYREFS:
 
128
      msg = "Too many references: cannot splice";
 
129
      break;
 
130
    case ETIMEDOUT:
 
131
      msg = "Connection timed out";
 
132
      break;
 
133
    case ECONNREFUSED:
 
134
      msg = "Connection refused";
 
135
      break;
 
136
    case ELOOP:
 
137
      msg = "Too many levels of symbolic links";
 
138
      break;
 
139
    case EHOSTDOWN:
 
140
      msg = "Host is down";
 
141
      break;
 
142
    case EHOSTUNREACH:
 
143
      msg = "No route to host";
 
144
      break;
 
145
    case EPROCLIM:
 
146
      msg = "Too many processes";
 
147
      break;
 
148
    case EUSERS:
 
149
      msg = "Too many users";
 
150
      break;
 
151
    case EDQUOT:
 
152
      msg = "Disk quota exceeded";
 
153
      break;
 
154
    case ESTALE:
 
155
      msg = "Stale NFS file handle";
 
156
      break;
 
157
    case EREMOTE:
 
158
      msg = "Object is remote";
 
159
      break;
 
160
#  if HAVE_WINSOCK2_H
 
161
    /* WSA_INVALID_HANDLE maps to EBADF */
 
162
    /* WSA_NOT_ENOUGH_MEMORY maps to ENOMEM */
 
163
    /* WSA_INVALID_PARAMETER maps to EINVAL */
 
164
    case WSA_OPERATION_ABORTED:
 
165
      msg = "Overlapped operation aborted";
 
166
      break;
 
167
    case WSA_IO_INCOMPLETE:
 
168
      msg = "Overlapped I/O event object not in signaled state";
 
169
      break;
 
170
    case WSA_IO_PENDING:
 
171
      msg = "Overlapped operations will complete later";
 
172
      break;
 
173
    /* WSAEINTR maps to EINTR */
 
174
    /* WSAEBADF maps to EBADF */
 
175
    /* WSAEACCES maps to EACCES */
 
176
    /* WSAEFAULT maps to EFAULT */
 
177
    /* WSAEINVAL maps to EINVAL */
 
178
    /* WSAEMFILE maps to EMFILE */
 
179
    /* WSAEWOULDBLOCK maps to EWOULDBLOCK */
 
180
    /* WSAEINPROGRESS is EINPROGRESS */
 
181
    /* WSAEALREADY is EALREADY */
 
182
    /* WSAENOTSOCK is ENOTSOCK */
 
183
    /* WSAEDESTADDRREQ is EDESTADDRREQ */
 
184
    /* WSAEMSGSIZE is EMSGSIZE */
 
185
    /* WSAEPROTOTYPE is EPROTOTYPE */
 
186
    /* WSAENOPROTOOPT is ENOPROTOOPT */
 
187
    /* WSAEPROTONOSUPPORT is EPROTONOSUPPORT */
 
188
    /* WSAESOCKTNOSUPPORT is ESOCKTNOSUPPORT */
 
189
    /* WSAEOPNOTSUPP is EOPNOTSUPP */
 
190
    /* WSAEPFNOSUPPORT is EPFNOSUPPORT */
 
191
    /* WSAEAFNOSUPPORT is EAFNOSUPPORT */
 
192
    /* WSAEADDRINUSE is EADDRINUSE */
 
193
    /* WSAEADDRNOTAVAIL is EADDRNOTAVAIL */
 
194
    /* WSAENETDOWN is ENETDOWN */
 
195
    /* WSAENETUNREACH is ENETUNREACH */
 
196
    /* WSAENETRESET is ENETRESET */
 
197
    /* WSAECONNABORTED is ECONNABORTED */
 
198
    /* WSAECONNRESET is ECONNRESET */
 
199
    /* WSAENOBUFS is ENOBUFS */
 
200
    /* WSAEISCONN is EISCONN */
 
201
    /* WSAENOTCONN is ENOTCONN */
 
202
    /* WSAESHUTDOWN is ESHUTDOWN */
 
203
    /* WSAETOOMANYREFS is ETOOMANYREFS */
 
204
    /* WSAETIMEDOUT is ETIMEDOUT */
 
205
    /* WSAECONNREFUSED is ECONNREFUSED */
 
206
    /* WSAELOOP is ELOOP */
 
207
    /* WSAENAMETOOLONG maps to ENAMETOOLONG */
 
208
    /* WSAEHOSTDOWN is EHOSTDOWN */
 
209
    /* WSAEHOSTUNREACH is EHOSTUNREACH */
 
210
    /* WSAENOTEMPTY maps to ENOTEMPTY */
 
211
    /* WSAEPROCLIM is EPROCLIM */
 
212
    /* WSAEUSERS is EUSERS */
 
213
    /* WSAEDQUOT is EDQUOT */
 
214
    /* WSAESTALE is ESTALE */
 
215
    /* WSAEREMOTE is EREMOTE */
 
216
    case WSASYSNOTREADY:
 
217
      msg = "Network subsystem is unavailable";
 
218
      break;
 
219
    case WSAVERNOTSUPPORTED:
 
220
      msg = "Winsock.dll version out of range";
 
221
      break;
 
222
    case WSANOTINITIALISED:
 
223
      msg = "Successful WSAStartup not yet performed";
 
224
      break;
 
225
    case WSAEDISCON:
 
226
      msg = "Graceful shutdown in progress";
 
227
      break;
 
228
    case WSAENOMORE: case WSA_E_NO_MORE:
 
229
      msg = "No more results";
 
230
      break;
 
231
    case WSAECANCELLED: case WSA_E_CANCELLED:
 
232
      msg = "Call was canceled";
 
233
      break;
 
234
    case WSAEINVALIDPROCTABLE:
 
235
      msg = "Procedure call table is invalid";
 
236
      break;
 
237
    case WSAEINVALIDPROVIDER:
 
238
      msg = "Service provider is invalid";
 
239
      break;
 
240
    case WSAEPROVIDERFAILEDINIT:
 
241
      msg = "Service provider failed to initialize";
 
242
      break;
 
243
    case WSASYSCALLFAILURE:
 
244
      msg = "System call failure";
 
245
      break;
 
246
    case WSASERVICE_NOT_FOUND:
 
247
      msg = "Service not found";
 
248
      break;
 
249
    case WSATYPE_NOT_FOUND:
 
250
      msg = "Class type not found";
 
251
      break;
 
252
    case WSAEREFUSED:
 
253
      msg = "Database query was refused";
 
254
      break;
 
255
    case WSAHOST_NOT_FOUND:
 
256
      msg = "Host not found";
 
257
      break;
 
258
    case WSATRY_AGAIN:
 
259
      msg = "Nonauthoritative host not found";
 
260
      break;
 
261
    case WSANO_RECOVERY:
 
262
      msg = "Nonrecoverable error";
 
263
      break;
 
264
    case WSANO_DATA:
 
265
      msg = "Valid name, no data record of requested type";
 
266
      break;
 
267
    /* WSA_QOS_* omitted */
 
268
#  endif
 
269
# endif
 
270
 
 
271
# if GNULIB_defined_ENOMSG
 
272
    case ENOMSG:
 
273
      msg = "No message of desired type";
 
274
      break;
 
275
# endif
 
276
 
 
277
# if GNULIB_defined_EIDRM
 
278
    case EIDRM:
 
279
      msg = "Identifier removed";
 
280
      break;
 
281
# endif
 
282
 
 
283
# if GNULIB_defined_ENOLINK
 
284
    case ENOLINK:
 
285
      msg = "Link has been severed";
 
286
      break;
 
287
# endif
 
288
 
 
289
# if GNULIB_defined_EPROTO
 
290
    case EPROTO:
 
291
      msg = "Protocol error";
 
292
      break;
 
293
# endif
 
294
 
 
295
# if GNULIB_defined_EMULTIHOP
 
296
    case EMULTIHOP:
 
297
      msg = "Multihop attempted";
 
298
      break;
 
299
# endif
 
300
 
 
301
# if GNULIB_defined_EBADMSG
 
302
    case EBADMSG:
 
303
      msg = "Bad message";
 
304
      break;
 
305
# endif
 
306
 
 
307
# if GNULIB_defined_EOVERFLOW
 
308
    case EOVERFLOW:
 
309
      msg = "Value too large for defined data type";
 
310
      break;
 
311
# endif
 
312
 
 
313
# if GNULIB_defined_ENOTSUP
 
314
    case ENOTSUP:
 
315
      msg = "Not supported";
 
316
      break;
 
317
# endif
 
318
 
 
319
# if GNULIB_defined_ESTALE
 
320
    case ESTALE:
 
321
      msg = "Stale NFS file handle";
 
322
      break;
 
323
# endif
 
324
 
 
325
# if GNULIB_defined_ECANCELED
 
326
    case ECANCELED:
 
327
      msg = "Operation canceled";
 
328
      break;
 
329
# endif
 
330
    }
 
331
 
 
332
  if (msg)
 
333
    return (char *) msg;
 
334
 
 
335
  {
 
336
    char *result = strerror (n);
 
337
 
 
338
    if (result == NULL || result[0] == '\0')
 
339
      {
 
340
        static char const fmt[] = "Unknown error (%d)";
 
341
        static char msg_buf[sizeof fmt + INT_STRLEN_BOUND (n)];
 
342
        sprintf (msg_buf, fmt, n);
 
343
        return msg_buf;
 
344
      }
 
345
 
 
346
    return result;
 
347
  }
 
348
}
 
349
 
 
350
#endif