| 602 | #endif /* USE_PRINTF_MACRO */ |
| 603 | |
| 604 | const char *acl_strerror(unsigned int errnum, char *buffer, int size) |
| 605 | { |
| 606 | const char *myname = "acl_strerror"; |
| 607 | #ifdef ACL_WINDOWS |
| 608 | int L; |
| 609 | |
| 610 | if (buffer == NULL || size <= 0) { |
| 611 | acl_msg_error("%s, %s(%d): input error", |
| 612 | __FILE__, myname, __LINE__); |
| 613 | return NULL; |
| 614 | } |
| 615 | |
| 616 | L = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
| 617 | | FORMAT_MESSAGE_ARGUMENT_ARRAY, |
| 618 | NULL, |
| 619 | errnum, |
| 620 | 0, |
| 621 | buffer, |
| 622 | size, |
| 623 | NULL); |
| 624 | while ((L > 0) && ((buffer[L - 1] >= 0 && buffer[L - 1] <= 32) || |
| 625 | (buffer[L - 1] == '.'))) { |
| 626 | buffer[L - 1] = '\0'; |
| 627 | L--; |
| 628 | } |
| 629 | |
| 630 | /* resave the error of WIN SYS */ |
| 631 | WSASetLastError(errnum); |
| 632 | #elif defined(ACL_UNIX) |
| 633 | if (buffer == NULL || size <= 0) { |
| 634 | acl_msg_error("%s, %s(%d): input error", |
| 635 | __FILE__, myname, __LINE__); |
| 636 | return NULL; |
| 637 | } |
| 638 | |
| 639 | snprintf(buffer, size, "%s", strerror(errnum)); |
| 640 | #else |
| 641 | # error "unknown OS type" |
| 642 | #endif |
| 643 | |
| 644 | return buffer; |
| 645 | } |
| 646 | |
| 647 | const char *acl_last_strerror(char *buffer, int size) |
| 648 | { |
no test coverage detected
searching dependent graphs…