26.07.2015 12:08, Mark Rotteveel wrote: > On 25-7-2015 15:08, Vlad Khorsun wrote: >> 25.07.2015 15:45, Mark Rotteveel wrote: >> > >>> How would I go about that if none of the errors in that facility are >>> defined inside Firebird, >> >> We could define and reserve facility code for Jaybird and let you know >> it. > > That would be great.
Facility code 26, name JAYBIRD. >>> and how can I know/calculate the range of error >>> codes I can use (a quick glance at the code seems to suggest that each >>> facility has 24 bits for error codes)? >> >> Look at src\common\msg_encode.h : >> >> const ISC_STATUS ISC_MASK = 0x14000000; // Defines the code as a valid >> ISC code >> const ISC_STATUS FAC_MASK = 0x00FF0000; // Specifies the facility where >> the code is located >> const ISC_STATUS CODE_MASK = 0x0000FFFF; // Specifies the code in the >> message file >> const ISC_STATUS CLASS_MASK = 0xF0000000; // Defines the code as warning, >> error, info, or other >> > > Looking at the code in msg_encode.h, I notice that the above masks don't > align with the definition of ENCODE_ISC_MSG: > > return ((ISC_STATUS(facility & 0x1F) << 16) | (code & 0x3FFF) | ISC_MASK); > > Shouldn't that be: > > return ISC_STATUS(((facility << 16) & FAC_MASK) | (code & CODE_MASK) | > ISC_MASK); > > Or is there a reason to ignore those higher bits for the facility and code? I have no idea why ENCODE_ISC_MSG written in this way. > CLASS_MASK seems to not be used anywhere, or at least I can't remember > ever having seen an error code with the bit 30 (warning) or 31 (info) > set. Or is it used somewhere internally as an in-band channel? Looks like something planned at the past (before Firebird) but never used... Regards, Vlad ------------------------------------------------------------------------------ Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel