1@node Error Reporting, Memory, Introduction, Top 2@chapter Error Reporting 3@c %MENU% How library functions report errors 4@cindex error reporting 5@cindex reporting errors 6@cindex error codes 7@cindex status codes 8 9Many functions in @theglibc{} detect and report error conditions, 10and sometimes your programs need to check for these error conditions. 11For example, when you open an input file, you should verify that the 12file was actually opened correctly, and print an error message or take 13other appropriate action if the call to the library function failed. 14 15This chapter describes how the error reporting facility works. Your 16program should include the header file @file{errno.h} to use this 17facility. 18@pindex errno.h 19 20@menu 21* Checking for Errors:: How errors are reported by library functions. 22* Error Codes:: Error code macros; all of these expand 23 into integer constant values. 24* Error Messages:: Mapping error codes onto error messages. 25@end menu 26 27@node Checking for Errors, Error Codes, , Error Reporting 28@section Checking for Errors 29 30Most library functions return a special value to indicate that they have 31failed. The special value is typically @code{-1}, a null pointer, or a 32constant such as @code{EOF} that is defined for that purpose. But this 33return value tells you only that an error has occurred. To find out 34what kind of error it was, you need to look at the error code stored in the 35variable @code{errno}. This variable is declared in the header file 36@file{errno.h}. 37@pindex errno.h 38 39@deftypevr {Variable} {volatile int} errno 40@standards{ISO, errno.h} 41The variable @code{errno} contains the system error number. You can 42change the value of @code{errno}. 43 44Since @code{errno} is declared @code{volatile}, it might be changed 45asynchronously by a signal handler; see @ref{Defining Handlers}. 46However, a properly written signal handler saves and restores the value 47of @code{errno}, so you generally do not need to worry about this 48possibility except when writing signal handlers. 49 50The initial value of @code{errno} at program startup is zero. In many 51cases, when a library function encounters an error, it will set 52@code{errno} to a non-zero value to indicate what specific error 53condition occurred. The documentation for each function lists the 54error conditions that are possible for that function. Not all library 55functions use this mechanism; some return an error code directly, 56instead. 57 58@strong{Warning:} Many library functions may set @code{errno} to some 59meaningless non-zero value even if they did not encounter any errors, 60and even if they return error codes directly. Therefore, it is 61usually incorrect to check @emph{whether} an error occurred by 62inspecting the value of @code{errno}. The proper way to check for 63error is documented for each function. 64 65@strong{Portability Note:} @w{ISO C} specifies @code{errno} as a 66``modifiable lvalue'' rather than as a variable, permitting it to be 67implemented as a macro. For example, its expansion might involve a 68function call, like @w{@code{*__errno_location ()}}. In fact, that is 69what it is 70on @gnulinuxhurdsystems{}. @Theglibc{}, on each system, does 71whatever is right for the particular system. 72 73There are a few library functions, like @code{sqrt} and @code{atan}, 74that return a perfectly legitimate value in case of an error, but also 75set @code{errno}. For these functions, if you want to check to see 76whether an error occurred, the recommended method is to set @code{errno} 77to zero before calling the function, and then check its value afterward. 78@end deftypevr 79 80@pindex errno.h 81All the error codes have symbolic names; they are macros defined in 82@file{errno.h}. The names start with @samp{E} and an upper-case 83letter or digit; you should consider names of this form to be 84reserved names. @xref{Reserved Names}. 85 86The error code values are all positive integers and are all distinct, 87with one exception: @code{EWOULDBLOCK} and @code{EAGAIN} are the same. 88Since the values are distinct, you can use them as labels in a 89@code{switch} statement; just don't use both @code{EWOULDBLOCK} and 90@code{EAGAIN}. Your program should not make any other assumptions about 91the specific values of these symbolic constants. 92 93The value of @code{errno} doesn't necessarily have to correspond to any 94of these macros, since some library functions might return other error 95codes of their own for other situations. The only values that are 96guaranteed to be meaningful for a particular library function are the 97ones that this manual lists for that function. 98 99Except on @gnuhurdsystems{}, almost any system call can return @code{EFAULT} if 100it is given an invalid pointer as an argument. Since this could only 101happen as a result of a bug in your program, and since it will not 102happen on @gnuhurdsystems{}, we have saved space by not mentioning 103@code{EFAULT} in the descriptions of individual functions. 104 105In some Unix systems, many system calls can also return @code{EFAULT} if 106given as an argument a pointer into the stack, and the kernel for some 107obscure reason fails in its attempt to extend the stack. If this ever 108happens, you should probably try using statically or dynamically 109allocated memory instead of stack memory on that system. 110 111@node Error Codes, Error Messages, Checking for Errors, Error Reporting 112@section Error Codes 113 114@pindex errno.h 115The error code macros are defined in the header file @file{errno.h}. 116All of them expand into integer constant values. Some of these error 117codes can't occur on @gnusystems{}, but they can occur using @theglibc{} 118on other systems. 119 120@deftypevr Macro int EPERM 121@standards{POSIX.1, errno.h} 122@errno{EPERM, 1, Operation not permitted} 123Only the owner of the file (or other resource) 124or processes with special privileges can perform the operation. 125@end deftypevr 126 127@deftypevr Macro int ENOENT 128@standards{POSIX.1, errno.h} 129@errno{ENOENT, 2, No such file or directory} 130This is a ``file doesn't exist'' error 131for ordinary files that are referenced in contexts where they are 132expected to already exist. 133@end deftypevr 134 135@deftypevr Macro int ESRCH 136@standards{POSIX.1, errno.h} 137@errno{ESRCH, 3, No such process} 138No process matches the specified process ID. 139@end deftypevr 140 141@deftypevr Macro int EINTR 142@standards{POSIX.1, errno.h} 143@errno{EINTR, 4, Interrupted system call} 144An asynchronous signal occurred and prevented 145completion of the call. When this happens, you should try the call 146again. 147 148You can choose to have functions resume after a signal that is handled, 149rather than failing with @code{EINTR}; see @ref{Interrupted 150Primitives}. 151@end deftypevr 152 153@deftypevr Macro int EIO 154@standards{POSIX.1, errno.h} 155@errno{EIO, 5, Input/output error} 156Usually used for physical read or write errors. 157@end deftypevr 158 159@deftypevr Macro int ENXIO 160@standards{POSIX.1, errno.h} 161@errno{ENXIO, 6, No such device or address} 162The system tried to use the device 163represented by a file you specified, and it couldn't find the device. 164This can mean that the device file was installed incorrectly, or that 165the physical device is missing or not correctly attached to the 166computer. 167@end deftypevr 168 169@deftypevr Macro int E2BIG 170@standards{POSIX.1, errno.h} 171@errno{E2BIG, 7, Argument list too long} 172Used when the arguments passed to a new program 173being executed with one of the @code{exec} functions (@pxref{Executing a 174File}) occupy too much memory space. This condition never arises on 175@gnuhurdsystems{}. 176@end deftypevr 177 178@deftypevr Macro int ENOEXEC 179@standards{POSIX.1, errno.h} 180@errno{ENOEXEC, 8, Exec format error} 181Invalid executable file format. This condition is detected by the 182@code{exec} functions; see @ref{Executing a File}. 183@end deftypevr 184 185@deftypevr Macro int EBADF 186@standards{POSIX.1, errno.h} 187@errno{EBADF, 9, Bad file descriptor} 188For example, I/O on a descriptor that has been 189closed or reading from a descriptor open only for writing (or vice 190versa). 191@end deftypevr 192 193@deftypevr Macro int ECHILD 194@standards{POSIX.1, errno.h} 195@errno{ECHILD, 10, No child processes} 196This error happens on operations that are 197supposed to manipulate child processes, when there aren't any processes 198to manipulate. 199@end deftypevr 200 201@deftypevr Macro int EDEADLK 202@standards{POSIX.1, errno.h} 203@errno{EDEADLK, 11, Resource deadlock avoided} 204Allocating a system resource would have resulted in a 205deadlock situation. The system does not guarantee that it will notice 206all such situations. This error means you got lucky and the system 207noticed; it might just hang. @xref{File Locks}, for an example. 208@end deftypevr 209 210@deftypevr Macro int ENOMEM 211@standards{POSIX.1, errno.h} 212@errno{ENOMEM, 12, Cannot allocate memory} 213The system cannot allocate more virtual memory 214because its capacity is full. 215@end deftypevr 216 217@deftypevr Macro int EACCES 218@standards{POSIX.1, errno.h} 219@errno{EACCES, 13, Permission denied} 220The file permissions do not allow the attempted operation. 221@end deftypevr 222 223@deftypevr Macro int EFAULT 224@standards{POSIX.1, errno.h} 225@errno{EFAULT, 14, Bad address} 226An invalid pointer was detected. 227On @gnuhurdsystems{}, this error never happens; you get a signal instead. 228@end deftypevr 229 230@deftypevr Macro int ENOTBLK 231@standards{BSD, errno.h} 232@errno{ENOTBLK, 15, Block device required} 233A file that isn't a block special file was given in a situation that 234requires one. For example, trying to mount an ordinary file as a file 235system in Unix gives this error. 236@end deftypevr 237 238@deftypevr Macro int EBUSY 239@standards{POSIX.1, errno.h} 240@errno{EBUSY, 16, Device or resource busy} 241A system resource that can't be shared is already in use. 242For example, if you try to delete a file that is the root of a currently 243mounted filesystem, you get this error. 244@end deftypevr 245 246@deftypevr Macro int EEXIST 247@standards{POSIX.1, errno.h} 248@errno{EEXIST, 17, File exists} 249An existing file was specified in a context where it only 250makes sense to specify a new file. 251@end deftypevr 252 253@deftypevr Macro int EXDEV 254@standards{POSIX.1, errno.h} 255@errno{EXDEV, 18, Invalid cross-device link} 256An attempt to make an improper link across file systems was detected. 257This happens not only when you use @code{link} (@pxref{Hard Links}) but 258also when you rename a file with @code{rename} (@pxref{Renaming Files}). 259@end deftypevr 260 261@deftypevr Macro int ENODEV 262@standards{POSIX.1, errno.h} 263@errno{ENODEV, 19, No such device} 264The wrong type of device was given to a function that expects a 265particular sort of device. 266@end deftypevr 267 268@deftypevr Macro int ENOTDIR 269@standards{POSIX.1, errno.h} 270@errno{ENOTDIR, 20, Not a directory} 271A file that isn't a directory was specified when a directory is required. 272@end deftypevr 273 274@deftypevr Macro int EISDIR 275@standards{POSIX.1, errno.h} 276@errno{EISDIR, 21, Is a directory} 277You cannot open a directory for writing, 278or create or remove hard links to it. 279@end deftypevr 280 281@deftypevr Macro int EINVAL 282@standards{POSIX.1, errno.h} 283@errno{EINVAL, 22, Invalid argument} 284This is used to indicate various kinds of problems 285with passing the wrong argument to a library function. 286@end deftypevr 287 288@deftypevr Macro int EMFILE 289@standards{POSIX.1, errno.h} 290@errno{EMFILE, 24, Too many open files} 291The current process has too many files open and can't open any more. 292Duplicate descriptors do count toward this limit. 293 294In BSD and GNU, the number of open files is controlled by a resource 295limit that can usually be increased. If you get this error, you might 296want to increase the @code{RLIMIT_NOFILE} limit or make it unlimited; 297@pxref{Limits on Resources}. 298@end deftypevr 299 300@deftypevr Macro int ENFILE 301@standards{POSIX.1, errno.h} 302@errno{ENFILE, 23, Too many open files in system} 303There are too many distinct file openings in the entire system. Note 304that any number of linked channels count as just one file opening; see 305@ref{Linked Channels}. This error never occurs on @gnuhurdsystems{}. 306@end deftypevr 307 308@deftypevr Macro int ENOTTY 309@standards{POSIX.1, errno.h} 310@errno{ENOTTY, 25, Inappropriate ioctl for device} 311Inappropriate I/O control operation, such as trying to set terminal 312modes on an ordinary file. 313@end deftypevr 314 315@deftypevr Macro int ETXTBSY 316@standards{BSD, errno.h} 317@errno{ETXTBSY, 26, Text file busy} 318An attempt to execute a file that is currently open for writing, or 319write to a file that is currently being executed. Often using a 320debugger to run a program is considered having it open for writing and 321will cause this error. (The name stands for ``text file busy''.) This 322is not an error on @gnuhurdsystems{}; the text is copied as necessary. 323@end deftypevr 324 325@deftypevr Macro int EFBIG 326@standards{POSIX.1, errno.h} 327@errno{EFBIG, 27, File too large} 328The size of a file would be larger than allowed by the system. 329@end deftypevr 330 331@deftypevr Macro int ENOSPC 332@standards{POSIX.1, errno.h} 333@errno{ENOSPC, 28, No space left on device} 334Write operation on a file failed because the 335disk is full. 336@end deftypevr 337 338@deftypevr Macro int ESPIPE 339@standards{POSIX.1, errno.h} 340@errno{ESPIPE, 29, Illegal seek} 341Invalid seek operation (such as on a pipe). 342@end deftypevr 343 344@deftypevr Macro int EROFS 345@standards{POSIX.1, errno.h} 346@errno{EROFS, 30, Read-only file system} 347An attempt was made to modify something on a read-only file system. 348@end deftypevr 349 350@deftypevr Macro int EMLINK 351@standards{POSIX.1, errno.h} 352@errno{EMLINK, 31, Too many links} 353The link count of a single file would become too large. 354@code{rename} can cause this error if the file being renamed already has 355as many links as it can take (@pxref{Renaming Files}). 356@end deftypevr 357 358@deftypevr Macro int EPIPE 359@standards{POSIX.1, errno.h} 360@errno{EPIPE, 32, Broken pipe} 361There is no process reading from the other end of a pipe. 362Every library function that returns this error code also generates a 363@code{SIGPIPE} signal; this signal terminates the program if not handled 364or blocked. Thus, your program will never actually see @code{EPIPE} 365unless it has handled or blocked @code{SIGPIPE}. 366@end deftypevr 367 368@deftypevr Macro int EDOM 369@standards{ISO, errno.h} 370@errno{EDOM, 33, Numerical argument out of domain} 371Used by mathematical functions when an argument value does 372not fall into the domain over which the function is defined. 373@end deftypevr 374 375@deftypevr Macro int ERANGE 376@standards{ISO, errno.h} 377@errno{ERANGE, 34, Numerical result out of range} 378Used by mathematical functions when the result value is 379not representable because of overflow or underflow. 380@end deftypevr 381 382@deftypevr Macro int EAGAIN 383@standards{POSIX.1, errno.h} 384@errno{EAGAIN, 35, Resource temporarily unavailable} 385The call might work if you try again 386later. The macro @code{EWOULDBLOCK} is another name for @code{EAGAIN}; 387they are always the same in @theglibc{}. 388 389This error can happen in a few different situations: 390 391@itemize @bullet 392@item 393An operation that would block was attempted on an object that has 394non-blocking mode selected. Trying the same operation again will block 395until some external condition makes it possible to read, write, or 396connect (whatever the operation). You can use @code{select} to find out 397when the operation will be possible; @pxref{Waiting for I/O}. 398 399@strong{Portability Note:} In many older Unix systems, this condition 400was indicated by @code{EWOULDBLOCK}, which was a distinct error code 401different from @code{EAGAIN}. To make your program portable, you should 402check for both codes and treat them the same. 403 404@item 405A temporary resource shortage made an operation impossible. @code{fork} 406can return this error. It indicates that the shortage is expected to 407pass, so your program can try the call again later and it may succeed. 408It is probably a good idea to delay for a few seconds before trying it 409again, to allow time for other processes to release scarce resources. 410Such shortages are usually fairly serious and affect the whole system, 411so usually an interactive program should report the error to the user 412and return to its command loop. 413@end itemize 414@end deftypevr 415 416@deftypevr Macro int EWOULDBLOCK 417@standards{BSD, errno.h} 418@errno{EWOULDBLOCK, EAGAIN, Operation would block} 419In @theglibc{}, this is another name for @code{EAGAIN} (above). 420The values are always the same, on every operating system. 421 422C libraries in many older Unix systems have @code{EWOULDBLOCK} as a 423separate error code. 424@end deftypevr 425 426@deftypevr Macro int EINPROGRESS 427@standards{BSD, errno.h} 428@errno{EINPROGRESS, 36, Operation now in progress} 429An operation that cannot complete immediately was initiated on an object 430that has non-blocking mode selected. Some functions that must always 431block (such as @code{connect}; @pxref{Connecting}) never return 432@code{EAGAIN}. Instead, they return @code{EINPROGRESS} to indicate that 433the operation has begun and will take some time. Attempts to manipulate 434the object before the call completes return @code{EALREADY}. You can 435use the @code{select} function to find out when the pending operation 436has completed; @pxref{Waiting for I/O}. 437@end deftypevr 438 439@deftypevr Macro int EALREADY 440@standards{BSD, errno.h} 441@errno{EALREADY, 37, Operation already in progress} 442An operation is already in progress on an object that has non-blocking 443mode selected. 444@end deftypevr 445 446@deftypevr Macro int ENOTSOCK 447@standards{BSD, errno.h} 448@errno{ENOTSOCK, 38, Socket operation on non-socket} 449A file that isn't a socket was specified when a socket is required. 450@end deftypevr 451 452@deftypevr Macro int EMSGSIZE 453@standards{BSD, errno.h} 454@errno{EMSGSIZE, 40, Message too long} 455The size of a message sent on a socket was larger than the supported 456maximum size. 457@end deftypevr 458 459@deftypevr Macro int EPROTOTYPE 460@standards{BSD, errno.h} 461@errno{EPROTOTYPE, 41, Protocol wrong type for socket} 462The socket type does not support the requested communications protocol. 463@end deftypevr 464 465@deftypevr Macro int ENOPROTOOPT 466@standards{BSD, errno.h} 467@errno{ENOPROTOOPT, 42, Protocol not available} 468You specified a socket option that doesn't make sense for the 469particular protocol being used by the socket. @xref{Socket Options}. 470@end deftypevr 471 472@deftypevr Macro int EPROTONOSUPPORT 473@standards{BSD, errno.h} 474@errno{EPROTONOSUPPORT, 43, Protocol not supported} 475The socket domain does not support the requested communications protocol 476(perhaps because the requested protocol is completely invalid). 477@xref{Creating a Socket}. 478@end deftypevr 479 480@deftypevr Macro int ESOCKTNOSUPPORT 481@standards{BSD, errno.h} 482@errno{ESOCKTNOSUPPORT, 44, Socket type not supported} 483The socket type is not supported. 484@end deftypevr 485 486@deftypevr Macro int EOPNOTSUPP 487@standards{BSD, errno.h} 488@errno{EOPNOTSUPP, 45, Operation not supported} 489The operation you requested is not supported. Some socket functions 490don't make sense for all types of sockets, and others may not be 491implemented for all communications protocols. On @gnuhurdsystems{}, this 492error can happen for many calls when the object does not support the 493particular operation; it is a generic indication that the server knows 494nothing to do for that call. 495@end deftypevr 496 497@deftypevr Macro int EPFNOSUPPORT 498@standards{BSD, errno.h} 499@errno{EPFNOSUPPORT, 46, Protocol family not supported} 500The socket communications protocol family you requested is not supported. 501@end deftypevr 502 503@deftypevr Macro int EAFNOSUPPORT 504@standards{BSD, errno.h} 505@errno{EAFNOSUPPORT, 47, Address family not supported by protocol} 506The address family specified for a socket is not supported; it is 507inconsistent with the protocol being used on the socket. @xref{Sockets}. 508@end deftypevr 509 510@deftypevr Macro int EADDRINUSE 511@standards{BSD, errno.h} 512@errno{EADDRINUSE, 48, Address already in use} 513The requested socket address is already in use. @xref{Socket Addresses}. 514@end deftypevr 515 516@deftypevr Macro int EADDRNOTAVAIL 517@standards{BSD, errno.h} 518@errno{EADDRNOTAVAIL, 49, Cannot assign requested address} 519The requested socket address is not available; for example, you tried 520to give a socket a name that doesn't match the local host name. 521@xref{Socket Addresses}. 522@end deftypevr 523 524@deftypevr Macro int ENETDOWN 525@standards{BSD, errno.h} 526@errno{ENETDOWN, 50, Network is down} 527A socket operation failed because the network was down. 528@end deftypevr 529 530@deftypevr Macro int ENETUNREACH 531@standards{BSD, errno.h} 532@errno{ENETUNREACH, 51, Network is unreachable} 533A socket operation failed because the subnet containing the remote host 534was unreachable. 535@end deftypevr 536 537@deftypevr Macro int ENETRESET 538@standards{BSD, errno.h} 539@errno{ENETRESET, 52, Network dropped connection on reset} 540A network connection was reset because the remote host crashed. 541@end deftypevr 542 543@deftypevr Macro int ECONNABORTED 544@standards{BSD, errno.h} 545@errno{ECONNABORTED, 53, Software caused connection abort} 546A network connection was aborted locally. 547@end deftypevr 548 549@deftypevr Macro int ECONNRESET 550@standards{BSD, errno.h} 551@errno{ECONNRESET, 54, Connection reset by peer} 552A network connection was closed for reasons outside the control of the 553local host, such as by the remote machine rebooting or an unrecoverable 554protocol violation. 555@end deftypevr 556 557@deftypevr Macro int ENOBUFS 558@standards{BSD, errno.h} 559@errno{ENOBUFS, 55, No buffer space available} 560The kernel's buffers for I/O operations are all in use. In GNU, this 561error is always synonymous with @code{ENOMEM}; you may get one or the 562other from network operations. 563@end deftypevr 564 565@deftypevr Macro int EISCONN 566@standards{BSD, errno.h} 567@errno{EISCONN, 56, Transport endpoint is already connected} 568You tried to connect a socket that is already connected. 569@xref{Connecting}. 570@end deftypevr 571 572@deftypevr Macro int ENOTCONN 573@standards{BSD, errno.h} 574@errno{ENOTCONN, 57, Transport endpoint is not connected} 575The socket is not connected to anything. You get this error when you 576try to transmit data over a socket, without first specifying a 577destination for the data. For a connectionless socket (for datagram 578protocols, such as UDP), you get @code{EDESTADDRREQ} instead. 579@end deftypevr 580 581@deftypevr Macro int EDESTADDRREQ 582@standards{BSD, errno.h} 583@errno{EDESTADDRREQ, 39, Destination address required} 584No default destination address was set for the socket. You get this 585error when you try to transmit data over a connectionless socket, 586without first specifying a destination for the data with @code{connect}. 587@end deftypevr 588 589@deftypevr Macro int ESHUTDOWN 590@standards{BSD, errno.h} 591@errno{ESHUTDOWN, 58, Cannot send after transport endpoint shutdown} 592The socket has already been shut down. 593@end deftypevr 594 595@deftypevr Macro int ETOOMANYREFS 596@standards{BSD, errno.h} 597@errno{ETOOMANYREFS, 59, Too many references: cannot splice} 598@end deftypevr 599 600@deftypevr Macro int ETIMEDOUT 601@standards{BSD, errno.h} 602@errno{ETIMEDOUT, 60, Connection timed out} 603A socket operation with a specified timeout received no response during 604the timeout period. 605@end deftypevr 606 607@deftypevr Macro int ECONNREFUSED 608@standards{BSD, errno.h} 609@errno{ECONNREFUSED, 61, Connection refused} 610A remote host refused to allow the network connection (typically because 611it is not running the requested service). 612@end deftypevr 613 614@deftypevr Macro int ELOOP 615@standards{BSD, errno.h} 616@errno{ELOOP, 62, Too many levels of symbolic links} 617Too many levels of symbolic links were encountered in looking up a file name. 618This often indicates a cycle of symbolic links. 619@end deftypevr 620 621@deftypevr Macro int ENAMETOOLONG 622@standards{POSIX.1, errno.h} 623@errno{ENAMETOOLONG, 63, File name too long} 624Filename too long (longer than @code{PATH_MAX}; @pxref{Limits for 625Files}) or host name too long (in @code{gethostname} or 626@code{sethostname}; @pxref{Host Identification}). 627@end deftypevr 628 629@deftypevr Macro int EHOSTDOWN 630@standards{BSD, errno.h} 631@errno{EHOSTDOWN, 64, Host is down} 632The remote host for a requested network connection is down. 633@end deftypevr 634 635@deftypevr Macro int EHOSTUNREACH 636@standards{BSD, errno.h} 637@errno{EHOSTUNREACH, 65, No route to host} 638The remote host for a requested network connection is not reachable. 639@end deftypevr 640 641@deftypevr Macro int ENOTEMPTY 642@standards{POSIX.1, errno.h} 643@errno{ENOTEMPTY, 66, Directory not empty} 644Directory not empty, where an empty directory was expected. Typically, 645this error occurs when you are trying to delete a directory. 646@end deftypevr 647 648@deftypevr Macro int EPROCLIM 649@standards{BSD, errno.h} 650@errno{EPROCLIM, 67, Too many processes} 651This means that the per-user limit on new process would be exceeded by 652an attempted @code{fork}. @xref{Limits on Resources}, for details on 653the @code{RLIMIT_NPROC} limit. 654@end deftypevr 655 656@deftypevr Macro int EUSERS 657@standards{BSD, errno.h} 658@errno{EUSERS, 68, Too many users} 659The file quota system is confused because there are too many users. 660@c This can probably happen in a GNU system when using NFS. 661@end deftypevr 662 663@deftypevr Macro int EDQUOT 664@standards{BSD, errno.h} 665@errno{EDQUOT, 69, Disk quota exceeded} 666The user's disk quota was exceeded. 667@end deftypevr 668 669@deftypevr Macro int ESTALE 670@standards{BSD, errno.h} 671@errno{ESTALE, 70, Stale file handle} 672This indicates an internal confusion in the 673file system which is due to file system rearrangements on the server host 674for NFS file systems or corruption in other file systems. 675Repairing this condition usually requires unmounting, possibly repairing 676and remounting the file system. 677@end deftypevr 678 679@deftypevr Macro int EREMOTE 680@standards{BSD, errno.h} 681@errno{EREMOTE, 71, Object is remote} 682An attempt was made to NFS-mount a remote file system with a file name that 683already specifies an NFS-mounted file. 684(This is an error on some operating systems, but we expect it to work 685properly on @gnuhurdsystems{}, making this error code impossible.) 686@end deftypevr 687 688@deftypevr Macro int EBADRPC 689@standards{BSD, errno.h} 690@errno{EBADRPC, 72, RPC struct is bad} 691@end deftypevr 692 693@deftypevr Macro int ERPCMISMATCH 694@standards{BSD, errno.h} 695@errno{ERPCMISMATCH, 73, RPC version wrong} 696@end deftypevr 697 698@deftypevr Macro int EPROGUNAVAIL 699@standards{BSD, errno.h} 700@errno{EPROGUNAVAIL, 74, RPC program not available} 701@end deftypevr 702 703@deftypevr Macro int EPROGMISMATCH 704@standards{BSD, errno.h} 705@errno{EPROGMISMATCH, 75, RPC program version wrong} 706@end deftypevr 707 708@deftypevr Macro int EPROCUNAVAIL 709@standards{BSD, errno.h} 710@errno{EPROCUNAVAIL, 76, RPC bad procedure for program} 711@end deftypevr 712 713@deftypevr Macro int ENOLCK 714@standards{POSIX.1, errno.h} 715@errno{ENOLCK, 77, No locks available} 716This is used by the file locking facilities; see 717@ref{File Locks}. This error is never generated by @gnuhurdsystems{}, but 718it can result from an operation to an NFS server running another 719operating system. 720@end deftypevr 721 722@deftypevr Macro int EFTYPE 723@standards{BSD, errno.h} 724@errno{EFTYPE, 79, Inappropriate file type or format} 725The file was the wrong type for the 726operation, or a data file had the wrong format. 727 728On some systems @code{chmod} returns this error if you try to set the 729sticky bit on a non-directory file; @pxref{Setting Permissions}. 730@end deftypevr 731 732@deftypevr Macro int EAUTH 733@standards{BSD, errno.h} 734@errno{EAUTH, 80, Authentication error} 735@end deftypevr 736 737@deftypevr Macro int ENEEDAUTH 738@standards{BSD, errno.h} 739@errno{ENEEDAUTH, 81, Need authenticator} 740@end deftypevr 741 742@deftypevr Macro int ENOSYS 743@standards{POSIX.1, errno.h} 744@errno{ENOSYS, 78, Function not implemented} 745This indicates that the function called is 746not implemented at all, either in the C library itself or in the 747operating system. When you get this error, you can be sure that this 748particular function will always fail with @code{ENOSYS} unless you 749install a new version of the C library or the operating system. 750@end deftypevr 751 752@deftypevr Macro int ELIBEXEC 753@standards{GNU, errno.h} 754@errno{ELIBEXEC, 83, Cannot exec a shared library directly} 755@end deftypevr 756 757@deftypevr Macro int ENOTSUP 758@standards{POSIX.1, errno.h} 759@errno{ENOTSUP, 118, Not supported} 760A function returns this error when certain parameter 761values are valid, but the functionality they request is not available. 762This can mean that the function does not implement a particular command 763or option value or flag bit at all. For functions that operate on some 764object given in a parameter, such as a file descriptor or a port, it 765might instead mean that only @emph{that specific object} (file 766descriptor, port, etc.) is unable to support the other parameters given; 767different file descriptors might support different ranges of parameter 768values. 769 770If the entire function is not available at all in the implementation, 771it returns @code{ENOSYS} instead. 772@end deftypevr 773 774@deftypevr Macro int EILSEQ 775@standards{ISO, errno.h} 776@errno{EILSEQ, 106, Invalid or incomplete multibyte or wide character} 777While decoding a multibyte character the function came along an invalid 778or an incomplete sequence of bytes or the given wide character is invalid. 779@end deftypevr 780 781@deftypevr Macro int EBACKGROUND 782@standards{GNU, errno.h} 783@errno{EBACKGROUND, 100, Inappropriate operation for background process} 784On @gnuhurdsystems{}, servers supporting the @code{term} protocol return 785this error for certain operations when the caller is not in the 786foreground process group of the terminal. Users do not usually see this 787error because functions such as @code{read} and @code{write} translate 788it into a @code{SIGTTIN} or @code{SIGTTOU} signal. @xref{Job Control}, 789for information on process groups and these signals. 790@end deftypevr 791 792@deftypevr Macro int EDIED 793@standards{GNU, errno.h} 794@errno{EDIED, 101, Translator died} 795On @gnuhurdsystems{}, opening a file returns this error when the file is 796translated by a program and the translator program dies while starting 797up, before it has connected to the file. 798@end deftypevr 799 800@deftypevr Macro int ED 801@standards{GNU, errno.h} 802@errno{ED, 102, ?} 803The experienced user will know what is wrong. 804@c This error code is a joke. Its perror text is part of the joke. 805@c Don't change it. 806@end deftypevr 807 808@deftypevr Macro int EGREGIOUS 809@standards{GNU, errno.h} 810@errno{EGREGIOUS, 103, You really blew it this time} 811You did @strong{what}? 812@end deftypevr 813 814@deftypevr Macro int EIEIO 815@standards{GNU, errno.h} 816@errno{EIEIO, 104, Computer bought the farm} 817Go home and have a glass of warm, dairy-fresh milk. 818@c Okay. Since you are dying to know, I'll tell you. 819@c This is a joke, obviously. There is a children's song which begins, 820@c "Old McDonald had a farm, e-i-e-i-o." Every time I see the (real) 821@c errno macro EIO, I think about that song. Probably most of my 822@c compatriots who program on Unix do, too. One of them must have stayed 823@c up a little too late one night and decided to add it to Hurd or Glibc. 824@c Whoever did it should be castigated, but it made me laugh. 825@c --jtobey@channel1.com 826@c 827@c "bought the farm" means "died". -jtobey 828@c 829@c Translators, please do not translate this litteraly, translate it into 830@c an idiomatic funny way of saying that the computer died. 831@end deftypevr 832 833@deftypevr Macro int EGRATUITOUS 834@standards{GNU, errno.h} 835@errno{EGRATUITOUS, 105, Gratuitous error} 836This error code has no purpose. 837@end deftypevr 838 839@deftypevr Macro int EBADMSG 840@standards{XOPEN, errno.h} 841@errno{EBADMSG, 107, Bad message} 842@end deftypevr 843 844@deftypevr Macro int EIDRM 845@standards{XOPEN, errno.h} 846@errno{EIDRM, 108, Identifier removed} 847@end deftypevr 848 849@deftypevr Macro int EMULTIHOP 850@standards{XOPEN, errno.h} 851@errno{EMULTIHOP, 109, Multihop attempted} 852@end deftypevr 853 854@deftypevr Macro int ENODATA 855@standards{XOPEN, errno.h} 856@errno{ENODATA, 110, No data available} 857@end deftypevr 858 859@deftypevr Macro int ENOLINK 860@standards{XOPEN, errno.h} 861@errno{ENOLINK, 111, Link has been severed} 862@end deftypevr 863 864@deftypevr Macro int ENOMSG 865@standards{XOPEN, errno.h} 866@errno{ENOMSG, 112, No message of desired type} 867@end deftypevr 868 869@deftypevr Macro int ENOSR 870@standards{XOPEN, errno.h} 871@errno{ENOSR, 113, Out of streams resources} 872@end deftypevr 873 874@deftypevr Macro int ENOSTR 875@standards{XOPEN, errno.h} 876@errno{ENOSTR, 114, Device not a stream} 877@end deftypevr 878 879@deftypevr Macro int EOVERFLOW 880@standards{XOPEN, errno.h} 881@errno{EOVERFLOW, 115, Value too large for defined data type} 882@end deftypevr 883 884@deftypevr Macro int EPROTO 885@standards{XOPEN, errno.h} 886@errno{EPROTO, 116, Protocol error} 887@end deftypevr 888 889@deftypevr Macro int ETIME 890@standards{XOPEN, errno.h} 891@errno{ETIME, 117, Timer expired} 892@end deftypevr 893 894@deftypevr Macro int ECANCELED 895@standards{POSIX.1, errno.h} 896@errno{ECANCELED, 119, Operation canceled} 897An asynchronous operation was canceled before it 898completed. @xref{Asynchronous I/O}. When you call @code{aio_cancel}, 899the normal result is for the operations affected to complete with this 900error; @pxref{Cancel AIO Operations}. 901@end deftypevr 902 903@deftypevr Macro int EOWNERDEAD 904@standards{GNU, errno.h} 905@errno{EOWNERDEAD, 120, Owner died} 906@end deftypevr 907 908@deftypevr Macro int ENOTRECOVERABLE 909@standards{GNU, errno.h} 910@errno{ENOTRECOVERABLE, 121, State not recoverable} 911@end deftypevr 912 913 914@emph{The following error codes are defined by the Linux/i386 kernel. 915They are not yet documented.} 916 917@deftypevr Macro int ERESTART 918@standards{Linux???, errno.h} 919@errno{ERESTART, ???/85, Interrupted system call should be restarted} 920@end deftypevr 921 922@deftypevr Macro int ECHRNG 923@standards{Linux???, errno.h} 924@errno{ECHRNG, ???/44, Channel number out of range} 925@end deftypevr 926 927@deftypevr Macro int EL2NSYNC 928@standards{Obsolete, errno.h} 929@errno{EL2NSYNC, ???/45, Level 2 not synchronized} 930@end deftypevr 931 932@deftypevr Macro int EL3HLT 933@standards{Obsolete, errno.h} 934@errno{EL3HLT, ???/46, Level 3 halted} 935@end deftypevr 936 937@deftypevr Macro int EL3RST 938@standards{Obsolete, errno.h} 939@errno{EL3RST, ???/47, Level 3 reset} 940@end deftypevr 941 942@deftypevr Macro int ELNRNG 943@standards{Linux???, errno.h} 944@errno{ELNRNG, ???/48, Link number out of range} 945@end deftypevr 946 947@deftypevr Macro int EUNATCH 948@standards{Linux???, errno.h} 949@errno{EUNATCH, ???/49, Protocol driver not attached} 950@end deftypevr 951 952@deftypevr Macro int ENOCSI 953@standards{Linux???, errno.h} 954@errno{ENOCSI, ???/50, No CSI structure available} 955@end deftypevr 956 957@deftypevr Macro int EL2HLT 958@standards{Obsolete, errno.h} 959@errno{EL2HLT, ???/51, Level 2 halted} 960@end deftypevr 961 962@deftypevr Macro int EBADE 963@standards{Linux???, errno.h} 964@errno{EBADE, ???/52, Invalid exchange} 965@end deftypevr 966 967@deftypevr Macro int EBADR 968@standards{Linux???, errno.h} 969@errno{EBADR, ???/53, Invalid request descriptor} 970@end deftypevr 971 972@deftypevr Macro int EXFULL 973@standards{Linux???, errno.h} 974@errno{EXFULL, ???/54, Exchange full} 975@end deftypevr 976 977@deftypevr Macro int ENOANO 978@standards{Linux???, errno.h} 979@errno{ENOANO, ???/55, No anode} 980@end deftypevr 981 982@deftypevr Macro int EBADRQC 983@standards{Linux???, errno.h} 984@errno{EBADRQC, ???/56, Invalid request code} 985@end deftypevr 986 987@deftypevr Macro int EBADSLT 988@standards{Linux???, errno.h} 989@errno{EBADSLT, ???/57, Invalid slot} 990@end deftypevr 991 992@deftypevr Macro int EDEADLOCK 993@standards{Linux???, errno.h} 994@errno{EDEADLOCK, ???/58, File locking deadlock error} 995@end deftypevr 996 997@deftypevr Macro int EBFONT 998@standards{Linux???, errno.h} 999@errno{EBFONT, ???/59, Bad font file format} 1000@end deftypevr 1001 1002@deftypevr Macro int ENONET 1003@standards{Linux???, errno.h} 1004@errno{ENONET, ???/64, Machine is not on the network} 1005@end deftypevr 1006 1007@deftypevr Macro int ENOPKG 1008@standards{Linux???, errno.h} 1009@errno{ENOPKG, ???/65, Package not installed} 1010@end deftypevr 1011 1012@deftypevr Macro int EADV 1013@standards{Linux???, errno.h} 1014@errno{EADV, ???/68, Advertise error} 1015@end deftypevr 1016 1017@deftypevr Macro int ESRMNT 1018@standards{Linux???, errno.h} 1019@errno{ESRMNT, ???/69, Srmount error} 1020@end deftypevr 1021 1022@deftypevr Macro int ECOMM 1023@standards{Linux???, errno.h} 1024@errno{ECOMM, ???/70, Communication error on send} 1025@end deftypevr 1026 1027@deftypevr Macro int EDOTDOT 1028@standards{Linux???, errno.h} 1029@errno{EDOTDOT, ???/73, RFS specific error} 1030@end deftypevr 1031 1032@deftypevr Macro int ENOTUNIQ 1033@standards{Linux???, errno.h} 1034@errno{ENOTUNIQ, ???/76, Name not unique on network} 1035@end deftypevr 1036 1037@deftypevr Macro int EBADFD 1038@standards{Linux???, errno.h} 1039@errno{EBADFD, ???/77, File descriptor in bad state} 1040@end deftypevr 1041 1042@deftypevr Macro int EREMCHG 1043@standards{Linux???, errno.h} 1044@errno{EREMCHG, ???/78, Remote address changed} 1045@end deftypevr 1046 1047@deftypevr Macro int ELIBACC 1048@standards{Linux???, errno.h} 1049@errno{ELIBACC, ???/79, Can not access a needed shared library} 1050@end deftypevr 1051 1052@deftypevr Macro int ELIBBAD 1053@standards{Linux???, errno.h} 1054@errno{ELIBBAD, ???/80, Accessing a corrupted shared library} 1055@end deftypevr 1056 1057@deftypevr Macro int ELIBSCN 1058@standards{Linux???, errno.h} 1059@errno{ELIBSCN, ???/81, .lib section in a.out corrupted} 1060@end deftypevr 1061 1062@deftypevr Macro int ELIBMAX 1063@standards{Linux???, errno.h} 1064@errno{ELIBMAX, ???/82, Attempting to link in too many shared libraries} 1065@end deftypevr 1066 1067@deftypevr Macro int ESTRPIPE 1068@standards{Linux???, errno.h} 1069@errno{ESTRPIPE, ???/86, Streams pipe error} 1070@end deftypevr 1071 1072@deftypevr Macro int EUCLEAN 1073@standards{Linux???, errno.h} 1074@errno{EUCLEAN, ???/117, Structure needs cleaning} 1075@end deftypevr 1076 1077@deftypevr Macro int ENOTNAM 1078@standards{Linux???, errno.h} 1079@errno{ENOTNAM, ???/118, Not a XENIX named type file} 1080@end deftypevr 1081 1082@deftypevr Macro int ENAVAIL 1083@standards{Linux???, errno.h} 1084@errno{ENAVAIL, ???/119, No XENIX semaphores available} 1085@end deftypevr 1086 1087@deftypevr Macro int EISNAM 1088@standards{Linux???, errno.h} 1089@errno{EISNAM, ???/120, Is a named type file} 1090@end deftypevr 1091 1092@deftypevr Macro int EREMOTEIO 1093@standards{Linux???, errno.h} 1094@errno{EREMOTEIO, ???/121, Remote I/O error} 1095@end deftypevr 1096 1097@deftypevr Macro int ENOMEDIUM 1098@standards{Linux???, errno.h} 1099@errno{ENOMEDIUM, ???/???, No medium found} 1100@end deftypevr 1101 1102@deftypevr Macro int EMEDIUMTYPE 1103@standards{Linux???, errno.h} 1104@errno{EMEDIUMTYPE, ???/???, Wrong medium type} 1105@end deftypevr 1106 1107@deftypevr Macro int ENOKEY 1108@standards{Linux, errno.h} 1109@errno{ENOKEY, ???/???, Required key not available} 1110@end deftypevr 1111 1112@deftypevr Macro int EKEYEXPIRED 1113@standards{Linux, errno.h} 1114@errno{EKEYEXPIRED, ???/???, Key has expired} 1115@end deftypevr 1116 1117@deftypevr Macro int EKEYREVOKED 1118@standards{Linux, errno.h} 1119@errno{EKEYREVOKED, ???/???, Key has been revoked} 1120@end deftypevr 1121 1122@deftypevr Macro int EKEYREJECTED 1123@standards{Linux, errno.h} 1124@errno{EKEYREJECTED, ???/???, Key was rejected by service} 1125@end deftypevr 1126 1127@deftypevr Macro int ERFKILL 1128@standards{Linux, errno.h} 1129@errno{ERFKILL, ???/???, Operation not possible due to RF-kill} 1130@end deftypevr 1131 1132@deftypevr Macro int EHWPOISON 1133@standards{Linux, errno.h} 1134@errno{EHWPOISON, ???/???, Memory page has hardware error} 1135@end deftypevr 1136 1137@node Error Messages, , Error Codes, Error Reporting 1138@section Error Messages 1139 1140The library has functions and variables designed to make it easy for 1141your program to report informative error messages in the customary 1142format about the failure of a library call. The functions 1143@code{strerror} and @code{perror} give you the standard error message 1144for a given error code; the variable 1145@w{@code{program_invocation_short_name}} gives you convenient access to the 1146name of the program that encountered the error. 1147 1148@deftypefun {char *} strerror (int @var{errnum}) 1149@standards{ISO, string.h} 1150@safety{@prelim{}@mtunsafe{@mtasurace{:strerror}}@asunsafe{@ascuheap{} @ascuintl{}}@acunsafe{@acsmem{}}} 1151@c Calls strerror_r with a static buffer allocated with malloc on the 1152@c first use. 1153The @code{strerror} function maps the error code (@pxref{Checking for 1154Errors}) specified by the @var{errnum} argument to a descriptive error 1155message string. The return value is a pointer to this string. 1156 1157The value @var{errnum} normally comes from the variable @code{errno}. 1158 1159You should not modify the string returned by @code{strerror}. Also, if 1160you make subsequent calls to @code{strerror}, the string might be 1161overwritten. (But it's guaranteed that no library function ever calls 1162@code{strerror} behind your back.) 1163 1164The function @code{strerror} is declared in @file{string.h}. 1165@end deftypefun 1166 1167@deftypefun {char *} strerror_r (int @var{errnum}, char *@var{buf}, size_t @var{n}) 1168@standards{GNU, string.h} 1169@safety{@prelim{}@mtsafe{}@asunsafe{@ascuintl{}}@acunsafe{}} 1170The @code{strerror_r} function works like @code{strerror} but instead of 1171returning the error message in a statically allocated buffer shared by 1172all threads in the process, it returns a private copy for the 1173thread. This might be either some permanent global data or a message 1174string in the user supplied buffer starting at @var{buf} with the 1175length of @var{n} bytes. 1176 1177At most @var{n} characters are written (including the NUL byte) so it is 1178up to the user to select a buffer large enough. 1179 1180This function should always be used in multi-threaded programs since 1181there is no way to guarantee the string returned by @code{strerror} 1182really belongs to the last call of the current thread. 1183 1184The function @code{strerror_r} is a GNU extension and it is declared in 1185@file{string.h}. 1186@end deftypefun 1187 1188@deftypefun void perror (const char *@var{message}) 1189@standards{ISO, stdio.h} 1190@safety{@prelim{}@mtsafe{@mtasurace{:stderr}}@asunsafe{@asucorrupt{} @ascuintl{} @ascuheap{} @asulock{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{} @acsfd{}}} 1191@c Besides strerror_r's and some of fprintf's issues, if stderr is not 1192@c oriented yet, create a new stream with a dup of stderr's fd and write 1193@c to that instead of stderr, to avoid orienting it. 1194This function prints an error message to the stream @code{stderr}; 1195see @ref{Standard Streams}. The orientation of @code{stderr} is not 1196changed. 1197 1198If you call @code{perror} with a @var{message} that is either a null 1199pointer or an empty string, @code{perror} just prints the error message 1200corresponding to @code{errno}, adding a trailing newline. 1201 1202If you supply a non-null @var{message} argument, then @code{perror} 1203prefixes its output with this string. It adds a colon and a space 1204character to separate the @var{message} from the error string corresponding 1205to @code{errno}. 1206 1207The function @code{perror} is declared in @file{stdio.h}. 1208@end deftypefun 1209 1210@deftypefun {const char *} strerrorname_np (int @var{errnum}) 1211@standards{GNU, string.h} 1212@safety{@mtsafe{}@assafe{}@acsafe{}} 1213This function returns the name describing the error @var{errnum} or 1214@code{NULL} if there is no known constant with this value (e.g "EINVAL" 1215for @code{EINVAL}). 1216 1217@pindex string.h 1218This function is a GNU extension, declared in the header file @file{string.h}. 1219@end deftypefun 1220 1221@deftypefun {const char *} strerrordesc_np (int @var{errnum}) 1222@standards{GNU, string.h} 1223@safety{@mtsafe{}@assafe{}@acsafe{}} 1224This function returns the message describing the error @var{errnum} or 1225@code{NULL} if there is no known constant with this value (e.g "Invalid 1226argument" for @code{EINVAL}). Different than @code{strerror} the returned 1227description is not translated. 1228 1229@pindex string.h 1230This function is a GNU extension, declared in the header file @file{string.h}. 1231@end deftypefun 1232 1233@code{strerror} and @code{perror} produce the exact same message for any 1234given error code; the precise text varies from system to system. With 1235@theglibc{}, the messages are fairly short; there are no multi-line 1236messages or embedded newlines. Each error message begins with a capital 1237letter and does not include any terminating punctuation. 1238 1239@cindex program name 1240@cindex name of running program 1241Many programs that don't read input from the terminal are designed to 1242exit if any system call fails. By convention, the error message from 1243such a program should start with the program's name, sans directories. 1244You can find that name in the variable 1245@code{program_invocation_short_name}; the full file name is stored the 1246variable @code{program_invocation_name}. 1247 1248@deftypevar {char *} program_invocation_name 1249@standards{GNU, errno.h} 1250This variable's value is the name that was used to invoke the program 1251running in the current process. It is the same as @code{argv[0]}. Note 1252that this is not necessarily a useful file name; often it contains no 1253directory names. @xref{Program Arguments}. 1254 1255This variable is a GNU extension and is declared in @file{errno.h}. 1256@end deftypevar 1257 1258@deftypevar {char *} program_invocation_short_name 1259@standards{GNU, errno.h} 1260This variable's value is the name that was used to invoke the program 1261running in the current process, with directory names removed. (That is 1262to say, it is the same as @code{program_invocation_name} minus 1263everything up to the last slash, if any.) 1264 1265This variable is a GNU extension and is declared in @file{errno.h}. 1266@end deftypevar 1267 1268The library initialization code sets up both of these variables before 1269calling @code{main}. 1270 1271@strong{Portability Note:} If you want your program to work with 1272non-GNU libraries, you must save the value of @code{argv[0]} in 1273@code{main}, and then strip off the directory names yourself. We 1274added these extensions to make it possible to write self-contained 1275error-reporting subroutines that require no explicit cooperation from 1276@code{main}. 1277 1278Here is an example showing how to handle failure to open a file 1279correctly. The function @code{open_sesame} tries to open the named file 1280for reading and returns a stream if successful. The @code{fopen} 1281library function returns a null pointer if it couldn't open the file for 1282some reason. In that situation, @code{open_sesame} constructs an 1283appropriate error message using the @code{strerror} function, and 1284terminates the program. If we were going to make some other library 1285calls before passing the error code to @code{strerror}, we'd have to 1286save it in a local variable instead, because those other library 1287functions might overwrite @code{errno} in the meantime. 1288 1289@smallexample 1290#define _GNU_SOURCE 1291 1292#include <errno.h> 1293#include <stdio.h> 1294#include <stdlib.h> 1295#include <string.h> 1296 1297FILE * 1298open_sesame (char *name) 1299@{ 1300 FILE *stream; 1301 1302 errno = 0; 1303 stream = fopen (name, "r"); 1304 if (stream == NULL) 1305 @{ 1306 fprintf (stderr, "%s: Couldn't open file %s; %s\n", 1307 program_invocation_short_name, name, strerror (errno)); 1308 exit (EXIT_FAILURE); 1309 @} 1310 else 1311 return stream; 1312@} 1313@end smallexample 1314 1315Using @code{perror} has the advantage that the function is portable and 1316available on all systems implementing @w{ISO C}. But often the text 1317@code{perror} generates is not what is wanted and there is no way to 1318extend or change what @code{perror} does. The GNU coding standard, for 1319instance, requires error messages to be preceded by the program name and 1320programs which read some input files should provide information 1321about the input file name and the line number in case an error is 1322encountered while reading the file. For these occasions there are two 1323functions available which are widely used throughout the GNU project. 1324These functions are declared in @file{error.h}. 1325 1326@deftypefun void error (int @var{status}, int @var{errnum}, const char *@var{format}, @dots{}) 1327@standards{GNU, error.h} 1328@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @asuheap{} @asuintl{}}@acsafe{}} 1329@c Cancellation is disabled throughout the execution. It flushes stdout 1330@c and then holds a lock on stderr while printing the program name and 1331@c then running error_tail. The non-wide case just runs vfprintf; the 1332@c wide case converts the message to an alloca/malloc-allocated buffer 1333@c with mbsrtowcs, then prints it with vfwprintf. Afterwards, 1334@c print_errno_message calls strerror_r and fxprintf. 1335The @code{error} function can be used to report general problems during 1336program execution. The @var{format} argument is a format string just 1337like those given to the @code{printf} family of functions. The 1338arguments required for the format can follow the @var{format} parameter. 1339Just like @code{perror}, @code{error} also can report an error code in 1340textual form. But unlike @code{perror} the error value is explicitly 1341passed to the function in the @var{errnum} parameter. This eliminates 1342the problem mentioned above that the error reporting function must be 1343called immediately after the function causing the error since otherwise 1344@code{errno} might have a different value. 1345 1346@code{error} prints first the program name. If the application 1347defined a global variable @code{error_print_progname} and points it to a 1348function this function will be called to print the program name. 1349Otherwise the string from the global variable @code{program_name} is 1350used. The program name is followed by a colon and a space which in turn 1351is followed by the output produced by the format string. If the 1352@var{errnum} parameter is non-zero the format string output is followed 1353by a colon and a space, followed by the error message for the error code 1354@var{errnum}. In any case is the output terminated with a newline. 1355 1356The output is directed to the @code{stderr} stream. If the 1357@code{stderr} wasn't oriented before the call it will be narrow-oriented 1358afterwards. 1359 1360The function will return unless the @var{status} parameter has a 1361non-zero value. In this case the function will call @code{exit} with 1362the @var{status} value for its parameter and therefore never return. If 1363@code{error} returns, the global variable @code{error_message_count} is 1364incremented by one to keep track of the number of errors reported. 1365@end deftypefun 1366 1367@deftypefun void error_at_line (int @var{status}, int @var{errnum}, const char *@var{fname}, unsigned int @var{lineno}, const char *@var{format}, @dots{}) 1368@standards{GNU, error.h} 1369@safety{@prelim{}@mtunsafe{@mtasurace{:error_at_line/error_one_per_line} @mtslocale{}}@asunsafe{@asucorrupt{} @asuheap{} @asuintl{}}@acunsafe{@acucorrupt{/error_one_per_line}}} 1370@c The error_one_per_line variable is accessed (without any form of 1371@c synchronization, but since it's an int used once, it should be safe 1372@c enough) and, if this mode is enabled, static variables used to hold 1373@c the last printed file name and line number are accessed and modified 1374@c without synchronization; the update is not atomic and it occurs 1375@c before disabling cancellation, so it can be interrupted after only 1376@c one of the two variables is modified. After that, it's very much 1377@c like error. 1378 1379The @code{error_at_line} function is very similar to the @code{error} 1380function. The only differences are the additional parameters @var{fname} 1381and @var{lineno}. The handling of the other parameters is identical to 1382that of @code{error} except that between the program name and the string 1383generated by the format string additional text is inserted. 1384 1385Directly following the program name a colon, followed by the file name 1386pointed to by @var{fname}, another colon, and the value of @var{lineno} is 1387printed. 1388 1389This additional output of course is meant to be used to locate an error 1390in an input file (like a programming language source code file etc). 1391 1392If the global variable @code{error_one_per_line} is set to a non-zero 1393value @code{error_at_line} will avoid printing consecutive messages for 1394the same file and line. Repetition which are not directly following 1395each other are not caught. 1396 1397Just like @code{error} this function only returns if @var{status} is 1398zero. Otherwise @code{exit} is called with the non-zero value. If 1399@code{error} returns, the global variable @code{error_message_count} is 1400incremented by one to keep track of the number of errors reported. 1401@end deftypefun 1402 1403As mentioned above, the @code{error} and @code{error_at_line} functions 1404can be customized by defining a variable named 1405@code{error_print_progname}. 1406 1407@deftypevar {void (*error_print_progname)} (void) 1408@standards{GNU, error.h} 1409If the @code{error_print_progname} variable is defined to a non-zero 1410value the function pointed to is called by @code{error} or 1411@code{error_at_line}. It is expected to print the program name or do 1412something similarly useful. 1413 1414The function is expected to print to the @code{stderr} stream and 1415must be able to handle whatever orientation the stream has. 1416 1417The variable is global and shared by all threads. 1418@end deftypevar 1419 1420@deftypevar {unsigned int} error_message_count 1421@standards{GNU, error.h} 1422The @code{error_message_count} variable is incremented whenever one of 1423the functions @code{error} or @code{error_at_line} returns. The 1424variable is global and shared by all threads. 1425@end deftypevar 1426 1427@deftypevar int error_one_per_line 1428@standards{GNU, error.h} 1429The @code{error_one_per_line} variable influences only 1430@code{error_at_line}. Normally the @code{error_at_line} function 1431creates output for every invocation. If @code{error_one_per_line} is 1432set to a non-zero value @code{error_at_line} keeps track of the last 1433file name and line number for which an error was reported and avoids 1434directly following messages for the same file and line. This variable 1435is global and shared by all threads. 1436@end deftypevar 1437 1438@noindent 1439A program which read some input file and reports errors in it could look 1440like this: 1441 1442@smallexample 1443@{ 1444 char *line = NULL; 1445 size_t len = 0; 1446 unsigned int lineno = 0; 1447 1448 error_message_count = 0; 1449 while (! feof_unlocked (fp)) 1450 @{ 1451 ssize_t n = getline (&line, &len, fp); 1452 if (n <= 0) 1453 /* @r{End of file or error.} */ 1454 break; 1455 ++lineno; 1456 1457 /* @r{Process the line.} */ 1458 @dots{} 1459 1460 if (@r{Detect error in line}) 1461 error_at_line (0, errval, filename, lineno, 1462 "some error text %s", some_variable); 1463 @} 1464 1465 if (error_message_count != 0) 1466 error (EXIT_FAILURE, 0, "%u errors found", error_message_count); 1467@} 1468@end smallexample 1469 1470@code{error} and @code{error_at_line} are clearly the functions of 1471choice and enable the programmer to write applications which follow the 1472GNU coding standard. @Theglibc{} additionally contains functions which 1473are used in BSD for the same purpose. These functions are declared in 1474@file{err.h}. It is generally advised to not use these functions. They 1475are included only for compatibility. 1476 1477@deftypefun void warn (const char *@var{format}, @dots{}) 1478@standards{BSD, err.h} 1479@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1480@c Just calls vwarn with the va_list. 1481The @code{warn} function is roughly equivalent to a call like 1482@smallexample 1483 error (0, errno, format, @r{the parameters}) 1484@end smallexample 1485@noindent 1486except that the global variables @code{error} respects and modifies 1487are not used. 1488@end deftypefun 1489 1490@deftypefun void vwarn (const char *@var{format}, va_list @var{ap}) 1491@standards{BSD, err.h} 1492@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1493@c While holding stderr's recursive lock, it prints the programname, the 1494@c given message, and the error string with fw?printf's %m. When the 1495@c stream is wide, convert_and_print converts the format string to an 1496@c alloca/malloc-created buffer using mbsrtowcs and then calls fwprintf. 1497The @code{vwarn} function is just like @code{warn} except that the 1498parameters for the handling of the format string @var{format} are passed 1499in as a value of type @code{va_list}. 1500@end deftypefun 1501 1502@deftypefun void warnx (const char *@var{format}, @dots{}) 1503@standards{BSD, err.h} 1504@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1505@c Same as warn, but without the strerror translation issues. 1506The @code{warnx} function is roughly equivalent to a call like 1507@smallexample 1508 error (0, 0, format, @r{the parameters}) 1509@end smallexample 1510@noindent 1511except that the global variables @code{error} respects and modifies 1512are not used. The difference to @code{warn} is that no error number 1513string is printed. 1514@end deftypefun 1515 1516@deftypefun void vwarnx (const char *@var{format}, va_list @var{ap}) 1517@standards{BSD, err.h} 1518@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1519@c Same as vwarn, but without the strerror translation issues. 1520The @code{vwarnx} function is just like @code{warnx} except that the 1521parameters for the handling of the format string @var{format} are passed 1522in as a value of type @code{va_list}. 1523@end deftypefun 1524 1525@deftypefun void err (int @var{status}, const char *@var{format}, @dots{}) 1526@standards{BSD, err.h} 1527@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1528@c Same as warn followed by exit. 1529The @code{err} function is roughly equivalent to a call like 1530@smallexample 1531 error (status, errno, format, @r{the parameters}) 1532@end smallexample 1533@noindent 1534except that the global variables @code{error} respects and modifies 1535are not used and that the program is exited even if @var{status} is zero. 1536@end deftypefun 1537 1538@deftypefun void verr (int @var{status}, const char *@var{format}, va_list @var{ap}) 1539@standards{BSD, err.h} 1540@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{} @ascuintl{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1541@c Same as vwarn followed by exit. 1542The @code{verr} function is just like @code{err} except that the 1543parameters for the handling of the format string @var{format} are passed 1544in as a value of type @code{va_list}. 1545@end deftypefun 1546 1547@deftypefun void errx (int @var{status}, const char *@var{format}, @dots{}) 1548@standards{BSD, err.h} 1549@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1550@c Same as warnx followed by exit. 1551The @code{errx} function is roughly equivalent to a call like 1552@smallexample 1553 error (status, 0, format, @r{the parameters}) 1554@end smallexample 1555@noindent 1556except that the global variables @code{error} respects and modifies 1557are not used and that the program is exited even if @var{status} 1558is zero. The difference to @code{err} is that no error number 1559string is printed. 1560@end deftypefun 1561 1562@deftypefun void verrx (int @var{status}, const char *@var{format}, va_list @var{ap}) 1563@standards{BSD, err.h} 1564@safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acucorrupt{} @aculock{} @acsmem{}}} 1565@c Same as vwarnx followed by exit. 1566The @code{verrx} function is just like @code{errx} except that the 1567parameters for the handling of the format string @var{format} are passed 1568in as a value of type @code{va_list}. 1569@end deftypefun 1570