/* See LICENSE file for copyright and license details. */ #include "common.h" /** * Prints an error to stderr in a `perror` fashion * * @param name The text to add at the beginning * @param value The error code, may be an `errno` value */ void libgamma_perror(const char *name, int error_code) { const char *desc, *gname; char buf[1024]; long int gid; desc = libgamma_strerror_r(error_code, buf, sizeof(buf)); if (error_code == LIBGAMMA_DEVICE_REQUIRE_GROUP) { gid = (intmax_t)libgamma_group_gid_get(); gname = libgamma_group_name_get(); if (!gname) { if (name && *name) fprintf(stderr, "%s: %s in group %ji\n", name, desc, gid); else fprintf(stderr, "%s in group %ji\n", desc, gid); } else { if (name && *name) fprintf(stderr, "%s: %s in group %s (%ji)\n", name, desc, gname, gid); else fprintf(stderr, "%s in group %s (%ji)\n", desc, gname, gid); } } else { if (name && *name) fprintf(stderr, "%s: %s\n", name, desc); else fprintf(stderr, "%s\n", desc); } }