1 2 /* libiso_msgs (generated from libdax_msgs : Fri Feb 22 19:42:52 CET 2008) 3 Message handling facility of libisofs. 4 Copyright (C) 2006-2016 Thomas Schmitt <scdbackup@gmx.net>, 5 6 This file is part of the libisofs project; you can redistribute it and/or 7 modify it under the terms of the GNU General Public License version 2 8 or later as published by the Free Software Foundation. 9 See COPYING file for details. 10 11 */ 12 13 14 /* 15 *Never* set this macro outside libiso_msgs.c ! 16 The entrails of the message handling facility are not to be seen by 17 the other library components or the applications. 18 */ 19 #ifdef LIBISO_MSGS_H_INTERNAL 20 21 22 #ifndef LIBISO_MSGS_SINGLE_THREADED 23 #include <pthread.h> 24 #endif 25 26 27 struct libiso_msgs_item { 28 29 double timestamp; 30 pid_t process_id; 31 int origin; 32 33 int severity; 34 int priority; 35 36 /* Apply for your developer's error code range at 37 libburn-hackers@pykix.org 38 Report introduced codes in the list below. */ 39 int error_code; 40 41 char *msg_text; 42 int os_errno; 43 44 struct libiso_msgs_item *prev,*next; 45 46 }; 47 48 49 struct libiso_msgs { 50 51 int refcount; 52 53 struct libiso_msgs_item *oldest; 54 struct libiso_msgs_item *youngest; 55 int count; 56 57 int queue_severity; 58 int print_severity; 59 char print_id[81]; 60 61 #ifndef LIBISO_MSGS_SINGLE_THREADED 62 pthread_mutex_t lock_mutex; 63 #endif 64 65 66 }; 67 68 #endif /* LIBISO_MSGS_H_INTERNAL */ 69 70 71 #ifndef LIBISO_MSGS_H_INCLUDED 72 #define LIBISO_MSGS_H_INCLUDED 1 73 74 75 #ifndef LIBISO_MSGS_H_INTERNAL 76 77 78 /* Architectural aspects */ 79 /* 80 libdax_msgs is designed to serve in libraries which want to offer their 81 applications a way to control the output of library messages. It shall be 82 incorporated by an owner, i.e. a software entity which encloses the code 83 of the .c file. 84 85 Owner of libdax_msgs is libburn. A fully compatible variant named libiso_msgs 86 is owned by libisofs and can get generated by a script of the libburn 87 project: libburn/libiso_msgs_to_xyz_msgs.sh . 88 89 Reason: One cannot link two owners of the same variant together because 90 both would offer the same functions to the linker. For that situation one 91 has to create a compatible variant as it is done for libisofs. 92 93 Compatible variants may get plugged together by call combinations like 94 burn_set_messenger(iso_get_messenger()); 95 A new variant would demand a _set_messenger() function if it has to work 96 with libisofs. If only libburn is planned as link partner then a simple 97 _get_messenger() does suffice. 98 Take care to shutdown libburn before its provider of the *_msgs object 99 gets shut down. 100 101 */ 102 103 /* Public Opaque Handles */ 104 105 /** A pointer to this is a opaque handle to a message handling facility */ 106 struct libiso_msgs; 107 108 /** A pointer to this is a opaque handle to a single message item */ 109 struct libiso_msgs_item; 110 111 #endif /* ! LIBISO_MSGS_H_INTERNAL */ 112 113 114 /* Public Macros */ 115 116 117 /* Registered Severities */ 118 119 /* It is well advisable to let applications select severities via strings and 120 forwarded functions libiso_msgs__text_to_sev(), libiso_msgs__sev_to_text(). 121 These macros are for use by the owner of libiso_msgs. 122 */ 123 124 /** Use this to get messages of any severity. Do not use for submitting. 125 */ 126 #define LIBISO_MSGS_SEV_ALL 0x00000000 127 128 129 /** Messages of this severity shall transport plain disk file paths 130 whenever an event of severity SORRY or above is related with an 131 individual disk file. 132 No message text shall be added to the file path. The ERRFILE message 133 shall be issued before the human readable message which carries the 134 true event severity. That message should contain the file path so it 135 can be found by strstr(message, path)!=NULL. 136 The error code shall be the same as with the human readable message. 137 */ 138 #define LIBISO_MSGS_SEV_ERRFILE 0x08000000 139 140 141 /** Debugging messages not to be visible to normal users by default 142 */ 143 #define LIBISO_MSGS_SEV_DEBUG 0x10000000 144 145 /** Update of a progress report about long running actions 146 */ 147 #define LIBISO_MSGS_SEV_UPDATE 0x20000000 148 149 /** Not so usual events which were gracefully handled 150 */ 151 #define LIBISO_MSGS_SEV_NOTE 0x30000000 152 153 /** Possibilities to achieve a better result 154 */ 155 #define LIBISO_MSGS_SEV_HINT 0x40000000 156 157 /** Warnings about problems which could not be handled optimally 158 */ 159 #define LIBISO_MSGS_SEV_WARNING 0x50000000 160 161 162 /** Non-fatal error messages indicating that parts of an action failed but 163 processing may go on if one accepts deviations from the desired result. 164 165 SORRY may also be the severity for incidents which are severe enough 166 for FAILURE but happen within already started irrevocable actions, 167 like ISO image generation. A precondition for such a severity ease is 168 that the action can be continued after the incident. 169 See below MISHAP for what xorriso would need instead of this kind of SORRY 170 and generates for itself in case of libisofs image generation. 171 172 E.g.: A pattern yields no result. 173 A speed setting cannot be made. 174 A libisofs input file is inaccessible during image generation. 175 176 After SORRY a function should try to go on if that makes any sense 177 and if no threshold prescribes abort on SORRY. The function should 178 nevertheless indicate some failure in its return value. 179 It should - but it does not have to. 180 */ 181 #define LIBISO_MSGS_SEV_SORRY 0x60000000 182 183 184 /** A FAILURE (see below) which can be tolerated during long lasting 185 operations just because they cannot simply be stopped or revoked. 186 187 xorriso converts libisofs SORRY messages issued during image generation 188 into MISHAP messages in order to allow its evaluators to distinguish 189 image generation problems from minor image composition problems. 190 E.g.: 191 A libisofs input file is inaccessible during image generation. 192 193 After a MISHAP a function should behave like after SORRY. 194 */ 195 #define LIBISO_MSGS_SEV_MISHAP 0x64000000 196 197 198 /** Non-fatal error indicating that an important part of an action failed and 199 that only a new setup of preconditions will give hope for sufficient 200 success. 201 202 E.g.: No media is inserted in the output drive. 203 No write mode can be found for inserted media. 204 A libisofs input file is inaccessible during grafting. 205 206 After FAILURE a function should end with a return value indicating failure. 207 It is at the discretion of the function whether it ends immediately in any 208 case or whether it tries to go on if the eventual threshold allows. 209 */ 210 #define LIBISO_MSGS_SEV_FAILURE 0x68000000 211 212 213 /** An error message which puts the whole operation of the program in question 214 215 E.g.: Not enough memory for essential temporary objects. 216 Irregular errors from resources. 217 Programming errors (soft assert). 218 219 After FATAL a function should end very soon with a return value 220 indicating severe failure. 221 */ 222 #define LIBISO_MSGS_SEV_FATAL 0x70000000 223 224 225 /** A message from an abort handler which will finally finish libburn 226 */ 227 #define LIBISO_MSGS_SEV_ABORT 0x71000000 228 229 /** A severity to exclude or discard any possible message. 230 Do not use this severity for submitting. 231 */ 232 #define LIBISO_MSGS_SEV_NEVER 0x7fffffff 233 234 235 /* Registered Priorities */ 236 237 /* Priorities are to be selected by the programmers and not by the user. */ 238 239 #define LIBISO_MSGS_PRIO_ZERO 0x00000000 240 #define LIBISO_MSGS_PRIO_LOW 0x10000000 241 #define LIBISO_MSGS_PRIO_MEDIUM 0x20000000 242 #define LIBISO_MSGS_PRIO_HIGH 0x30000000 243 #define LIBISO_MSGS_PRIO_TOP 0x7ffffffe 244 245 /* Do not use this priority for submitting */ 246 #define LIBISO_MSGS_PRIO_NEVER 0x7fffffff 247 248 249 /* Origin numbers of libburn drives may range from 0 to 1048575 */ 250 #define LIBISO_MSGS_ORIGIN_DRIVE_BASE 0 251 #define LIBISO_MSGS_ORIGIN_DRIVE_TOP 0xfffff 252 253 /* Origin numbers of libisofs images may range from 1048575 to 2097152 */ 254 #define LIBISO_MSGS_ORIGIN_IMAGE_BASE 0x100000 255 #define LIBISO_MSGS_ORIGIN_IMAGE_TOP 0x1fffff 256 257 258 259 /* Public Functions */ 260 261 /* Calls initiated from inside the direct owner (e.g. from libburn) */ 262 263 264 /** Create new empty message handling facility with queue and issue a first 265 official reference to it. 266 @param flag Bitfield for control purposes (unused yet, submit 0) 267 @return >0 success, <=0 failure 268 */ 269 int libiso_msgs_new(struct libiso_msgs **m, int flag); 270 271 272 /** Destroy a message handling facility and all its eventual messages. 273 The submitted pointer gets set to NULL. 274 Actually only the last destroy call of all official references to the 275 object will really dispose it. All others just decrement the reference 276 counter. 277 Call this function only with official reference pointers obtained by 278 libiso_msgs_new() or libiso_msgs_refer(), and only once per such pointer. 279 @param flag Bitfield for control purposes (unused yet, submit 0) 280 @return 1 for success, 0 for pointer to NULL, -1 for fatal error 281 */ 282 int libiso_msgs_destroy(struct libiso_msgs **m, int flag); 283 284 285 /** Create an official reference to an existing libiso_msgs object. The 286 references keep the object alive at least until it is released by 287 a matching number of destroy calls. So each reference MUST be revoked 288 by exactly one call to libiso_msgs_destroy(). 289 @param pt The pointer to be set and registered 290 @param m A pointer to the existing object 291 @param flag Bitfield for control purposes (unused yet, submit 0) 292 @return 1 for success, 0 for failure 293 */ 294 int libiso_msgs_refer(struct libiso_msgs **pt, struct libiso_msgs *o, int flag); 295 296 297 /** Submit a message to a message handling facility. 298 @param origin program specific identification number of the originator of 299 a message. E.g. drive number. Programs should have an own 300 range of origin numbers. See above LIBISO_MSGS_ORIGIN_*_BASE 301 Use -1 if no number is known. 302 @param error_code Unique error code. Use only registered codes. See below. 303 The same unique error_code may be issued at different 304 occasions but those should be equivalent out of the view 305 of a libiso_msgs application. (E.g. "cannot open ATA drive" 306 versus "cannot open SCSI drive" would be equivalent.) 307 @param severity The LIBISO_MSGS_SEV_* of the event. 308 @param priority The LIBISO_MSGS_PRIO_* number of the event. 309 @param msg_text Printable and human readable message text. 310 @param os_errno Eventual error code from operating system (0 if none) 311 @param flag Bitfield for control purposes (unused yet, submit 0) 312 @return 1 on success, 0 on rejection, <0 for severe errors 313 */ 314 int libiso_msgs_submit(struct libiso_msgs *m, int origin, int error_code, 315 int severity, int priority, char *msg_text, 316 int os_errno, int flag); 317 318 319 320 /* Calls from applications (to be forwarded by direct owner) */ 321 322 323 /** Convert a registered severity number into a severity name 324 @param flag Bitfield for control purposes: 325 bit0= list all severity names in a blank separated string 326 @return >0 success, <=0 failure 327 */ 328 int libiso_msgs__sev_to_text(int severity, char **severity_name, 329 int flag); 330 331 332 /** Convert a severity name into a severity number, 333 @param flag Bitfield for control purposes (unused yet, submit 0) 334 @return >0 success, <=0 failure 335 */ 336 int libiso_msgs__text_to_sev(char *severity_name, int *severity, 337 int flag); 338 339 340 /** Set minimum severity for messages to be queued (default 341 LIBISO_MSGS_SEV_ALL) and for messages to be printed directly to stderr 342 (default LIBISO_MSGS_SEV_NEVER). 343 @param print_id A text of at most 80 characters to be printed before 344 any eventually printed message (default is "libiso: "). 345 @param flag Bitfield for control purposes (unused yet, submit 0) 346 @return always 1 for now 347 */ 348 int libiso_msgs_set_severities(struct libiso_msgs *m, int queue_severity, 349 int print_severity, char *print_id, int flag); 350 351 352 /** Obtain a message item that has at least the given severity and priority. 353 Usually all older messages of lower severity are discarded then. If no 354 item of sufficient severity was found, all others are discarded from the 355 queue. 356 @param flag Bitfield for control purposes (unused yet, submit 0) 357 @return 1 if a matching item was found, 0 if not, <0 for severe errors 358 */ 359 int libiso_msgs_obtain(struct libiso_msgs *m, struct libiso_msgs_item **item, 360 int severity, int priority, int flag); 361 362 363 /** Destroy a message item obtained by libiso_msgs_obtain(). The submitted 364 pointer gets set to NULL. 365 Caution: Copy eventually obtained msg_text before destroying the item, 366 if you want to use it further. 367 @param flag Bitfield for control purposes (unused yet, submit 0) 368 @return 1 for success, 0 for pointer to NULL, <0 for severe errors 369 */ 370 int libiso_msgs_destroy_item(struct libiso_msgs *m, 371 struct libiso_msgs_item **item, int flag); 372 373 374 /** Obtain from a message item the three application oriented components as 375 submitted with the originating call of libiso_msgs_submit(). 376 Caution: msg_text becomes a pointer into item, not a copy. 377 @param flag Bitfield for control purposes (unused yet, submit 0) 378 @return 1 on success, 0 on invalid item, <0 for servere errors 379 */ 380 int libiso_msgs_item_get_msg(struct libiso_msgs_item *item, 381 int *error_code, char **msg_text, int *os_errno, 382 int flag); 383 384 385 /** Obtain from a message item the submitter identification submitted 386 with the originating call of libiso_msgs_submit(). 387 @param flag Bitfield for control purposes (unused yet, submit 0) 388 @return 1 on success, 0 on invalid item, <0 for servere errors 389 */ 390 int libiso_msgs_item_get_origin(struct libiso_msgs_item *item, 391 double *timestamp, pid_t *process_id, int *origin, 392 int flag); 393 394 395 /** Obtain from a message item severity and priority as submitted 396 with the originating call of libiso_msgs_submit(). 397 @param flag Bitfield for control purposes (unused yet, submit 0) 398 @return 1 on success, 0 on invalid item, <0 for servere errors 399 */ 400 int libiso_msgs_item_get_rank(struct libiso_msgs_item *item, 401 int *severity, int *priority, int flag); 402 403 404 #ifdef LIDBAX_MSGS_________________ 405 406 407 /* Registered Error Codes */ 408 409 410 Format: error_code (LIBISO_MSGS_SEV_*,LIBISO_MSGS_PRIO_*) = explanation 411 If no severity or priority are fixely associated, use "(,)". 412 413 ------------------------------------------------------------------------------ 414 Range "libiso_msgs" : 0x00000000 to 0x0000ffff 415 416 0x00000000 (ALL,ZERO) = Initial setting in new libiso_msgs_item 417 0x00000001 (DEBUG,ZERO) = Test error message 418 0x00000002 (DEBUG,ZERO) = Debugging message 419 0x00000003 (FATAL,HIGH) = Out of virtual memory 420 421 422 ------------------------------------------------------------------------------ 423 Range "elmom" : 0x00010000 to 0x0001ffff 424 425 426 427 ------------------------------------------------------------------------------ 428 Range "scdbackup" : 0x00020000 to 0x0002ffff 429 430 Accessing and defending drives: 431 432 0x00020001 (SORRY,LOW) = Cannot open busy device 433 0x00020002 (SORRY,HIGH) = Encountered error when closing drive 434 0x00020003 (SORRY,HIGH) = Could not grab drive 435 0x00020004 (NOTE,HIGH) = Opened O_EXCL scsi sibling 436 0x00020005 (SORRY,HIGH) = Failed to open device 437 0x00020006 (FATAL,HIGH) = Too many scsi siblings 438 0x00020007 (NOTE,HIGH) = Closed O_EXCL scsi siblings 439 0x00020008 (SORRY,HIGH) = Device busy. Failed to fcntl-lock 440 0x00020009 (SORRY,HIGH) = Neither stdio-path nor its directory exist 441 442 General library operations: 443 444 0x00020101 (WARNING,HIGH) = Cannot find given worker item 445 0x00020102 (SORRY,HIGH) = A drive operation is still going on 446 0x00020103 (WARNING,HIGH) = After scan a drive operation is still going on 447 0x00020104 (SORRY,HIGH) = NULL pointer caught 448 0x00020105 (SORRY,HIGH) = Drive is already released 449 0x00020106 (SORRY,HIGH) = Drive is busy on attempt to close 450 0x00020107 (WARNING,HIGH) = A drive is still busy on shutdown of library 451 0x00020108 (SORRY,HIGH) = Drive is not grabbed on disc status inquiry 452 0x00020108 (FATAL,HIGH) = Could not allocate new drive object 453 0x00020109 (FATAL,HIGH) = Library not running 454 0x0002010a (FATAL,HIGH) = Unsuitable track mode 455 0x0002010b (FATAL,HIGH) = Burn run failed 456 0x0002010c (FATAL,HIGH) = Failed to transfer command to drive 457 0x0002010d (DEBUG,HIGH) = Could not inquire TOC 458 0x0002010e (FATAL,HIGH) = Attempt to read ATIP from ungrabbed drive 459 0x0002010f (DEBUG,HIGH) = SCSI error condition on command 460 0x00020110 (FATAL,HIGH) = Persistent drive address too long 461 0x00020111 (FATAL,HIGH) = Could not allocate new auxiliary object 462 0x00020112 (SORRY,HIGH) = Bad combination of write_type and block_type 463 0x00020113 (FATAL,HIGH) = Drive capabilities not inquired yet 464 0x00020114 (SORRY,HIGH) = Attempt to set ISRC with bad data 465 0x00020115 (SORRY,HIGH) = Attempt to set track mode to unusable value 466 0x00020116 (FATAL,HIGH) = Track mode has unusable value 467 0x00020117 (FATAL,HIGH) = toc_entry of drive is already in use 468 0x00020118 (DEBUG,HIGH) = Closing track 469 0x00020119 (DEBUG,HIGH) = Closing session 470 0x0002011a (NOTE,HIGH) = Padding up track to minimum size 471 0x0002011b (FATAL,HIGH) = Attempt to read track info from ungrabbed drive 472 0x0002011c (FATAL,HIGH) = Attempt to read track info from busy drive 473 0x0002011d (FATAL,HIGH) = SCSI error on write 474 0x0002011e (SORRY,HIGH) = Unsuitable media detected 475 0x0002011f (SORRY,HIGH) = Burning is restricted to a single track 476 0x00020120 (NOTE,HIGH) = FORMAT UNIT ignored 477 0x00020121 (FATAL,HIGH) = Write preparation setup failed 478 0x00020122 (FATAL,HIGH) = SCSI error on format_unit 479 0x00020123 (SORRY,HIGH) = DVD Media are unsuitable for desired track type 480 0x00020124 (SORRY,HIGH) = SCSI error on set_streaming 481 0x00020125 (SORRY,HIGH) = Write start address not supported 482 0x00020126 (SORRY,HIGH) = Write start address not properly aligned 483 0x00020127 (NOTE,HIGH) = Write start address is ... 484 0x00020128 (FATAL,HIGH) = Unsupported inquiry_type with mmc_get_performance 485 0x00020129 (SORRY,HIGH) = Will not format media type 486 0x0002012a (FATAL,HIGH) = Cannot inquire write mode capabilities 487 0x0002012b (FATAL,HIGH) = Drive offers no suitable write mode with this job 488 0x0002012c (SORRY,HIGH) = Too many logical tracks recorded 489 0x0002012d (FATAL,HIGH) = Exceeding range of permissible write addresses 490 0x0002012e (NOTE,HIGH) = Activated track default size 491 0x0002012f (SORRY,HIGH) = SAO is restricted to single fixed size session 492 0x00020130 (SORRY,HIGH) = Drive and media state unsuitable for blanking 493 0x00020131 (SORRY,HIGH) = No suitable formatting type offered by drive 494 0x00020132 (SORRY,HIGH) = Selected format is not suitable for libburn 495 0x00020133 (SORRY,HIGH) = Cannot mix data and audio in SAO mode 496 0x00020134 (NOTE,HIGH) = Defaulted TAO to DAO 497 0x00020135 (SORRY,HIGH) = Cannot perform TAO, job unsuitable for DAO 498 0x00020136 (SORRY,HIGH) = DAO burning restricted to single fixed size track 499 0x00020137 (HINT,HIGH) = TAO would be possible 500 0x00020138 (FATAL,HIGH) = Cannot reserve track 501 0x00020139 (SORRY,HIGH) = Write job parameters are unsuitable 502 0x0002013a (FATAL,HIGH) = No suitable media detected 503 0x0002013b (DEBUG,HIGH) = SCSI command indicates host or driver error 504 0x0002013c (SORRY,HIGH) = Malformed capabilities page 2Ah received 505 0x0002013d (DEBUG,LOW) = Waiting for free buffer space takes long time 506 0x0002013e (SORRY,HIGH) = Timeout with waiting for free buffer. Now disabled 507 0x0002013f (DEBUG,LOW) = Reporting total time spent with waiting for buffer 508 0x00020140 (FATAL,HIGH) = Drive is busy on attempt to write random access 509 0x00020141 (SORRY,HIGH) = Write data count not properly aligned 510 0x00020142 (FATAL,HIGH) = Drive is not grabbed on random access write 511 0x00020143 (SORRY,HIGH) = Read start address not properly aligned 512 0x00020144 (SORRY,HIGH) = SCSI error on read 513 0x00020145 (FATAL,HIGH) = Drive is busy on attempt to read data 514 0x00020146 (FATAL,HIGH) = Drive is a virtual placeholder 515 0x00020147 (SORRY,HIGH) = Cannot address start byte 516 0x00020148 (SORRY,HIGH) = Cannot write desired amount of data 517 0x00020149 (SORRY,HIGH) = Unsuitable filetype for pseudo-drive 518 0x0002014a (SORRY,HIGH) = Cannot read desired amount of data 519 0x0002014b (SORRY,HIGH) = Drive is already registered and scanned 520 0x0002014c (FATAL,HIGH) = Emulated drive caught in SCSI function 521 0x0002014d (SORRY,HIGH) = Asynchromous SCSI error 522 0x0002014f (SORRY,HIGH) = Timeout with asynchromous SCSI command 523 0x00020150 (DEBUG,LOW) = Reporting asynchronous waiting time 524 0x00020151 (FATAL,HIGH) = Read attempt on write-only drive 525 0x00020152 (FATAL,HIGH) = Cannot start fifo thread 526 0x00020153 (SORRY,HIGH) = Read error on fifo input 527 0x00020154 (NOTE,HIGH) = Forwarded input error ends output 528 0x00020155 (SORRY,HIGH) = Desired fifo buffer too large 529 0x00020156 (SORRY,HIGH) = Desired fifo buffer too small 530 0x00020157 (FATAL,HIGH) = burn_source is not a fifo object 531 0x00020158 (DEBUG,LOW) = Reporting thread disposal precautions 532 0x00020159 (DEBUG,HIGH) = TOC Format 0 returns inconsistent data 533 534 libiso_audioxtr: 535 0x00020200 (SORRY,HIGH) = Cannot open audio source file 536 0x00020201 (SORRY,HIGH) = Audio source file has unsuitable format 537 0x00020202 (SORRY,HIGH) = Failed to prepare reading of audio data 538 539 540 541 ------------------------------------------------------------------------------ 542 Range "vreixo" : 0x00030000 to 0x0003ffff 543 544 0x0003ffff (FAILURE,HIGH) = Operation canceled 545 0x0003fffe (FATAL,HIGH) = Unknown or unexpected fatal error 546 0x0003fffd (FAILURE,HIGH) = Unknown or unexpected error 547 0x0003fffc (FATAL,HIGH) = Internal programming error 548 0x0003fffb (FAILURE,HIGH) = NULL pointer where NULL not allowed 549 0x0003fffa (FATAL,HIGH) = Memory allocation error 550 0x0003fff9 (FATAL,HIGH) = Interrupted by a signal 551 0x0003fff8 (FAILURE,HIGH) = Invalid parameter value 552 0x0003fff7 (FATAL,HIGH) = Cannot create a needed thread 553 0x0003fff6 (FAILURE,HIGH) = Write error 554 0x0003fff5 (FAILURE,HIGH) = Buffer read error 555 0x0003ffc0 (FAILURE,HIGH) = Trying to add a node already added to another dir 556 0x0003ffbf (FAILURE,HIGH) = Node with same name already exist 557 0x0003ffbe (FAILURE,HIGH) = Trying to remove a node that was not added to dir 558 0x0003ffbd (FAILURE,HIGH) = A requested node does not exist 559 0x0003ffbc (FAILURE,HIGH) = Image already bootable 560 0x0003ffbb (FAILURE,HIGH) = Trying to use an invalid file as boot image 561 0x0003ff80 (FAILURE,HIGH) = Error on file operation 562 0x0003ff7f (FAILURE,HIGH) = Trying to open an already opened file 563 0x0003ff7e (FAILURE,HIGH) = Access to file is not allowed 564 0x0003ff7d (FAILURE,HIGH) = Incorrect path to file 565 0x0003ff7c (FAILURE,HIGH) = The file does not exist in the filesystem 566 0x0003ff7b (FAILURE,HIGH) = Trying to read or close a file not opened 567 0x0003ff7a (FAILURE,HIGH) = Directory used where no dir is expected 568 0x0003ff79 (FAILURE,HIGH) = File read error 569 0x0003ff78 (FAILURE,HIGH) = Not dir used where a dir is expected 570 0x0003ff77 (FAILURE,HIGH) = Not symlink used where a symlink is expected 571 0x0003ff76 (FAILURE,HIGH) = Cannot seek to specified location 572 0x0003ff75 (HINT,MEDIUM) = File not supported in ECMA-119 tree and ignored 573 0x0003ff74 (HINT,MEDIUM) = File bigger than supported by used standard 574 0x0003ff73 (MISHAP,HIGH) = File read error during image creation 575 0x0003ff72 (HINT,MEDIUM) = Cannot convert filename to requested charset 576 0x0003ff71 (SORRY,HIGH) = File cannot be added to the tree 577 0x0003ff70 (HINT,MEDIUM) = File path breaks specification constraints 578 0x0003ff00 (FAILURE,HIGH) = Charset conversion error 579 0x0003feff (FAILURE,HIGH) = Too much files to mangle 580 0x0003fec0 (FAILURE,HIGH) = Wrong or damaged Primary Volume Descriptor 581 0x0003febf (SORRY,HIGH) = Wrong or damaged RR entry 582 0x0003febe (SORRY,HIGH) = Unsupported RR feature 583 0x0003febd (FAILURE,HIGH) = Wrong or damaged ECMA-119 584 0x0003febc (FAILURE,HIGH) = Unsupported ECMA-119 feature 585 0x0003febb (SORRY,HIGH) = Wrong or damaged El-Torito catalog 586 0x0003feba (SORRY,HIGH) = Unsupported El-Torito feature 587 0x0003feb9 (SORRY,HIGH) = Cannot patch isolinux boot image 588 0x0003feb8 (SORRY,HIGH) = Unsupported SUSP feature 589 0x0003feb7 (WARNING,HIGH) = Error on a RR entry that can be ignored 590 0x0003feb6 (HINT,MEDIUM) = Error on a RR entry that can be ignored 591 0x0003feb5 (WARNING,HIGH) = Multiple ER SUSP entries found 592 0x0003feb4 (HINT,MEDIUM) = Unsupported volume descriptor found 593 0x0003feb3 (WARNING,HIGH) = El-Torito related warning 594 0x0003feb2 (MISHAP,HIGH) = Image write cancelled 595 0x0003feb1 (WARNING,HIGH) = El-Torito image is hidden 596 597 Outdated codes which may not be re-used for other purposes than 598 re-instating them, if ever: 599 600 X 0x00031001 (SORRY,HIGH) = Cannot read file (ignored) 601 X 0x00031002 (FATAL,HIGH) = Cannot read file (operation canceled) 602 X 0x00031000 (FATAL,HIGH) = Unsupported ISO-9660 image 603 X 0x00031001 (HINT,MEDIUM) = Unsupported Vol Desc that will be ignored 604 X 0x00031002 (FATAL,HIGH) = Damaged ISO-9660 image 605 X 0x00031003 (SORRY,HIGH) = Cannot read previous image file 606 X 0x00030101 (HINT,MEDIUM) = Unsupported SUSP entry that will be ignored 607 X 0x00030102 (SORRY,HIGH) = Wrong/damaged SUSP entry 608 X 0x00030103 (WARNING,MEDIUM)= Multiple SUSP ER entries where found 609 X 0x00030111 (SORRY,HIGH) = Unsupported RR feature 610 X 0x00030112 (SORRY,HIGH) = Error in a Rock Ridge entry 611 X 0x00030201 (HINT,MEDIUM) = Unsupported Boot Vol Desc that will be ignored 612 X 0x00030202 (SORRY,HIGH) = Wrong El-Torito catalog 613 X 0x00030203 (HINT,MEDIUM) = Unsupported El-Torito feature 614 X 0x00030204 (SORRY,HIGH) = Invalid file to be an El-Torito image 615 X 0x00030205 (WARNING,MEDIUM)= Cannot properly patch isolinux image 616 X 0x00030206 (WARNING,MEDIUM)= Copying El-Torito from a previous image without 617 X enough info about it 618 X 0x00030301 (NOTE,MEDIUM) = Unsupported file type for Joliet tree 619 620 621 ------------------------------------------------------------------------------ 622 Range "application" : 0x00040000 to 0x0004ffff 623 624 0x00040000 (ABORT,HIGH) : Application supplied message 625 0x00040001 (FATAL,HIGH) : Application supplied message 626 0x00040002 (SORRY,HIGH) : Application supplied message 627 0x00040003 (WARNING,HIGH) : Application supplied message 628 0x00040004 (HINT,HIGH) : Application supplied message 629 0x00040005 (NOTE,HIGH) : Application supplied message 630 0x00040006 (UPDATE,HIGH) : Application supplied message 631 0x00040007 (DEBUG,HIGH) : Application supplied message 632 0x00040008 (*,HIGH) : Application supplied message 633 634 635 ------------------------------------------------------------------------------ 636 Range "libisofs-xorriso" : 0x00050000 to 0x0005ffff 637 638 This is an alternative representation of libisofs.so.6 error codes in xorriso. 639 If values returned by iso_error_get_code() do not fit into 0x30000 to 0x3ffff 640 then they get truncated to 16 bit and mapped into this range. 641 (This should never need to happen, of course.) 642 643 ------------------------------------------------------------------------------ 644 Range "libisoburn" : 0x00060000 to 0x00006ffff 645 646 0x00060000 (*,*) : Message which shall be attributed to libisoburn 647 648 >>> the messages of libisoburn need to be registered individually 649 650 651 ------------------------------------------------------------------------------ 652 653 #endif /* LIDBAX_MSGS_________________ */ 654 655 656 657 #ifdef LIBISO_MSGS_H_INTERNAL 658 659 /* Internal Functions */ 660 661 662 /** Lock before doing side effect operations on m */ 663 static int libiso_msgs_lock(struct libiso_msgs *m, int flag); 664 665 /** Unlock after effect operations on m are done */ 666 static int libiso_msgs_unlock(struct libiso_msgs *m, int flag); 667 668 669 /** Create new empty message item. 670 @param link Previous item in queue 671 @param flag Bitfield for control purposes (unused yet, submit 0) 672 @return >0 success, <=0 failure 673 */ 674 static int libiso_msgs_item_new(struct libiso_msgs_item **item, 675 struct libiso_msgs_item *link, int flag); 676 677 /** Destroy a message item obtained by libiso_msgs_obtain(). The submitted 678 pointer gets set to NULL. 679 @param flag Bitfield for control purposes (unused yet, submit 0) 680 @return 1 for success, 0 for pointer to NULL 681 */ 682 static int libiso_msgs_item_destroy(struct libiso_msgs_item **item, int flag); 683 684 685 #endif /* LIBISO_MSGS_H_INTERNAL */ 686 687 688 #endif /* ! LIBISO_MSGS_H_INCLUDED */ 689